import os from dotenv import load_dotenv from gradio.external import load_blocks_from_huggingface from langchain.agents import create_agent from langchain_community.tools.ddg_search.tool import DuckDuckGoSearchResults from langgraph.checkpoint.memory import InMemorySaver from langchain_community.tools import DuckDuckGoSearchRun from google.ai.generativelanguage_v1beta.types import Tool as GenAITool from langchain.messages import HumanMessage, AIMessage, SystemMessage from numpy import load load_dotenv() os.environ["GOOGLE_API_KEY"] = os.getenv("GEMINI_API_KEY") system_prompt = """finish your answer with the following 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 = create_agent( model="google_genai:gemini-2.5-flash", tools=[DuckDuckGoSearchRun()], system_prompt=system_prompt, checkpointer=InMemorySaver(), ) response = agent.invoke( {"messages": [{"role": "user", "content": "what is the weather in sf"}]}, {"configurable": {"thread_id": "1"}}, ) print(response)