Files
agent-framework/python/samples/02-agents/conversations
T
Evan Mattson ea3320d39f Python: Fix OpenAI Responses streaming to propagate created_at from final response.completed event (#5382)
* Fix streaming response losing created_at from response.completed event (#5347)

The streaming path in _parse_chunk_from_openai did not extract created_at
from the response.completed event, unlike the non-streaming path in
_parse_responses_response. This caused durabletask persistence warnings
when created_at was None.

Extract created_at in the response.completed case and pass it to the
returned ChatResponseUpdate.

Also fix pre-existing pyright errors for optional orjson import in sample
files.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix orjson import suppression to use pyright instead of mypy (#5347)

Replace `# type: ignore[import-not-found]` with
`# pyright: ignore[reportMissingImports]` on optional orjson imports
in conversation sample files, matching the repo's Pyright strict
configuration.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
ea3320d39f · 2026-04-22 06:19:31 +00:00
History
..

Conversation & Session Management Samples

These samples demonstrate different approaches to managing conversation history and session state in Agent Framework.

Samples

File Description
suspend_resume_session.py Suspend and resume conversation sessions, comparing service-managed sessions (Azure AI Foundry) with in-memory sessions (OpenAI).
custom_history_provider.py Implement a custom history provider by extending HistoryProvider, enabling conversation persistence in your preferred storage backend.
file_history_provider.py Use the experimental FileHistoryProvider with FoundryChatClient and a function tool so the local JSON Lines file shows the full tool-calling loop.
file_history_provider_conversation_persistence.py Persist a tool-driven weather conversation with FileHistoryProvider, inspect the stored JSONL records, and continue with another city.
cosmos_history_provider.py Use Azure Cosmos DB as a history provider for durable conversation storage with CosmosHistoryProvider.
cosmos_history_provider_conversation_persistence.py Persist and resume conversations across application restarts using CosmosHistoryProvider — serialize session state, restore it, and continue with full Cosmos DB history.
cosmos_history_provider_messages.py Direct message history operations — retrieve stored messages as a transcript, clear session history, and verify data deletion.
cosmos_history_provider_sessions.py Multi-session and multi-tenant management — per-tenant session isolation, list_sessions() to enumerate, switch between sessions, and resume specific conversations.
redis_history_provider.py Use Redis as a history provider for persistent conversation history storage across sessions.

Prerequisites

For suspend_resume_session.py:

  • FOUNDRY_PROJECT_ENDPOINT: Your Azure AI Foundry project endpoint (service-managed session)
  • FOUNDRY_MODEL: The Foundry model deployment name
  • OPENAI_API_KEY: Your OpenAI API key (in-memory session)
  • Azure CLI authentication (az login)

For custom_history_provider.py:

  • OPENAI_API_KEY: Your OpenAI API key

For file_history_provider.py:

  • FOUNDRY_PROJECT_ENDPOINT: Your Azure AI Foundry project endpoint
  • FOUNDRY_MODEL: The Foundry model deployment name
  • Azure CLI authentication (az login)
  • The sample writes plaintext JSONL conversation logs to disk; use a trusted local directory and avoid treating the history files as secure secret storage

For file_history_provider_conversation_persistence.py:

  • FOUNDRY_PROJECT_ENDPOINT: Your Azure AI Foundry project endpoint
  • FOUNDRY_MODEL: The Foundry model deployment name
  • Azure CLI authentication (az login)
  • The sample writes plaintext JSONL conversation logs to disk; use a trusted local directory and avoid treating the history files as secure secret storage

For Cosmos DB samples (cosmos_history_provider*.py):

  • FOUNDRY_PROJECT_ENDPOINT: Your Azure AI Foundry project endpoint
  • FOUNDRY_MODEL: The Foundry model deployment name
  • AZURE_COSMOS_ENDPOINT: Your Azure Cosmos DB account endpoint
  • AZURE_COSMOS_DATABASE_NAME: The database that stores conversation history
  • AZURE_COSMOS_CONTAINER_NAME: The container that stores conversation history
  • Either AZURE_COSMOS_KEY or Azure CLI authentication (az login)

For redis_history_provider.py:

  • OPENAI_API_KEY: Your OpenAI API key
  • A running Redis server — default URL is redis://localhost:6379
    • Override via the REDIS_URL environment variable for remote or authenticated instances
    • Quickstart with Docker: docker run -d --name redis-stack -p 6379:6379 redis/redis-stack-server:latest