Spaces:
Sleeping
Sleeping
from smolagents import OpenAIServerModel, CodeAgent, InferenceClientModel, DuckDuckGoSearchTool, VisitWebpageTool | |
import markdownify | |
import os | |
import tools | |
import prompts | |
MANAGER_MODEL_GPT = "gpt-4.5-preview" | |
FINAL_ANSWER_MODEL_GEMINI = "gemini-2.5-pro-preview-03-25" | |
AGENT_MODEL_GTP = "gpt-4.1-mini" | |
MANAGER_MODEL = "deepseek-ai/DeepSeek-R1" | |
# FINAL_ANSWER_MODEL = "gpt-4o" # OpenAIServerModel | |
FINAL_ANSWER_MODEL = "deepseek-ai/DeepSeek-R1" # OpenAIServerModel | |
AGENT_MODEL = "Qwen/Qwen2.5-Coder-32B-Instruct" | |
WEB_SEARCH_MODEL = "Qwen/Qwen2.5-Coder-32B-Instruct" | |
IMAGE_ANALYSIS_MODEL = "HuggingFaceM4/idefics2-8b" | |
AUDIO_ANALYSIS_MODEL = "Qwen/Qwen2-Audio-7B-Instruct" | |
VIDEO_ANALYSIS_MODEL = "llava-hf/LLaVA-NeXT-Video-7B-hf" | |
YOUTUBE_ANALYSIS_MODEL = "llava-hf/LLaVA-NeXT-Video-7B-hf" | |
DOCUMENT_ANALYSIS_MODEL = "Qwen/Qwen2.5-Coder-32B-Instruct" | |
ARITHMETIC_MODEL = "Qwen/Qwen2.5-Coder-32B-Instruct" | |
CODE_GENERATION_MODEL = "Qwen/Qwen2.5-Coder-32B-Instruct" | |
CODE_EXECUTION_MODEL = "Qwen/Qwen2.5-Coder-32B-Instruct" | |
# Agents | |
def create_custom_web_search_agent(message): | |
return CodeAgent( | |
name="custom_web_search_agent", | |
description=prompts.get_web_search_prompt(message), | |
model=InferenceClientModel(WEB_SEARCH_MODEL), | |
max_steps=3, | |
tools=[tools.simple_web_search_tool, tools.visit_web_page_tool], | |
) | |
def create_simple_web_search_agent(message): | |
return CodeAgent( | |
name="simple_web_search_agent", | |
description=prompts.get_web_search_prompt(message), | |
model=InferenceClientModel(WEB_SEARCH_MODEL), | |
max_steps=3, | |
tools=[tools.simple_web_search_tool, tools.visit_web_page_tool], | |
) | |
def create_image_analysis_agent(message): | |
return CodeAgent( | |
name="image_analysis_agent", | |
description=prompts.get_image_analysis_prompt(message), | |
model=InferenceClientModel(IMAGE_ANALYSIS_MODEL), | |
tools=[tools.image_analysis_tool], | |
max_steps=3, | |
) | |
def create_audio_analysis_agent(message): | |
return CodeAgent( | |
name="audio_analysis_agent", | |
description=prompts.get_audio_analysis_prompt(message), | |
model=InferenceClientModel(AUDIO_ANALYSIS_MODEL), | |
tools=[tools.audio_analysis_tool], | |
max_steps=3, | |
) | |
def create_video_analysis_agent(message): | |
return CodeAgent( | |
name="video_analysis_agent", | |
description=prompts.get_video_analysis_prompt(message), | |
model=InferenceClientModel(VIDEO_ANALYSIS_MODEL), | |
tools=[tools.video_analysis_tool], | |
max_steps=3, | |
) | |
def create_youtube_analysis_agent(message): | |
return CodeAgent( | |
name="youtube_analysis_agent", | |
description=prompts.get_youtube_analysis_prompt(message), | |
model=InferenceClientModel(YOUTUBE_ANALYSIS_MODEL), | |
tools=[tools.youtube_analysis_tool], | |
max_steps=3, | |
) | |
def create_document_analysis_agent(message): | |
return CodeAgent( | |
name="document_analysis_agent", | |
description=prompts.get_document_analysis_prompt(message), | |
model=InferenceClientModel(DOCUMENT_ANALYSIS_MODEL), | |
tools=[tools.document_analysis_tool], | |
max_steps=3, | |
) | |
def create_arithmetic_agent(message): | |
return CodeAgent( | |
name="arithmetic_agent", | |
description=prompts.get_arithmetic_prompt(message), | |
model=InferenceClientModel(ARITHMETIC_MODEL), | |
tools=[ | |
tools.add, | |
tools.subtract, | |
tools.multiply, | |
tools.divide, | |
tools.modulus, | |
], | |
max_steps=3, | |
) | |
def create_code_generation_agent(message): | |
return CodeAgent( | |
name="code_generation_agent", | |
description=prompts.get_code_generation_prompt(message), | |
model=InferenceClientModel(CODE_GENERATION_MODEL), | |
tools=[tools.code_generation_tool], | |
max_steps=3, | |
) | |
def create_code_execution_agent(message): | |
return CodeAgent( | |
name="code_execution_agent", | |
description=prompts.get_code_execution_prompt(message), | |
model=InferenceClientModel(CODE_EXECUTION_MODEL), | |
tools=[tools.code_execution_tool], | |
max_steps=3, | |
) | |
def create_manager_agent(message): | |
simple_web_search_agent = create_simple_web_search_agent(message) | |
image_analysis_agent = create_image_analysis_agent(message) | |
audio_analysis_agent = create_audio_analysis_agent(message) | |
video_analysis_agent = create_video_analysis_agent(message) | |
youtube_analysis_agent = create_youtube_analysis_agent(message) | |
document_analysis_agent = create_document_analysis_agent(message) | |
arithmetic_agent = create_arithmetic_agent(message) | |
code_generation_agent = create_code_generation_agent(message) | |
code_execution_agent = create_code_execution_agent(message) | |
return CodeAgent( | |
name="manager_agent", | |
model=InferenceClientModel(MANAGER_MODEL, provider="together", max_tokens=8096), | |
description=prompts.get_manager_prompt(message), | |
tools=[], | |
planning_interval=4, | |
verbosity_level=2, | |
managed_agents=[ | |
simple_web_search_agent, | |
image_analysis_agent, | |
audio_analysis_agent, | |
video_analysis_agent, | |
youtube_analysis_agent, | |
document_analysis_agent, | |
arithmetic_agent, | |
code_generation_agent, | |
code_execution_agent, | |
], | |
max_steps=10, | |
additional_authorized_imports=[ | |
"requests", | |
"zipfile", | |
"os", | |
"pandas", | |
"numpy", | |
"sympy", | |
"json", | |
"bs4", | |
"pubchempy", | |
"xml", | |
"yahoo_finance", | |
"Bio", | |
"sklearn", | |
"scipy", | |
"pydub", | |
"io", | |
"PIL", | |
"chess", | |
"PyPDF2", | |
"pptx", | |
"torch", | |
"datetime", | |
"csv", | |
"fractions", | |
], | |
) | |
def create_final_answer_agent(message): | |
return CodeAgent( | |
name="final_answer_agent", | |
description="Given a question and an initial answer, return the final refined answer following strict formatting rules.", | |
# model=OpenAIServerModel(FINAL_ANSWER_MODEL), | |
model=InferenceClientModel(FINAL_ANSWER_MODEL), | |
tools=[], | |
) | |