Ollama

Ollama consente di eseguire modelli open source in locale e di usarli con Agent Framework. Questo è ideale per lo sviluppo, il test e gli scenari in cui è necessario mantenere i dati in locale.

Prerequisites

  • Installare e avviare Ollama.
  • Scaricare un modello, ad esempio 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"

Creare un agente Ollama

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."));

Prerequisites

Verificare che Ollama sia installato ed eseguito localmente con un modello scaricato prima di eseguire esempi:

ollama pull llama3.2

Annotazioni

Non tutti i modelli supportano la chiamata di funzione. Per l'utilizzo degli strumenti, provare llama3.2 o qwen3:4b.

Installation

pip install agent-framework-ollama --pre

Configuration

OLLAMA_MODEL="llama3.2"

Il client nativo si connette a per http://localhost:11434 impostazione predefinita. Eseguirne l'override con la OLLAMA_HOST variabile di ambiente o l'argomento del host costruttore.

Creare agenti Ollama

OllamaChatClient offre l'integrazione nativa di Ollama con supporto completo per gli strumenti e lo streaming delle funzioni.

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

I client Ollama Python (OllamaChatClient e OpenAIChatClient a cui punta un endpoint compatibile con Ollama) supportano gli strumenti richiamati localmente. I tipi di strumenti ospitati non esistono perché Ollama è un runtime del modello locale.

Tool Condizione Notes
Strumenti per le funzioni ✅ Oggetti richiamabili Python standard o @ai_function. Se il modello selezionato può effettivamente chiamarli dipende dal modello stesso.
Approvazione degli strumenti ✅ Fornito dal client di chat del framework per l'invocazione di funzioni; funziona con qualsiasi chiamata a uno strumento funzione.
Interprete di codice ❌ Nessun interprete di codice ospitato.
Ricerca file ❌ Nessuna ricerca di file ospitata.
Ricerca Web ❌ Nessuna ricerca Web ospitata.
Strumenti MCP ospitati ❌ Ollama non espone mcp ospitato.
Strumenti MCP locali ✅ Viene eseguito nel processo e funziona con qualsiasi client di chat.

Per native OllamaChatClient, tool_choice supporta auto e none. Impostazione predefinita e auto invio degli strumenti configurati, mentre none vengono omessi dalla richiesta. La required modalità e le scelte che includono allowed_tools l'aumento ChatClientInvalidRequestException perché Ollama non può applicarle.

Strumenti per le funzioni

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()

Annotazioni

Il supporto per questa funzionalità sarà presto disponibile. Vedere il repository di Agent Framework Go per lo stato più aggiornato.

Passaggi successivi