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
- Předplatné Azure – Vytvořte si ho zdarma.
- Nejnovější verze .NET
- Ujistěte se, že máte přiřazenou roli RBAC pro vývojářeAzure AI na odpovídající úrovni.
- 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:
Vytvoření centra Azure AI pro nastavení prostředí aplikace a prostředků Azure
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.
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.
[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 aiServiceAccountResourceId
aiServiceKind
parametry v souboru parametrů. Parametr aiServiceKind
by měl být nastaven na AzureOpenAI
hodnotu .
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.
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_url
tento 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
- 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.
- 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:
Vytvoření centra Azure AI pro nastavení prostředí aplikace a prostředků Azure
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.
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.
[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 aiServiceAccountResourceId
aiServiceKind
parametry v souboru parametrů. Parametr aiServiceKind
by měl být nastaven na AzureOpenAI
hodnotu .
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.
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_url
tento 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:
Vytvoření centra Azure AI pro nastavení prostředí aplikace a prostředků Azure
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.
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.
[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 aiServiceAccountResourceId
aiServiceKind
parametry v souboru parametrů. Parametr aiServiceKind
by měl být nastaven na AzureOpenAI
hodnotu .
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.
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_url
tento 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
- Předplatné Azure – Vytvořte si ho zdarma.
- Node.js LTS
- Ujistěte se, že máte přiřazenou roli RBAC pro vývojářeAzure AI na odpovídající úrovni.
- 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:
Vytvoření centra Azure AI pro nastavení prostředí aplikace a prostředků Azure
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.
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.
[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 aiServiceAccountResourceId
aiServiceKind
parametry v souboru parametrů. Parametr aiServiceKind
by měl být nastaven na AzureOpenAI
hodnotu .
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.
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_url
tento 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
- Předplatné Azure – Vytvořte si ho zdarma.
- Node.js LTS
- TypeScript 5.x
- Ujistěte se, že máte přiřazenou roli RBAC pro vývojářeAzure AI na odpovídající úrovni.
- 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:
Vytvoření centra Azure AI pro nastavení prostředí aplikace a prostředků Azure
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.
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.
[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 aiServiceAccountResourceId
aiServiceKind
parametry v souboru parametrů. Parametr aiServiceKind
by měl být nastaven na AzureOpenAI
hodnotu .
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.
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_url
tento 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!
---------------------------------