mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
35a8565495
* Add AG-UI integration * Fix tests. PR feedback * Cleanup * PR Feedback * Improve README and getting started experience * Fix links
72 lines
2.4 KiB
Python
72 lines
2.4 KiB
Python
# Copyright (c) Microsoft. All rights reserved.
|
|
|
|
"""Weather agent example demonstrating backend tool rendering."""
|
|
|
|
from typing import Any
|
|
|
|
from agent_framework import ChatAgent, ai_function
|
|
from agent_framework.azure import AzureOpenAIChatClient
|
|
|
|
|
|
@ai_function
|
|
def get_weather(location: str) -> dict[str, Any]:
|
|
"""Get the current weather for a location.
|
|
|
|
Args:
|
|
location: The city or location to get weather for.
|
|
|
|
Returns:
|
|
Weather information as a dictionary with temperatures in Celsius.
|
|
"""
|
|
# Simulated weather data with structured format (temperatures in Celsius for dojo UI)
|
|
weather_data = {
|
|
"seattle": {"temperature": 11, "conditions": "rainy", "humidity": 75, "wind_speed": 12, "feels_like": 10},
|
|
"san francisco": {"temperature": 14, "conditions": "foggy", "humidity": 85, "wind_speed": 8, "feels_like": 13},
|
|
"new york city": {"temperature": 18, "conditions": "sunny", "humidity": 60, "wind_speed": 10, "feels_like": 17},
|
|
"miami": {"temperature": 29, "conditions": "hot and humid", "humidity": 90, "wind_speed": 5, "feels_like": 32},
|
|
"chicago": {"temperature": 9, "conditions": "windy", "humidity": 65, "wind_speed": 20, "feels_like": 6},
|
|
}
|
|
|
|
location_lower = location.lower()
|
|
if location_lower in weather_data:
|
|
return weather_data[location_lower]
|
|
|
|
return {
|
|
"temperature": 21,
|
|
"conditions": "partly cloudy",
|
|
"humidity": 50,
|
|
"wind_speed": 10,
|
|
"feels_like": 20,
|
|
}
|
|
|
|
|
|
@ai_function
|
|
def get_forecast(location: str, days: int = 3) -> str:
|
|
"""Get the weather forecast for a location.
|
|
|
|
Args:
|
|
location: The city or location to get forecast for.
|
|
days: Number of days to forecast (default: 3).
|
|
|
|
Returns:
|
|
Forecast information string.
|
|
"""
|
|
forecast: list[str] = []
|
|
for day in range(1, min(days, 7) + 1):
|
|
forecast.append(f"Day {day}: Partly cloudy, {60 + day * 2}°F")
|
|
|
|
return f"{days}-day forecast for {location}:\n" + "\n".join(forecast)
|
|
|
|
|
|
# Create the weather agent
|
|
weather_agent = ChatAgent(
|
|
name="weather_agent",
|
|
instructions=(
|
|
"You are a helpful weather assistant. "
|
|
"Use the get_weather and get_forecast functions to help users with weather information. "
|
|
"Always provide friendly and informative responses."
|
|
),
|
|
chat_client=AzureOpenAIChatClient(),
|
|
tools=[get_weather, get_forecast],
|
|
)
|