Files
openai--openai-agents-python/tests/test_responses.py
T
2026-07-13 12:39:17 +08:00

97 lines
2.4 KiB
Python

from __future__ import annotations
from typing import Any
from openai.types.responses import (
ResponseFunctionToolCall,
ResponseOutputItem,
ResponseOutputMessage,
ResponseOutputRefusal,
ResponseOutputText,
)
from agents import (
Agent,
FunctionTool,
Handoff,
TResponseInputItem,
default_tool_error_function,
function_tool,
)
def get_text_input_item(content: str) -> TResponseInputItem:
return {
"content": content,
"role": "user",
}
def get_text_message(content: str) -> ResponseOutputItem:
return ResponseOutputMessage(
id="1",
type="message",
role="assistant",
content=[ResponseOutputText(text=content, type="output_text", annotations=[], logprobs=[])],
status="completed",
)
def get_refusal_message(refusal: str) -> ResponseOutputItem:
return ResponseOutputMessage(
id="1",
type="message",
role="assistant",
content=[ResponseOutputRefusal(refusal=refusal, type="refusal")],
status="completed",
)
def get_function_tool(
name: str | None = None, return_value: str | None = None, hide_errors: bool = False
) -> FunctionTool:
def _foo() -> str:
return return_value or "result_ok"
return function_tool(
_foo,
name_override=name,
failure_error_function=None if hide_errors else default_tool_error_function,
)
def get_function_tool_call(
name: str,
arguments: str | None = None,
call_id: str | None = None,
*,
namespace: str | None = None,
) -> ResponseOutputItem:
kwargs: dict[str, Any] = {
"id": "1",
"call_id": call_id or "2",
"type": "function_call",
"name": name,
"arguments": arguments or "",
}
if namespace is not None:
kwargs["namespace"] = namespace
return ResponseFunctionToolCall(**kwargs)
def get_handoff_tool_call(
to_agent: Agent[Any], override_name: str | None = None, args: str | None = None
) -> ResponseOutputItem:
name = override_name or Handoff.default_tool_name(to_agent)
return get_function_tool_call(name, args)
def get_final_output_message(args: str) -> ResponseOutputItem:
return ResponseOutputMessage(
id="1",
type="message",
role="assistant",
content=[ResponseOutputText(text=args, type="output_text", annotations=[], logprobs=[])],
status="completed",
)