typy agentů Microsoft Agent Framework

Rozhraní agenta Microsoft 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šechny agenty v 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 používáte Microsoft Agent Framework k vytváření aplikací, které pracují se všemi servery třetích stran, agenty, kódem nebo modely bez Azure Direct ("Systémy třetích stran"), uděláte to na vlastní nebezpečí. Systémy třetích stran nejsou Microsoft Produkty podle Microsoft Podmínek produktu a řídí se vlastními licenčními podmínkami třetích stran. Zodpovídáte za veškeré využití a související náklady.

Doporučujeme zkontrolovat veškerá data sdílená se systémy třetích stran a přijímat je ze systémů třetích stran a seznámit se s postupy třetích stran pro zpracování, sdílení, uchovávání a umístění dat. Je vaší zodpovědností řídit, zda vaše data budou přenášena mimo geografické a pravidlové hranice Azure vaší organizace a jaké jsou s tím spojené důsledky. Současně zajistěte, aby byla zavedena příslušná oprávnění, hranice a schválení.

Zodpovídáte za pečlivou kontrolu a testování aplikací, které vytváříte pomocí Microsoft Agent Framework v kontextu konkrétních případů použití, a za veškerá vhodná rozhodnutí a přizpůsobení. To zahrnuje implementaci vlastního zodpovědného zmírnění rizik umělé inteligence, jako jsou metaprompt, filtry obsahu nebo jiné bezpečnostní systémy, a zajištění toho, aby vaše aplikace splňovaly příslušné standardy kvality, spolehlivosti, zabezpečení a důvěryhodnosti. Viz také: Nejčastější dotazy k transparentnosti

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ů lze použít jakoukoli službu odvození, která poskytuje Microsoft.Extensions.AI.IChatClient implementaci. Microsoft.Agents.AI.ChatClientAgent je třída agenta použitá k poskytnutí 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ýstupy

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ě
Microsoft Foundry Agent Agent, který jako back-end používá službu Foundry Agent Service. Ano Ne
Foundry Modely ChatCompletion Agent, který používá některý z modelů nasazených ve službě Foundry jako svůj back-end prostřednictvím chatCompletionu. Ne Ano
Odpovědi modelů Foundry Agent, který používá některý z modelů nasazených ve službě Foundry jako své zázemí prostřednictvím odpovědí. Ano Ano
Foundry Anthropic Agent, který jako svůj back-end používá Claudův model prostřednictvím služby Foundry Anthropic. Ne Ano
Azure OpenAI ChatCompletion Agent, který používá službu Azure OpenAI ChatCompletion. Ne Ano
Azure OpenAI Odpovědi Agent, který používá Azure službu OpenAI Responses. Ano Ano
Anthropic Agent, který jako svůj back-end používá model Clauda prostřednictvím služby Anthropic Service. Ne 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
Všechny ostatní IChatClient K vytvoření agenta můžete použít také jakoukoli jinou implementaci Microsoft.Extensions.AI.IChatClient. 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

Pokud používáte Foundry, Azure OpenAI, služby OpenAI nebo Anthropic, 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 Foundry Azure OpenAI SDK 2 Azure. AI. OpenAI https://ai-foundry-<resource.services.ai.azure.com/>
Modely Foundry OpenAI SDK 3 OpenAI https://ai-foundry-<resource.services.ai.azure.com/openai/v1/>
Modely Foundry Azure AI Inference SDK 2 Azure.AI.Inference https://ai-foundry-<resource.services.ai.azure.com/models>
Slévci agenti Azure AI Projects SDK + Microsoft Agents AI Foundry Azure.AI.Projekty / Microsoft.Agents.AI.Foundry 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.
Microsoft Foundry Anthropic Anthropic Foundry SDK (softwarový vývojářský kit) Anthropic.Foundry Název zdroje je vyžadován
Antropický Anthropic SDK Anthropic Nevyžaduje se žádná adresa URL ani název prostředku.
  1. Upgrade z Azure OpenAI na Foundry
  2. Doporučujeme použít sadu OpenAI SDK.
  3. I když pro přístup k modelům Foundry doporučujeme používat sadu OpenAI SDK, modely 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 Azure přihlašovací údaje.

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
    .AsAIAgent(model: model, instructions: "You are good at telling jokes.", name: "Joker");

Použití sady SDK pro Azure projekty AI

Tuto sadu SDK je možné použít k připojení ke službám Foundry. Při vytváření AIProjectClient budete muset zadat správnou adresu URL koncového bodu projektu. Správnou adresu URL, která se má použít, najdete v tabulce výše.

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

Použití sady SDK pro projekty AI Azure s agenty Foundry

Tato sada SDK se používá pro agenty založené na rozhraní Responses API i pro verzované agenty Foundry. Správnou adresu URL, která se má použít, najdete v tabulce výše.

var aiProjectClient = new AIProjectClient(new Uri(serviceUrl), new DefaultAzureCredential());
AIAgent agent = aiProjectClient.AsAIAgent(
    model: deploymentName,
    instructions: "You are good at telling jokes.",
    name: "Joker");

Použití sady Foundry Anthropic SDK

Prostředek je název subdomény / křestní jméno přicházející před ".services.ai.azure.com" v identifikátoru URI koncového bodu.

Příklad: https://(resource name).services.ai.azure.com/anthropic/v1/chat/completions

var client = new AnthropicFoundryClient(new AnthropicFoundryApiKeyCredentials(apiKey, resource));
AIAgent agent = client.AsAIAgent(
    model: deploymentName,
    instructions: "Joker",
    name: "You are good at telling jokes.");

Použití sady Anthropic SDK

var client = new AnthropicClient() { ApiKey = apiKey };
AIAgent agent = client.AsAIAgent(
    model: deploymentName,
    instructions: "Joker",
    name: "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 protokolu, 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ýstupy
  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.foundry import FoundryChatClient
from azure.identity.aio import DefaultAzureCredential

agent = Agent(
    client=FoundryChatClient(
        credential=DefaultAzureCredential(),
        project_endpoint=os.getenv("FOUNDRY_PROJECT_ENDPOINT"),
        model=os.getenv("FOUNDRY_MODEL"),
    ),
    instructions="You are a helpful assistant",
)
response = await agent.run("Hello!")

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

from agent_framework.foundry import FoundryChatClient
from azure.identity.aio import DefaultAzureCredential

agent = FoundryChatClient(
    credential=DefaultAzureCredential(),
    project_endpoint=os.getenv("FOUNDRY_PROJECT_ENDPOINT"),
    model=os.getenv("FOUNDRY_MODEL"),
).as_agent(
    instructions="You are a helpful assistant"
)

Poznámka:

Tento příklad ukazuje použití FoundryChatClient, ale stejný vzor platí pro každého chatovacího klienta, který implementuje SupportsChatGetResponse, viz přehled poskytovatelů další podrobnosti o jiný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
Slévárenský Agent Agent, který používá službu agenta jako back-end. Ano
Azure Dokončení chatu OpenAI Agent, který používá službu dokončení chatu OpenAI Azure. Ne
Azure OpenAI Odpovědi Agent, který používá Azure službu OpenAI Responses. 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
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á backend 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.foundry import FoundryChatClient

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 = FoundryChatClient(
        credential=credential,
        project_endpoint=os.getenv("FOUNDRY_PROJECT_ENDPOINT"),
        model=os.getenv("FOUNDRY_MODEL"),
    ).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