58 lines
1.5 KiB
Python
58 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
from typing import Any, Literal, Union
|
|
|
|
from typing_extensions import TypeAlias
|
|
|
|
from .agent import Agent
|
|
from .items import RunItem, TResponseStreamEvent
|
|
|
|
|
|
@dataclass
|
|
class RawResponsesStreamEvent:
|
|
"""Streaming event from the LLM. These are 'raw' events, i.e. they are directly passed through
|
|
from the LLM.
|
|
"""
|
|
|
|
data: TResponseStreamEvent
|
|
"""The raw responses streaming event from the LLM."""
|
|
|
|
type: Literal["raw_response_event"] = "raw_response_event"
|
|
"""The type of the event."""
|
|
|
|
|
|
@dataclass
|
|
class RunItemStreamEvent:
|
|
"""Streaming events that wrap a `RunItem`. As the agent processes the LLM response, it will
|
|
generate these events for new messages, tool calls, tool outputs, handoffs, etc.
|
|
"""
|
|
|
|
name: Literal[
|
|
"message_output_created",
|
|
"handoff_requested",
|
|
"handoff_occured",
|
|
"tool_called",
|
|
"tool_output",
|
|
"reasoning_item_created",
|
|
]
|
|
"""The name of the event."""
|
|
|
|
item: RunItem
|
|
"""The item that was created."""
|
|
|
|
type: Literal["run_item_stream_event"] = "run_item_stream_event"
|
|
|
|
|
|
@dataclass
|
|
class AgentUpdatedStreamEvent:
|
|
"""Event that notifies that there is a new agent running."""
|
|
|
|
new_agent: Agent[Any]
|
|
"""The new agent."""
|
|
|
|
type: Literal["agent_updated_stream_event"] = "agent_updated_stream_event"
|
|
|
|
|
|
StreamEvent: TypeAlias = Union[RawResponsesStreamEvent, RunItemStreamEvent, AgentUpdatedStreamEvent]
|
|
"""A streaming event from an agent."""
|