Save progress
This commit is contained in:
122
examples/foundational/agent.py
Normal file
122
examples/foundational/agent.py
Normal file
@@ -0,0 +1,122 @@
|
||||
import asyncio
|
||||
import logging
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
from agents import (
|
||||
Agent,
|
||||
FunctionTool,
|
||||
HandoffOutputItem,
|
||||
ItemHelpers,
|
||||
MessageOutputItem,
|
||||
RunContextWrapper,
|
||||
Runner,
|
||||
ToolCallItem,
|
||||
ToolCallOutputItem,
|
||||
function_tool,
|
||||
set_default_openai_api,
|
||||
set_default_openai_client,
|
||||
set_tracing_disabled,
|
||||
trace,
|
||||
)
|
||||
from httpx import get
|
||||
|
||||
|
||||
@function_tool
|
||||
async def get_weather(location: str) -> str:
|
||||
"""Fetch the weather for today.
|
||||
|
||||
Args:
|
||||
location: The location to fetch the weather for.
|
||||
"""
|
||||
return f"{location} is sunny"
|
||||
|
||||
|
||||
system_prompt = """
|
||||
you are a helpful assistant for a real estate brokerage AI assistant.
|
||||
"""
|
||||
|
||||
|
||||
bot = Agent(
|
||||
name="Assistant agent",
|
||||
instructions=system_prompt,
|
||||
# tools=[get_weather],
|
||||
)
|
||||
|
||||
|
||||
async def main():
|
||||
# res = await Runner.run(
|
||||
# starting_agent=bot,
|
||||
# input="What is the weather today?",
|
||||
# )
|
||||
# print(res)
|
||||
|
||||
result = Runner.run_streamed(
|
||||
starting_agent=bot,
|
||||
# ---
|
||||
# with func tool
|
||||
input="Tell a joke about pirates.",
|
||||
# ---
|
||||
# no func tool
|
||||
# input="give me a 2 sentences about life",
|
||||
)
|
||||
|
||||
final = []
|
||||
async for event in result.stream_events():
|
||||
# We'll ignore the raw responses event deltas
|
||||
name = getattr(event, "name", None)
|
||||
# print(f"Event: {event.type} - name {name}")
|
||||
# print(event)
|
||||
# continue
|
||||
if event.type == "raw_response_event":
|
||||
if event.data.type == "response.output_text.delta":
|
||||
final += event.data.delta
|
||||
|
||||
print(f"raw resp: {event}")
|
||||
# When the agent updates, print that
|
||||
elif event.type == "agent_updated_stream_event":
|
||||
print(f"Agent updated: {event.new_agent.name}")
|
||||
continue
|
||||
# When items are generated, print them
|
||||
elif event.type == "run_item_stream_event":
|
||||
if event.item.type == "tool_call_item":
|
||||
print("-- Tool was called")
|
||||
elif event.item.type == "tool_call_output_item":
|
||||
print(f"-- Tool output: {event.item.output}")
|
||||
elif event.item.type == "message_output_item":
|
||||
print(f"-- Message output:\n {ItemHelpers.text_message_output(event.item)}")
|
||||
else:
|
||||
print(f"-- Unknown item type: {event.item.type}")
|
||||
pass # Ignore other event types
|
||||
else:
|
||||
print(f"-- Unknown out item type: {event.item.type}")
|
||||
|
||||
print(f"----------------------")
|
||||
|
||||
print(f"FinalFinalFinal: {''.join(final)}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
|
||||
|
||||
# no func tool:
|
||||
#
|
||||
# Event: agent_updated_stream_event - name None
|
||||
# Event: raw_response_event - name None
|
||||
# ...
|
||||
# Event: raw_response_event - name None
|
||||
# Event: run_item_stream_event - name message_output_created
|
||||
|
||||
# with func tool:
|
||||
#
|
||||
# Event: agent_updated_stream_event - name None
|
||||
# Event: raw_response_event - name None
|
||||
# ...
|
||||
# Event: raw_response_event - name None
|
||||
# Event: run_item_stream_event - name tool_called
|
||||
# Event: run_item_stream_event - name tool_output
|
||||
# Event: raw_response_event - name None
|
||||
# ...
|
||||
# Event: raw_response_event - name None
|
||||
# Event: run_item_stream_event - name message_output_created
|
||||
Reference in New Issue
Block a user