Freigeben über


Erforschung des semantischen Kerns AzureAIAgent

Von Bedeutung

Dieses Feature befindet sich in der experimentellen Phase. Features in dieser Phase befinden sich in der Entwicklung und können sich ändern, bevor Sie zur Vorschau- oder Veröffentlichungskandidatenstufe wechseln.

Tipp

Detaillierte API-Dokumentation zu dieser Diskussion finden Sie unter:

Tipp

Detaillierte API-Dokumentation zu dieser Diskussion finden Sie unter:

Das Feature ist derzeit in Java nicht verfügbar.

Was ist eine AzureAIAgent?

Ein AzureAIAgent ist ein spezialisierter Agent im Semantic Kernel Framework, der entwickelt wurde, um erweiterte Unterhaltungsfunktionen mit nahtloser Toolintegration bereitzustellen. Sie automatisiert das Aufrufen von Tools, ohne dass manuelle Analyse und Aufruf erforderlich sind. Der Agent verwaltet auch den Unterhaltungsverlauf sicher mithilfe von Threads, wodurch der Mehraufwand für die Statusverwaltung reduziert wird. Darüber hinaus unterstützt die AzureAIAgent eine Vielzahl integrierter Tools, einschließlich Dateiabruf, Codeausführung und Dateninteraktion über Bing, Azure AI Search, Azure Functions und OpenAPI.

Um AzureAIAgentzu verwenden, muss ein Azure AI Foundry-Projekt genutzt werden. Die folgenden Artikel enthalten eine Übersicht über die Azure AI Foundry, das Erstellen und Konfigurieren eines Projekts und den Agentdienst:

So bereiten Sie Ihre Entwicklungsumgebung vor

Um mit der Entwicklung einer AzureAIAgentfortzufahren, konfigurieren Sie Ihre Entwicklungsumgebung mit den entsprechenden Paketen.

Fügen Sie dem Projekt das Microsoft.SemanticKernel.Agents.AzureAI-Paket hinzu:

dotnet add package Microsoft.SemanticKernel.Agents.AzureAI --prerelease

Möglicherweise möchten Sie auch das Azure.Identity Paket einschließen:

dotnet add package Azure.Identity

Installieren Sie das Paket semantic-kernel:

pip install semantic-kernel

Das Feature ist derzeit in Java nicht verfügbar.

Konfigurieren des KI-Projektclients

Um auf ein erstes AzureAIAgent zugreifen zu können, muss zunächst ein Client erstellt werden, der für ein spezifisches Foundry-Projekt eingerichtet wird. Am besten wird dies erreicht, indem Sie Ihren Projektendpunkt bereitstellen (Das Azure AI Foundry SDK: Erste Schritte mit Projekten).

PersistentAgentsClient client = AzureAIAgent.CreateAgentsClient("<your endpoint>", new AzureCliCredential());

Ändern Sie die .env Datei im Stammverzeichnis, um Folgendes einzuschließen:

AZURE_AI_AGENT_ENDPOINT = "<example-endpoint>"
AZURE_AI_AGENT_MODEL_DEPLOYMENT_NAME = "<example-model-deployment-name>"

Nachdem die Konfiguration definiert wurde, kann der Client erstellt werden:

from semantic_kernel.agents import AzureAIAgent

async with (
    DefaultAzureCredential() as creds,
    AzureAIAgent.create_client(credential=creds) as client,
):
    # Your operational code here

Die zugrunde liegende endpoint wird von den Pydantic Settings aufgenommen, falls konfiguriert. Andernfalls können Sie sie explizit an die create_client() Methode übergeben:

from semantic_kernel.agents import AzureAIAgent

async with (
    DefaultAzureCredential() as creds,
    AzureAIAgent.create_client(credential=creds, endpoint="<your-endpoint>") as client,
):
    # Your operational code here

Das Feature ist derzeit in Java nicht verfügbar.

Erstellen eines AzureAIAgent

Um ein AzureAIAgentProjekt zu erstellen, konfigurieren und initialisieren Sie zunächst das Foundry-Projekt über den Azure-Agent-Dienst und integrieren es dann in den semantischen Kernel:

PersistentAgentsClient client = AzureAIAgent.CreateAgentsClient("<your endpoint>", new AzureCliCredential());

// 1. Define an agent on the Azure AI agent service
PersistentAgent definition = await agentsClient.Administration.CreateAgentAsync(
    "<name of the the model used by the agent>",
    name: "<agent name>",
    description: "<agent description>",
    instructions: "<agent instructions>");

// 2. Create a Semantic Kernel agent based on the agent definition
AzureAIAgent agent = new(definition, agentsClient);
from azure.identity.aio import DefaultAzureCredential
from semantic_kernel.agents import AzureAIAgent, AzureAIAgentSettings

async with (
    DefaultAzureCredential() as creds,
    AzureAIAgent.create_client(credential=creds) as client,
):
    # 1. Define an agent on the Azure AI agent service
    agent_definition = await client.agents.create_agent(
        model=AzureAIAgentSettings().model_deployment_name,
        name="<name>",
        instructions="<instructions>",
    )

    # 2. Create a Semantic Kernel agent based on the agent definition
    agent = AzureAIAgent(
        client=client,
        definition=agent_definition,
    )

Das Feature ist derzeit in Java nicht verfügbar.

Mit einem AzureAIAgent interagieren

Die Interaktion mit dem AzureAIAgent ist einfach. Der Agent verwaltet den Unterhaltungsverlauf automatisch mithilfe eines Threads.

Die Besonderheiten des Azure AI-Agent-Threads werden über die Microsoft.SemanticKernel.Agents.AzureAI.AzureAIAgentThread Klasse abstrahiert, die eine Implementierung von Microsoft.SemanticKernel.Agents.AgentThread.

Von Bedeutung

Beachten Sie, dass das Azure AI Agents SDK über die PersistentAgentThread Klasse verfügt. Es sollte nicht mit Microsoft.SemanticKernel.Agents.AgentThread, der gängigen Abstraktion von Semantic Kernel Agents für alle Threadtypen, verwechselt werden.

Die AzureAIAgent unterstützt derzeit nur Threads vom Typ AzureAIAgentThread.

AzureAIAgentThread agentThread = new(agent.Client);
try
{
    ChatMessageContent message = new(AuthorRole.User, "<your user input>");
    await foreach (ChatMessageContent response in agent.InvokeAsync(message, agentThread))
    {
        Console.WriteLine(response.Content);
    }
}
finally
{
    await agentThread.DeleteAsync();
    await agent.Client.DeleteAgentAsync(agent.Id);
}

Die Besonderheiten des Azure AI-Agent-Threads werden über die AzureAIAgentThread Klasse abstrahiert, die eine Implementierung von AgentThread.

USER_INPUTS = ["Hello", "What's your name?"]

thread: AzureAIAgentThread = AzureAIAgentThread()

try:
    for user_input in USER_INPUTS:
        response = await agent.get_response(messages=user_inputs, thread=thread)
        print(response)
        thread = response.thread
finally:
    await thread.delete() if thread else None

Optional kann ein Agent aufgerufen werden als:

for user_input in USER_INPUTS:
    async for content in agent.invoke(messages=user_input, thread=thread):
        print(content.content)
        thread = response.thread

Sie können auch eine Liste von Nachrichten an die get_response(...), oder invoke(...)invoke_stream(...) Methoden übergeben:

USER_INPUTS = ["Hello", "What's your name?"]

thread: AzureAIAgentThread = AzureAIAgentThread()

try:
    for user_input in USER_INPUTS:
        response = await agent.get_response(messages=USER_INPUTS, thread=thread)
        print(response)
        thread = response.thread
finally:
    await thread.delete() if thread else None

Ein Agent kann auch eine gestreamte Antwort erzeugen:

ChatMessageContent message = new(AuthorRole.User, "<your user input>");
await foreach (StreamingChatMessageContent response in agent.InvokeStreamingAsync(message, agentThread))
{
    Console.Write(response.Content);
}
for user_input in USER_INPUTS:
    await agent.add_chat_message(thread_id=thread.id, message=user_input)
    async for content in agent.invoke_stream(thread_id=thread.id):
        print(content.content, end="", flush=True)

Das Feature ist derzeit in Java nicht verfügbar.

Verwenden von Plugins mit einem AzureAIAgent

Der semantische Kernel unterstützt das Erweitern eines AzureAIAgent mit benutzerdefinierten Plug-Ins für erweiterte Funktionen:

KernelPlugin plugin = KernelPluginFactory.CreateFromType<YourPlugin>();
PersistentAgentsClient client = AzureAIAgent.CreateAgentsClient("<your endpoint>", new AzureCliCredential());

PersistentAgent definition = await agentsClient.Administration.CreateAgentAsync(
    "<name of the the model used by the agent>",
    name: "<agent name>",
    description: "<agent description>",
    instructions: "<agent instructions>");

AzureAIAgent agent = new(definition, agentsClient, plugins: [plugin]);
from semantic_kernel.functions import kernel_function

class SamplePlugin:
    @kernel_function(description="Provides sample data.")
    def get_data(self) -> str:
        return "Sample data"

async with (
        DefaultAzureCredential() as creds,
        AzureAIAgent.create_client(credential=creds) as client,
    ):
        agent_definition = await client.agents.create_agent(
            model=AzureAIAgentSettings().model_deployment_name,
        )

        agent = AzureAIAgent(
            client=client,
            definition=agent_definition,
            plugins=[SamplePlugin()]
        )

Das Feature ist derzeit in Java nicht verfügbar.

Erweiterte Funktionen

Ein AzureAIAgent kann erweiterte Tools nutzen, z. B.:

Codedolmetscher

Code Interpreter ermöglicht es den Agents, Python-Code in einer Sandkastenausführungsumgebung zu schreiben und auszuführen (Azure AI Agent Service Code Interpreter).

PersistentAgentsClient client = AzureAIAgent.CreateAgentsClient("<your endpoint>", new AzureCliCredential());

PersistentAgent definition = await agentsClient.CreateAgentAsync(
    "<name of the the model used by the agent>",
    name: "<agent name>",
    description: "<agent description>",
    instructions: "<agent instructions>",
    tools: [new CodeInterpreterToolDefinition()],
    toolResources:
        new()
        {
            CodeInterpreter = new()
            {
                FileIds = { ... },
            }
        }));

AzureAIAgent agent = new(definition, agentsClient);
from azure.ai.agents.models import CodeInterpreterTool

async with (
        DefaultAzureCredential() as creds,
        AzureAIAgent.create_client(credential=creds) as client,
    ):
        code_interpreter = CodeInterpreterTool()
        agent_definition = await client.agents.create_agent(
            model=ai_agent_settings.model_deployment_name,
            tools=code_interpreter.definitions,
            tool_resources=code_interpreter.resources,
        )

Das Feature ist derzeit in Java nicht verfügbar.

Die Dateisuche erweitert die Agenten mit Wissen von außerhalb ihres Modells (Azure AI Agent Service File Search Tool).

PersistentAgentsClient client = AzureAIAgent.CreateAgentsClient("<your endpoint>", new AzureCliCredential());

PersistentAgent definition = await agentsClient.CreateAgentAsync(
    "<name of the the model used by the agent>",
    name: "<agent name>",
    description: "<agent description>",
    instructions: "<agent instructions>",
    tools: [new FileSearchToolDefinition()],
    toolResources:
        new()
        {
            FileSearch = new()
            {
                VectorStoreIds = { ... },
            }
        });

AzureAIAgent agent = new(definition, agentsClient);
from azure.ai.agents.models import FileSearchTool

async with (
        DefaultAzureCredential() as creds,
        AzureAIAgent.create_client(credential=creds) as client,
    ):
        file_search = FileSearchTool(vector_store_ids=[vector_store.id])
        agent_definition = await client.agents.create_agent(
            model=ai_agent_settings.model_deployment_name,
            tools=file_search.definitions,
            tool_resources=file_search.resources,
        )

Das Feature ist derzeit in Java nicht verfügbar.

OpenAPI-Integration

Verbindet Ihren Agent mit einer externen API (Verwenden des Azure AI-Agent-Diensts mit den angegebenen OpenAPI-Tools).

PersistentAgentsClient client = AzureAIAgent.CreateAgentsClient("<your endpoint>", new AzureCliCredential());

string apiJsonSpecification = ...; // An Open API JSON specification

PersistentAgent definition = await agentsClient.CreateAgentAsync(
    "<name of the the model used by the agent>",
    name: "<agent name>",
    description: "<agent description>",
    instructions: "<agent instructions>",
    tools: [
        new OpenApiToolDefinition(
            "<api name>", 
            "<api description>", 
            BinaryData.FromString(apiJsonSpecification), 
            new OpenApiAnonymousAuthDetails())
    ]
);

AzureAIAgent agent = new(definition, agentsClient);
from azure.ai.agents.models import OpenApiTool, OpenApiAnonymousAuthDetails

async with (
    DefaultAzureCredential() as creds,
    AzureAIAgent.create_client(credential=creds) as client,
):
    openapi_spec_file_path = "sample/filepath/..."
    with open(os.path.join(openapi_spec_file_path, "spec_one.json")) as file_one:
        openapi_spec_one = json.loads(file_one.read())
    with open(os.path.join(openapi_spec_file_path, "spec_two.json")) as file_two:
        openapi_spec_two = json.loads(file_two.read())

    # Note that connection or managed identity auth setup requires additional setup in Azure
    auth = OpenApiAnonymousAuthDetails()
    openapi_tool_one = OpenApiTool(
        name="<name>",
        spec=openapi_spec_one,
        description="<description>",
        auth=auth,
    )
    openapi_tool_two = OpenApiTool(
        name="<name>",
        spec=openapi_spec_two,
        description="<description>",
        auth=auth,
    )

    agent_definition = await client.agents.create_agent(
        model=ai_agent_settings.model_deployment_name,
        tools=openapi_tool_one.definitions + openapi_tool_two.definitions,
    )

Das Feature ist derzeit in Java nicht verfügbar.

Die AzureAI-Suchintegration

Verwenden Sie einen vorhandenen Azure AI Search Index mit Ihrem Agenten (Verwenden eines vorhandenen Azure AI Search Index).

PersistentAgentsClient client = AzureAIAgent.CreateAgentsClient("<your endpoint>", new AzureCliCredential());

PersistentAgent definition = await agentsClient.CreateAgentAsync(
    "<name of the the model used by the agent>",
    name: "<agent name>",
    description: "<agent description>",
    instructions: "<agent instructions>",
    tools: [new AzureAISearchToolDefinition()],
    toolResources: new()
    {
        AzureAISearch = new()
        {
            IndexList = { new AISearchIndexResource("<your connection id>", "<your index name>") }
        }
    });

AzureAIAgent agent = new(definition, agentsClient);
from azure.ai.agents.models import AzureAISearchTool, ConnectionType

async with (
    DefaultAzureCredential() as creds,
    AzureAIAgent.create_client(credential=creds) as client,
):
    conn_list = await client.connections.list()

    ai_search_conn_id = ""
    for conn in conn_list:
        if conn.connection_type == ConnectionType.AZURE_AI_SEARCH:
            ai_search_conn_id = conn.id
            break

    ai_search = AzureAISearchTool(
        index_connection_id=ai_search_conn_id, 
        index_name=AZURE_AI_SEARCH_INDEX_NAME,
    )

    agent_definition = await client.agents.create_agent(
        model=ai_agent_settings.model_deployment_name,
        instructions="Answer questions using your index.",
        tools=ai_search.definitions,
        tool_resources=ai_search.resources,
        headers={"x-ms-enable-preview": "true"},
    )

Das Feature ist derzeit in Java nicht verfügbar.

Bing Grounding

Beispiel in Kürze verfügbar.

from azure.ai.agents.models import BingGroundingTool
from azure.identity.aio import DefaultAzureCredential

from semantic_kernel.agents import AzureAIAgent, AzureAIAgentSettings

async with (
    DefaultAzureCredential() as creds,
    AzureAIAgent.create_client(credential=creds) as client,
):
    # 1. Enter your Bing Grounding Connection Name
    bing_connection = await client.connections.get(connection_name="<your-bing-grounding-connection-name>")
    conn_id = bing_connection.id

    # 2. Initialize agent bing tool and add the connection id
    bing_grounding = BingGroundingTool(connection_id=conn_id)

    # 3. Create an agent with Bing grounding on the Azure AI agent service
    agent_definition = await client.agents.create_agent(
        name="BingGroundingAgent",
        instructions="Use the Bing grounding tool to answer the user's question.",
        model=AzureAIAgentSettings().model_deployment_name,
        tools=bing_grounding.definitions,
    )

    # 4. Create a Semantic Kernel agent for the Azure AI agent
    agent = AzureAIAgent(
        client=client,
        definition=agent_definition,
    )

Bei Verwendung des Bing Grounding-Tools wird der an den FunctionCallContent Callback übergebene Funktionsname auf on_intermediate_message festgelegt. Nach Abschluss der Ausführung enthält die ChatMessageContent.items Liste entweder AnnotationContent oder StreamingAnnotationContent, je nachdem, ob der Aufruf standard oder Streaming ist. Diese Annotationselemente enthalten Informationen über die Links, die der Agent während der Beantwortung besuchte, ähnlich den Informationen im FunctionCallContent.

Weitere Informationen finden Sie in den folgenden Konzeptbeispielen:

Das Feature ist derzeit in Java nicht verfügbar.

Abrufen einer vorhandenen AzureAIAgent

Ein vorhandener Agent kann abgerufen und wiederverwendet werden, indem man seine Assistenten-ID angibt.

PersistentAgent definition = await agentsClient.Administration.GetAgentAsync("<your agent id>");
AzureAIAgent agent = new(definition, agentsClient);
agent_definition = await client.agents.get_agent(assistant_id="your-agent-id")
agent = AzureAIAgent(client=client, definition=agent_definition)

Das Feature ist derzeit in Java nicht verfügbar.

Löschen eines AzureAIAgent

Agents und die zugehörigen Threads können gelöscht werden, wenn sie nicht mehr benötigt werden:

await agentThread.DeleteAsync();
await agentsClient.Administration.DeleteAgentAsync(agent.Id);
await client.agents.delete_thread(thread.id)
await client.agents.delete_agent(agent.id)

Wenn Sie mit einem Vektorspeicher oder Dateien arbeiten, werden sie möglicherweise auch gelöscht:

await agentsClient.VectorStores.DeleteVectorStoreAsync("<your store id>");
await agentsClient.Files.DeleteFileAsync("<your file id>");
await client.agents.files.delete(file_id=file.id)
await client.agents.vector_stores.delete(vector_store_id=vector_store.id)

Das Feature ist derzeit in Java nicht verfügbar.

Weitere Informationen zur -Dateisuche finden Sie im Azure AI-Agent-Service-Dateisuchtool Artikel.

Vorgehensweise

Praktische Beispiele für die Verwendung eines AzureAIAgentfinden Sie in unseren Codebeispielen auf GitHub:

Das Feature ist derzeit in Java nicht verfügbar.

Bearbeitung von Zwischennachrichten mit einem AzureAIAgent

Der semantische Kernel AzureAIAgent wurde entwickelt, um einen Agent aufzurufen, der Benutzerabfragen oder -fragen erfüllt. Während des Aufrufs kann der Agent Tools ausführen, um die endgültige Antwort abzuleiten. Um auf zwischengeschaltete Nachrichten zuzugreifen, die während dieses Prozesses erstellt werden, können Caller eine Rückruffunktion bereitstellen, die Instanzen von FunctionCallContent oder FunctionResultContent behandelt.

Die Rückrufdokumentation für das AzureAIAgent wird in Kürze verfügbar sein.

Konfigurieren des on_intermediate_message Rückrufs innerhalb agent.invoke(...) oder agent.invoke_stream(...) ermöglicht es dem Anrufer, Zwischennachrichten zu empfangen, die während des Prozesses der Erstellung der endgültigen Antwort des Agents generiert wurden.

import asyncio
from typing import Annotated

from azure.identity.aio import DefaultAzureCredential

from semantic_kernel.agents import AzureAIAgent, AzureAIAgentSettings, AzureAIAgentThread
from semantic_kernel.contents import FunctionCallContent, FunctionResultContent
from semantic_kernel.contents.chat_message_content import ChatMessageContent
from semantic_kernel.functions import kernel_function


# Define a sample plugin for the sample
class MenuPlugin:
    """A sample Menu Plugin used for the concept sample."""

    @kernel_function(description="Provides a list of specials from the menu.")
    def get_specials(self) -> Annotated[str, "Returns the specials from the menu."]:
        return """
        Special Soup: Clam Chowder
        Special Salad: Cobb Salad
        Special Drink: Chai Tea
        """

    @kernel_function(description="Provides the price of the requested menu item.")
    def get_item_price(
        self, menu_item: Annotated[str, "The name of the menu item."]
    ) -> Annotated[str, "Returns the price of the menu item."]:
        return "$9.99"


# This callback function will be called for each intermediate message,
# which will allow one to handle FunctionCallContent and FunctionResultContent.
# If the callback is not provided, the agent will return the final response
# with no intermediate tool call steps.
async def handle_intermediate_steps(message: ChatMessageContent) -> None:
    for item in message.items or []:
        if isinstance(item, FunctionResultContent):
            print(f"Function Result:> {item.result} for function: {item.name}")
        elif isinstance(item, FunctionCallContent):
            print(f"Function Call:> {item.name} with arguments: {item.arguments}")
        else:
            print(f"{item}")


async def main() -> None:
    ai_agent_settings = AzureAIAgentSettings()

    async with (
        DefaultAzureCredential() as creds,
        AzureAIAgent.create_client(credential=creds, endpoint=ai_agent_settings.endpoint) as client,
    ):
        AGENT_NAME = "Host"
        AGENT_INSTRUCTIONS = "Answer questions about the menu."

        # Create agent definition
        agent_definition = await client.agents.create_agent(
            model=ai_agent_settings.deployment_name,
            name=AGENT_NAME,
            instructions=AGENT_INSTRUCTIONS,
        )

        # Create the AzureAI Agent
        agent = AzureAIAgent(
            client=client,
            definition=agent_definition,
            plugins=[MenuPlugin()],  # add the sample plugin to the agent
        )

        # Create a thread for the agent
        # If no thread is provided, a new thread will be
        # created and returned with the initial response
        thread: AzureAIAgentThread = None

        user_inputs = [
            "Hello",
            "What is the special soup?",
            "How much does that cost?",
            "Thank you",
        ]

        try:
            for user_input in user_inputs:
                print(f"# User: '{user_input}'")
                async for response in agent.invoke(
                    messages=user_input,
                    thread=thread,
                    on_intermediate_message=handle_intermediate_steps,
                ):
                    print(f"# Agent: {response}")
                    thread = response.thread
        finally:
            # Cleanup: Delete the thread and agent
            await thread.delete() if thread else None
            await client.agents.delete_agent(agent.id)


if __name__ == "__main__":
    asyncio.run(main())

Das Folgende zeigt die Beispielausgabe des Agentenaufrufprozesses:

User: 'Hello'
Agent: Hi there! How can I assist you today?
User: 'What is the special soup?'
Function Call:> MenuPlugin-get_specials with arguments: {}
Function Result:> 
        Special Soup: Clam Chowder
        Special Salad: Cobb Salad
        Special Drink: Chai Tea
        for function: MenuPlugin-get_specials
Agent: The special soup is Clam Chowder. Would you like to know anything else about the menu?
User: 'How much does that cost?'
Function Call:> MenuPlugin-get_item_price with arguments: {"menu_item":"Clam Chowder"}
Function Result:> $9.99 for function: MenuPlugin-get_item_price
Agent: The Clam Chowder costs $9.99. Let me know if you would like assistance with anything else!
User: 'Thank you'
Agent: You're welcome! Enjoy your meal! 😊

Das Feature ist derzeit in Java nicht verfügbar.

Deklarative Spezifikation

Die Dokumentation zur Verwendung deklarativer Spezifikationen wird in Kürze verfügbar sein.

Von Bedeutung

Dieses Feature befindet sich in der experimentellen Phase. Features in dieser Phase befinden sich in der Entwicklung und können sich ändern, bevor Sie zur Vorschau- oder Veröffentlichungskandidatenstufe wechseln.

AzureAIAgent unterstützt die Instanziierung aus einer YAML-deklarativen Spezifikation. Mit dem deklarativen Ansatz können Sie die Eigenschaften, Anweisungen, Modellkonfiguration, Tools und andere Optionen in einem einzigen, auditierbaren Dokument definieren. Dies macht die Agentkomposition übertragbar und einfach umgebungsübergreifend verwaltet.

Hinweis

Alle Tools, Funktionen oder Plug-Ins, die im deklarativen YAML aufgeführt sind, müssen dem Agenten zur Bauzeit zur Verfügung stehen. Für kernelbasierte Plug-Ins bedeutet dies, dass sie im Kernel registriert werden müssen. Für integrierte Tools wie Bing Grounding, Dateisuche oder OpenAPI-Tools müssen die richtige Konfiguration und Anmeldeinformationen angegeben werden. Der Agent-Loader wird keine Funktionen von Grund auf neu erstellen. Wenn eine erforderliche Komponente fehlt, schlägt die Agenterstellung fehl.

Anleitung zur Verwendung der deklarativen Spezifikation

Anstatt jede mögliche YAML-Konfiguration aufzählen zu müssen, beschreibt dieser Abschnitt die wichtigsten Prinzipien und enthält Links zu Konzeptbeispielen, die vollständigen Code für jeden Tooltyp anzeigen. In den folgenden Konzeptbeispielen finden Sie End-to-End-Implementierungen einer AzureAIAgent mit deklarativen Spezifikationen:

Beispiel: Erstellen eines AzureAIAgent aus YAML

Eine minimale deklarative YAML-Spezifikation könnte wie folgt aussehen:

type: foundry_agent
name: MyAgent
instructions: Respond politely to the user's questions.
model:
  id: ${AzureAI:ChatModelId}
tools:
  - id: MenuPlugin.get_specials
    type: function
  - id: MenuPlugin.get_item_price
    type: function

Ausführliche Informationen zum Verbinden des Agents finden Sie in den oben aufgeführten vollständigen Codebeispielen.

Die wichtigsten Punkte

  • Deklarative Spezifikationen ermöglichen das Definieren von Agentstruktur, Tools und Verhalten in YAML.
  • Alle referenzierten Tools und Plug-Ins müssen zur Laufzeit registriert oder zugänglich sein.
  • Integrierte Tools wie Bing, Dateisuche und Codedolmetscher erfordern eine ordnungsgemäße Konfiguration und Anmeldeinformationen (häufig über Umgebungsvariablen oder explizite Argumente).
  • Umfassende Beispiele finden Sie in den bereitgestellten Beispiellinks, die praktische Szenarien veranschaulichen, einschließlich Plug-In-Registrierung, Azure-Identitätskonfiguration und erweiterter Toolverwendung.

Dieses Feature ist nicht verfügbar.

Nächste Schritte