Sdílet prostřednictvím


Typy agentů rozhraní Microsoft Agent Framework

Rozhraní Microsoft Agent Framework poskytuje podporu pro několik typů agentů, aby vyhovovala různým případům použití a požadavkům.

Všichni agenti jsou odvozeni od společné základní třídy , AIAgentkterá poskytuje konzistentní rozhraní pro všechny typy agentů. To umožňuje vytvářet obecné, na agentech nezávislé funkce vyšší úrovně, jako jsou orchestrace s více agenty.

Důležité

Pokud k vytváření aplikací, které pracují se servery nebo agenty třetích stran, používáte rozhraní Microsoft Agent Framework, provedete to na vlastní nebezpečí. Doporučujeme zkontrolovat všechna data sdílená se servery nebo agenty třetích stran a seznámit se s postupy třetích stran pro uchovávání a umístění dat. Je vaší zodpovědností spravovat, jestli budou vaše data přetékat mimo dodržování předpisů a geografických hranic vaší organizace a případné související důsledky.

Jednoduché agenty založené na službách odvození

Agent Framework usnadňuje vytváření jednoduchých agentů na základě mnoha různých služeb odvození. K sestavení těchto agentů je možné použít jakoukoli službu odvození, která poskytuje Microsoft.Extensions.AI.IChatClient implementaci. Třída Microsoft.Agents.AI.ChatClientAgent je použita k zajištění agenta pro jakoukoli implementaci IChatClient.

Tito agenti podporují celou řadu funkcí již v základním nastavení.

  1. Volání funkce
  2. Vícefázové konverzace s lokální správou historie chatu nebo službou poskytující správu historie chatu.
  3. Vlastní nástroje poskytované službou (například MCP, Provádění kódu).
  4. Strukturovaný výstup

Pokud chcete vytvořit jednoho z těchto agentů, jednoduše vytvořte ChatClientAgent pomocí IChatClient implementace podle vašeho výběru.

using Microsoft.Agents.AI;

var agent = new ChatClientAgent(chatClient, instructions: "You are a helpful assistant");

Aby bylo vytváření těchto agentů ještě jednodušší, poskytuje rozhraní Agent Framework pomocné rutiny pro mnoho oblíbených služeb. Další informace najdete v dokumentaci pro každou službu.

Podkladová služba odvození Description Podpora úložiště historie chatu služby Podpora úložiště historie vlastních chatů
Azure AI Foundry Agent Agent, který jako svůj back-end používá službu Azure AI Foundry Agents Service. Ano Ne
Modely ChatCompletion Azure AI Foundry Agent, který používá některý z modelů nasazených ve službě Azure AI Foundry service jako svůj back-end přes ChatCompletion. Ne Ano
Odpovědi na modely Azure AI Foundry Agent, který používá některý z modelů nasazených ve službě Azure AI Foundry jako svůj back-end prostřednictvím odpovědí. Ne Ano
Azure OpenAI ChatCompletion Agent, který používá službu Azure OpenAI ChatCompletion. Ne Ano
Odpovědi Azure OpenAI Agent, který používá službu Odpovědí Azure OpenAI. Ano Ano
OpenAI ChatCompletion Agent, který používá službu OpenAI ChatCompletion. Ne Ano
Odpovědi OpenAI Agent, který používá službu OpenAI Responses. Ano Ano
Asistenti OpenAI Agent, který používá službu OpenAI Assistants. Ano Ne
Všechny ostatní IChatClient K vytvoření agenta můžete použít také jakoukoli jinou Microsoft.Extensions.AI.IChatClient implementaci. Varies Varies

Komplexní agenti na míru

Je také možné vytvořit plně vlastní agenty, které nejsou jen obálky kolem IChatClient. Rozhraní agenta poskytuje AIAgent základní typ. Tento základní typ je základní abstrakce všech agentů, která při podtřídě umožňuje úplnou kontrolu nad chováním a možnostmi agenta.

Další informace najdete v dokumentaci pro vlastní agenty.

Proxy servery pro vzdálené agenty

Agent Framework poskytuje připravenou AIAgent implementaci pro běžné protokoly agentů hostovaných službou, jako je A2A. Tímto způsobem se můžete ze své aplikace snadno připojit ke vzdáleným agentům a používat je.

Další informace najdete v dokumentaci pro jednotlivé typy agentů:

Protokol Description
A2A Agent, který slouží jako proxy pro vzdáleného agenta prostřednictvím protokolu A2A.

Referenční informace k možnostem sady Azure a OpenAI SDK

Při používání služeb Azure AI Foundry, Azure OpenAI nebo OpenAI máte různé možnosti sady SDK pro připojení k těmto službám. V některých případech je možné použít více sad SDK pro připojení ke stejné službě nebo použití stejné sady SDK pro připojení k různým službám. Tady je seznam různých možností dostupných s adresou URL, kterou byste měli použít při připojování k jednotlivým možnostem. Nezapomeňte nahradit <resource> a <project> nahradit skutečnými názvy zdrojů a projektů.

Služba AI sada SDK NuGet URL
Modely Azure AI Foundry Azure OpenAI SDK 2 Azure.AI.OpenAI https://ai-foundry-<resource.services.ai.azure.com/>
Modely Azure AI Foundry OpenAI SDK 3 OpenAI https://ai-foundry-<resource.services.ai.azure.com/openai/v1/>
Modely Azure AI Foundry Azure AI Inference SDK 2 Azure.AI.Inference https://ai-foundry-<resource.services.ai.azure.com/models>
Agenti Azure AI Foundry Azure AI Persistent Agents SDK Azure.AI.Agents.Persistent https://ai-foundry-<resource.services.ai.azure.com/api/projects/ai-project-project><>
Azure OpenAI1 Azure OpenAI SDK 2 Azure.AI.OpenAI <https:// resource.openai.azure.com/>
Azure OpenAI1 OpenAI SDK OpenAI <https://resource.openai.azure.com/openai/v1/>
OpenAI OpenAI SDK OpenAI Nevyžaduje se žádná adresa URL.
  1. Upgrade z Azure OpenAI na Azure AI Foundry
  2. Doporučujeme použít sadu OpenAI SDK.
  3. I když pro přístup k modelům Azure AI Foundry doporučujeme používat sadu OpenAI SDK, modely Azure AI Foundry podporují modely od mnoha různých dodavatelů, nejen OpenAI. Všechny tyto modely jsou podporovány prostřednictvím sady OpenAI SDK.

Použití sady OpenAI SDK

Jak je znázorněno v tabulce výše, můžete sadu OpenAI SDK použít k připojení k více službám. V závislosti na službě, ke které se připojujete, možná budete muset při vytváření OpenAIClientnastavit vlastní adresu URL . Můžete také použít různé mechanismy ověřování v závislosti na službě.

Pokud je požadována vlastní adresa URL (viz tabulka výše), můžete ji nastavit přes OpenAIClientOptions.

var clientOptions = new OpenAIClientOptions() { Endpoint = new Uri(serviceUrl) };

Při vytváření klienta je možné použít klíč rozhraní API.

OpenAIClient client = new OpenAIClient(new ApiKeyCredential(apiKey), clientOptions);

Při použití služby Azure je také možné místo klíče rozhraní API použít přihlašovací údaje Azure.

OpenAIClient client = new OpenAIClient(new BearerTokenPolicy(new AzureCliCredential(), "https://ai.azure.com/.default"), clientOptions)

Jakmile vytvoříte OpenAIClient, můžete získat podklienta pro konkrétní službu, kterou chcete použít, a poté z toho vytvořit instanci AIAgent.

AIAgent agent = client
    .GetChatClient(model)
    .AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");

Použití sady Azure OpenAI SDK

Tuto sadu SDK je možné použít k připojení ke službám Azure OpenAI i Azure AI Foundry Models. V obou případech budete muset při vytváření AzureOpenAIClient zadat správnou adresu URL služby. Správnou adresu URL, která se má použít, najdete v tabulce výše.

AIAgent agent = new AzureOpenAIClient(
    new Uri(serviceUrl),
    new AzureCliCredential())
     .GetChatClient(deploymentName)
     .AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");

Použití sady AZURE AI Persistent Agents SDK

Tato sada SDK se podporuje pouze ve službě Azure AI Foundry Agents. Správnou adresu URL, která se má použít, najdete v tabulce výše.

var persistentAgentsClient = new PersistentAgentsClient(serviceUrl, new AzureCliCredential());
AIAgent agent = await persistentAgentsClient.CreateAIAgentAsync(
    model: deploymentName,
    name: "Joker",
    instructions: "You are good at telling jokes.");

Jednoduché agenty založené na službách odvození

Agent Framework usnadňuje vytváření jednoduchých agentů na základě mnoha různých služeb odvození. K sestavení těchto agentů je možné použít jakoukoli službu odvození, která poskytuje implementaci chatovacího klienta.

Tito agenti podporují celou řadu funkcí již v základním nastavení.

  1. Volání funkcí
  2. Konverzace s vícenásobným otáčením s místní správou historie chatu nebo službou poskytovanou správou historie chatu
  3. Vlastní nástroje poskytované službou (například MCP, Provádění kódu)
  4. Strukturovaný výstup
  5. Streamující odpovědi

Pokud chcete vytvořit jednoho z těchto agentů, jednoduše použijte existující implementaci chatovacího klienta podle svého výběru a postavte ChatAgent.

from agent_framework import ChatAgent
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import DefaultAzureCredential

async with (
    DefaultAzureCredential() as credential,
    ChatAgent(
        chat_client=AzureAIAgentClient(async_credential=credential),
        instructions="You are a helpful assistant"
    ) as agent
):
    response = await agent.run("Hello!")

Případně můžete použít metodu pohodlí v chatovacím klientovi:

from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import DefaultAzureCredential

async with DefaultAzureCredential() as credential:
    agent = AzureAIAgentClient(async_credential=credential).as_agent(
        instructions="You are a helpful assistant"
    )

Podrobné příklady najdete v následujících částech dokumentace pro konkrétní agenty.

Podporované typy agentů

Podkladová inferenční služba Description Podporované úložiště historie chatu služby Podporované úložiště historie vlastních chatů
Azure AI Agent Agent, který jako svůj back-end používá službu Azure AI Agents Service. Ano Ne
Dokončení chatu Azure OpenAI Agent, který používá službu dokončování chatu Azure OpenAI. Ne Ano
Odpovědi Azure OpenAI Agent, který používá službu Odpovědí Azure OpenAI. Ano Ano
Dokončení chatu OpenAI Agent, který používá službu Dokončování chatu OpenAI. Ne Ano
Odpovědi OpenAI Agent, který používá službu OpenAI Responses. Ano Ano
Asistenti OpenAI Agent, který používá službu OpenAI Assistants. Ano Ne
Jakýkoli jiný ChatClient K vytvoření agenta můžete použít také jakoukoli jinou implementaci chatovacího klienta. Varies Varies

Funkční nástroje

Nástroje funkcí můžete poskytnout agentům pro vylepšené funkce:

from typing import Annotated
from pydantic import Field
from azure.identity.aio import DefaultAzureCredential
from agent_framework.azure import AzureAIAgentClient

def get_weather(location: Annotated[str, Field(description="The location to get the weather for.")]) -> str:
    """Get the weather for a given location."""
    return f"The weather in {location} is sunny with a high of 25°C."

async with (
    DefaultAzureCredential() as credential,
    AzureAIAgentClient(async_credential=credential).as_agent(
        instructions="You are a helpful weather assistant.",
        tools=get_weather
    ) as agent
):
    response = await agent.run("What's the weather in Seattle?")

Kompletní příklady s nástroji funkcí najdete tady:

Odpovědi na streamování

Agenti podporují pravidelné i streamované odpovědi:

# Regular response (wait for complete result)
response = await agent.run("What's the weather like in Seattle?")
print(response.text)

# Streaming response (get results as they are generated)
async for chunk in agent.run_stream("What's the weather like in Portland?"):
    if chunk.text:
        print(chunk.text, end="", flush=True)

Příklady streamování najdete tady:

Nástroje interpretu kódu

Agenti Azure AI podporují nástroje interpreta hostovaného kódu pro spouštění kódu Pythonu:

from agent_framework import ChatAgent, HostedCodeInterpreterTool
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import DefaultAzureCredential

async with (
    DefaultAzureCredential() as credential,
    ChatAgent(
        chat_client=AzureAIAgentClient(async_credential=credential),
        instructions="You are a helpful assistant that can execute Python code.",
        tools=HostedCodeInterpreterTool()
    ) as agent
):
    response = await agent.run("Calculate the factorial of 100 using Python")

Příklady interpreta kódu najdete tady:

Vlastní agenti

Je také možné vytvořit plně vlastní agenty, které nejsou jen obálky kolem chatovacího klienta. Agent Framework poskytuje AgentProtocol protokol a BaseAgent základní třídu, které při implementaci nebo podtřídě umožňují úplnou kontrolu nad chováním a možnostmi agenta.

from agent_framework import BaseAgent, AgentResponse, AgentResponseUpdate, AgentThread, ChatMessage
from collections.abc import AsyncIterable

class CustomAgent(BaseAgent):
    async def run(
        self,
        messages: str | ChatMessage | list[str] | list[ChatMessage] | None = None,
        *,
        thread: AgentThread | None = None,
        **kwargs: Any,
    ) -> AgentResponse:
        # Custom agent implementation
        pass

    def run_stream(
        self,
        messages: str | ChatMessage | list[str] | list[ChatMessage] | None = None,
        *,
        thread: AgentThread | None = None,
        **kwargs: Any,
    ) -> AsyncIterable[AgentResponseUpdate]:
        # Custom streaming implementation
        pass