from langchain.agents import initialize_agent, AgentType from langchain_openai import OpenAI from langchain_community.agent_toolkits.load_tools import load_tools import gradio as gr import os # ๐ Get API keys from environment openai_api_key = os.getenv("OPENAI_API_KEY") serpapi_api_key = os.getenv("SERPAPI_API_KEY") # โ Load LLM llm = OpenAI(temperature=0, api_key=openai_api_key) # โ Load tools tools = load_tools( ["wikipedia", "serpapi", "ddg-search", "pubmed"], llm=llm, serpapi_api_key=serpapi_api_key ) # โ Initialize agent agent = initialize_agent( tools=tools, llm=llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True, handle_parsing_errors=True ) # ๐ง Agent logic def ask_agent(question): try: return agent.run(question) except Exception as e: return f"โ ๏ธ Error: {str(e)}" def clear_input(): return "","" # ๐จ Gradio UI with gr.Blocks(css=""" .main-title { text-align: center; font-size: 30px; font-weight: bold; margin-bottom: 10px; } .gr-button { font-weight: bold; } .gr-textbox { border-radius: 10px; } textarea { font-family: monospace; } """) as demo: gr.Markdown("