Ollama

Ollama permite ejecutar modelos de código abierto localmente y usarlos con Agent Framework. Esto es ideal para el desarrollo, las pruebas y los escenarios en los que necesita mantener los datos en el entorno local.

Prerequisites

  • Instale e inicie Ollama.
  • Descargue un modelo, como 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"

Creación de un agente de 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

Asegúrese de que Ollama está instalado y ejecutándose localmente con un modelo descargado antes de ejecutar cualquier ejemplo:

ollama pull llama3.2

Note

No todos los modelos admiten llamadas a funciones. Para el uso de herramientas, pruebe llama3.2 o qwen3:4b.

Installation

pip install agent-framework-ollama --pre

Configuration

OLLAMA_MODEL="llama3.2"

El cliente nativo se conecta de http://localhost:11434 forma predeterminada. Invalide con la OLLAMA_HOST variable de entorno o el host argumento constructor.

Creación de agentes de Ollama

OllamaChatClient proporciona integración nativa de Ollama con compatibilidad completa con herramientas de funciones y streaming.

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

Los clientes de Python Ollama (OllamaChatClient y OpenAIChatClient apuntados a un punto de conexión compatible con Ollama) admiten herramientas invocadas localmente. Los tipos de herramientas hospedados no existen porque Ollama es un entorno de ejecución de modelo local.

Herramienta Situación Notas
Herramientas de funciones Callables estándar de Python o @ai_function. Si el modelo seleccionado realmente puede llamarlos depende del propio modelo.
Aprobación de herramientas Proporcionado por el cliente de chat con invocación de funciones del framework; funciona con cualquier llamada a una función-herramienta.
Intérprete de código Sin intérprete de código hospedado.
Búsqueda de archivos No hay ninguna búsqueda de archivos hospedada.
Búsqueda web No hay ninguna búsqueda web hospedada.
Herramientas de MCP hospedadas Ollama no expone MCP hospedado.
Herramientas de MCP locales Se ejecuta en el proceso y funciona con cualquier cliente de chat.

Herramientas de funciones

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

Note

La compatibilidad con go para esta característica estará disponible próximamente. Consulte el repositorio de Agent Framework Go para obtener el estado más reciente.

Pasos siguientes