Ollama

Ollama umožňuje spouštět opensourcové modely místně a používat je s architekturou Agent Framework. To je ideální pro vývoj, testování a scénáře, ve kterých potřebujete uchovávat data místně.

Následující příklad ukazuje, jak vytvořit agenta pomocí Ollama:

using System;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;

// Create an Ollama agent using Microsoft.Extensions.AI.Ollama
// Requires: dotnet add package Microsoft.Extensions.AI.Ollama --prerelease
var chatClient = new OllamaChatClient(
    new Uri("http://localhost:11434"),
    modelId: "llama3.2");

AIAgent agent = chatClient.AsAIAgent(
    instructions: "You are a helpful assistant running locally via Ollama.");

Console.WriteLine(await agent.RunAsync("What is the largest city in France?"));

Předpoklady

Před spuštěním příkladů se ujistěte, že je Ollama nainstalovaný a spuštěný místně s modelem staženým:

ollama pull llama3.2

Poznámka:

Ne všechny modely podporují volání funkcí. Pro použití nástroje zkuste llama3.2 nebo qwen3:4b.

Installation

pip install agent-framework-ollama --pre

Konfigurace

OLLAMA_MODEL="llama3.2"

Nativní klient se http://localhost:11434 ve výchozím nastavení připojuje. Můžete to přepsat předáním host klientovi.

Vytvoření agentů Ollama

OllamaChatClient poskytuje nativní integraci Ollama s plnou podporou pro nástroje funkcí a streamování.

import asyncio
from agent_framework.ollama import OllamaChatClient

async def main():
    agent = OllamaChatClient().as_agent(
        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())

Funkční nástroje

import asyncio
from datetime import datetime
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 = OllamaChatClient().as_agent(
        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())

Streamování

async def streaming_example():
    agent = OllamaChatClient().as_agent(
        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()

Další kroky