Megosztás:


Microsoft Agent Framework-ügynöktípusok

A Microsoft Agent Framework számos ügynöktípust támogat a különböző használati esetek és követelmények kielégítése érdekében.

Minden ügynök egy közös alaposztályból származik, AIAgentamely konzisztens felületet biztosít minden ügynöktípushoz. Ez lehetővé teszi a gyakori, ügynök-agnosztikus, magasabb szintű funkciók, például a többügynök-vezénylések kiépítését.

Fontos

Ha a Microsoft Agent Framework használatával olyan alkalmazásokat hoz létre, amelyek külső kiszolgálókkal vagy ügynökökkel működnek, ezt saját felelősségére teheti meg. Javasoljuk, hogy tekintse át a külső kiszolgálókkal vagy ügynökökkel megosztott összes adatot, és hogy megismerje az adatok megőrzésére és elhelyezésére vonatkozó, harmadik féltől származó eljárásokat. Az Ön felelőssége annak kezelése, hogy az adatok a szervezet Azure-beli megfelelőségi és földrajzi határain kívülre kerülnek-e, valamint az ezzel kapcsolatos következményekkel.

Egyszerű ügynökök következtetési szolgáltatások alapján

Az Agent Framework segítségével egyszerűen hozhat létre egyszerű ügynököket számos különböző következtetési szolgáltatás alapján. Megvalósítással Microsoft.Extensions.AI.IChatClient rendelkező következtetési szolgáltatások használhatók ezen ügynökök létrehozásához. Az Microsoft.Agents.AI.ChatClientAgent ügynökosztály a IChatClient bármely implementáció számára ügynök biztosítására szolgál.

Ezek az ügynökök számos funkciót támogatnak a dobozon kívül:

  1. Függvényhívás.
  2. Többfordulós beszélgetések helyi csevegési előzmények kezelésével vagy szolgáltatás által biztosított csevegési előzmények kezelésével.
  3. Egyéni szolgáltatás által biztosított eszközök (például MCP, Kódvégrehajtás).
  4. Strukturált kimenet.

Az egyik ilyen ügynök létrehozásához egyszerűen készítsen egy ChatClientAgent-t a választott IChatClient implementáció felhasználásával.

using Microsoft.Agents.AI;

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

Ezeknek az ügynököknek a létrehozása még egyszerűbbé tétele érdekében az Agent Framework számos népszerű szolgáltatáshoz nyújt segítséget. További információkért tekintse meg az egyes szolgáltatások dokumentációját.

Mögöttes következtetési szolgáltatás Description Szolgáltatáscsevegés előzménytárának támogatása Testreszabott csevegési előzmények tárolásának támogatása
Azure AI Foundry-ügynök Az Azure AI Foundry Agents Service-t háttérrendszerként használó ügynök. Igen Nem
Azure AI Foundry Models ChatCompletion Olyan ügynök, amely az Azure AI Foundry Service-ben üzembe helyezett modellek bármelyikét használja háttérként a ChatCompletionon keresztül. Nem Igen
Azure AI Foundry-modellek válaszai Olyan ügynök, amely az Azure AI Foundry Service-ben üzembe helyezett modellek bármelyikét használja háttérként a Válaszok segítségével. Nem Igen
Azure OpenAI ChatCompletion Az Azure OpenAI ChatCompletion szolgáltatást használó ügynök. Nem Igen
Azure OpenAI-válaszok Az Azure OpenAI Responses szolgáltatást használó ügynök. Igen Igen
OpenAI ChatCompletion Az OpenAI ChatCompletion szolgáltatást használó ügynök. Nem Igen
OpenAI-válaszok Az OpenAI Responses szolgáltatást használó ügynök. Igen Igen
OpenAI Assistants Az OpenAI Assistants szolgáltatást használó ügynök. Igen Nem
Bármely más IChatClient Bármely más Microsoft.Extensions.AI.IChatClient implementációval is létrehozhat ügynököt. Varies Varies

Összetett egyéni ügynökök

Teljesen testreszabott ügynököket is létrehozhat, amelyek nem csak egy IChatClient összekötői. Az ügynök-keretrendszer biztosítja az alaptípust AIAgent . Ez az alaptípus az összes ügynök alapvető absztrakciója, amely alosztályozott állapot esetén lehetővé teszi az ügynök viselkedésének és képességeinek teljes ellenőrzését.

További információkért tekintse meg az egyéni ügynökök dokumentációját.

Proxyk távoli ügynökökhöz

Az Agent Framework készre konfigurált AIAgent implementációkat biztosít a szokásos, szolgáltatás által üzemeltetett ügynökprotokollokhoz, mint például az A2A. Így egyszerűen csatlakozhat az alkalmazás távoli ügynökeihez, és használhatja azt.

További információkért tekintse meg az egyes ügynöktípusok dokumentációját:

Protokoll Description
A2A Olyan ügynök, amely proxyként szolgál egy távoli ügynökhöz az A2A protokollon keresztül.

Az Azure és az OpenAI SDK beállításainak ismertetése

Az Azure AI Foundry, az Azure OpenAI vagy az OpenAI szolgáltatások használatakor különböző SDK-lehetőségek állnak rendelkezésre ezekhez a szolgáltatásokhoz való csatlakozáshoz. Bizonyos esetekben több SDK is használható ugyanahhoz a szolgáltatáshoz való csatlakozáshoz, vagy ugyanazt az SDK-t használhatja a különböző szolgáltatásokhoz való csatlakozáshoz. Az alábbiakban felsoroljuk a különböző lehetőségeket, amelyekhez az url-címet kell használnia, amikor mindegyikhez csatlakozik. Mindenképpen cserélje le a <resource> és <project> címkéket a tényleges erőforrás- és projektnevekre.

AI-szolgáltatás SDK Nuget URL vagy webcím
Azure AI Innovációs Platform Modellek Azure OpenAI SDK 2 Azure.AI.OpenAI https://ai-foundry-<resource.services.ai.azure.com/>
Azure AI Innovációs Platform Modellek OpenAI SDK 3 OpenAI https://ai-foundry-<resource.services.ai.azure.com/openai/v1/>
Azure AI Innovációs Platform Modellek Azure AI-inferálási SDK 2 Azure.AI.Inference https://ai-foundry-<resource.services.ai.azure.com/models>
Azure AI Foundry ügynökök Azure AI Állandóügynökök 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 Nincs szükség URL-címre
  1. Frissítés az Azure OpenAI-ról az Azure AI Foundryre
  2. Az OpenAI SDK használatát javasoljuk.
  3. Bár az OpenAI SDK használatát javasoljuk az Azure AI Foundry-modellek eléréséhez, az Azure AI Foundry Models számos különböző gyártó modelljeit támogatja, nem csak az OpenAI-t. Ezeket a modelleket az OpenAI SDK támogatja.

Az OpenAI SDK használata

Ahogy a fenti táblázatban látható, az OpenAI SDK több szolgáltatáshoz is csatlakoztatható. Attól függően, hogy melyik szolgáltatáshoz csatlakozik, előfordulhat, hogy egyéni URL-címet kell beállítania a OpenAIClientlétrehozásakor. A szolgáltatástól függően különböző hitelesítési mechanizmusokat is használhat.

Ha egyéni URL-címre van szükség (lásd a fenti táblázatot), beállíthatja az OpenAIClientOptions használatával.

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

Az ügyfél létrehozásakor api-kulcsot is használhat.

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

Azure-szolgáltatás használata esetén AZ API-kulcs helyett Azure-hitelesítő adatokat is használhat.

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

Az OpenAIClient létrehozása után lekérhet egy alügyfelet a használni kívánt szolgáltatáshoz, majd létrehozhat egy AIAgent-t belőle.

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

Az Azure OpenAI SDK használata

Ez az SDK használható az Azure OpenAI és az Azure AI Foundry Models szolgáltatásokhoz való csatlakozáshoz. Akárhogy is, a megfelelő szolgáltatás URL-címét kell megadnia a AzureOpenAIClientlétrehozásakor. A megfelelő URL-címet a fenti táblázatban találhatja meg.

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

Az Azure AI Persistent Agents SDK használata

Ez az SDK csak az Azure AI Foundry Agents szolgáltatással támogatott. A megfelelő URL-címet a fenti táblázatban találhatja meg.

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

Egyszerű ügynökök következtetési szolgáltatások alapján

Az Agent Framework segítségével egyszerűen hozhat létre egyszerű ügynököket számos különböző következtetési szolgáltatás alapján. Olyan következtetési szolgáltatások, amelyek csevegőügyfél implementációt biztosítanak, használhatók ezeknek az ügynököknek a létrehozására.

Ezek az ügynökök számos funkciót támogatnak a dobozon kívül:

  1. Függvényhívás
  2. Többfordulós beszélgetések helyi csevegési előzmények kezelésével vagy szolgáltatás által biztosított csevegési előzmények kezelésével
  3. Egyéni szolgáltatás által biztosított eszközök (például MCP, Kódvégrehajtás)
  4. Strukturált kimenet
  5. Válaszok streamelése

Ezen ügynökök egyikének létrehozásához egyszerűen építsen egy ChatAgent a választott csevegőügyfél-implementáció segítségével.

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!")

Másik lehetőségként a csevegőügyfél kényelmi módszerét is használhatja:

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

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

Részletes példákért tekintse meg az ügynökspecifikus dokumentáció alábbi szakaszait.

Támogatott ügynöktípusok

Mögöttes következtetési szolgáltatás Description A szolgáltatás csevegési előzményeinek tárolása támogatott Az egyéni csevegési előzmények tárolója támogatott
Azure AI-ügynök Az Azure AI Agents Service-t háttérrendszerként használó ügynök. Igen Nem
Azure OpenAI-csevegés befejezése Az Azure OpenAI Chat Completion szolgáltatást használó ügynök. Nem Igen
Azure OpenAI-válaszok Az Azure OpenAI Responses szolgáltatást használó ügynök. Igen Igen
OpenAI Csevegés Kiegészítés Az OpenAI Csevegés befejezése szolgáltatást használó ügynök. Nem Igen
OpenAI-válaszok Az OpenAI Responses szolgáltatást használó ügynök. Igen Igen
OpenAI Assistants Az OpenAI Assistants szolgáltatást használó ügynök. Igen Nem
Bármilyen más Chatkliens Bármely más csevegőügyfél-implementációval is létrehozhat ügynököt. Varies Varies

Függvényeszközök

Továbbfejlesztett képességek érdekében funkciókat biztosíthat az ügynököknek.

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).create_agent(
        instructions="You are a helpful weather assistant.",
        tools=get_weather
    ) as agent
):
    response = await agent.run("What's the weather in Seattle?")

A függvényeszközökkel kapcsolatos példákért lásd:

Adatfolyam válaszok

Az ügynökök támogatják a rendszeres és a streaming válaszokat is.

# 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)

A streamelési példákért lásd:

Kódértelmező eszközök

Az Azure AI-ügynökök támogatják az üzemeltetett kódértelmező eszközöket a Python-kód végrehajtásához:

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")

A kódértelmezők példáiért lásd:

Egyéni ügynökök

Teljesen egyéni ügynököket is létrehozhat, amelyek nem csak egy csevegőügyfél körül burkolóznak. Az Ügynök-keretrendszer biztosítja a protokollt és AgentProtocol az BaseAgent alaposztályt, amely implementálás/alosztály esetén lehetővé teszi az ügynök viselkedésének és képességeinek teljes ellenőrzését.

from agent_framework import BaseAgent, AgentRunResponse, AgentRunResponseUpdate, 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,
    ) -> AgentRunResponse:
        # Custom agent implementation
        pass

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