Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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. |
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.