Ollama を使用すると、オープンソース モデルをローカルで実行し、Agent Framework で使用できます。 これは、データをオンプレミスに保持する必要がある開発、テスト、シナリオに最適です。
次の例は、Ollama を使用してエージェントを作成する方法を示しています。
using System;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
// Create an Ollama agent using Microsoft.Extensions.AI.Ollama
// Requires: dotnet add package Microsoft.Extensions.AI.Ollama --prerelease
var chatClient = new OllamaChatClient(
new Uri("http://localhost:11434"),
modelId: "llama3.2");
AIAgent agent = chatClient.AsAIAgent(
instructions: "You are a helpful assistant running locally via Ollama.");
Console.WriteLine(await agent.RunAsync("What is the largest city in France?"));
前提条件
例を実行する前に、ダウンロードしたモデルで Ollama がインストールされ、ローカルで実行されていることを確認します。
ollama pull llama3.2
注
すべてのモデルが関数呼び出しをサポートしているわけではありません。 ツールを使用する場合は、 llama3.2 または qwen3:4bしてみてください。
Installation
コンフィギュレーション
OLLAMA_MODEL="llama3.2"
ネイティブ クライアントは、既定で http://localhost:11434 に接続します。 これをオーバーライドするには、 host をクライアントに渡します。
Ollama エージェントを作成する
OllamaChatClient は、ネイティブの Ollama 統合と、関数ツールとストリーミングの完全なサポートを提供します。
import asyncio
from agent_framework.ollama import OllamaChatClient
async def main():
agent = OllamaChatClient().as_agent(
name="HelpfulAssistant",
instructions="You are a helpful assistant running locally via Ollama.",
)
result = await agent.run("What is the largest city in France?")
print(result)
asyncio.run(main())
ツール
Python Ollama クライアント (OllamaChatClient および OpenAIChatClient は、Ollama と互換性のあるエンドポイントを指します) は、ローカルで呼び出されたツールをサポートします。 Ollama はローカル モデル ランタイムであるため、ホストされるツールの種類は存在しません。
| ツール | 地位 | 注 |
|---|---|---|
| 関数ツール | ✅ | 標準Python呼び出し可能または @ai_function。 選択したモデルが実際にそれらを呼び出すことができるかどうかは、モデル自体によって異なります。 |
| ツールの承認 | ✅ | フレームワークの関数呼び出しチャット クライアントによって提供されます。は、任意の関数ツール呼び出しで機能します。 |
| コード インタープリター | ❌ | ホストされているコード インタープリターはありません。 |
| ファイル検索 | ❌ | ホストされているファイル検索はありません。 |
| Web 検索 | ❌ | ホストされた Web 検索はありません。 |
| ホストされている MCP ツール | ❌ | Ollama では、ホストされている MCP は公開されません。 |
| ローカル MCP ツール | ✅ | プロセス内で実行され、任意のチャット クライアントで動作します。 |
関数ツール
import asyncio
from datetime import datetime
from agent_framework.ollama import OllamaChatClient
def get_time(location: str) -> str:
"""Get the current time."""
return f"The current time in {location} is {datetime.now().strftime('%I:%M %p')}."
async def main():
agent = OllamaChatClient().as_agent(
name="TimeAgent",
instructions="You are a helpful time agent.",
tools=get_time,
)
result = await agent.run("What time is it in Seattle?")
print(result)
asyncio.run(main())
ストリーミング
async def streaming_example():
agent = OllamaChatClient().as_agent(
instructions="You are a helpful assistant.",
)
print("Agent: ", end="", flush=True)
async for chunk in agent.run("Tell me about Python.", stream=True):
if chunk.text:
print(chunk.text, end="", flush=True)
print()
注
この機能の Go サポートは近日公開予定です。 最新の状態については、 Agent Framework Go リポジトリ を参照してください。