Spaces:
Sleeping
Sleeping
import os | |
import sys | |
from langchain_community.utilities import OpenWeatherMapAPIWrapper | |
from dotenv import load_dotenv | |
from langchain_google_genai import ChatGoogleGenerativeAI | |
from langchain.agents import AgentType, Tool, initialize_agent | |
class WeatherAgent: | |
def __init__(self): | |
self._load_environment() | |
self.weather_tool = self._initialize_weather_tool() | |
self.llm = self._initialize_llm() | |
self.tools = self._initialize_tools() | |
self.agent = self._initialize_agent() | |
def _load_environment(self): | |
load_dotenv(override=True) | |
os.environ["GOOGLE_API_KEY"] = os.getenv("GOOGLE_API_KEY") | |
os.environ["OPENWEATHERMAP_API_KEY"] = os.getenv("OPENWEATHERMAP_API_KEY") | |
os.environ["LANGSMITH_TRACING"]= "true" | |
os.environ["LANGSMITH_API_KEY"] = os.getenv("LANGSMITH_API_KEY") | |
def _initialize_weather_tool(self): | |
return OpenWeatherMapAPIWrapper() | |
def _initialize_llm(self): | |
return ChatGoogleGenerativeAI( | |
model="gemini-2.5-flash", | |
api_key=os.getenv("GOOGLE_API_KEY"), | |
temperature=0.0, | |
) | |
def _initialize_tools(self): | |
return [ | |
Tool( | |
name="weather", | |
func=self.weather_tool.run, | |
description="Use this tool to get the current weather in a specified location." | |
) | |
] | |
def _initialize_agent(self): | |
return initialize_agent( | |
self.tools, | |
self.llm, | |
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, | |
verbose=True, | |
) | |
def ask(self, location: str): | |
prompt = f"What's the weather like in {location}?" | |
print("Asking:", prompt) | |
result = self.agent.run(prompt) | |
print("Result:", result) | |
return result | |
if __name__ == "__main__": | |
print("Starting Weather Agent...") | |
weather_agent = WeatherAgent() | |
print("Agent initialized.") | |
location = "Avignon" # Example location | |
response = weather_agent.ask(location) | |
print("Response:", response) | |