File tree Expand file tree Collapse file tree 2 files changed +58
-0
lines changed
pydantic_ai_slim/pydantic_ai Expand file tree Collapse file tree 2 files changed +58
-0
lines changed Original file line number Diff line number Diff line change @@ -135,6 +135,20 @@ def result(self) -> AgentRunResult[OutputDataT] | None:
135135 self ._traceparent (required = False ),
136136 )
137137
138+ def all_messages (self ) -> list [_messages .ModelMessage ]:
139+ """Return all messages.
140+
141+ Messages from older runs are included.
142+ """
143+ return self .ctx .state .message_history
144+
145+ def new_messages (self ) -> list [_messages .ModelMessage ]:
146+ """Return new messages associated with this run.
147+
148+ Messages from older runs are excluded.
149+ """
150+ return self .ctx .state .message_history [self .ctx .deps .new_message_index :]
151+
138152 def __aiter__ (
139153 self ,
140154 ) -> AsyncIterator [_agent_graph .AgentNode [AgentDepsT , OutputDataT ] | End [FinalResult [OutputDataT ]]]:
Original file line number Diff line number Diff line change @@ -5807,3 +5807,47 @@ def test_agent_builtin_tools_runtime_vs_agent_level():
58075807 MCPServerTool (id = 'example' , url = 'https://mcp.example.com/mcp' ),
58085808 ]
58095809 )
5810+
5811+
5812+ async def test_message_history ():
5813+ def llm (messages : list [ModelMessage ], _info : AgentInfo ) -> ModelResponse :
5814+ return ModelResponse (parts = [TextPart ('ok here is text' )])
5815+
5816+ agent = Agent (FunctionModel (llm ))
5817+
5818+ async with agent .iter (
5819+ 'Hello' ,
5820+ message_history = [
5821+ ModelRequest (parts = [UserPromptPart (content = 'Hello' )]),
5822+ ],
5823+ ) as run :
5824+ async for _ in run :
5825+ pass
5826+ assert run .new_messages () == snapshot (
5827+ [
5828+ ModelResponse (
5829+ parts = [TextPart (content = 'ok here is text' )],
5830+ usage = RequestUsage (input_tokens = 21 , output_tokens = 6 ),
5831+ model_name = 'function:llm:' ,
5832+ timestamp = IsDatetime (),
5833+ ),
5834+ ]
5835+ )
5836+ assert run .all_messages () == snapshot (
5837+ [
5838+ ModelRequest (
5839+ parts = [
5840+ UserPromptPart (
5841+ content = 'Hello' ,
5842+ timestamp = IsDatetime (),
5843+ )
5844+ ]
5845+ ),
5846+ ModelResponse (
5847+ parts = [TextPart (content = 'ok here is text' )],
5848+ usage = RequestUsage (input_tokens = 21 , output_tokens = 6 ),
5849+ model_name = 'function:llm:' ,
5850+ timestamp = IsDatetime (),
5851+ ),
5852+ ]
5853+ )
You can’t perform that action at this time.
0 commit comments