Python: Phase 2: Embedding clients for Ollama, Bedrock, and Azure AI Inference#4207
Open
eavanvalkenburg wants to merge 4 commits intomicrosoft:mainfrom
Open
Python: Phase 2: Embedding clients for Ollama, Bedrock, and Azure AI Inference#4207eavanvalkenburg wants to merge 4 commits intomicrosoft:mainfrom
eavanvalkenburg wants to merge 4 commits intomicrosoft:mainfrom
Conversation
Member
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds embedding client implementations for Ollama, Bedrock, and Azure AI Inference as part of Phase 2 of the vector stores & embeddings port. It includes type variable renames, otel_provider_name passthrough additions to existing clients, pytest marker registration across packages, and lazy-loading namespace exports.
Changes:
- Three new embedding clients:
OllamaEmbeddingClient,BedrockEmbeddingClient,AzureAIInferenceEmbeddingClientwith full test coverage - Type variable renames:
EmbeddingCoT→EmbeddingT,EmbeddingOptionsCoT→EmbeddingOptionsTacross core abstractions - Added
otel_provider_nameparameter toOpenAIEmbeddingClientandAzureOpenAIEmbeddingClientfor telemetry customization - Registered
integrationpytest marker in all packagepyproject.tomlfiles for consistent test organization - Added
azure-ai-inference>=1.0.0b9dependency to azure-ai package
Reviewed changes
Copilot reviewed 40 out of 42 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
python/packages/ollama/agent_framework_ollama/_embedding_client.py |
New OllamaEmbeddingClient using Ollama's embed API with truncate/dimensions options |
python/packages/bedrock/agent_framework_bedrock/_embedding_client.py |
New BedrockEmbeddingClient using Amazon Titan Embeddings via invoke_model API |
python/packages/azure-ai/agent_framework_azure_ai/_embedding_client.py |
New AzureAIInferenceEmbeddingClient supporting both text and image embeddings with Content dispatching |
python/packages/core/agent_framework/_clients.py |
Type variable renames EmbeddingCoT → EmbeddingT for consistency |
python/packages/core/agent_framework/observability.py |
Type variable renames EmbeddingOptionsCoT → EmbeddingOptionsT |
python/packages/core/agent_framework/openai/_embedding_client.py |
Added otel_provider_name parameter passthrough |
python/packages/core/agent_framework/azure/_embedding_client.py |
Added otel_provider_name parameter passthrough |
python/packages/*/pyproject.toml (multiple) |
Added integration pytest marker registration across 18 packages |
python/packages/core/agent_framework/ollama/__init__.py |
Added lazy-loading exports for OllamaEmbeddingClient and related types |
python/packages/core/agent_framework/amazon/__init__.py |
Added lazy-loading exports for BedrockEmbeddingClient and related types |
python/samples/02-agents/embeddings/azure_ai_inference_embeddings.py |
Sample demonstrating image and mixed text+image embedding generation |
python/uv.lock |
Dependency updates including azure-ai-inference and greenlet s390x removals |
228b1ee to
03524a4
Compare
TaoChenOSU
reviewed
Feb 24, 2026
python/packages/azure-ai/agent_framework_azure_ai/_embedding_client.py
Outdated
Show resolved
Hide resolved
python/packages/azure-ai/agent_framework_azure_ai/_embedding_client.py
Outdated
Show resolved
Hide resolved
dmytrostruk
reviewed
Feb 25, 2026
python/packages/bedrock/agent_framework_bedrock/_embedding_client.py
Outdated
Show resolved
Hide resolved
moonbox3
reviewed
Feb 25, 2026
python/packages/azure-ai/agent_framework_azure_ai/_embedding_client.py
Outdated
Show resolved
Hide resolved
Add embedding client implementations to existing provider packages: - OllamaEmbeddingClient: Text embeddings via Ollama's embed API - BedrockEmbeddingClient: Text embeddings via Amazon Titan on Bedrock - AzureAIInferenceEmbeddingClient: Text and image embeddings via Azure AI Inference, supporting Content | str input with separate model IDs for text (AZURE_AI_INFERENCE_EMBEDDING_MODEL_ID) and image (AZURE_AI_INFERENCE_IMAGE_EMBEDDING_MODEL_ID) endpoints Additional changes: - Rename EmbeddingCoT -> EmbeddingT, EmbeddingOptionsCoT -> EmbeddingOptionsT - Add otel_provider_name passthrough to all embedding clients - Register integration pytest marker in all packages - Add lazy-loading namespace exports for Ollama and Bedrock embeddings - Add image embedding sample using Cohere-embed-v3-english - Add azure-ai-inference dependency to azure-ai package Part of microsoft#1188 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Rename second 'vector' variable to 'img_vector' in image embedding loop - Combine nested with statements in tests - Remove unused result assignments in tests Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
68c1dd6 to
aa0dcbd
Compare
- Fix Azure AI embedding mypy issues by normalizing vectors to list[float], safely accumulating optional usage token fields, and filtering None entries before constructing GeneratedEmbeddings - Avoid Bandit false positive by initializing usage details as an empty dict - Update OpenAI embedding tests to assert canonical usage keys (input_token_count/total_token_count) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
moonbox3
approved these changes
Feb 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add embedding client implementations to existing provider packages as part of the vector store & embeddings port.
New embedding clients
embedAPI (packages/ollama/)packages/bedrock/)packages/azure-ai/)Content | strinput — dispatches text toEmbeddingsClientand images toImageEmbeddingsClientAZURE_AI_INFERENCE_EMBEDDING_MODEL_ID) and image (AZURE_AI_INFERENCE_IMAGE_EMBEDDING_MODEL_ID)Additional changes
EmbeddingCoT→EmbeddingT,EmbeddingOptionsCoT→EmbeddingOptionsTin coreotel_provider_namepassthrough to all embedding clients (OpenAI, Azure OpenAI, Ollama, Bedrock, Azure AI Inference)integrationpytest marker in all packagesazure-ai-inferencedependency toazure-aipackageTesting
@flaky,@integration,@skip_if_...)Fixes #4164
Part of #1188