Ollama

O Ollama permite executar modelos open-source localmente e usá-los com o Agent Framework. Isto é ideal para desenvolvimento, testes e cenários onde precisa de manter os dados no local.

Pré-requisitos

  • Instale e inicie o Ollama.
  • Descarregue um 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"

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

Pré-requisitos

Certifique-se de que o Ollama está instalado e a correr localmente com um modelo descarregado antes de executar qualquer exemplo:

ollama pull llama3.2

Observação

Nem todos os modelos suportam a chamada de funções. Para uso de ferramentas, experimente llama3.2 ou qwen3:4b.

Installation

pip install agent-framework-ollama --pre

Configuration

OLLAMA_MODEL="llama3.2"

O cliente nativo liga-se por http://localhost:11434 defeito. Substitua-a com a OLLAMA_HOST variável ambiente ou o host argumento do construtor.

Criar Agentes Ollama

OllamaChatClient fornece integração nativa com Ollama com suporte total para ferramentas funcionais e 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

Os Python clientes Ollama (OllamaChatClient e OpenAIChatClient apontados para um endpoint compatível com Ollama) suportam ferramentas invocadas localmente. Os tipos de ferramentas alojadas não existem porque o Ollama é um modelo local em tempo de execução.

Tool Situação Observações
Ferramentas Funcionais ✅ Objetos invocáveis padrão de Python ou @ai_function. Se o modelo selecionado pode realmente chamá-los depende do próprio modelo.
Aprovação de Ferramentas ✅ Fornecido pelo cliente de chat de invocação de funções do framework; Funciona com qualquer chamada de ferramenta funcional.
Intérprete de código ❌ Sem interpretador de código alojado.
Pesquisa de ficheiros ❌ Sem pesquisa de ficheiros alojados.
Pesquisa na Web ❌ Não há pesquisa na web alojada.
Ferramentas alojadas do MCP ❌ O Ollama não expõe MCP hospedado.
Ferramentas MCP Locais ✅ Corre no teu processo e funciona com qualquer cliente de chat.

Para nativos OllamaChatClient, tool_choice suporta auto e none. O predefinido e auto envia as ferramentas configuradas, enquanto none as omite do pedido. O required modo e as escolhas que incluem allowed_tools aumentam ChatClientInvalidRequestException porque a Ollama não pode aplicá-las.

Ferramentas de Função

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

Observação

O suporte para esta funcionalidade do go está a chegar em breve. Consulte o repositório Agent Framework Go para o estado mais recente.

Passos seguintes