#import os #from langchain.agents import load_tools #from openai import OpenAI #from openinference.instrumentation.smolagents import SmolagentsInstrumentor #from phoenix.otel import register #from smolagents import ( # CodeAgent, # ToolCallingAgent, # OpenAIServerModel, # Tool, # DuckDuckGoSearchTool, # WikipediaSearchTool #) #from tools import VisitWebpageTool ### from crewai import Agent from langchain_openai import ChatOpenAI from tools import scrape_tool, search_tool, today_tool ### #MODEL_ID_1 = "gpt-4o-mini" #MODEL_ID_2 = "gpt-4o" #MODEL_ID_3 = "o4-mini" #PHOENIX_PROJECT_NAME = "gaia" #os.environ["OTEL_EXPORTER_OTLP_HEADERS"] = "api_key = " + os.environ["PHOENIX_API_KEY"]; #os.environ["PHOENIX_CLIENT_HEADERS"] = "api_key = " + os.environ["PHOENIX_API_KEY"]; #os.environ["PHOENIX_COLLECTOR_ENDPOINT"] = "https://app.phoenix.arize.com"; #tracer_provider = register( # auto_instrument = True, # endpoint = "https://app.phoenix.arize.com/v1/traces", # project_name = PHOENIX_PROJECT_NAME #) #SmolagentsInstrumentor().instrument(tracer_provider = tracer_provider) #def run_gaia(question, file_name): #search_tool = Tool.from_langchain(load_tools(["serpapi"])[0]) #wikipedia_tool = Tool.from_langchain(load_tools(["wikipedia"])[0]) #web_search_agent = ToolCallingAgent( # description = "Runs web searches for you. Give it your query as an argument.", # max_steps = 2, # model = OpenAIServerModel(model_id = MODEL_ID_1), # name = "web_search_agent", # tools = [search_tool, VisitWebpageTool()], # #tools = [DuckDuckGoSearchTool(), VisitWebpageTool()], # verbosity_level = 1 #) #wikipedia_search_agent = ToolCallingAgent( # description = "Runs wikipedia searches for you. Give it your query as an argument.", # max_steps = 2, # model = OpenAIServerModel(model_id = MODEL_ID_1), # name = "wikipedia_search_agent", # tools = [wikipedia_tool], # #tools = [WikipediaSearchTool()], # verbosity_level = 1 #) #manager_agent = CodeAgent( # #add_base_tools = True, # #additional_authorized_imports = ["json", "numpy", "pandas", "time"], # #final_answer_checks = [get_final_answer], # #managed_agents = [web_search_agent], # #max_steps = 5, # model = OpenAIServerModel(model_id = MODEL_ID_2), # planning_interval=3, # tools = [DuckDuckGoSearchTool(), VisitWebpageTool(), WikipediaSearchTool()], # verbosity_level = 1 #) #return manager_agent.run(question) #answer = manager_agent.run(question) #return get_final_answer(question, answer) #def get_final_answer(question, answer): # prompt_template = """ # You are an expert in precise question answering. You are given a question and context. You must **precisely** answer the question based on the context and then stop. # **Question:** """ + str(question) + """ # **Context:** """ + str(answer) + """ # **Example 1:** What is the capital of France? Paris # **Example 2:** What is the superlative of good? Best # **Example 3:** What is the opposite of left? Right # **Answer:**: # """ # client = OpenAI() # completion = client.chat.completions.create( # messages = [{"role": "user", "content": [{"type": "text", "text": prompt_template}]}], # model = MODEL_ID_1 # ) # final_answer = completion.choices[0].message.content # print(f"Question: {question}") # print(f"Answer: {answer}") # print(f"Final answer: {final_answer}") # return final_answer ### def get_researcher_agent(model, verbose): return Agent( role="Researcher", goal="Research content on topic: {topic}.", backstory="You're working on researching content on topic: {topic}. " "Your work is the basis for the Writer to write on this topic.", llm=ChatOpenAI(model=model), tools = [search_tool(), scrape_tool()], allow_delegation=False, verbose=verbose ) def get_writer_agent(model, verbose): return Agent( role="Writer", goal="Write an article on topic: {topic}.", backstory="You're working on writing an article on topic: {topic}. " "You base your writing on the work of the Researcher, who provides context on this topic.", llm=ChatOpenAI(model=model), tools = [today_tool()], allow_delegation=False, verbose=verbose ) ###