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.

Všichni agenti jsou odvozeni od společné základní třídy , Agentkterá 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.

Výchozí model spouštění modulu runtime agenta

Všichni agenti v rozhraní Microsoft Agent Framework se spouštějí pomocí strukturovaného modelu modulu runtime. Tento model koordinuje interakci uživatelů, odvozování modelů a provádění nástrojů v deterministické smyčce.

Diagram agenta AI

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 Podporované úložiště historie chatu služby Podporované úložiště historie chatu: InMemory nebo vlastní úložiště
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í. Ano 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 (Sada pro vývoj software) 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 DefaultAzureCredential(), "https://ai.azure.com/.default"), clientOptions)

Výstraha

DefaultAzureCredential je vhodný pro vývoj, ale vyžaduje pečlivé zvážení v produkčním prostředí. V produkčním prostředí zvažte použití konkrétních přihlašovacích údajů (např ManagedIdentityCredential. ) k zabránění problémům s latencí, neúmyslnému testování přihlašovacích údajů a potenciálním bezpečnostním rizikům z náhradních mechanismů.

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 DefaultAzureCredential())
     .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 DefaultAzureCredential());
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. To lze provést pomocí SupportsChatGetResponse, který definuje standard pro metody, které klient potřebuje podporovat pro použití se standardní Agent třídou.

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 vytvořte Agent pomocí implementace chatovacího klienta podle vašeho výběru.

import os
from agent_framework import Agent
from agent_framework.azure import AzureOpenAIResponsesClient
from azure.identity.aio import DefaultAzureCredential

Agent(
    client=AzureOpenAIResponsesClient(credential=DefaultAzureCredential(), project_endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"), deployment_name=os.getenv("AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME")),
    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 AzureOpenAIResponsesClient
from azure.identity.aio import DefaultAzureCredential

agent = AzureOpenAIResponsesClient(async_credential=DefaultAzureCredential(), project_endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"), deployment_name=os.getenv("AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME")).as_agent(
    instructions="You are a helpful assistant"
)

Poznámka:

Tento příklad ukazuje použití AzureOpenAIResponsesClient, ale stejný model platí pro každého chatovacího klienta, který implementuje SupportsChatGetResponse, viz přehled poskytovatelů , kde najdete další podrobnosti o ostatních klientech.

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

Podporovaní poskytovatelé chatu

Podkladová inferenční služba Description Podporované úložiště historie chatu služby
Azure AI Foundry Agent Agent, který jako svůj back-end používá službu Azure AI Agents Service. Ano
Dokončení chatu Azure OpenAI Agent, který používá službu dokončování chatu Azure OpenAI. Ne
Odpovědi Azure OpenAI Agent, který používá službu Odpovědí Azure OpenAI. Ano
Asistenti Azure OpenAI Agent, který používá službu Azure OpenAI Assistants. Ano
Dokončení chatu OpenAI Agent, který používá službu Dokončování chatu OpenAI. Ne
Odpovědi OpenAI Agent, který používá službu OpenAI Responses. Ano
Asistenti OpenAI Agent, který používá službu OpenAI Assistants. Ano
Anthropic Claude Agent, který používá modely Anthropic Claude. Ne
Amazonské podloží Agent, který používá modely Amazon Bedrock prostřednictvím chatovacího klienta Agent Framework Bedrock. Ne
GitHub Copilot Agent, který používá zázemí sady GitHub Copilot SDK. Ne
Ollama (kompatibilní s OpenAI) Agent, který používá místně hostované modely Ollama prostřednictvím rozhraní API kompatibilních s OpenAI. Ne
Jakýkoli jiný ChatClient K vytvoření agenta SupportsChatGetResponse můžete použít také jakoukoli jinou implementaci. Varies

Kdykoli je podporován stav konverzace založený na relacích, je podporováno vlastní úložiště historie chatu.

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("What's the weather like in Portland?", stream=True):
    if chunk.text:
        print(chunk.text, end="", flush=True)

Příklady streamování najdete tady:

Další způsoby vyvolání naleznete v části Spuštění agentů.

Funkční nástroje

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

import os
from typing import Annotated
from azure.identity.aio import DefaultAzureCredential
from agent_framework.azure import AzureOpenAIResponsesClient

def get_weather(location: Annotated[str, "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:
    agent = AzureOpenAIResponsesClient(
        async_credential=credential,
        project_endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"),
        deployment_name=os.getenv("AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME"),
    ).as_agent(
        instructions="You are a helpful weather assistant.",
        tools=get_weather,
    )
    response = await agent.run("What's the weather in Seattle?")

Informace o nástrojích a vzorech nástrojů najdete v tématu Přehled nástrojů.

Vlastní agenti

Plně vlastní implementace (například deterministické agenty nebo agenty založené na rozhraní API) najdete v tématu Vlastní agenty. Tato stránka popisuje implementaci SupportsAgentRun nebo rozšíření BaseAgent, včetně aktualizací streamování s AgentResponseUpdate.

Jiné typy agentů

Agent Framework zahrnuje také agenty založené na protokolu, například:

Typ agenta Description
A2A Proxy agent, který se připojuje ke vzdáleným agentům kompatibilním s A2A a vyvolává je.

Další kroky