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) | |