Ollama

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.

Nästa steg