Python: name changes executed (#607)

* name changes executed

* updated adr to accepted

* renamed openai base config

* renamed openai config to mixin

* added renames in user docs

* reverted mcperror

* fix tests

* remove sse from tests
This commit is contained in:
Eduard van Valkenburg
2025-09-04 15:00:38 +00:00
committed by GitHub
parent 6310ca5be0
commit 40ab6e9d67
100 changed files with 1223 additions and 1100 deletions
@@ -2,7 +2,7 @@
The Microsoft Agent Framework provides built-in support for managing multi-turn conversations with AI agents. This includes maintaining context across multiple interactions. Different agent types and underlying services that are used to build agents may support different threading types, and the Agent Framework abstracts these differences away, providing a consistent interface for developers.
For example, when using a `ChatClientAgent` based on a Foundry agent, the conversation history is persisted in the service. While when using a `ChatClientAgent` based on chat completion with gpt-4, the conversation history is in-memory and managed by the agent.
For example, when using a `ChatAgent` based on a Foundry agent, the conversation history is persisted in the service. While when using a `ChatAgent` based on chat completion with gpt-4, the conversation history is in-memory and managed by the agent.
The differences between the underlying threading models are abstracted away via the `AgentThread` type.
@@ -56,7 +56,7 @@ response = await agent.run("Hello, how are you?", thread=resumed_thread)
For in-memory threads, you can provide a custom message store implementation to control how messages are stored and retrieved:
```python
from agent_framework import AgentThread, ChatMessageList, ChatClientAgent
from agent_framework import AgentThread, ChatMessageList, ChatAgent
from agent_framework.foundry import FoundryChatClient
from azure.identity.aio import AzureCliCredential
@@ -71,7 +71,7 @@ def custom_message_store_factory():
return ChatMessageList() # or your custom implementation
async with AzureCliCredential() as credential:
agent = ChatClientAgent(
agent = ChatAgent(
chat_client=FoundryChatClient(async_credential=credential),
instructions="You are a helpful assistant",
chat_message_store_factory=custom_message_store_factory
@@ -82,7 +82,7 @@ async with AzureCliCredential() as credential:
`AIAgent` instances are stateless and the same agent instance can be used with multiple `AgentThread` instances.
Not all agents support all thread types though. For example if you are using a `ChatClientAgent` with the responses service, `AgentThread` instances created by this agent, will not work with a `ChatClientAgent` using the Foundry Agent service.
Not all agents support all thread types though. For example if you are using a `ChatAgent` with the responses service, `AgentThread` instances created by this agent, will not work with a `ChatAgent` using the Foundry Agent service.
This is because these services both support saving the conversation history in the service, and the `AgentThread`
only has a reference to this service managed thread.
@@ -93,32 +93,32 @@ It is therefore considered unsafe to use an `AgentThread` instance that was crea
Here's a complete example showing how to maintain context across multiple interactions:
```python
from agent_framework import ChatClientAgent, AgentThread
from agent_framework import ChatAgent, AgentThread
from agent_framework.foundry import FoundryChatClient
from azure.identity.aio import AzureCliCredential
async def foundry_multi_turn_example():
async with (
AzureCliCredential() as credential,
ChatClientAgent(
ChatAgent(
chat_client=FoundryChatClient(async_credential=credential),
instructions="You are a helpful assistant"
) as agent
):
# Create a thread for persistent conversation
thread = agent.get_new_thread()
# First interaction
response1 = await agent.run("My name is Alice", thread=thread)
print(f"Agent: {response1.text}")
# Second interaction - agent remembers the name
response2 = await agent.run("What's my name?", thread=thread)
print(f"Agent: {response2.text}") # Should mention "Alice"
# Serialize thread for storage
serialized = await thread.serialize()
# Later, deserialize and continue conversation
new_thread = await agent.deserialize_thread(serialized)
response3 = await agent.run("What did we talk about?", thread=new_thread)