Sdílet prostřednictvím


Rychlý start: Vytvoření nového agenta

Služba agenta Azure AI umožňuje vytvářet agenty umělé inteligence přizpůsobené vašim potřebám prostřednictvím vlastních pokynů a rozšířená o pokročilé nástroje, jako je interpret kódu a vlastní funkce.

| Referenční dokumentace | – Ukázka | balíčku zdrojového kódu | knihovny (NuGet) |

Požadavky

Nastavení projektu Azure AI Hub a agenta

V následující části se dozvíte, jak nastavit požadované prostředky pro zahájení práce se službou agenta Azure AI:

  1. Vytvoření centra Azure AI pro nastavení prostředí aplikace a prostředků Azure

  2. Vytvoření projektu Azure AI v rámci centra vytvoří koncový bod pro volání vaší aplikace a nastaví aplikační služby pro přístup k prostředkům ve vašem tenantovi.

  3. Připojení prostředku Azure OpenAI nebo prostředku Azure AI Services

Volba instalace základního nebo standardního agenta

Základní nastavení: Agenti používají víceklientských vyhledávacích a úložných prostředků plně spravovaných Microsoftem. Nemáte přehled ani kontrolu nad těmito podkladovými prostředky Azure.

Standardní nastavení: Agenti používají prostředky vyhledávání a úložiště ve vlastnictví zákazníka s jedním tenantem. Díky tomuto nastavení máte plnou kontrolu a přehled o těchto prostředcích, ale na základě využití se vám účtují náklady.

Popis a automatické nasazení Diagram (kliknutím přiblížit)
Nasaďte základní nastavení agenta, které k ověřování používá spravovanou identitu. Prostředky pro centrum AI, projekt AI, účet úložiště a služby AI se vytvoří za vás.

Účet AI Services je připojený k vašemu projektu a centru a v oblasti eastus se nasadí model gpt-4o-mini. Trezor klíčů spravovaný Microsoftem se používá ve výchozím nastavení.

Nasazení do Azure
Diagram architektury pro základní nastavení agenta
Nasaďte standardní nastavení agenta, které k ověřování používá spravovanou identitu.

Vytvoří se zdroje pro centrum AI, projekt AI, trezor klíčů, účet úložiště, služby AI a vyhledávání AI.

Služby AI, vyhledávání AI, trezor klíčů a účet úložiště jsou připojené k vašemu projektu a centru. Model gpt-4o-mini je nasazený v oblasti eastus.

Nasazení do Azure
Diagram architektury pro standardní nastavení agenta

[Volitelné] Výběr modelu v šabloně automatického nasazení

Model používaný vaším agentem můžete přizpůsobit úpravou parametrů modelu v šabloně automatického nasazení. Pokud chcete nasadit jiný model, musíte aktualizovat alespoň parametry modelName a modelVersion parametry.

Ve výchozím nastavení je šablona nasazení nakonfigurovaná s následujícími hodnotami:

Parametr modelu Výchozí hodnota
modelName gpt-4o-mini
modelFormat OpenAI (pro Azure OpenAI)
modelVersion 2024-07-18
modelSkuName GlobalStandard
modelLocation eastus

Důležité

Neměňte parametr modelFormat.

Šablony podporují pouze nasazení modelů Azure OpenAI. Informace o podporovaných modelech Azure OpenAI najdete v dokumentaci k podpoře modelů agenta Azure AI.

[Volitelné] Použití vlastních prostředků během instalace agenta

Poznámka:

Pokud používáte existující prostředek AI Services nebo Azure OpenAI, žádný model se nenasadí. Po dokončení instalace agenta můžete do prostředku nasadit model.

Pomocí existujících služeb AI, Azure OpenAI, AI Search a/nebo prostředku Azure Blob Storage zadejte úplné ID prostředku arm v souboru parametrů:

  • aiServiceAccountResourceId
  • aiSearchServiceResourceId
  • aiStorageAccountResourceId

Pokud chcete použít existující prostředek Azure OpenAI, musíte aktualizovat aiServiceAccountResourceIdaiServiceKind parametry v souboru parametrů. Parametr aiServiceKind by měl být nastaven na AzureOpenAIhodnotu .

Další informace najdete v tématu použití vlastních prostředků.

Konfigurace a spuštění agenta

Komponenta Popis
Agent Vlastní AI, která ve spojení s nástroji používá modely AI.
Nástroj Nástroje pomáhají rozšířit schopnost agenta spolehlivě a přesně reagovat během konverzace. Například připojení k uživatelem definovaným znalostní báze k vytvoření modelu nebo povolení webového vyhledávání, aby poskytovalo aktuální informace.
Vlákno Relace konverzace mezi agentem a uživatelem. Vlákna ukládají zprávy a automaticky zpracovávají zkrácení tak, aby se vešel do kontextu modelu.
Zpráva Zpráva vytvořená agentem nebo uživatelem Zprávy můžou obsahovat text, obrázky a další soubory. Zprávy jsou uloženy jako seznam ve vlákně.
Spustit Aktivace agenta, který začne běžet na základě obsahu vlákna. Agent používá svoji konfiguraci a zprávy vlákna k provádění úloh voláním modelů a nástrojů. V rámci spuštění agent připojí zprávy do vlákna.
Spustit krok Podrobný seznamkrokůch Agent může během spuštění volat nástroje nebo vytvářet zprávy. Zkoumání kroků spuštění vám umožní pochopit, jak se agent dostává ke svým výsledkům.

Nainstalujte balíček .NET do projektu. Pokud například používáte .NET CLI, spusťte následující příkaz.

dotnet add package Azure.AI.Projects
dotnet add package Azure.Identity

Dále k ověření požadavků rozhraní API a spuštění programu použijte příkaz az login a přihlaste se k předplatnému Azure.

az login

K vytvoření a spuštění agenta použijte následující kód. Pokud chcete tento kód spustit, budete muset vytvořit připojovací řetězec pomocí informací z projektu. Tento řetězec je ve formátu:

<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<ProjectName>

Tip

Připojovací řetězec najdete také v přehledu projektu na portálu Azure AI Foundry v části Project details>Project připojovací řetězec. Snímek obrazovky znázorňující připojovací řetězec na portálu Azure AI Foundry

HostName naleznete tak, že přejdete na a odeberete discovery_url úvodní https:// a koncové /discovery. Pokud chcete najít svůj příkaz rozhraní příkazového řádku, spusťte discovery_urltento příkaz rozhraní příkazového řádku:

az ml workspace show -n {project_name} --resource-group {resource_group_name} --query discovery_url

Vaše připojovací řetězec může například vypadat nějak takto:

eastus.api.azureml.ms;12345678-abcd-1234-9fc6-62780b3d3e05;my-resource-group;my-project-name

Nastavte tuto připojovací řetězec jako proměnnou prostředí s názvem PROJECT_CONNECTION_STRING.

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

#nullable disable

using Azure.Identity;

namespace Azure.AI.Projects.Tests;

public class Sample_Agent
{
    static async Task Main()
    {
        var connectionString = Environment.GetEnvironmentVariable("AZURE_AI_CONNECTION_STRING");

        AgentsClient client = new AgentsClient(connectionString, new DefaultAzureCredential());

        // Step 1: Create an agent
        Response<Agent> agentResponse = await client.CreateAgentAsync(
            model: "gpt-4o-mini",
            name: "My Agent",
            instructions: "You are a helpful agent.",
            tools: new List<ToolDefinition> { new CodeInterpreterToolDefinition() });
        Agent agent = agentResponse.Value;

        // Intermission: agent should now be listed

        Response<PageableList<Agent>> agentListResponse = await client.GetAgentsAsync();

        //// Step 2: Create a thread
        Response<AgentThread> threadResponse = await client.CreateThreadAsync();
        AgentThread thread = threadResponse.Value;

        // Step 3: Add a message to a thread
        Response<ThreadMessage> messageResponse = await client.CreateMessageAsync(
            thread.Id,
            MessageRole.User,
            "I need to solve the equation `3x + 11 = 14`. Can you help me?");
        ThreadMessage message = messageResponse.Value;

        // Intermission: message is now correlated with thread
        // Intermission: listing messages will retrieve the message just added

        Response<PageableList<ThreadMessage>> messagesListResponse = await client.GetMessagesAsync(thread.Id);
        //Assert.That(messagesListResponse.Value.Data[0].Id == message.Id);

        // Step 4: Run the agent
        Response<ThreadRun> runResponse = await client.CreateRunAsync(
            thread.Id,
            agent.Id,
            additionalInstructions: "");
        ThreadRun run = runResponse.Value;

        do
        {
            await Task.Delay(TimeSpan.FromMilliseconds(500));
            runResponse = await client.GetRunAsync(thread.Id, runResponse.Value.Id);
        }
        while (runResponse.Value.Status == RunStatus.Queued
            || runResponse.Value.Status == RunStatus.InProgress);

        Response<PageableList<ThreadMessage>> afterRunMessagesResponse
            = await client.GetMessagesAsync(thread.Id);
        IReadOnlyList<ThreadMessage> messages = afterRunMessagesResponse.Value.Data;

        // Note: messages iterate from newest to oldest, with the messages[0] being the most recent
        foreach (ThreadMessage threadMessage in messages)
        {
            Console.Write($"{threadMessage.CreatedAt:yyyy-MM-dd HH:mm:ss} - {threadMessage.Role,10}: ");
            foreach (MessageContent contentItem in threadMessage.ContentItems)
            {
                if (contentItem is MessageTextContent textItem)
                {
                    Console.Write(textItem.Text);
                }
                else if (contentItem is MessageImageFileContent imageFileItem)
                {
                    Console.Write($"<image from ID: {imageFileItem.FileId}");
                }
                Console.WriteLine();
            }
        }
    }
}

| Referenční dokumentace | – Balíček zdrojového kódu | knihovny ukázek | knihovny (PyPi) |

Požadavky

Nastavení projektu Azure AI Hub a agenta

V následující části se dozvíte, jak nastavit požadované prostředky pro zahájení práce se službou agenta Azure AI:

  1. Vytvoření centra Azure AI pro nastavení prostředí aplikace a prostředků Azure

  2. Vytvoření projektu Azure AI v rámci centra vytvoří koncový bod pro volání vaší aplikace a nastaví aplikační služby pro přístup k prostředkům ve vašem tenantovi.

  3. Připojení prostředku Azure OpenAI nebo prostředku Azure AI Services

Volba instalace základního nebo standardního agenta

Základní nastavení: Agenti používají víceklientských vyhledávacích a úložných prostředků plně spravovaných Microsoftem. Nemáte přehled ani kontrolu nad těmito podkladovými prostředky Azure.

Standardní nastavení: Agenti používají prostředky vyhledávání a úložiště ve vlastnictví zákazníka s jedním tenantem. Díky tomuto nastavení máte plnou kontrolu a přehled o těchto prostředcích, ale na základě využití se vám účtují náklady.

Popis a automatické nasazení Diagram (kliknutím přiblížit)
Nasaďte základní nastavení agenta, které k ověřování používá spravovanou identitu. Prostředky pro centrum AI, projekt AI, účet úložiště a služby AI se vytvoří za vás.

Účet AI Services je připojený k vašemu projektu a centru a v oblasti eastus se nasadí model gpt-4o-mini. Trezor klíčů spravovaný Microsoftem se používá ve výchozím nastavení.

Nasazení do Azure
Diagram architektury pro základní nastavení agenta
Nasaďte standardní nastavení agenta, které k ověřování používá spravovanou identitu.

Vytvoří se zdroje pro centrum AI, projekt AI, trezor klíčů, účet úložiště, služby AI a vyhledávání AI.

Služby AI, vyhledávání AI, trezor klíčů a účet úložiště jsou připojené k vašemu projektu a centru. Model gpt-4o-mini je nasazený v oblasti eastus.

Nasazení do Azure
Diagram architektury pro standardní nastavení agenta

[Volitelné] Výběr modelu v šabloně automatického nasazení

Model používaný vaším agentem můžete přizpůsobit úpravou parametrů modelu v šabloně automatického nasazení. Pokud chcete nasadit jiný model, musíte aktualizovat alespoň parametry modelName a modelVersion parametry.

Ve výchozím nastavení je šablona nasazení nakonfigurovaná s následujícími hodnotami:

Parametr modelu Výchozí hodnota
modelName gpt-4o-mini
modelFormat OpenAI (pro Azure OpenAI)
modelVersion 2024-07-18
modelSkuName GlobalStandard
modelLocation eastus

Důležité

Neměňte parametr modelFormat.

Šablony podporují pouze nasazení modelů Azure OpenAI. Informace o podporovaných modelech Azure OpenAI najdete v dokumentaci k podpoře modelů agenta Azure AI.

[Volitelné] Použití vlastních prostředků během instalace agenta

Poznámka:

Pokud používáte existující prostředek AI Services nebo Azure OpenAI, žádný model se nenasadí. Po dokončení instalace agenta můžete do prostředku nasadit model.

Pomocí existujících služeb AI, Azure OpenAI, AI Search a/nebo prostředku Azure Blob Storage zadejte úplné ID prostředku arm v souboru parametrů:

  • aiServiceAccountResourceId
  • aiSearchServiceResourceId
  • aiStorageAccountResourceId

Pokud chcete použít existující prostředek Azure OpenAI, musíte aktualizovat aiServiceAccountResourceIdaiServiceKind parametry v souboru parametrů. Parametr aiServiceKind by měl být nastaven na AzureOpenAIhodnotu .

Další informace najdete v tématu použití vlastních prostředků.

Konfigurace a spuštění agenta

Komponenta Popis
Agent Vlastní AI, která ve spojení s nástroji používá modely AI.
Nástroj Nástroje pomáhají rozšířit schopnost agenta spolehlivě a přesně reagovat během konverzace. Například připojení k uživatelem definovaným znalostní báze k vytvoření modelu nebo povolení webového vyhledávání, aby poskytovalo aktuální informace.
Vlákno Relace konverzace mezi agentem a uživatelem. Vlákna ukládají zprávy a automaticky zpracovávají zkrácení tak, aby se vešel do kontextu modelu.
Zpráva Zpráva vytvořená agentem nebo uživatelem Zprávy můžou obsahovat text, obrázky a další soubory. Zprávy jsou uloženy jako seznam ve vlákně.
Spustit Aktivace agenta, který začne běžet na základě obsahu vlákna. Agent používá svoji konfiguraci a zprávy vlákna k provádění úloh voláním modelů a nástrojů. V rámci spuštění agent připojí zprávy do vlákna.
Spustit krok Podrobný seznamkrokůch Agent může během spuštění volat nástroje nebo vytvářet zprávy. Zkoumání kroků spuštění vám umožní pochopit, jak se agent dostává ke svým výsledkům.

Spuštěním následujících příkazů nainstalujte balíčky Pythonu.

pip install azure-ai-projects
pip install azure-identity

Dále k ověření požadavků rozhraní API a spuštění programu použijte příkaz az login a přihlaste se k předplatnému Azure.

az login

K vytvoření a spuštění agenta použijte následující kód. Pokud chcete tento kód spustit, budete muset vytvořit připojovací řetězec pomocí informací z projektu. Tento řetězec je ve formátu:

<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<ProjectName>

Tip

Připojovací řetězec najdete také v přehledu projektu na portálu Azure AI Foundry v části Project details>Project připojovací řetězec. Snímek obrazovky znázorňující připojovací řetězec na portálu Azure AI Foundry

HostName naleznete tak, že přejdete na a odeberete discovery_url úvodní https:// a koncové /discovery. Pokud chcete najít svůj příkaz rozhraní příkazového řádku, spusťte discovery_urltento příkaz rozhraní příkazového řádku:

az ml workspace show -n {project_name} --resource-group {resource_group_name} --query discovery_url

Vaše připojovací řetězec může například vypadat nějak takto:

eastus.api.azureml.ms;12345678-abcd-1234-9fc6-62780b3d3e05;my-resource-group;my-project-name

Nastavte tuto připojovací řetězec jako proměnnou prostředí s názvem PROJECT_CONNECTION_STRING.

import os
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import CodeInterpreterTool
from azure.identity import DefaultAzureCredential
from typing import Any
from pathlib import Path

# Create an Azure AI Client from a connection string, copied from your Azure AI Foundry project.
# At the moment, it should be in the format "<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<ProjectName>"
# HostName can be found by navigating to your discovery_url and removing the leading "https://" and trailing "/discovery"
# To find your discovery_url, run the CLI command: az ml workspace show -n {project_name} --resource-group {resource_group_name} --query discovery_url
# Project Connection example: eastus.api.azureml.ms;12345678-abcd-1234-9fc6-62780b3d3e05;my-resource-group;my-project-name
# Customer needs to login to Azure subscription via Azure CLI and set the environment variables

project_client = AIProjectClient.from_connection_string(
    credential=DefaultAzureCredential(), conn_str=os.environ["PROJECT_CONNECTION_STRING"]
)

with project_client:
    # Create an instance of the CodeInterpreterTool
    code_interpreter = CodeInterpreterTool()

    # The CodeInterpreterTool needs to be included in creation of the agent
    agent = project_client.agents.create_agent(
        model="gpt-4o-mini",
        name="my-agent",
        instructions="You are helpful agent",
        tools=code_interpreter.definitions,
        tool_resources=code_interpreter.resources,
    )
    print(f"Created agent, agent ID: {agent.id}")

    # Create a thread
    thread = project_client.agents.create_thread()
    print(f"Created thread, thread ID: {thread.id}")

    # Create a message
    message = project_client.agents.create_message(
        thread_id=thread.id,
        role="user",
        content="Could you please create a bar chart for the operating profit using the following data and provide the file to me? Company A: $1.2 million, Company B: $2.5 million, Company C: $3.0 million, Company D: $1.8 million",
    )
    print(f"Created message, message ID: {message.id}")

    # Run the agent
    run = project_client.agents.create_and_process_run(thread_id=thread.id, assistant_id=agent.id)
    print(f"Run finished with status: {run.status}")

    if run.status == "failed":
        # Check if you got "Rate limit is exceeded.", then you want to get more quota
        print(f"Run failed: {run.last_error}")

    # Get messages from the thread
    messages = project_client.agents.list_messages(thread_id=thread.id)
    print(f"Messages: {messages}")

    # Get the last message from the sender
    last_msg = messages.get_last_text_message_by_role("assistant")
    if last_msg:
        print(f"Last Message: {last_msg.text.value}")

    # Generate an image file for the bar chart
    for image_content in messages.image_contents:
        print(f"Image File ID: {image_content.image_file.file_id}")
        file_name = f"{image_content.image_file.file_id}_image_file.png"
        project_client.agents.save_file(file_id=image_content.image_file.file_id, file_name=file_name)
        print(f"Saved image file to: {Path.cwd() / file_name}")

    # Print the file path(s) from the messages
    for file_path_annotation in messages.file_path_annotations:
        print(f"File Paths:")
        print(f"Type: {file_path_annotation.type}")
        print(f"Text: {file_path_annotation.text}")
        print(f"File ID: {file_path_annotation.file_path.file_id}")
        print(f"Start Index: {file_path_annotation.start_index}")
        print(f"End Index: {file_path_annotation.end_index}")
        project_client.agents.save_file(file_id=file_path_annotation.file_path.file_id, file_name=Path(file_path_annotation.text).name)

    # Delete the agent once done
    project_client.agents.delete_agent(agent.id)
    print("Deleted agent")

| Referenční dokumentace | – Balíček zdrojového kódu | knihovny (PyPi) |

Požadavky

  • Předplatné Azure – Vytvořte si ho zdarma.
  • Python 3.8 nebo novější
  • Ujistěte se, že máte přiřazenou roli RBAC pro vývojářeAzure AI na odpovídající úrovni.
  • K používání prostředku Azure AI Services potřebujete přiřazenou roli uživatele OpenAI služeb Cognitive Services.
  • Nainstalujte Azure CLI a rozšíření strojového učení. Pokud už máte rozhraní příkazového řádku nainstalované, ujistěte se, že je aktualizované na nejnovější verzi.

Nastavení projektu Azure AI Hub a agenta

V následující části se dozvíte, jak nastavit požadované prostředky pro zahájení práce se službou agenta Azure AI:

  1. Vytvoření centra Azure AI pro nastavení prostředí aplikace a prostředků Azure

  2. Vytvoření projektu Azure AI v rámci centra vytvoří koncový bod pro volání vaší aplikace a nastaví aplikační služby pro přístup k prostředkům ve vašem tenantovi.

  3. Připojení prostředku Azure OpenAI nebo prostředku Azure AI Services

Volba instalace základního nebo standardního agenta

Základní nastavení: Agenti používají víceklientských vyhledávacích a úložných prostředků plně spravovaných Microsoftem. Nemáte přehled ani kontrolu nad těmito podkladovými prostředky Azure.

Standardní nastavení: Agenti používají prostředky vyhledávání a úložiště ve vlastnictví zákazníka s jedním tenantem. Díky tomuto nastavení máte plnou kontrolu a přehled o těchto prostředcích, ale na základě využití se vám účtují náklady.

Popis a automatické nasazení Diagram (kliknutím přiblížit)
Nasaďte základní nastavení agenta, které k ověřování používá spravovanou identitu. Prostředky pro centrum AI, projekt AI, účet úložiště a služby AI se vytvoří za vás.

Účet AI Services je připojený k vašemu projektu a centru a v oblasti eastus se nasadí model gpt-4o-mini. Trezor klíčů spravovaný Microsoftem se používá ve výchozím nastavení.

Nasazení do Azure
Diagram architektury pro základní nastavení agenta
Nasaďte standardní nastavení agenta, které k ověřování používá spravovanou identitu.

Vytvoří se zdroje pro centrum AI, projekt AI, trezor klíčů, účet úložiště, služby AI a vyhledávání AI.

Služby AI, vyhledávání AI, trezor klíčů a účet úložiště jsou připojené k vašemu projektu a centru. Model gpt-4o-mini je nasazený v oblasti eastus.

Nasazení do Azure
Diagram architektury pro standardní nastavení agenta

[Volitelné] Výběr modelu v šabloně automatického nasazení

Model používaný vaším agentem můžete přizpůsobit úpravou parametrů modelu v šabloně automatického nasazení. Pokud chcete nasadit jiný model, musíte aktualizovat alespoň parametry modelName a modelVersion parametry.

Ve výchozím nastavení je šablona nasazení nakonfigurovaná s následujícími hodnotami:

Parametr modelu Výchozí hodnota
modelName gpt-4o-mini
modelFormat OpenAI (pro Azure OpenAI)
modelVersion 2024-07-18
modelSkuName GlobalStandard
modelLocation eastus

Důležité

Neměňte parametr modelFormat.

Šablony podporují pouze nasazení modelů Azure OpenAI. Informace o podporovaných modelech Azure OpenAI najdete v dokumentaci k podpoře modelů agenta Azure AI.

[Volitelné] Použití vlastních prostředků během instalace agenta

Poznámka:

Pokud používáte existující prostředek AI Services nebo Azure OpenAI, žádný model se nenasadí. Po dokončení instalace agenta můžete do prostředku nasadit model.

Pomocí existujících služeb AI, Azure OpenAI, AI Search a/nebo prostředku Azure Blob Storage zadejte úplné ID prostředku arm v souboru parametrů:

  • aiServiceAccountResourceId
  • aiSearchServiceResourceId
  • aiStorageAccountResourceId

Pokud chcete použít existující prostředek Azure OpenAI, musíte aktualizovat aiServiceAccountResourceIdaiServiceKind parametry v souboru parametrů. Parametr aiServiceKind by měl být nastaven na AzureOpenAIhodnotu .

Další informace najdete v tématu použití vlastních prostředků.

Konfigurace a spuštění agenta

Komponenta Popis
Agent Vlastní AI, která ve spojení s nástroji používá modely AI.
Nástroj Nástroje pomáhají rozšířit schopnost agenta spolehlivě a přesně reagovat během konverzace. Například připojení k uživatelem definovaným znalostní báze k vytvoření modelu nebo povolení webového vyhledávání, aby poskytovalo aktuální informace.
Vlákno Relace konverzace mezi agentem a uživatelem. Vlákna ukládají zprávy a automaticky zpracovávají zkrácení tak, aby se vešel do kontextu modelu.
Zpráva Zpráva vytvořená agentem nebo uživatelem Zprávy můžou obsahovat text, obrázky a další soubory. Zprávy jsou uloženy jako seznam ve vlákně.
Spustit Aktivace agenta, který začne běžet na základě obsahu vlákna. Agent používá svoji konfiguraci a zprávy vlákna k provádění úloh voláním modelů a nástrojů. V rámci spuštění agent připojí zprávy do vlákna.
Spustit krok Podrobný seznamkrokůch Agent může během spuštění volat nástroje nebo vytvářet zprávy. Zkoumání kroků spuštění vám umožní pochopit, jak se agent dostává ke svým výsledkům.

Spuštěním následujících příkazů nainstalujte balíčky Pythonu.

pip install azure-ai-projects
pip install azure-identity
pip install openai

Dále k ověření požadavků rozhraní API a spuštění programu použijte příkaz az login a přihlaste se k předplatnému Azure.

az login

K vytvoření a spuštění agenta použijte následující kód. Pokud chcete tento kód spustit, budete muset vytvořit připojovací řetězec pomocí informací z projektu. Tento řetězec je ve formátu:

<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<ProjectName>

Tip

Připojovací řetězec najdete také v přehledu projektu na portálu Azure AI Foundry v části Project details>Project připojovací řetězec. Snímek obrazovky znázorňující připojovací řetězec na portálu Azure AI Foundry

HostName naleznete tak, že přejdete na a odeberete discovery_url úvodní https:// a koncové /discovery. Pokud chcete najít svůj příkaz rozhraní příkazového řádku, spusťte discovery_urltento příkaz rozhraní příkazového řádku:

az ml workspace show -n {project_name} --resource-group {resource_group_name} --query discovery_url

Vaše připojovací řetězec může například vypadat nějak takto:

eastus.api.azureml.ms;12345678-abcd-1234-9fc6-62780b3d3e05;my-resource-group;my-project-name

Nastavte tuto připojovací řetězec jako proměnnou prostředí s názvem PROJECT_CONNECTION_STRING.

import os, time
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from openai import AzureOpenAI


with AIProjectClient.from_connection_string(
    credential=DefaultAzureCredential(),
    conn_str=os.environ["PROJECT_CONNECTION_STRING"],
) as project_client:

    # Explicit type hinting for IntelliSense
    client: AzureOpenAI = project_client.inference.get_azure_openai_client(
        # The latest API version is 2024-10-01-preview
        api_version = os.environ.get("AZURE_OPENAI_API_VERSION"),
    )

    with client:
        agent = client.beta.assistants.create(
            model="gpt-4o-mini", name="my-agent", instructions="You are a helpful agent"
        )
        print(f"Created agent, agent ID: {agent.id}")

        thread = client.beta.threads.create()
        print(f"Created thread, thread ID: {thread.id}")

        message = client.beta.threads.messages.create(thread_id=thread.id, role="user", content="Hello, tell me a joke")
        print(f"Created message, message ID: {message.id}")

        run = client.beta.threads.runs.create(thread_id=thread.id, assistant_id=agent.id)

        # Poll the run while run status is queued or in progress
        while run.status in ["queued", "in_progress", "requires_action"]:
            time.sleep(1)  # Wait for a second
            run = client.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id)
            print(f"Run status: {run.status}")

        client.beta.assistants.delete(agent.id)
        print("Deleted agent")

        messages = client.beta.threads.messages.list(thread_id=thread.id)
        print(f"Messages: {messages}")

| Referenční dokumentace | – Balíček zdrojového kódu | knihovny ukázek | knihovny (npm) |

Požadavky

Nastavení projektu Azure AI Hub a agenta

V následující části se dozvíte, jak nastavit požadované prostředky pro zahájení práce se službou agenta Azure AI:

  1. Vytvoření centra Azure AI pro nastavení prostředí aplikace a prostředků Azure

  2. Vytvoření projektu Azure AI v rámci centra vytvoří koncový bod pro volání vaší aplikace a nastaví aplikační služby pro přístup k prostředkům ve vašem tenantovi.

  3. Připojení prostředku Azure OpenAI nebo prostředku Azure AI Services

Volba instalace základního nebo standardního agenta

Základní nastavení: Agenti používají víceklientských vyhledávacích a úložných prostředků plně spravovaných Microsoftem. Nemáte přehled ani kontrolu nad těmito podkladovými prostředky Azure.

Standardní nastavení: Agenti používají prostředky vyhledávání a úložiště ve vlastnictví zákazníka s jedním tenantem. Díky tomuto nastavení máte plnou kontrolu a přehled o těchto prostředcích, ale na základě využití se vám účtují náklady.

Popis a automatické nasazení Diagram (kliknutím přiblížit)
Nasaďte základní nastavení agenta, které k ověřování používá spravovanou identitu. Prostředky pro centrum AI, projekt AI, účet úložiště a služby AI se vytvoří za vás.

Účet AI Services je připojený k vašemu projektu a centru a v oblasti eastus se nasadí model gpt-4o-mini. Trezor klíčů spravovaný Microsoftem se používá ve výchozím nastavení.

Nasazení do Azure
Diagram architektury pro základní nastavení agenta
Nasaďte standardní nastavení agenta, které k ověřování používá spravovanou identitu.

Vytvoří se zdroje pro centrum AI, projekt AI, trezor klíčů, účet úložiště, služby AI a vyhledávání AI.

Služby AI, vyhledávání AI, trezor klíčů a účet úložiště jsou připojené k vašemu projektu a centru. Model gpt-4o-mini je nasazený v oblasti eastus.

Nasazení do Azure
Diagram architektury pro standardní nastavení agenta

[Volitelné] Výběr modelu v šabloně automatického nasazení

Model používaný vaším agentem můžete přizpůsobit úpravou parametrů modelu v šabloně automatického nasazení. Pokud chcete nasadit jiný model, musíte aktualizovat alespoň parametry modelName a modelVersion parametry.

Ve výchozím nastavení je šablona nasazení nakonfigurovaná s následujícími hodnotami:

Parametr modelu Výchozí hodnota
modelName gpt-4o-mini
modelFormat OpenAI (pro Azure OpenAI)
modelVersion 2024-07-18
modelSkuName GlobalStandard
modelLocation eastus

Důležité

Neměňte parametr modelFormat.

Šablony podporují pouze nasazení modelů Azure OpenAI. Informace o podporovaných modelech Azure OpenAI najdete v dokumentaci k podpoře modelů agenta Azure AI.

[Volitelné] Použití vlastních prostředků během instalace agenta

Poznámka:

Pokud používáte existující prostředek AI Services nebo Azure OpenAI, žádný model se nenasadí. Po dokončení instalace agenta můžete do prostředku nasadit model.

Pomocí existujících služeb AI, Azure OpenAI, AI Search a/nebo prostředku Azure Blob Storage zadejte úplné ID prostředku arm v souboru parametrů:

  • aiServiceAccountResourceId
  • aiSearchServiceResourceId
  • aiStorageAccountResourceId

Pokud chcete použít existující prostředek Azure OpenAI, musíte aktualizovat aiServiceAccountResourceIdaiServiceKind parametry v souboru parametrů. Parametr aiServiceKind by měl být nastaven na AzureOpenAIhodnotu .

Další informace najdete v tématu použití vlastních prostředků.

Konfigurace a spuštění agenta

Komponenta Popis
Agent Vlastní AI, která ve spojení s nástroji používá modely AI.
Nástroj Nástroje pomáhají rozšířit schopnost agenta spolehlivě a přesně reagovat během konverzace. Například připojení k uživatelem definovaným znalostní báze k vytvoření modelu nebo povolení webového vyhledávání, aby poskytovalo aktuální informace.
Vlákno Relace konverzace mezi agentem a uživatelem. Vlákna ukládají zprávy a automaticky zpracovávají zkrácení tak, aby se vešel do kontextu modelu.
Zpráva Zpráva vytvořená agentem nebo uživatelem Zprávy můžou obsahovat text, obrázky a další soubory. Zprávy jsou uloženy jako seznam ve vlákně.
Spustit Aktivace agenta, který začne běžet na základě obsahu vlákna. Agent používá svoji konfiguraci a zprávy vlákna k provádění úloh voláním modelů a nástrojů. V rámci spuštění agent připojí zprávy do vlákna.
Spustit krok Podrobný seznamkrokůch Agent může během spuštění volat nástroje nebo vytvářet zprávy. Zkoumání kroků spuštění vám umožní pochopit, jak se agent dostává ke svým výsledkům.

Spuštěním následujících příkazů nainstalujte balíčky npm.

npm install @azure/ai-projects
npm install @azure/identity

Dále k ověření požadavků rozhraní API a spuštění programu použijte příkaz az login a přihlaste se k předplatnému Azure.

az login

K vytvoření a spuštění agenta použijte následující kód. Pokud chcete tento kód spustit, budete muset vytvořit připojovací řetězec pomocí informací z projektu. Tento řetězec je ve formátu:

<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<ProjectName>

Tip

Připojovací řetězec najdete také v přehledu projektu na portálu Azure AI Foundry v části Project details>Project připojovací řetězec. Snímek obrazovky znázorňující připojovací řetězec na portálu Azure AI Foundry

HostName naleznete tak, že přejdete na a odeberete discovery_url úvodní https:// a koncové /discovery. Pokud chcete najít svůj příkaz rozhraní příkazového řádku, spusťte discovery_urltento příkaz rozhraní příkazového řádku:

az ml workspace show -n {project_name} --resource-group {resource_group_name} --query discovery_url

Vaše připojovací řetězec může například vypadat nějak takto:

eastus.api.azureml.ms;12345678-abcd-1234-9fc6-62780b3d3e05;my-resource-group;my-project-name

Nastavte tuto připojovací řetězec jako proměnnou prostředí s názvem PROJECT_CONNECTION_STRING.

// index.js

import {
  AIProjectsClient,
  DoneEvent,
  ErrorEvent,
  isOutputOfType,
  MessageStreamEvent,
  RunStreamEvent,
  ToolUtility,
} from "@azure/ai-projects";
import { DefaultAzureCredential } from "@azure/identity";

const connectionString =
  process.env["AZURE_AI_PROJECTS_CONNECTION_STRING"] || "<project connection string>";

if (!connectionString) {
  throw new Error("AZURE_AI_PROJECTS_CONNECTION_STRING must be set in the environment variables");
}

export async function main() {
  const client = AIProjectsClient.fromConnectionString(
    connectionString || "",
    new DefaultAzureCredential(),
  );

  // Step 1 code interpreter tool
  const codeInterpreterTool = ToolUtility.createCodeInterpreterTool();

  // Step 2 an agent
  const agent = await client.agents.createAgent("gpt-4o-mini", {
    name: "my-agent",
    instructions: "You are a helpful agent",
    tools: [codeInterpreterTool.definition],
    toolResources: codeInterpreterTool.resources,
  });

  // Step 3 a thread
  const thread = await client.agents.createThread();

  // Step 4 a message to thread
  await client.agents.createMessage(
    thread.id, {
    role: "user",
    content: "I need to solve the equation `3x + 11 = 14`. Can you help me?",
  });

  // Intermission is now correlated with thread
  // Intermission messages will retrieve the message just added

  // Step 5 the agent
  const streamEventMessages = await client.agents.createRun(thread.id, agent.id).stream();

  for await (const eventMessage of streamEventMessages) {
    switch (eventMessage.event) {
      case RunStreamEvent.ThreadRunCreated:
        break;
      case MessageStreamEvent.ThreadMessageDelta:
        {
          const messageDelta = eventMessage.data;
          messageDelta.delta.content.forEach((contentPart) => {
            if (contentPart.type === "text") {
              const textContent = contentPart;
              const textValue = textContent.text?.value || "No text";
            }
          });
        }
        break;

      case RunStreamEvent.ThreadRunCompleted:
        break;
      case ErrorEvent.Error:
        console.log(`An error occurred. Data ${eventMessage.data}`);
        break;
      case DoneEvent.Done:
        break;
    }
  }

  // 6. Print the messages from the agent
  const messages = await client.agents.listMessages(thread.id);

  // Messages iterate from oldest to newest
  // messages[0] is the most recent
  for (let i = messages.data.length - 1; i >= 0; i--) {
    const m = messages.data[i];
    if (isOutputOfType(m.content[0], "text")) {
      const textContent = m.content[0];
      console.log(`${textContent.text.value}`);
      console.log(`---------------------------------`);
    }
  }

  // 7. Delete the agent once done
  await client.agents.deleteAgent(agent.id);
}

main().catch((err) => {
  console.error("The sample encountered an error:", err);
});

Výstup obsahuje výzvu a odpovědi.

I need to solve the equation `3x + 11 = 14`. Can you help me?
---------------------------------
Sure! I can help you solve the equation \(3x + 11 = 14\).

To solve this equation, we need to isolate the variable \(x\). Let's go ahead and solve it.
---------------------------------
The solution to the equation \(3x + 11 = 14\) is \(x = 1\). 

Therefore, the value of \(x\) that satisfies the equation is 1. 

Let me know if you need help with anything else!
---------------------------------

| Referenční dokumentace | – Balíček zdrojového kódu | knihovny ukázek | knihovny (npm) |

Požadavky

Nastavení projektu Azure AI Hub a agenta

V následující části se dozvíte, jak nastavit požadované prostředky pro zahájení práce se službou agenta Azure AI:

  1. Vytvoření centra Azure AI pro nastavení prostředí aplikace a prostředků Azure

  2. Vytvoření projektu Azure AI v rámci centra vytvoří koncový bod pro volání vaší aplikace a nastaví aplikační služby pro přístup k prostředkům ve vašem tenantovi.

  3. Připojení prostředku Azure OpenAI nebo prostředku Azure AI Services

Volba instalace základního nebo standardního agenta

Základní nastavení: Agenti používají víceklientských vyhledávacích a úložných prostředků plně spravovaných Microsoftem. Nemáte přehled ani kontrolu nad těmito podkladovými prostředky Azure.

Standardní nastavení: Agenti používají prostředky vyhledávání a úložiště ve vlastnictví zákazníka s jedním tenantem. Díky tomuto nastavení máte plnou kontrolu a přehled o těchto prostředcích, ale na základě využití se vám účtují náklady.

Popis a automatické nasazení Diagram (kliknutím přiblížit)
Nasaďte základní nastavení agenta, které k ověřování používá spravovanou identitu. Prostředky pro centrum AI, projekt AI, účet úložiště a služby AI se vytvoří za vás.

Účet AI Services je připojený k vašemu projektu a centru a v oblasti eastus se nasadí model gpt-4o-mini. Trezor klíčů spravovaný Microsoftem se používá ve výchozím nastavení.

Nasazení do Azure
Diagram architektury pro základní nastavení agenta
Nasaďte standardní nastavení agenta, které k ověřování používá spravovanou identitu.

Vytvoří se zdroje pro centrum AI, projekt AI, trezor klíčů, účet úložiště, služby AI a vyhledávání AI.

Služby AI, vyhledávání AI, trezor klíčů a účet úložiště jsou připojené k vašemu projektu a centru. Model gpt-4o-mini je nasazený v oblasti eastus.

Nasazení do Azure
Diagram architektury pro standardní nastavení agenta

[Volitelné] Výběr modelu v šabloně automatického nasazení

Model používaný vaším agentem můžete přizpůsobit úpravou parametrů modelu v šabloně automatického nasazení. Pokud chcete nasadit jiný model, musíte aktualizovat alespoň parametry modelName a modelVersion parametry.

Ve výchozím nastavení je šablona nasazení nakonfigurovaná s následujícími hodnotami:

Parametr modelu Výchozí hodnota
modelName gpt-4o-mini
modelFormat OpenAI (pro Azure OpenAI)
modelVersion 2024-07-18
modelSkuName GlobalStandard
modelLocation eastus

Důležité

Neměňte parametr modelFormat.

Šablony podporují pouze nasazení modelů Azure OpenAI. Informace o podporovaných modelech Azure OpenAI najdete v dokumentaci k podpoře modelů agenta Azure AI.

[Volitelné] Použití vlastních prostředků během instalace agenta

Poznámka:

Pokud používáte existující prostředek AI Services nebo Azure OpenAI, žádný model se nenasadí. Po dokončení instalace agenta můžete do prostředku nasadit model.

Pomocí existujících služeb AI, Azure OpenAI, AI Search a/nebo prostředku Azure Blob Storage zadejte úplné ID prostředku arm v souboru parametrů:

  • aiServiceAccountResourceId
  • aiSearchServiceResourceId
  • aiStorageAccountResourceId

Pokud chcete použít existující prostředek Azure OpenAI, musíte aktualizovat aiServiceAccountResourceIdaiServiceKind parametry v souboru parametrů. Parametr aiServiceKind by měl být nastaven na AzureOpenAIhodnotu .

Další informace najdete v tématu použití vlastních prostředků.

Konfigurace a spuštění agenta

Komponenta Popis
Agent Vlastní AI, která ve spojení s nástroji používá modely AI.
Nástroj Nástroje pomáhají rozšířit schopnost agenta spolehlivě a přesně reagovat během konverzace. Například připojení k uživatelem definovaným znalostní báze k vytvoření modelu nebo povolení webového vyhledávání, aby poskytovalo aktuální informace.
Vlákno Relace konverzace mezi agentem a uživatelem. Vlákna ukládají zprávy a automaticky zpracovávají zkrácení tak, aby se vešel do kontextu modelu.
Zpráva Zpráva vytvořená agentem nebo uživatelem Zprávy můžou obsahovat text, obrázky a další soubory. Zprávy jsou uloženy jako seznam ve vlákně.
Spustit Aktivace agenta, který začne běžet na základě obsahu vlákna. Agent používá svoji konfiguraci a zprávy vlákna k provádění úloh voláním modelů a nástrojů. V rámci spuštění agent připojí zprávy do vlákna.
Spustit krok Podrobný seznamkrokůch Agent může během spuštění volat nástroje nebo vytvářet zprávy. Zkoumání kroků spuštění vám umožní pochopit, jak se agent dostává ke svým výsledkům.

Spuštěním následujících příkazů nainstalujte balíčky npm.

npm install @azure/ai-projects
npm install @azure/identity

Dále k ověření požadavků rozhraní API a spuštění programu použijte příkaz az login a přihlaste se k předplatnému Azure.

az login

K vytvoření a spuštění agenta použijte následující kód. Pokud chcete tento kód spustit, budete muset vytvořit připojovací řetězec pomocí informací z projektu. Tento řetězec je ve formátu:

<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<ProjectName>

Tip

Připojovací řetězec najdete také v přehledu projektu na portálu Azure AI Foundry v části Project details>Project připojovací řetězec. Snímek obrazovky znázorňující připojovací řetězec na portálu Azure AI Foundry

HostName naleznete tak, že přejdete na a odeberete discovery_url úvodní https:// a koncové /discovery. Pokud chcete najít svůj příkaz rozhraní příkazového řádku, spusťte discovery_urltento příkaz rozhraní příkazového řádku:

az ml workspace show -n {project_name} --resource-group {resource_group_name} --query discovery_url

Vaše připojovací řetězec může například vypadat nějak takto:

eastus.api.azureml.ms;12345678-abcd-1234-9fc6-62780b3d3e05;my-resource-group;my-project-name

Nastavte tuto připojovací řetězec jako proměnnou prostředí s názvem PROJECT_CONNECTION_STRING.

// index.ts

import type {
  MessageDeltaChunk,
  MessageDeltaTextContent,
  MessageTextContentOutput,
} from "@azure/ai-projects";
import {
  AIProjectsClient,
  DoneEvent,
  ErrorEvent,
  isOutputOfType,
  MessageStreamEvent,
  RunStreamEvent,
  ToolUtility,
} from "@azure/ai-projects";
import { DefaultAzureCredential } from "@azure/identity";

const connectionString =
  process.env["AZURE_AI_PROJECTS_CONNECTION_STRING"] || "<project connection string>";

if (!connectionString) {
  throw new Error("AZURE_AI_PROJECTS_CONNECTION_STRING must be set in the environment variables");
}

export async function main(): Promise<void> {
  const client = AIProjectsClient.fromConnectionString(
    connectionString || "",
    new DefaultAzureCredential(),
  );

  // Step 1: Create code interpreter tool
  const codeInterpreterTool = ToolUtility.createCodeInterpreterTool();

  // Step 2: Create an agent
  const agent = await client.agents.createAgent("gpt-4o-mini", {
    name: "my-agent",
    instructions: "You are a helpful agent",
    tools: [codeInterpreterTool.definition],
    toolResources: codeInterpreterTool.resources,
  });

  // Step 3: Create a thread
  const thread = await client.agents.createThread();

  // Step 4: Add a message to thread
  await client.agents.createMessage(
    thread.id, {
    role: "user",
    content: "I need to solve the equation `3x + 11 = 14`. Can you help me?",
  });

  // Intermission: message is now correlated with thread
  // Intermission: listing messages will retrieve the message just added

  // Step 5: Run the agent
  const streamEventMessages = await client.agents.createRun(thread.id, agent.id).stream();

  for await (const eventMessage of streamEventMessages) {
    switch (eventMessage.event) {
      case RunStreamEvent.ThreadRunCreated:
        break;
      case MessageStreamEvent.ThreadMessageDelta:
        {
          const messageDelta = eventMessage.data as MessageDeltaChunk;
          messageDelta.delta.content.forEach((contentPart) => {
            if (contentPart.type === "text") {
              const textContent = contentPart as MessageDeltaTextContent;
              const textValue = textContent.text?.value || "No text";
            }
          });
        }
        break;

      case RunStreamEvent.ThreadRunCompleted:
        break;
      case ErrorEvent.Error:
        console.log(`An error occurred. Data ${eventMessage.data}`);
        break;
      case DoneEvent.Done:
        break;
    }
  }

  // 6. Print the messages from the agent
  const messages = await client.agents.listMessages(thread.id);

  // Messages iterate from oldest to newest
  // messages[0] is the most recent
  for (let i = messages.data.length - 1; i >= 0; i--) {
    const m = messages.data[i];
    if (isOutputOfType<MessageTextContentOutput>(m.content[0], "text")) {
      const textContent = m.content[0] as MessageTextContentOutput;
      console.log(`${textContent.text.value}`);
      console.log(`---------------------------------`);
    }
  }

  // 7. Delete the agent once done
  await client.agents.deleteAgent(agent.id);
}

main().catch((err) => {
  console.error("The sample encountered an error:", err);
});

Výstup obsahuje výzvu a odpovědi.

I need to solve the equation `3x + 11 = 14`. Can you help me?
---------------------------------
Sure! I can help you solve the equation \(3x + 11 = 14\).

To solve this equation, we need to isolate the variable \(x\). Let's go ahead and solve it.
---------------------------------
The solution to the equation \(3x + 11 = 14\) is \(x = 1\). 

Therefore, the value of \(x\) that satisfies the equation is 1. 

Let me know if you need help with anything else!
---------------------------------