Observed since 20 Oct, 22:00 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
agent-framework-openai
OpenAI integrations for Microsoft Agent Framework.
OpenAI integration for Microsoft Agent Framework.
This package provides:
OpenAIChatClient for the OpenAI Responses APIOpenAIChatCompletionClient for the Chat Completions APIOpenAIEmbeddingClient for embeddingspip install agent-framework-openai
Use OpenAIChatClient for new work unless you specifically need the Chat Completions API.
OpenAIChatClient uses the Responses API and is the preferred general-purpose chat client.OpenAIChatCompletionClient uses the Chat Completions API and is mainly for compatibility with
existing Chat Completions-based integrations.The previous deprecated Responses alias has been removed. Use OpenAIChatClient directly.
OpenAIChatClient exposes Responses API URL, file, file-path, and container-file citations through
Content.annotations, using the provider-neutral Annotation(type="citation", ...) representation.
URL citations retain their title, URL, and text-span indices, including SharePoint grounding citations.
Inspect content.annotations in response messages or streaming update.contents. Annotations can arrive
in an update whose content.text is empty: completed content parts and output messages supply citations
without repeating text that was already streamed. Annotation-added and completion events are deduplicated
by item, content part, and annotation position, so separate references to the same source remain distinct.
Foundry clients that inherit the Responses parser receive the same behavior.
OpenAIChatClient parses hosted function_call_output items in both streaming and non-streaming responses.
Each result retains its call_id for correlation with the corresponding function call.
Outputs explicitly marked in_progress are deferred without claiming their deduplication ID, so an empty
or partial .added placeholder cannot suppress a later .done result. Completed empty results remain valid.
Rich output parts are available through the function result's items; the backward-compatible result
field contains only their text. Image and file parts retain their explicit provider type in OpenAI replay,
including hosted file references, extensionless image URLs, and files whose names have image extensions.
The ordinary AG-UI TOOL_CALL_RESULT emitter currently reads only result, not items. It emits the text
for mixed text/attachment outputs and empty event content for image/file-only outputs. Preserving rich parts
in framework content and OpenAI replay does not provide frontend attachment display; that is a separate
transport/frontend capability, outside this parser's scope.
These variables are used when the client is configured for OpenAI:
| Variable | Purpose |
|---|---|
OPENAI_API_KEY | OpenAI API key |
OPENAI_ORG_ID | OpenAI organization ID |
OPENAI_BASE_URL | Custom OpenAI-compatible base URL |
OPENAI_MODEL | Generic fallback model |
OPENAI_CHAT_MODEL | Preferred model for OpenAIChatClient |
OPENAI_CHAT_COMPLETION_MODEL | Preferred model for OpenAIChatCompletionClient |
OPENAI_EMBEDDING_MODEL | Preferred model for OpenAIEmbeddingClient |
Model lookup order:
OpenAIChatClient: OPENAI_CHAT_MODEL -> OPENAI_MODELOpenAIChatCompletionClient: OPENAI_CHAT_COMPLETION_MODEL -> OPENAI_MODELOpenAIEmbeddingClient: OPENAI_EMBEDDING_MODEL -> OPENAI_MODELThese model variables are only consulted when you do not pass model= directly. In other words,
OpenAIChatClient(model="...") ignores OPENAI_CHAT_MODEL, and
OpenAIChatCompletionClient(model="...") ignores OPENAI_CHAT_COMPLETION_MODEL.
These variables are used when the client is configured for Azure OpenAI:
| Variable | Purpose |
|---|---|
AZURE_OPENAI_ENDPOINT | Azure OpenAI resource endpoint |
AZURE_OPENAI_BASE_URL | Full Azure OpenAI base URL (.../openai/v1) |
AZURE_OPENAI_API_KEY | Azure OpenAI API key |
AZURE_OPENAI_API_VERSION | Azure OpenAI API version |
AZURE_OPENAI_MODEL | Generic fallback deployment |
AZURE_OPENAI_CHAT_MODEL | Preferred deployment for OpenAIChatClient |
AZURE_OPENAI_CHAT_COMPLETION_MODEL | Preferred deployment for OpenAIChatCompletionClient |
AZURE_OPENAI_EMBEDDING_MODEL | Preferred deployment for OpenAIEmbeddingClient |
Deployment lookup order:
OpenAIChatClient: AZURE_OPENAI_CHAT_MODEL -> AZURE_OPENAI_MODELOpenAIChatCompletionClient: AZURE_OPENAI_CHAT_COMPLETION_MODEL -> AZURE_OPENAI_MODELOpenAIEmbeddingClient: AZURE_OPENAI_EMBEDDING_MODEL -> AZURE_OPENAI_MODELFor Azure routing, the same rule applies: the client-specific deployment variable is checked first,
then the generic AZURE_OPENAI_MODEL fallback. Passing model= overrides both environment variables.
When both OpenAI and Azure environment variables are present, the generic clients prefer OpenAI
when OPENAI_API_KEY is configured. To use Azure explicitly, pass azure_endpoint or
credential.
from agent_framework.openai import OpenAIChatClient
client = OpenAIChatClient(model="gpt-4.1")
from azure.identity.aio import AzureCliCredential
from agent_framework.openai import OpenAIChatClient
client = OpenAIChatClient(
model="my-responses-deployment",
azure_endpoint="https://my-resource.openai.azure.com",
credential=AzureCliCredential(),
)
Use OpenAIChatClient when you want the Responses API as your default chat surface.
Use OpenAIChatCompletionClient when you specifically need the Chat Completions API:
from agent_framework.openai import OpenAIChatCompletionClient
client = OpenAIChatCompletionClient(model="gpt-4o-mini")
This contract applies to the Responses API OpenAIChatClient, not the OpenAIChatCompletionClient shown above.
An OpenAIChatClient instance can be shared by concurrent asynchronous calls on the same event loop. Streaming,
non-streaming, and mixed calls are supported. Keep mutable run state isolated by creating a separate Agent and
AgentSession for each concurrent run and by passing separate messages and options.
This guarantee does not extend to user-supplied middleware, tools, or callbacks unless those implementations are also safe for concurrent use. Do not share one client across OS threads or event loops, and do not mutate its configuration while calls are active.
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
agent-framework-coreEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | agent-framework-core<2,>=1.22.0 | runtime |
openaiEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | openai<4,>=2.25.0 | runtime |
bdist_wheel · 79.75 KB · Python py3
sdist · 75.04 KB · Python source
Observed since 20 Oct, 22:00 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:5914afe06bbdb4183fe7f637d61344c2f53e36b570c24c824cef663155a61693