* Python: Provider-leading client design & OpenAI package extraction Major refactoring of the Python Agent Framework client architecture: - Extract OpenAI clients into new `agent-framework-openai` package - Core package no longer depends on openai, azure-identity, azure-ai-projects - Rename clients for discoverability: OpenAIResponsesClient → OpenAIChatClient, OpenAIChatClient → OpenAIChatCompletionClient - Unify `model_id`/`deployment_name`/`model_deployment_name` → `model` param - New FoundryChatClient for Azure AI Foundry Responses API - New FoundryAgent/FoundryAgentClient for connecting to pre-configured Foundry agents - Remove OpenAIBase/OpenAIConfigMixin from non-deprecated client MRO - Deprecate AzureOpenAI* clients, AzureAIClient, OpenAIAssistantsClient - Reorganize samples: azure_openai+azure_ai+azure_ai_agent → azure/ - ADR-0020: Provider-Leading Client Design Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: missing Agent imports in samples, .model_id → .model in foundry_local sample Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: CI failures — mypy errors, coverage targets, sample imports - azure-ai mypy: add type ignores for TypedDict total=, model arg, forward ref - Coverage: replace core.azure/openai targets with openai package target - project_provider: add type annotation for opts dict Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: populate openai .pyi stub, fix broken README links, coverage targets Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fixes * updated observabilitty * reset azure init.pyi * fix errors * updated adr number * fix foundry local * fixed not renamed docstrings and comments, and added deprecated markers to old classes * fix tests and pyprojects * fix test vars * updated function tests * update durable * updated test setup for functions * Fix Foundry auth in workflow samples Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Stabilize Python integration workflows Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update hosting samples for Foundry Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Trigger full CI rerun Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Trigger CI rerun again Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * trigger rerun * trigger rerun * fix for litellm * undo durabletask changes * Move Foundry APIs into foundry namespace Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix Foundry pyproject formatting Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Split provider samples by Foundry surface Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Restore hosting sample requirements Also fix the Foundry Local sample link after the provider sample move. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * updated tests * udpated foundry integration tests * removed dist from azurefunctions tests * Use separate Foundry clients for concurrent agents Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix client setup in azfunc and durable * disabled two tests * updated setup for some function and durable tests * improved azure openai setup with new clients * ignore deprecated * fixes * skip 11 * remove openai assistants int tests --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Ollama Examples
This folder contains examples demonstrating how to use Ollama models with the Agent Framework.
Prerequisites
- Install Ollama: Download and install Ollama from ollama.com
- Start Ollama: Ensure Ollama is running on your local machine
- Pull a model: Run
ollama pull mistral(or any other model you prefer)- For function calling examples, use models that support tool calling like
mistralorqwen2.5 - For reasoning examples, use models that support reasoning like
qwen3:8b - For multimodal examples, use models like
gemma3:4b
- For function calling examples, use models that support tool calling like
Note
: Not all models support all features. Function calling, reasoning, and multimodal capabilities depend on the specific model you're using.
Recommended Approach
The recommended way to use Ollama with Agent Framework is via the native OllamaChatClient from the agent-framework-ollama package. This provides full support for Ollama-specific features like reasoning mode.
Alternatively, you can use the OpenAIChatClient configured to point to your local Ollama server, which may be useful if you're already familiar with the OpenAI client interface.
Examples
| File | Description |
|---|---|
ollama_agent_basic.py |
Basic Ollama agent with tool calling using native Ollama Chat Client. Shows both streaming and non-streaming responses. |
ollama_agent_reasoning.py |
Ollama agent with reasoning capabilities using native Ollama Chat Client. Shows how to enable thinking/reasoning mode. |
ollama_chat_client.py |
Direct usage of the native Ollama Chat Client with tool calling. |
ollama_chat_multimodal.py |
Ollama Chat Client with multimodal (image) input capabilities. |
ollama_with_openai_chat_client.py |
Alternative approach using OpenAI Chat Client configured to use local Ollama models. |
Configuration
The examples use environment variables for configuration. Set the appropriate variables based on which example you're running:
For Native Ollama Examples
Set the following environment variables:
-
OLLAMA_HOST: The base URL for your Ollama server (optional, defaults tohttp://localhost:11434)- Example:
export OLLAMA_HOST="http://localhost:11434"
- Example:
-
OLLAMA_MODEL_ID: The model name to use- Example:
export OLLAMA_MODEL_ID="qwen2.5:8b" - Must be a model you have pulled with Ollama
- Example:
For OpenAI Client with Ollama (ollama_with_openai_chat_client.py)
Set the following environment variables:
-
OLLAMA_ENDPOINT: The base URL for your Ollama server with/v1/suffix- Example:
export OLLAMA_ENDPOINT="http://localhost:11434/v1/"
- Example:
-
OLLAMA_MODEL: The model name to use- Example:
export OLLAMA_MODEL="mistral" - Must be a model you have pulled with Ollama
- Example: