Skip to content
Closed
Show file tree
Hide file tree
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
5 changes: 3 additions & 2 deletions examples/pydantic_ai_examples/flight_booking.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"""

import datetime
from collections.abc import Sequence
from dataclasses import dataclass
from typing import Literal

Expand Down Expand Up @@ -180,7 +181,7 @@ async def main():
req_destination='ANC',
req_date=datetime.date(2025, 1, 10),
)
message_history: list[ModelMessage] | None = None
message_history: Sequence[ModelMessage] | None = None
usage: RunUsage = RunUsage()
# run the agent until a satisfactory flight is found
while True:
Expand Down Expand Up @@ -213,7 +214,7 @@ async def main():


async def find_seat(usage: RunUsage) -> SeatPreference:
message_history: list[ModelMessage] | None = None
message_history: Sequence[ModelMessage] | None = None
while True:
answer = Prompt.ask('What seat would you like?')

Expand Down
4 changes: 2 additions & 2 deletions examples/pydantic_ai_examples/question_graph.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ async def run(self, ctx: GraphRunContext[QuestionState]) -> Answer:
'Ask a simple question with a single correct answer.',
message_history=ctx.state.ask_agent_messages,
)
ctx.state.ask_agent_messages += result.all_messages()
ctx.state.ask_agent_messages.extend(result.all_messages())
ctx.state.question = result.output
return Answer(result.output)

Expand Down Expand Up @@ -85,7 +85,7 @@ async def run(
format_as_xml({'question': ctx.state.question, 'answer': self.answer}),
message_history=ctx.state.evaluate_agent_messages,
)
ctx.state.evaluate_agent_messages += result.all_messages()
ctx.state.evaluate_agent_messages.extend(result.all_messages())
if result.output.correct:
return End(result.output.comment)
else:
Expand Down
7 changes: 4 additions & 3 deletions pydantic_ai_slim/pydantic_ai/_a2a.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ def agent_to_a2a(


@dataclass
class AgentWorker(Worker[list[ModelMessage]], Generic[WorkerOutputT, AgentDepsT]):
class AgentWorker(Worker[Sequence[ModelMessage]], Generic[WorkerOutputT, AgentDepsT]):
"""A worker that uses an agent to execute tasks."""

agent: AbstractAgent[AgentDepsT, WorkerOutputT]
Expand All @@ -135,8 +135,9 @@ async def run_task(self, params: TaskSendParams) -> None:
await self.storage.update_task(task['id'], state='working')

# Load context - contains pydantic-ai message history from previous tasks in this conversation
message_history = await self.storage.load_context(task['context_id']) or []
message_history.extend(self.build_message_history(task.get('history', [])))
context_history = await self.storage.load_context(task['context_id']) or []
task_history = self.build_message_history(task.get('history', []))
message_history = list(context_history) + list(task_history)

try:
result = await self.agent.run(message_history=message_history) # type: ignore
Expand Down
8 changes: 4 additions & 4 deletions pydantic_ai_slim/pydantic_ai/_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,15 +228,15 @@ async def run_chat(
prog_name: str,
config_dir: Path | None = None,
deps: AgentDepsT = None,
message_history: list[ModelMessage] | None = None,
message_history: Sequence[ModelMessage] | None = None,
) -> int:
prompt_history_path = (config_dir or PYDANTIC_AI_HOME) / PROMPT_HISTORY_FILENAME
prompt_history_path.parent.mkdir(parents=True, exist_ok=True)
prompt_history_path.touch(exist_ok=True)
session: PromptSession[Any] = PromptSession(history=FileHistory(str(prompt_history_path)))

multiline = False
messages: list[ModelMessage] = message_history[:] if message_history else []
messages: Sequence[ModelMessage] = message_history[:] if message_history else []

while True:
try:
Expand Down Expand Up @@ -272,7 +272,7 @@ async def ask_agent(
console: Console,
code_theme: str,
deps: AgentDepsT = None,
messages: list[ModelMessage] | None = None,
messages: Sequence[ModelMessage] | None = None,
) -> list[ModelMessage]:
status = Status('[dim]Working on it…[/dim]', console=console)

Expand Down Expand Up @@ -317,7 +317,7 @@ def get_suggestion(self, buffer: Buffer, document: Document) -> Suggestion | Non


def handle_slash_command(
ident_prompt: str, messages: list[ModelMessage], multiline: bool, console: Console, code_theme: str
ident_prompt: str, messages: Sequence[ModelMessage], multiline: bool, console: Console, code_theme: str
) -> tuple[int | None, bool]:
if ident_prompt == '/markdown':
try:
Expand Down
2 changes: 1 addition & 1 deletion pydantic_ai_slim/pydantic_ai/ag_ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -572,7 +572,7 @@ async def _handle_tool_result_event(
yield item


def _messages_from_ag_ui(messages: list[Message]) -> list[ModelMessage]:
def _messages_from_ag_ui(messages: list[Message]) -> Sequence[ModelMessage]:
"""Convert a AG-UI history to a Pydantic AI one."""
result: list[ModelMessage] = []
tool_calls: dict[str, str] = {} # Tool call ID to tool name mapping.
Expand Down
8 changes: 4 additions & 4 deletions pydantic_ai_slim/pydantic_ai/agent/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -429,7 +429,7 @@ def iter(
user_prompt: str | Sequence[_messages.UserContent] | None = None,
*,
output_type: None = None,
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
deferred_tool_results: DeferredToolResults | None = None,
model: models.Model | models.KnownModelName | str | None = None,
deps: AgentDepsT = None,
Expand All @@ -446,7 +446,7 @@ def iter(
user_prompt: str | Sequence[_messages.UserContent] | None = None,
*,
output_type: OutputSpec[RunOutputDataT],
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
deferred_tool_results: DeferredToolResults | None = None,
model: models.Model | models.KnownModelName | str | None = None,
deps: AgentDepsT = None,
Expand All @@ -463,7 +463,7 @@ async def iter(
user_prompt: str | Sequence[_messages.UserContent] | None = None,
*,
output_type: OutputSpec[RunOutputDataT] | None = None,
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
deferred_tool_results: DeferredToolResults | None = None,
model: models.Model | models.KnownModelName | str | None = None,
deps: AgentDepsT = None,
Expand Down Expand Up @@ -580,7 +580,7 @@ async def main():
# Build the initial state
usage = usage or _usage.RunUsage()
state = _agent_graph.GraphAgentState(
message_history=message_history[:] if message_history else [],
message_history=list(message_history) if message_history else [],
usage=usage,
retries=0,
run_step=0,
Expand Down
28 changes: 14 additions & 14 deletions pydantic_ai_slim/pydantic_ai/agent/abstract.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ async def run(
user_prompt: str | Sequence[_messages.UserContent] | None = None,
*,
output_type: None = None,
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
deferred_tool_results: DeferredToolResults | None = None,
model: models.Model | models.KnownModelName | str | None = None,
deps: AgentDepsT = None,
Expand All @@ -135,7 +135,7 @@ async def run(
user_prompt: str | Sequence[_messages.UserContent] | None = None,
*,
output_type: OutputSpec[RunOutputDataT],
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
deferred_tool_results: DeferredToolResults | None = None,
model: models.Model | models.KnownModelName | str | None = None,
deps: AgentDepsT = None,
Expand All @@ -152,7 +152,7 @@ async def run(
user_prompt: str | Sequence[_messages.UserContent] | None = None,
*,
output_type: OutputSpec[RunOutputDataT] | None = None,
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
deferred_tool_results: DeferredToolResults | None = None,
model: models.Model | models.KnownModelName | str | None = None,
deps: AgentDepsT = None,
Expand Down Expand Up @@ -231,7 +231,7 @@ def run_sync(
user_prompt: str | Sequence[_messages.UserContent] | None = None,
*,
output_type: None = None,
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
deferred_tool_results: DeferredToolResults | None = None,
model: models.Model | models.KnownModelName | str | None = None,
deps: AgentDepsT = None,
Expand All @@ -249,7 +249,7 @@ def run_sync(
user_prompt: str | Sequence[_messages.UserContent] | None = None,
*,
output_type: OutputSpec[RunOutputDataT],
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
deferred_tool_results: DeferredToolResults | None = None,
model: models.Model | models.KnownModelName | str | None = None,
deps: AgentDepsT = None,
Expand All @@ -266,7 +266,7 @@ def run_sync(
user_prompt: str | Sequence[_messages.UserContent] | None = None,
*,
output_type: OutputSpec[RunOutputDataT] | None = None,
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
deferred_tool_results: DeferredToolResults | None = None,
model: models.Model | models.KnownModelName | str | None = None,
deps: AgentDepsT = None,
Expand Down Expand Up @@ -337,7 +337,7 @@ def run_stream(
user_prompt: str | Sequence[_messages.UserContent] | None = None,
*,
output_type: None = None,
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
deferred_tool_results: DeferredToolResults | None = None,
model: models.Model | models.KnownModelName | str | None = None,
deps: AgentDepsT = None,
Expand All @@ -355,7 +355,7 @@ def run_stream(
user_prompt: str | Sequence[_messages.UserContent] | None = None,
*,
output_type: OutputSpec[RunOutputDataT],
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
deferred_tool_results: DeferredToolResults | None = None,
model: models.Model | models.KnownModelName | str | None = None,
deps: AgentDepsT = None,
Expand All @@ -373,7 +373,7 @@ async def run_stream( # noqa C901
user_prompt: str | Sequence[_messages.UserContent] | None = None,
*,
output_type: OutputSpec[RunOutputDataT] | None = None,
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
deferred_tool_results: DeferredToolResults | None = None,
model: models.Model | models.KnownModelName | str | None = None,
deps: AgentDepsT = None,
Expand Down Expand Up @@ -549,7 +549,7 @@ def iter(
user_prompt: str | Sequence[_messages.UserContent] | None = None,
*,
output_type: None = None,
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
deferred_tool_results: DeferredToolResults | None = None,
model: models.Model | models.KnownModelName | str | None = None,
deps: AgentDepsT = None,
Expand All @@ -566,7 +566,7 @@ def iter(
user_prompt: str | Sequence[_messages.UserContent] | None = None,
*,
output_type: OutputSpec[RunOutputDataT],
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
deferred_tool_results: DeferredToolResults | None = None,
model: models.Model | models.KnownModelName | str | None = None,
deps: AgentDepsT = None,
Expand All @@ -584,7 +584,7 @@ async def iter(
user_prompt: str | Sequence[_messages.UserContent] | None = None,
*,
output_type: OutputSpec[RunOutputDataT] | None = None,
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
deferred_tool_results: DeferredToolResults | None = None,
model: models.Model | models.KnownModelName | str | None = None,
deps: AgentDepsT = None,
Expand Down Expand Up @@ -933,7 +933,7 @@ async def to_cli(
self: Self,
deps: AgentDepsT = None,
prog_name: str = 'pydantic-ai',
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
) -> None:
"""Run the agent in a CLI chat interface.

Expand Down Expand Up @@ -970,7 +970,7 @@ def to_cli_sync(
self: Self,
deps: AgentDepsT = None,
prog_name: str = 'pydantic-ai',
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
) -> None:
"""Run the agent in a CLI chat interface with the non-async interface.

Expand Down
6 changes: 3 additions & 3 deletions pydantic_ai_slim/pydantic_ai/agent/wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def iter(
user_prompt: str | Sequence[_messages.UserContent] | None = None,
*,
output_type: None = None,
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
deferred_tool_results: DeferredToolResults | None = None,
model: models.Model | models.KnownModelName | str | None = None,
deps: AgentDepsT = None,
Expand All @@ -89,7 +89,7 @@ def iter(
user_prompt: str | Sequence[_messages.UserContent] | None = None,
*,
output_type: OutputSpec[RunOutputDataT],
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
deferred_tool_results: DeferredToolResults | None = None,
model: models.Model | models.KnownModelName | str | None = None,
deps: AgentDepsT = None,
Expand All @@ -106,7 +106,7 @@ async def iter(
user_prompt: str | Sequence[_messages.UserContent] | None = None,
*,
output_type: OutputSpec[RunOutputDataT] | None = None,
message_history: list[_messages.ModelMessage] | None = None,
message_history: Sequence[_messages.ModelMessage] | None = None,
deferred_tool_results: DeferredToolResults | None = None,
model: models.Model | models.KnownModelName | str | None = None,
deps: AgentDepsT = None,
Expand Down
10 changes: 5 additions & 5 deletions pydantic_ai_slim/pydantic_ai/direct.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

import queue
import threading
from collections.abc import Iterator
from collections.abc import Iterator, Sequence
from contextlib import AbstractAsyncContextManager
from dataclasses import dataclass, field
from datetime import datetime
Expand All @@ -35,7 +35,7 @@

async def model_request(
model: models.Model | models.KnownModelName | str,
messages: list[messages.ModelMessage],
messages: Sequence[messages.ModelMessage],
*,
model_settings: settings.ModelSettings | None = None,
model_request_parameters: models.ModelRequestParameters | None = None,
Expand Down Expand Up @@ -87,7 +87,7 @@ async def main():

def model_request_sync(
model: models.Model | models.KnownModelName | str,
messages: list[messages.ModelMessage],
messages: Sequence[messages.ModelMessage],
*,
model_settings: settings.ModelSettings | None = None,
model_request_parameters: models.ModelRequestParameters | None = None,
Expand Down Expand Up @@ -143,7 +143,7 @@ def model_request_sync(

def model_request_stream(
model: models.Model | models.KnownModelName | str,
messages: list[messages.ModelMessage],
messages: Sequence[messages.ModelMessage],
*,
model_settings: settings.ModelSettings | None = None,
model_request_parameters: models.ModelRequestParameters | None = None,
Expand Down Expand Up @@ -199,7 +199,7 @@ async def main():

def model_request_stream_sync(
model: models.Model | models.KnownModelName | str,
messages: list[messages.ModelMessage],
messages: Sequence[messages.ModelMessage],
*,
model_settings: settings.ModelSettings | None = None,
model_request_parameters: models.ModelRequestParameters | None = None,
Expand Down
Loading
Loading