chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
import asyncio
|
||||
from collections.abc import Mapping
|
||||
from typing import Any
|
||||
|
||||
from agents import Agent, CodeInterpreterTool, Runner, trace
|
||||
|
||||
|
||||
def _get_field(obj: Any, key: str) -> Any:
|
||||
if isinstance(obj, Mapping):
|
||||
return obj.get(key)
|
||||
return getattr(obj, key, None)
|
||||
|
||||
|
||||
async def main():
|
||||
agent = Agent(
|
||||
name="Code interpreter",
|
||||
# Note: using gpt-5-class models with streaming for this tool may require org verification.
|
||||
# Code interpreter does not support gpt-5 minimal reasoning effort; use default effort.
|
||||
model="gpt-5.6-sol",
|
||||
instructions=(
|
||||
"Always use the code interpreter tool to solve numeric problems, and show the code "
|
||||
"you ran when possible."
|
||||
),
|
||||
tools=[
|
||||
CodeInterpreterTool(
|
||||
tool_config={"type": "code_interpreter", "container": {"type": "auto"}},
|
||||
)
|
||||
],
|
||||
)
|
||||
|
||||
with trace("Code interpreter example"):
|
||||
print("Solving math problem with the code interpreter...")
|
||||
result = Runner.run_streamed(
|
||||
agent,
|
||||
(
|
||||
"Use the code interpreter tool to calculate the square root of 273 * 312821 + "
|
||||
"1782. Show the Python code you ran and then provide the numeric answer."
|
||||
),
|
||||
)
|
||||
saw_code_interpreter_call = False
|
||||
async for event in result.stream_events():
|
||||
if event.type != "run_item_stream_event":
|
||||
continue
|
||||
|
||||
item = event.item
|
||||
if item.type == "tool_call_item":
|
||||
raw_call = item.raw_item
|
||||
if _get_field(raw_call, "type") == "code_interpreter_call":
|
||||
saw_code_interpreter_call = True
|
||||
code = _get_field(raw_call, "code")
|
||||
if isinstance(code, str):
|
||||
print(f"Code interpreter code:\n```\n{code}\n```\n")
|
||||
continue
|
||||
|
||||
print(f"Other event: {event.item.type}")
|
||||
|
||||
if not saw_code_interpreter_call:
|
||||
print("No code_interpreter_call item was emitted.")
|
||||
print(f"Final output: {result.final_output}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user