Spaces:
Sleeping
Sleeping
| from src.agents.agents import CustomHandler | |
| from configfile import Config | |
| from src.llmconfig.groqllm import GroqLLM | |
| from src.streamlitUI.loadui import LoadStreamlitUI | |
| import os | |
| import streamlit as st | |
| from crewai import Crew, Process, Agent, Task | |
| from langchain_core.callbacks import BaseCallbackHandler | |
| from typing import Any, Dict | |
| from src.task.tasks import CrewAITasks | |
| from src.agents.agents import CrewAIAgents | |
| from src.supportingtools.tools import SupportingTools | |
| # MAIN Function START | |
| if __name__ == "__main__": | |
| # config | |
| obj_config = Config() | |
| # load ui | |
| ui = LoadStreamlitUI() | |
| user_input = ui.load_streamlit_ui() | |
| # Initialize the message log in session state if not already present | |
| if "messages" not in st.session_state: | |
| st.session_state["messages"] = [{"role": "assistant", "content": "What do you want us to write?"}] | |
| # Display existing messages | |
| for msg in st.session_state.messages: | |
| st.chat_message(msg["role"]).write(msg["content"]) | |
| # Handle user input | |
| if prompt := st.chat_input(): | |
| st.session_state.messages.append({"role": "user", "content": prompt}) | |
| st.chat_message("user").write(prompt) | |
| # Configure LLM | |
| obj_llm_config = GroqLLM(user_controls_input=user_input) | |
| llm = obj_llm_config.groq_llm_config() | |
| if user_input["selected_usecase"] == 'MultiAgent Coder': | |
| # agents | |
| obj_crewai_agents = CrewAIAgents(llm=llm) | |
| lst_agents = obj_crewai_agents.crewai_agents() | |
| # Define tasks for each agent | |
| obj_crewai_tasks = CrewAITasks(llm=llm,prompt=prompt,lst_agents=lst_agents) | |
| lst_tasks = obj_crewai_tasks.create_tasks() | |
| # Set up the crew and process tasks hierarchically | |
| project_crew = Crew( | |
| tasks=lst_tasks, | |
| agents=lst_agents, | |
| process=Process.hierarchical, | |
| manager_llm=llm, | |
| manager_callbacks=[CustomHandler("Crew Manager")] | |
| ) | |
| final = project_crew.kickoff() | |
| elif user_input['selected_usecase']=='MultiAgent SearchTool': | |
| print('ContentGen with Image') | |
| # tools | |
| # API_URL = "https://api-inference.huggingface.co/models/stabilityai/stable-diffusion-xl-base-1.0" | |
| obj_supporting_tools = SupportingTools() | |
| search_tool = obj_supporting_tools.duckduckgosearchtool() | |
| # agents | |
| obj_crewai_agents = CrewAIAgents(llm=llm) | |
| lst_agents = obj_crewai_agents.gen_with_crewai_agents(search_tool=search_tool) | |
| # Define tasks for each agent | |
| obj_crewai_tasks = CrewAITasks(llm=llm,prompt=prompt,lst_agents=lst_agents) | |
| lst_tasks = obj_crewai_tasks.create_tasks_gen() | |
| # Set up the crew and process tasks hierarchically | |
| project_crew = Crew( | |
| tasks=lst_tasks, | |
| agents=lst_agents, | |
| process=Process.hierarchical, | |
| manager_llm=llm, | |
| manager_callbacks=[CustomHandler("Crew Manager")] | |
| ) | |
| final = project_crew.kickoff() | |
| elif user_input['selected_usecase']=='MultiAgent Image': | |
| print('ContentGen with Image') | |
| # tools | |
| API_URL = "https://api-inference.huggingface.co/models/stabilityai/stable-diffusion-xl-base-1.0" | |
| obj_supporting_tools = SupportingTools(API_URL=API_URL) | |
| search_tool = obj_supporting_tools.duckduckgosearchtool() | |
| # agents | |
| obj_crewai_agents = CrewAIAgents(llm=llm) | |
| lst_agents = obj_crewai_agents.gen_with_image_crewai_agents(image_generate=SupportingTools.image_generate) | |
| # Define tasks for each agent | |
| obj_crewai_tasks = CrewAITasks(llm=llm,prompt=prompt,lst_agents=lst_agents) | |
| lst_tasks = obj_crewai_tasks.create_tasks_image_gen() | |
| # Set up the crew and process tasks | |
| project_crew = Crew( | |
| tasks=[lst_tasks[1]], | |
| agents=[lst_agents[1]], | |
| process=Process.sequential, | |
| manager_llm=llm, | |
| manager_callbacks=[CustomHandler("Crew Manager")] | |
| ) | |
| final = project_crew.kickoff({'input':prompt}) | |
| # Display the final result | |
| result = f"## Here is the Final Result \n\n {final}" | |
| st.session_state.messages.append({"role": "assistant", "content": result}) | |
| st.chat_message("assistant").write(result) | |