From fdcf91e83a2d8d98333ab2ce83d8ec40adad27e4 Mon Sep 17 00:00:00 2001
From: harshalmore31 <86048671+harshalmore31@users.noreply.github.com>
Date: Thu, 26 Dec 2024 00:57:33 +0530
Subject: [PATCH] ui-v8

---
 swarms/structs/ui/ui.py | 218 ++++++++++++++++------------------------
 1 file changed, 88 insertions(+), 130 deletions(-)

diff --git a/swarms/structs/ui/ui.py b/swarms/structs/ui/ui.py
index 81de9bfb..1043d3e1 100644
--- a/swarms/structs/ui/ui.py
+++ b/swarms/structs/ui/ui.py
@@ -84,8 +84,7 @@ def load_prompts_from_json() -> Dict[str, str]:
 
 AGENT_PROMPTS = load_prompts_from_json()
 
-def initialize_agents(dynamic_temp: float, agent_keys: List[str], model_name: str,
-                        provider: str, api_key: str, temperature:float, max_tokens:int) -> List[Agent]:
+def initialize_agents(dynamic_temp: float, agent_keys: List[str]) -> List[Agent]:
     agents = []
     seen_names = set()
     for agent_key in agent_keys:
@@ -103,18 +102,10 @@ def initialize_agents(dynamic_temp: float, agent_keys: List[str], model_name: st
             counter += 1
         seen_names.add(agent_name)
 
-        llm = LiteLLM(
-            model_name=model_name,
-            system_prompt=agent_prompt,
-            temperature=temperature,
-            max_tokens = max_tokens,
-        )
-
-
         agent = Agent(
             agent_name=f"Agent-{agent_name}",
             system_prompt=agent_prompt,
-            llm=llm,
+            llm=model,
             max_loops=1,
             autosave=True,
             verbose=True,
@@ -124,7 +115,7 @@ def initialize_agents(dynamic_temp: float, agent_keys: List[str], model_name: st
             retry_attempts=1,
             context_length=200000,
             output_type="string",  # here is the output type which is string
-            temperature=dynamic_temp,
+            temperature=dynamic_temp, # THIS LINE IS CHANGED
         )
         agents.append(agent)
 
@@ -736,7 +727,62 @@ def create_app():
                                 lines=3
                             )
                         with gr.Row():
+                            
+                            with gr.Column(scale=1):
+                                with gr.Row():
+                            # Provider selection dropdown
+                                    provider_dropdown = gr.Dropdown(
+                                        label="Select Provider",
+                                        choices=providers,
+                                        value=providers[0] if providers else None,
+                                        interactive=True,
+                                    )
+                                #  with gr.Row():
+                                #     # Model selection dropdown (initially empty)
+                                    model_dropdown = gr.Dropdown(
+                                        label="Select Model",
+                                        choices=[],
+                                        interactive=True,
+                                    )
+                                with gr.Row():
+                                    # API key input
+                                    api_key_input = gr.Textbox(
+                                        label="API Key",
+                                        placeholder="Enter your API key",
+                                        type="password",
+                                    )
                             with gr.Column(scale=1):
+                                with gr.Row():
+                                    dynamic_slider = gr.Slider(
+                                        label="Dyn. Temp",
+                                        minimum=0,
+                                        maximum=1,
+                                        value=0.1,
+                                        step=0.01
+                                    )
+                                        
+                                #  with gr.Row():
+                                #     max tokens slider
+                                    max_loops_slider = gr.Slider(
+                                        label="Max Loops",
+                                        minimum=1,
+                                        maximum=10,
+                                        value=1,
+                                        step=1
+                                    )
+                                    
+
+                                with gr.Row():
+                                    max_tokens_slider = gr.Slider(
+                                        label="Max Tokens",
+                                        minimum=100,
+                                        maximum=10000,
+                                        value=4000,
+                                        step=100,
+                                    )
+
+                    with gr.Column(scale=2, min_width=200):
+                         with gr.Column(scale=1):
                                 # Get available agent prompts
                                 available_prompts = list(AGENT_PROMPTS.keys()) if AGENT_PROMPTS else ["No agents available"]
                                 agent_prompt_selector = gr.Dropdown(
@@ -746,7 +792,7 @@ def create_app():
                                     multiselect=True,
                                     interactive=True
                                 )
-                            with gr.Column(scale=1):
+                            # with gr.Column(scale=1):
                                 # Get available swarm types
                                 swarm_types = [
                                     "SequentialWorkflow", "ConcurrentWorkflow","AgentRearrange",
@@ -775,71 +821,18 @@ def create_app():
                                         - Use exact agent names from the prompts above
                                         """
                                     )
-
-                    with gr.Column(scale=2, min_width=200):
-                         with gr.Row():
-                            # Provider selection dropdown
-                            provider_dropdown = gr.Dropdown(
-                                label="Select Provider",
-                                choices=providers,
-                                value=providers[0] if providers else None,
-                                interactive=True,
-                            )
-                        #  with gr.Row():
-                        #     # Model selection dropdown (initially empty)
-                            model_dropdown = gr.Dropdown(
-                                label="Select Model",
-                                choices=[],
-                                interactive=True,
-                            )
-                         with gr.Row():
-                            # API key input
-                            api_key_input = gr.Textbox(
-                                label="API Key",
-                                placeholder="Enter your API key",
-                                type="password",
-                            )
-                         with gr.Row():
-                             # temp slider
-                            temperature_slider = gr.Slider(
-                                label="Temperature",
-                                minimum=0,
-                                maximum=1,
-                                value=0.1,
-                                step=0.01
-                            )
+                    
+                         
+                            
                         #  with gr.Row():
-                            # max tokens slider
-                            max_tokens_slider = gr.Slider(
-                                label="Max Tokens",
-                                minimum=100,
-                                maximum=10000,
-                                value=4000,
-                                step=100,
-                            )
-
-                         with gr.Row():
-                            max_loops_slider = gr.Slider(
-                                label="Max Loops",
-                                minimum=1,
-                                maximum=10,
-                                value=1,
-                                step=1
-                            )
-                         with gr.Row():
-                            dynamic_slider = gr.Slider(
-                                label="Dyn. Temp",
-                                minimum=0,
-                                maximum=1,
-                                value=0.1,
-                                step=0.01
-                            )
-                         with gr.Row():
-                            loading_status = gr.Textbox(
-                                label="Status",
-                                value="Ready",
-                                interactive=False
-                            )
+                        #     temperature_slider = gr.Slider(
+                        #         label="Temperature",
+                        #         minimum=0,
+                        #         maximum=1,
+                        #         value=0.1,
+                        #         step=0.01
+                        #     )
+                         
                          #Hidden textbox to store API Key
                          env_api_key_textbox = gr.Textbox(
                             value="",
@@ -847,8 +840,17 @@ def create_app():
                         )
 
                 with gr.Row():
-                    run_button = gr.Button("Run Task", variant="primary")
-                    cancel_button = gr.Button("Cancel", variant="secondary")
+                    with gr.Column(scale=1):
+                        run_button = gr.Button("Run Task", variant="primary")
+                        cancel_button = gr.Button("Cancel", variant="secondary")
+                    with gr.Column(scale=1):
+                        with gr.Row():
+                            loading_status = gr.Textbox(
+                                label="Status",
+                                value="Ready",
+                                interactive=False
+                            )
+
 
                 # Add loading indicator and status
                 with gr.Row():
@@ -892,79 +894,36 @@ def create_app():
                     models = filtered_models.get(provider, [])
                     return gr.update(choices=models, value=models[0] if models else None)
 
-                async def run_task_wrapper(task, max_loops, dynamic_temp, swarm_type, agent_prompt_selector, flow_text,
-                                           provider, model_name, api_key, temperature, max_tokens):
+                async def run_task_wrapper(task, max_loops, dynamic_temp, swarm_type, agent_prompt_selector, flow_text):
                     """Execute the task and update the UI with progress."""
                     try:
                         if not task:
-                            yield "Please provide a task description.", "Error: Missing task", ""
+                            yield "Please provide a task description.", "Error: Missing task"
                             return
 
                         if not agent_prompt_selector or len(agent_prompt_selector) == 0:
-                            yield "Please select at least one agent.", "Error: No agents selected", ""
+                            yield "Please select at least one agent.", "Error: No agents selected"
                             return
-                        
-                        if not provider:
-                             yield "Please select a provider.", "Error: No provider selected", ""
-                             return
-                        
-                        if not model_name:
-                             yield "Please select a model.", "Error: No model selected", ""
-                             return
-                        
-                        if not api_key:
-                             yield "Please enter an API Key", "Error: API Key is required", ""
-                             return
-
 
                         # Update status
-                        yield "Processing...", "Running task...", ""
+                        yield "Processing...", "Running task..."
 
                         # Prepare flow for AgentRearrange
                         flow = None
                         if swarm_type == "AgentRearrange":
                             if not flow_text:
-                                yield "Please provide the agent flow configuration.", "Error: Flow not configured", ""
+                                yield "Please provide the agent flow configuration.", "Error: Flow not configured"
                                 return
                             flow = flow_text
 
-                        # Save API key to .env
-                        env_path = find_dotenv()
-                        if provider == "openai":
-                             set_key(env_path, "OPENAI_API_KEY", api_key)
-                        elif provider == "anthropic":
-                             set_key(env_path, "ANTHROPIC_API_KEY", api_key)
-                        elif provider == "cohere":
-                             set_key(env_path, "COHERE_API_KEY", api_key)
-                        elif provider == "gemini":
-                             set_key(env_path, "GEMINI_API_KEY", api_key)
-                        elif provider == "mistral":
-                             set_key(env_path, "MISTRAL_API_KEY", api_key)
-                        elif provider == "groq":
-                             set_key(env_path, "GROQ_API_KEY", api_key)
-                        elif provider == "nvidia_nim":
-                             set_key(env_path, "NVIDIA_NIM_API_KEY", api_key)
-                        elif provider == "huggingface":
-                             set_key(env_path, "HUGGINGFACE_API_KEY", api_key)
-                        elif provider == "perplexity":
-                             set_key(env_path, "PERPLEXITY_API_KEY", api_key)
-                        else:
-                            yield f"Error: {provider} this provider is not present", f"Error: {provider} not supported", ""
-                            return
-
                         # Execute task
                         result, router, error = await execute_task(
                             task=task,
                             max_loops=max_loops,
-                            dynamic_temp=dynamic_temp,
+                            dynamic_temp=dynamic_temp, # THIS LINE IS CHANGED
                             swarm_type=swarm_type,
                             agent_keys=agent_prompt_selector,
-                            flow=flow,
-                            model_name=model_name,
-                            provider=provider,
-                            api_key=api_key,
-                            temperature=temperature,
-                            max_tokens = max_tokens,
+                            flow=flow
                         )
 
                         if error:
@@ -1038,7 +997,6 @@ def create_app():
                         provider_dropdown,
                         model_dropdown,
                         api_key_input,
-                        temperature_slider,
                         max_tokens_slider
                     ],
                     outputs=[agent_output_display, loading_status, env_api_key_textbox]