Python: Thread storage and serialization (#394)

* Updates for message store support

* Added unit tests

* Added suspend-resume example

* Added example with custom chat message store

* Small fix

* Addressed PR feedback

* Renaming and documentation

* More renaming

* Addressed more PR feedback

* Small fixes in Foundry chat client and examples

* Small update

* Addressed PR feedback

* Increased timeout for Azure tests
This commit is contained in:
Dmytro Struk
2025-08-14 14:15:42 -07:00
committed by GitHub
Unverified
parent 95cb20ca40
commit dea736e550
18 changed files with 1151 additions and 316 deletions
@@ -4,7 +4,7 @@ import asyncio
from random import randint
from typing import Annotated
from agent_framework import ChatClientAgent, ChatClientAgentThread
from agent_framework import AgentThread, ChatClientAgent, ChatMessageList
from agent_framework.openai import OpenAIChatClient
from pydantic import Field
@@ -87,7 +87,6 @@ async def example_with_existing_thread_messages() -> None:
# Start a conversation and build up message history
thread = agent.get_new_thread()
assert isinstance(thread, ChatClientAgentThread) # Ensure we have the right type
query1 = "What's the weather in Paris?"
print(f"User: {query1}")
@@ -95,7 +94,9 @@ async def example_with_existing_thread_messages() -> None:
print(f"Agent: {result1.text}")
# The thread now contains the conversation history in memory
message_count = len(thread.chat_messages or [])
messages = await thread.list_messages()
message_count = len(messages or [])
print(f"Thread contains {message_count} messages")
print("\n--- Continuing with the same thread in a new agent instance ---")
@@ -117,8 +118,9 @@ async def example_with_existing_thread_messages() -> None:
print("\n--- Alternative: Creating a new thread from existing messages ---")
# You can also create a new thread from existing messages
existing_messages = thread.chat_messages or []
new_thread = ChatClientAgentThread(messages=existing_messages)
messages = await thread.list_messages()
new_thread = AgentThread(message_store=ChatMessageList(messages))
query3 = "How does the Paris weather compare to London?"
print(f"User: {query3}")