Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med Ollama kan du köra modeller med öppen källkod lokalt och använda dem med Agent Framework. Detta är idealiskt för utveckling, testning och scenarier där du behöver lagra data lokalt.
Förutsättningar
- Installera och starta Ollama.
- Ladda ned en modell, till exempel
ollama pull llama3.2.
Installation
dotnet add package OllamaSharp
dotnet add package Microsoft.Agents.AI --prerelease
Configuration
OLLAMA_ENDPOINT="http://localhost:11434"
OLLAMA_MODEL_NAME="llama3.2"
Skapa en Ollama-agent
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
using OllamaSharp;
var endpoint = Environment.GetEnvironmentVariable("OLLAMA_ENDPOINT") ?? throw new InvalidOperationException("OLLAMA_ENDPOINT is not set.");
var modelName = Environment.GetEnvironmentVariable("OLLAMA_MODEL_NAME") ?? throw new InvalidOperationException("OLLAMA_MODEL_NAME is not set.");
// Get a chat client for Ollama and use it to construct an AIAgent.
AIAgent agent = new OllamaApiClient(new Uri(endpoint), modelName)
.AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");
// Invoke the agent and output the text result.
Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate."));
Förutsättningar
Kontrollera att Ollama är installerat och körs lokalt med en modell nedladdad innan du kör några exempel:
ollama pull llama3.2
Anmärkning
Alla modeller stöder inte funktionsanrop. Prova eller llama3.2för verktygsanvändningqwen3:4b.
Installation
pip install agent-framework-ollama --pre
Configuration
OLLAMA_MODEL="llama3.2"
Den interna klienten ansluter till http://localhost:11434 som standard. Åsidosätt den med OLLAMA_HOST miljövariabeln eller host konstruktorns argument.
Skapa Ollama-agenter
OllamaChatClient ger inbyggd Ollama-integrering med fullt stöd för funktionsverktyg och strömning.
import asyncio
from agent_framework import Agent
from agent_framework.ollama import OllamaChatClient
async def main():
agent = Agent(
client=OllamaChatClient(),
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())
Tools
De Python Ollama-klienterna (OllamaChatClient och OpenAIChatClient pekade på en Ollama-kompatibel slutpunkt) stöder lokalt anropade verktyg. Värdbaserade verktygstyper finns inte eftersom Ollama är en lokal modellkörning.
| Tool | Status | Noteringar |
|---|---|---|
| Funktionsverktyg | ✅ | Vanliga anropsbara Python-objekt eller @ai_function. Om den valda modellen faktiskt kan anropa dem beror på själva modellen. |
| Godkännande av verktyg | ✅ | Tillhandahålls av ramverkets funktionsanropande chattklient; fungerar med valfritt funktionsverktygsanrop. |
| Kodtolkare | ❌ | Ingen värdbaserad kodtolkare. |
| Filsökning | ❌ | Ingen värdbaserad filsökning. |
| Webbsökning | ❌ | Ingen värdbaserad webbsökning. |
| Värdhanterade MCP-verktyg | ❌ | Ollama exponerar inte värdbaserad MCP. |
| Lokala MCP-verktyg | ✅ | Körs i din process och fungerar med alla chattklienter. |
Funktionsverktyg
import asyncio
from datetime import datetime
from agent_framework import Agent
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 = Agent(
client=OllamaChatClient(),
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())
Streaming
from agent_framework import Agent
from agent_framework.ollama import OllamaChatClient
async def streaming_example():
agent = Agent(
client=OllamaChatClient(),
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()
Anmärkning
Go-stöd för den här funktionen kommer snart. Se Agent Framework Go-lagringsplatsen för den senaste statusen.