Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add API for streaming events #687

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions pydantic_ai_slim/pydantic_ai/result.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from typing_extensions import TypeVar

from . import _result, _utils, exceptions, messages as _messages, models
from .messages import ModelResponseStreamEvent, PartStartEvent
from .tools import AgentDeps, RunContext
from .usage import Usage, UsageLimits

Expand Down Expand Up @@ -271,6 +272,23 @@ async def _stream_text_deltas() -> AsyncIterator[str]:
lf_span.set_attribute('combined_text', combined_validated_text)
await self._marked_completed(_messages.ModelResponse.from_text(combined_validated_text))

async def stream_events(self) -> AsyncIterator[ModelResponseStreamEvent]:
usage_checking_stream = _get_usage_checking_stream_response(
self._stream_response, self._usage_limits, self.usage
)
with _logfire.span('response stream events') as lf_span:
# Yield an "event" for each existing part before continuing to stream new events
msg = self._stream_response.get()
for idx, part in enumerate(msg.parts):
yield PartStartEvent(idx, part)

async for event in usage_checking_stream:
yield event

msg = self._stream_response.get()
lf_span.set_attribute('structured_response', msg)
await self._marked_completed(msg)

async def stream_structured(
self, *, debounce_by: float | None = 0.1
) -> AsyncIterator[tuple[_messages.ModelResponse, bool]]:
Expand Down
Loading