Spaces:
Sleeping
Sleeping
| import os | |
| from smolagents import ( | |
| CodeAgent, | |
| OpenAIServerModel, | |
| ToolCallingAgent, | |
| ToolCollection, | |
| DuckDuckGoSearchTool, | |
| InferenceClientModel, | |
| GoogleSearchTool, | |
| VisitWebpageTool, | |
| tool, | |
| LiteLLMModel, | |
| ) | |
| from opentelemetry.sdk.trace import TracerProvider | |
| from openinference.instrumentation.smolagents import SmolagentsInstrumentor | |
| from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter | |
| from opentelemetry.sdk.trace.export import SimpleSpanProcessor | |
| from mcp import StdioServerParameters | |
| from tools.transcribe import load_images | |
| trace_provider = TracerProvider() | |
| trace_provider.add_span_processor(SimpleSpanProcessor(OTLPSpanExporter())) | |
| SmolagentsInstrumentor().instrument(tracer_provider=trace_provider) | |
| from tools.mathTools import multiply, add, subtract, divide, modulus | |
| from tools.searchTools import wiki_search, mini_web_search, arvix_search | |
| from tools.fileTool import download_file, text_file_tool, download_and_read_excel_file | |
| from tools.transcribe import parse_youtube_video | |
| from tools.transcribe_audio import transcribe_mp3_with_whisper | |
| def build_agents(): | |
| #"deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B" | |
| #deepseek-ai/DeepSeek-R1-0528 | |
| model = OpenAIServerModel(model_id="gpt-4o") | |
| #model = InferenceClientModel(model_id="Qwen/Qwen2.5-Coder-32B-Instruct") #Qwen/Qwen2.5-Coder-32B-Instruct") | |
| # server_parameters = StdioServerParameters( | |
| # command="uvx", | |
| # args=["--quiet", "pubmedmcp@0.1.3"], | |
| # env={"UV_PYTHON": "3.12", **os.environ}, | |
| # ) | |
| # with ToolCollection.from_mcp(server_parameters, trust_remote_code=True) as tool_collection: | |
| agent = CodeAgent( | |
| tools=[ | |
| #*tool_collection.tools, | |
| GoogleSearchTool(provider="serper"), | |
| VisitWebpageTool(), | |
| multiply, | |
| add, | |
| subtract, | |
| divide, | |
| modulus, | |
| wiki_search, | |
| arvix_search, | |
| download_file, | |
| text_file_tool, | |
| download_and_read_excel_file, | |
| parse_youtube_video, | |
| transcribe_mp3_with_whisper], | |
| model=model, | |
| additional_authorized_imports=["time","pandas","json","numpy","markdownify","requests","re","openpyxl","beautifulsoup4"], | |
| step_callbacks=[load_images], | |
| planning_interval=3, | |
| max_steps=10, | |
| add_base_tools=True) | |
| prompt = f""" | |
| FACTS: Remember that if you have to do a grouping about FOOD, then ICE CREAM is also a FOOD. | |
| PLEASE FOLLOW THE INSTRUCTIONS FOR ANSWERING CAREFULLY: | |
| Your answer should follow the template: FINAL ANSWER: [YOUR FINAL ANSWER]. | |
| YOUR FINAL ANSWER should be a number OR as few words as possible OR a comma separated list of numbers and/or strings. | |
| If you are asked for a number, don't use comma to write your number neither use units such as $ or percent sign unless specified otherwise. | |
| If you are asked for a string, don't use articles, neither abbreviations (e.g. for cities), and write the digits in plain text unless specified otherwise. | |
| If you are asked for a comma separated list, apply the above rules depending of whether the element to be put in the list is a number or a string.""" | |
| agent.prompt_templates["system_prompt"] = agent.prompt_templates["system_prompt"] + prompt | |
| return agent |