Udostępnij przez


Eksplorowanie jądra semantycznego AzureAIAgent

Ważne

Ta funkcja znajduje się na etapie eksperymentalnym. Funkcje na tym etapie są opracowywane i mogą ulec zmianie przed przejściem do etapu wersji zapoznawczej lub etapu kandydata do wydania.

Wskazówka

Szczegółowa dokumentacja interfejsu API związana z tą dyskusją jest dostępna pod adresem:

Wskazówka

Szczegółowa dokumentacja interfejsu API związana z tą dyskusją jest dostępna pod adresem:

Funkcja jest obecnie niedostępna w języku Java.

Co to jest AzureAIAgent?

AzureAIAgent to wyspecjalizowany agent w ramach struktury semantycznego jądra, zaprojektowany w celu zapewnienia zaawansowanych funkcji konwersacyjnych z bezproblemową integracją narzędzi. Automatyzuje wywoływanie narzędzi, eliminując konieczność ręcznego analizowania i wywoływania. Agent bezpiecznie zarządza również historią konwersacji przy użyciu wątków, co zmniejsza obciążenie związane z utrzymywaniem stanu. Ponadto AzureAIAgent obsługuje różne wbudowane narzędzia, w tym pobieranie plików, wykonywanie kodu i interakcję z danymi za pośrednictwem usług Bing, Azure AI Search, Azure Functions i OpenAPI.

Aby użyć AzureAIAgent, należy użyć projektu usługi Azure AI Foundry. Poniższe artykuły zawierają omówienie rozwiązania Azure AI Foundry, sposobu tworzenia i konfigurowania projektu oraz usługi agenta:

Przygotowywanie środowiska projektowego

Aby kontynuować tworzenie AzureAIAgent, skonfiguruj środowisko programistyczne za pomocą odpowiednich pakietów.

Dodaj pakiet Microsoft.SemanticKernel.Agents.AzureAI do projektu:

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

Możesz również dołączyć pakiet Azure.Identity:

dotnet add package Azure.Identity

semantic-kernel Zainstaluj pakiet:

pip install semantic-kernel

Funkcja jest obecnie niedostępna w języku Java.

Konfigurowanie klienta projektu sztucznej inteligencji

Uzyskanie dostępu do AzureAIAgent najpierw wymaga utworzenia klienta skonfigurowanego dla określonego projektu Foundry, najczęściej poprzez podanie punktu końcowego projektu (Azure AI Foundry SDK: Wprowadzenie do projektów).

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

Zmodyfikuj plik .env w katalogu głównym, aby uwzględnić następujące elementy:

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

Po zdefiniowaniu konfiguracji można utworzyć klienta:

from semantic_kernel.agents import AzureAIAgent

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

Jeśli ustawienia Pydantic są skonfigurowane, zostaną wykorzystane bazowe endpoint. W przeciwnym razie możesz jawnie przekazać go do metody create_client().

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

Funkcja jest obecnie niedostępna w języku Java.

Tworzenie AzureAIAgent

Aby utworzyć element AzureAIAgent, należy rozpocząć od skonfigurowania i zainicjowania projektu Foundry za pośrednictwem usługi Azure Agent, a następnie zintegrować go z jądrem semantycznym:

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

Funkcja jest obecnie niedostępna w języku Java.

Interakcja z AzureAIAgent

Interakcja z AzureAIAgent jest prosta. Agent automatycznie utrzymuje historię konwersacji przy użyciu wątku.

Specyfika wątku agenta sztucznej inteligencji platformy Azure jest zrealizowana przez Microsoft.SemanticKernel.Agents.AzureAI.AzureAIAgentThread, który jest implementacją Microsoft.SemanticKernel.Agents.AgentThread.

Ważne

Należy pamiętać, że zestaw SDK agentów sztucznej inteligencji platformy Azure ma klasę PersistentAgentThread . Nie należy go mylić z elementem Microsoft.SemanticKernel.Agents.AgentThread, który jest wspólną abstrakcją agentów jądra semantycznego dla wszystkich typów wątków.

Obecnie AzureAIAgent obsługuje tylko wątki typu 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);
}

Specyfika wątku agenta sztucznej inteligencji platformy Azure jest zrealizowana przez AzureAIAgentThread, który jest implementacją 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

Opcjonalnie agent może być wywoływany jako:

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

Możesz również przekazać listę komunikatów do metod get_response(...), invoke(...) lub invoke_stream(...).

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

Agent może również wygenerować odpowiedź strumieniową:

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)

Funkcja jest obecnie niedostępna w języku Java.

Używanie wtyczek z AzureAIAgent

Jądro semantyczne obsługuje rozszerzanie AzureAIAgent za pomocą wtyczek niestandardowych na potrzeby rozszerzonych funkcji:

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()]
        )

Funkcja jest obecnie niedostępna w języku Java.

Funkcje zaawansowane

AzureAIAgent może korzystać z zaawansowanych narzędzi, takich jak:

Interpreter kodów

Interpreter kodu pozwala agentom na pisanie i uruchamianie kodu w języku Python w środowisku wykonawczym typu piaskownica (Interpreter kodu usługi agenta sztucznej inteligencji Azure AI).

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

Funkcja jest obecnie niedostępna w języku Java.

Wyszukiwanie plików uzupełnia agentów o wiedzę spoza ich modelu (narzędzie wyszukiwania plików w usłudze Agenta Sztucznej Inteligencji platformy Azure).

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

Funkcja jest obecnie niedostępna w języku Java.

Integracja z interfejsem OpenAPI

Łączy agenta z zewnętrznym interfejsem API (Jak używać usługi Azure AI Agent Service z narzędziami określonymi w interfejsie OpenAPI).

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

Funkcja jest obecnie niedostępna w języku Java.

Integracja usługi AzureAI Search

Użyj istniejącego indeksu Azure AI Search w połączeniu z agentem (Użyj istniejącego indeksu AI Search).

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

Funkcja jest obecnie niedostępna w języku Java.

Uziemienie Bing

Przykład będzie już wkrótce.

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

W przypadku korzystania z narzędzia Bing Grounding, FunctionCallContent przekazane do wywołania zwrotnego on_intermediate_message będzie miało nazwę funkcji ustawioną na "bing_grounding". Po zakończeniu przebiegu lista ChatMessageContent.items będzie zawierać albo AnnotationContent, albo StreamingAnnotationContent, w zależności od tego, czy wywołanie jest standardowe, czy przesyłane strumieniowo. Te elementy adnotacji zawierają informacje o łączach odwiedzonych przez agenta podczas odpowiedzi, podobnie jak informacje znajdujące się w elemecie FunctionCallContent.

Aby uzyskać więcej informacji, zobacz następujące przykłady pojęć:

Funkcja jest obecnie niedostępna w języku Java.

Pobieranie istniejącej AzureAIAgent

Można pobrać istniejącego agenta i użyć go ponownie, określając jego identyfikator asystenta.

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)

Funkcja jest obecnie niedostępna w języku Java.

Usuwanie AzureAIAgent

Agenci i skojarzone z nimi wątki można usuwać, gdy nie są już potrzebne:

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

W przypadku pracy z magazynem wektorowym lub plikami można je również usunąć:

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)

Funkcja jest obecnie niedostępna w języku Java.

Więcej informacji na temat narzędzia wyszukiwania plików opisano w artykule Narzędzie wyszukiwania plików usługi Azure AI Agent Service.

Instrukcja

Aby zapoznać się z praktycznymi przykładami używania AzureAIAgent, zobacz nasze przykłady kodu w witrynie GitHub:

Funkcja jest obecnie niedostępna w języku Java.

Obsługa komunikatów pośrednich za pomocą elementu AzureAIAgent

Jądro AzureAIAgent semantyczne jest przeznaczone do wywoływania agenta, który spełnia zapytania użytkownika lub pytania. Podczas wywołania agent może wykonywać narzędzia, aby uzyskać ostateczną odpowiedź. Aby uzyskać dostęp do komunikatów pośrednich generowanych podczas tego procesu, dzwoniący mogą dostarczyć funkcję zwrotną, która obsługuje wystąpienia FunctionCallContent lub FunctionResultContent.

Dokumentacja wywołania zwrotnego dla elementu AzureAIAgent zostanie wkrótce udostępniona.

Skonfigurowanie wywołania zwrotnego on_intermediate_message w agent.invoke(...) lub agent.invoke_stream(...) umożliwia inicjującemu odbieranie komunikatów pośrednich generowanych podczas procesu formułowania ostatecznej odpowiedzi agenta.

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

Poniżej przedstawiono przykładowe dane wyjściowe z procesu wywołania agenta:

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! 😊

Funkcja jest obecnie niedostępna w języku Java.

Specyfikacja deklaratywna

Dokumentacja dotycząca korzystania ze specyfikacji deklaratywnych jest dostępna wkrótce.

Ważne

Ta funkcja znajduje się na etapie eksperymentalnym. Funkcje na tym etapie są opracowywane i mogą ulec zmianie przed przejściem do etapu wersji zapoznawczej lub etapu kandydata do wydania.

Funkcja AzureAIAgent obsługuje tworzenie wystąpień ze specyfikacji deklaratywnej YAML. Podejście deklaratywne umożliwia zdefiniowanie właściwości, instrukcji agenta, konfiguracji modelu, narzędzi i innych opcji w jednym dokumencie z możliwością inspekcji. Dzięki temu kompozycja agenta jest przenośna i łatwo zarządzana w różnych środowiskach.

Uwaga / Notatka

Wszystkie narzędzia, funkcje lub wtyczki wymienione w deklaratywnym języku YAML muszą być dostępne dla agenta w czasie budowy. W przypadku wtyczek opartych na jądrach oznacza to, że muszą być zarejestrowane w jądrze. W przypadku wbudowanych narzędzi, takich jak Bing Grounding, Wyszukiwanie plików lub Narzędzia OpenAPI, należy podać poprawną konfigurację i poświadczenia. Moduł ładujący agenta nie utworzy funkcji od podstaw. Jeśli brakuje wymaganego składnika, tworzenie agenta zakończy się niepowodzeniem.

Jak używać specyfikacji deklaratywnej

Zamiast wyliczać każdą możliwą konfigurację YAML, w tej sekcji opisano kluczowe zasady i podano linki do przykładów koncepcji, które pokazują pełny kod dla każdego typu narzędzia. Zapoznaj się z tymi wzorcowymi przykładami kompleksowych implementacji AzureAIAgent z deklaratywnymi specyfikacjami.

Przykład: tworzenie modułu AzureAIAgent z poziomu yaML

Minimalna specyfikacja deklaratywna YAML może wyglądać następująco:

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

Aby uzyskać szczegółowe informacje na temat sposobu podłącznia agenta, zapoznaj się z powyższymi pełnymi przykładami kodu.

Kwestie kluczowe

  • Specyfikacje deklaratywne umożliwiają definiowanie struktury agenta, narzędzi i zachowania w języku YAML.
  • Wszystkie przywoływalne narzędzia i wtyczki muszą być zarejestrowane lub dostępne w czasie wykonywania.
  • Wbudowane narzędzia, takie jak Bing, wyszukiwanie plików i interpreter kodu, wymagają odpowiedniej konfiguracji i poświadczeń (często za pośrednictwem zmiennych środowiskowych lub jawnych argumentów).
  • Aby zapoznać się z kompleksowymi przykładami, zapoznaj się z podanymi przykładowymi linkami, które przedstawiają praktyczne scenariusze, w tym rejestrację wtyczki, konfigurację tożsamości platformy Azure i zaawansowane użycie narzędzi.

Ta funkcja jest niedostępna.

Dalsze kroki