Guida introduttiva: Creare un nuovo agente
Il servizio Agente di intelligenza artificiale di Azure consente di creare agenti di intelligenza artificiale personalizzati in base alle proprie esigenze tramite istruzioni personalizzate e aumentata da strumenti avanzati come interprete del codice e funzioni personalizzate.
| Documentazione di riferimento | - Pacchetto del codice | sorgente della | libreria di esempi (NuGet) |
Prerequisiti
- Una sottoscrizione di Azure: crearne una gratuitamente.
- Versione più recente di .NET
- Assicurarsi di avere assegnato il ruolo Controllo degli accessi in base al ruolo degli sviluppatoridi Intelligenza artificiale di Azure al livello appropriato.
- Installare l'interfaccia della riga di comando di Azure e l'estensione di Machine Learning. Se l'interfaccia della riga di comando è già installata, assicurarsi che sia aggiornata alla versione più recente.
Configurare il progetto hub e agente di Intelligenza artificiale di Azure
La sezione seguente illustra come configurare le risorse necessarie per iniziare a usare il servizio Azure AI Agent:
Creazione di un hub di intelligenza artificiale di Azure per configurare l'ambiente dell'app e le risorse di Azure.
La creazione di un progetto di intelligenza artificiale di Azure nell'hub crea un endpoint per chiamare l'app e configura i servizi app per l'accesso alle risorse nel tenant.
Connessione di una risorsa OpenAI di Azure o di una risorsa di Servizi di intelligenza artificiale di Azure
Scegliere l'installazione dell'agente Basic o Standard
Configurazione di base: gli agenti usano risorse di ricerca e archiviazione multi-tenant completamente gestite da Microsoft. Non si ha visibilità o controllo su queste risorse di Azure sottostanti.
Configurazione standard: gli agenti usano risorse di ricerca e archiviazione a tenant singolo di proprietà del cliente. Con questa configurazione, si ha il controllo completo e la visibilità su queste risorse, ma si comportano costi in base all'utilizzo.
[Facoltativo] Selezione del modello nel modello di distribuzione automatica
È possibile personalizzare il modello usato dall'agente modificando i parametri del modello nel modello di distribuzione automatica. Per distribuire un modello diverso, è necessario aggiornare almeno i modelName
parametri e modelVersion
.
Per impostazione predefinita, il modello di distribuzione è configurato con i valori seguenti:
Parametro del modello | Valore predefinito |
---|---|
modelName | gpt-4o-mini |
modelFormat | OpenAI (per Azure OpenAI) |
modelVersion | 18-07-2024 |
modelSkuName | GlobalStandard |
modelLocation | eastus |
Importante
Non modificare il parametro modelFormat.
I modelli supportano solo la distribuzione di modelli OpenAI di Azure. Vedere quali modelli OpenAI di Azure sono supportati nella documentazione del supporto del modello del servizio Azure AI Agent.
[Facoltativo] Usare le proprie risorse durante la configurazione dell'agente
Nota
Se si usa una risorsa di Servizi di intelligenza artificiale o OpenAI di Azure esistente, non verrà distribuito alcun modello. È possibile distribuire un modello nella risorsa al termine dell'installazione dell'agente.
Usare una risorsa di intelligenza artificiale esistente, Azure OpenAI, Ricerca di intelligenza artificiale e/o Archiviazione BLOB di Azure fornendo l'ID risorsa arm completo nel file dei parametri:
aiServiceAccountResourceId
aiSearchServiceResourceId
aiStorageAccountResourceId
Se si vuole usare una risorsa OpenAI di Azure esistente, è necessario aggiornare aiServiceAccountResourceId
e i aiServiceKind
parametri nel file dei parametri. Il aiServiceKind
parametro deve essere impostato su AzureOpenAI
.
Per altre informazioni, vedere come usare le proprie risorse.
Configurare ed eseguire un agente
Componente | Descrizione |
---|---|
Agente | Intelligenza artificiale personalizzata che usa i modelli di intelligenza artificiale in combinazione con gli strumenti. |
Strumento | Gli strumenti consentono di estendere la capacità di un agente di rispondere in modo affidabile e accurato durante la conversazione. Ad esempio la connessione alle knowledge base definite dall'utente al modello o l'abilitazione della ricerca Web per fornire informazioni correnti. |
Thread | Sessione di conversazione tra un agente e un utente. I thread archiviano messaggi e gestiscono automaticamente il troncamento per adattare il contenuto al contesto di un modello. |
Message | Messaggio creato da un agente o da un utente. I messaggi possono includere testo, immagini e altri file. I messaggi vengono archiviati come elenco nel thread. |
Run | Attivazione di un agente per iniziare l'esecuzione in base al contenuto di Thread. L'agente usa la configurazione e i messaggi del thread per eseguire attività chiamando modelli e strumenti. Nell'ambito di un'operazione Run, l'agente aggiunge messaggi al thread. |
Eseguire il passaggio | Elenco dettagliato dei passaggi eseguiti dall'agente come parte di un'esecuzione. Un agente può chiamare strumenti o creare messaggi durante l'esecuzione. L'analisi dei passaggi di esecuzione consente di comprendere in che modo l'agente ottiene i risultati. |
Installare il pacchetto .NET nel progetto. Ad esempio, se si usa l'interfaccia della riga di comando di .NET, eseguire il comando seguente.
dotnet add package Azure.AI.Projects
dotnet add package Azure.Identity
Successivamente, per autenticare le richieste API ed eseguire il programma, usare il comando az login per accedere alla sottoscrizione di Azure.
az login
Usare il codice seguente per creare ed eseguire un agente. Per eseguire questo codice, è necessario creare un stringa di connessione usando le informazioni del progetto. Questa stringa è nel formato:
<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<ProjectName>
Suggerimento
È anche possibile trovare il stringa di connessione nella panoramica del progetto nel portale di Azure AI Foundry, in Dettagli>progetto stringa di connessione.
HostName
è disponibile passando all'oggetto discovery_url
e rimuovendo l'oggetto iniziale https://
e finale /discovery
. Per trovare discovery_url
, eseguire questo comando dell'interfaccia della riga di comando:
az ml workspace show -n {project_name} --resource-group {resource_group_name} --query discovery_url
Ad esempio, il stringa di connessione potrebbe essere simile al seguente:
eastus.api.azureml.ms;12345678-abcd-1234-9fc6-62780b3d3e05;my-resource-group;my-project-name
Impostare questa stringa di connessione come variabile di ambiente denominata 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();
}
}
}
}
| Documentazione di | riferimento | - Pacchetto del codice | sorgente della libreria di esempi (PyPi) |
Prerequisiti
- Una sottoscrizione di Azure: crearne una gratuitamente.
- Python 3.8 o versioni successive
- Assicurarsi di avere assegnato il ruolo Controllo degli accessi in base al ruolo degli sviluppatoridi Intelligenza artificiale di Azure al livello appropriato.
- Installare l'interfaccia della riga di comando di Azure e l'estensione di Machine Learning. Se l'interfaccia della riga di comando è già installata, assicurarsi che sia aggiornata alla versione più recente.
Configurare il progetto hub e agente di Intelligenza artificiale di Azure
La sezione seguente illustra come configurare le risorse necessarie per iniziare a usare il servizio Azure AI Agent:
Creazione di un hub di intelligenza artificiale di Azure per configurare l'ambiente dell'app e le risorse di Azure.
La creazione di un progetto di intelligenza artificiale di Azure nell'hub crea un endpoint per chiamare l'app e configura i servizi app per l'accesso alle risorse nel tenant.
Connessione di una risorsa OpenAI di Azure o di una risorsa di Servizi di intelligenza artificiale di Azure
Scegliere l'installazione dell'agente Basic o Standard
Configurazione di base: gli agenti usano risorse di ricerca e archiviazione multi-tenant completamente gestite da Microsoft. Non si ha visibilità o controllo su queste risorse di Azure sottostanti.
Configurazione standard: gli agenti usano risorse di ricerca e archiviazione a tenant singolo di proprietà del cliente. Con questa configurazione, si ha il controllo completo e la visibilità su queste risorse, ma si comportano costi in base all'utilizzo.
[Facoltativo] Selezione del modello nel modello di distribuzione automatica
È possibile personalizzare il modello usato dall'agente modificando i parametri del modello nel modello di distribuzione automatica. Per distribuire un modello diverso, è necessario aggiornare almeno i modelName
parametri e modelVersion
.
Per impostazione predefinita, il modello di distribuzione è configurato con i valori seguenti:
Parametro del modello | Valore predefinito |
---|---|
modelName | gpt-4o-mini |
modelFormat | OpenAI (per Azure OpenAI) |
modelVersion | 18-07-2024 |
modelSkuName | GlobalStandard |
modelLocation | eastus |
Importante
Non modificare il parametro modelFormat.
I modelli supportano solo la distribuzione di modelli OpenAI di Azure. Vedere quali modelli OpenAI di Azure sono supportati nella documentazione del supporto del modello del servizio Azure AI Agent.
[Facoltativo] Usare le proprie risorse durante la configurazione dell'agente
Nota
Se si usa una risorsa di Servizi di intelligenza artificiale o OpenAI di Azure esistente, non verrà distribuito alcun modello. È possibile distribuire un modello nella risorsa al termine dell'installazione dell'agente.
Usare una risorsa di intelligenza artificiale esistente, Azure OpenAI, Ricerca di intelligenza artificiale e/o Archiviazione BLOB di Azure fornendo l'ID risorsa arm completo nel file dei parametri:
aiServiceAccountResourceId
aiSearchServiceResourceId
aiStorageAccountResourceId
Se si vuole usare una risorsa OpenAI di Azure esistente, è necessario aggiornare aiServiceAccountResourceId
e i aiServiceKind
parametri nel file dei parametri. Il aiServiceKind
parametro deve essere impostato su AzureOpenAI
.
Per altre informazioni, vedere come usare le proprie risorse.
Configurare ed eseguire un agente
Componente | Descrizione |
---|---|
Agente | Intelligenza artificiale personalizzata che usa i modelli di intelligenza artificiale in combinazione con gli strumenti. |
Strumento | Gli strumenti consentono di estendere la capacità di un agente di rispondere in modo affidabile e accurato durante la conversazione. Ad esempio la connessione alle knowledge base definite dall'utente al modello o l'abilitazione della ricerca Web per fornire informazioni correnti. |
Thread | Sessione di conversazione tra un agente e un utente. I thread archiviano messaggi e gestiscono automaticamente il troncamento per adattare il contenuto al contesto di un modello. |
Message | Messaggio creato da un agente o da un utente. I messaggi possono includere testo, immagini e altri file. I messaggi vengono archiviati come elenco nel thread. |
Run | Attivazione di un agente per iniziare l'esecuzione in base al contenuto di Thread. L'agente usa la configurazione e i messaggi del thread per eseguire attività chiamando modelli e strumenti. Nell'ambito di un'operazione Run, l'agente aggiunge messaggi al thread. |
Eseguire il passaggio | Elenco dettagliato dei passaggi eseguiti dall'agente come parte di un'esecuzione. Un agente può chiamare strumenti o creare messaggi durante l'esecuzione. L'analisi dei passaggi di esecuzione consente di comprendere in che modo l'agente ottiene i risultati. |
Eseguire i comandi seguenti per installare i pacchetti Python.
pip install azure-ai-projects
pip install azure-identity
Successivamente, per autenticare le richieste API ed eseguire il programma, usare il comando az login per accedere alla sottoscrizione di Azure.
az login
Usare il codice seguente per creare ed eseguire un agente. Per eseguire questo codice, è necessario creare un stringa di connessione usando le informazioni del progetto. Questa stringa è nel formato:
<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<ProjectName>
Suggerimento
È anche possibile trovare il stringa di connessione nella panoramica del progetto nel portale di Azure AI Foundry, in Dettagli>progetto stringa di connessione.
HostName
è disponibile passando all'oggetto discovery_url
e rimuovendo l'oggetto iniziale https://
e finale /discovery
. Per trovare discovery_url
, eseguire questo comando dell'interfaccia della riga di comando:
az ml workspace show -n {project_name} --resource-group {resource_group_name} --query discovery_url
Ad esempio, il stringa di connessione potrebbe essere simile al seguente:
eastus.api.azureml.ms;12345678-abcd-1234-9fc6-62780b3d3e05;my-resource-group;my-project-name
Impostare questa stringa di connessione come variabile di ambiente denominata 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")
| Documentazione di riferimento | Codice sorgente della libreria | Pacchetto di codice(PyPi) |
Prerequisiti
- Una sottoscrizione di Azure: crearne una gratuitamente.
- Python 3.8 o versioni successive
- Assicurarsi di avere assegnato il ruolo Controllo degli accessi in base al ruolo degli sviluppatoridi Intelligenza artificiale di Azure al livello appropriato.
- È necessario il ruolo Utente OpenAI di Servizi cognitivi assegnato per usare la risorsa Servizi di intelligenza artificiale di Azure.
- Installare l'interfaccia della riga di comando di Azure e l'estensione di Machine Learning. Se l'interfaccia della riga di comando è già installata, assicurarsi che sia aggiornata alla versione più recente.
Configurare il progetto hub e agente di Intelligenza artificiale di Azure
La sezione seguente illustra come configurare le risorse necessarie per iniziare a usare il servizio Azure AI Agent:
Creazione di un hub di intelligenza artificiale di Azure per configurare l'ambiente dell'app e le risorse di Azure.
La creazione di un progetto di intelligenza artificiale di Azure nell'hub crea un endpoint per chiamare l'app e configura i servizi app per l'accesso alle risorse nel tenant.
Connessione di una risorsa OpenAI di Azure o di una risorsa di Servizi di intelligenza artificiale di Azure
Scegliere l'installazione dell'agente Basic o Standard
Configurazione di base: gli agenti usano risorse di ricerca e archiviazione multi-tenant completamente gestite da Microsoft. Non si ha visibilità o controllo su queste risorse di Azure sottostanti.
Configurazione standard: gli agenti usano risorse di ricerca e archiviazione a tenant singolo di proprietà del cliente. Con questa configurazione, si ha il controllo completo e la visibilità su queste risorse, ma si comportano costi in base all'utilizzo.
[Facoltativo] Selezione del modello nel modello di distribuzione automatica
È possibile personalizzare il modello usato dall'agente modificando i parametri del modello nel modello di distribuzione automatica. Per distribuire un modello diverso, è necessario aggiornare almeno i modelName
parametri e modelVersion
.
Per impostazione predefinita, il modello di distribuzione è configurato con i valori seguenti:
Parametro del modello | Valore predefinito |
---|---|
modelName | gpt-4o-mini |
modelFormat | OpenAI (per Azure OpenAI) |
modelVersion | 18-07-2024 |
modelSkuName | GlobalStandard |
modelLocation | eastus |
Importante
Non modificare il parametro modelFormat.
I modelli supportano solo la distribuzione di modelli OpenAI di Azure. Vedere quali modelli OpenAI di Azure sono supportati nella documentazione del supporto del modello del servizio Azure AI Agent.
[Facoltativo] Usare le proprie risorse durante la configurazione dell'agente
Nota
Se si usa una risorsa di Servizi di intelligenza artificiale o OpenAI di Azure esistente, non verrà distribuito alcun modello. È possibile distribuire un modello nella risorsa al termine dell'installazione dell'agente.
Usare una risorsa di intelligenza artificiale esistente, Azure OpenAI, Ricerca di intelligenza artificiale e/o Archiviazione BLOB di Azure fornendo l'ID risorsa arm completo nel file dei parametri:
aiServiceAccountResourceId
aiSearchServiceResourceId
aiStorageAccountResourceId
Se si vuole usare una risorsa OpenAI di Azure esistente, è necessario aggiornare aiServiceAccountResourceId
e i aiServiceKind
parametri nel file dei parametri. Il aiServiceKind
parametro deve essere impostato su AzureOpenAI
.
Per altre informazioni, vedere come usare le proprie risorse.
Configurare ed eseguire un agente
Componente | Descrizione |
---|---|
Agente | Intelligenza artificiale personalizzata che usa i modelli di intelligenza artificiale in combinazione con gli strumenti. |
Strumento | Gli strumenti consentono di estendere la capacità di un agente di rispondere in modo affidabile e accurato durante la conversazione. Ad esempio la connessione alle knowledge base definite dall'utente al modello o l'abilitazione della ricerca Web per fornire informazioni correnti. |
Thread | Sessione di conversazione tra un agente e un utente. I thread archiviano messaggi e gestiscono automaticamente il troncamento per adattare il contenuto al contesto di un modello. |
Message | Messaggio creato da un agente o da un utente. I messaggi possono includere testo, immagini e altri file. I messaggi vengono archiviati come elenco nel thread. |
Run | Attivazione di un agente per iniziare l'esecuzione in base al contenuto di Thread. L'agente usa la configurazione e i messaggi del thread per eseguire attività chiamando modelli e strumenti. Nell'ambito di un'operazione Run, l'agente aggiunge messaggi al thread. |
Eseguire il passaggio | Elenco dettagliato dei passaggi eseguiti dall'agente come parte di un'esecuzione. Un agente può chiamare strumenti o creare messaggi durante l'esecuzione. L'analisi dei passaggi di esecuzione consente di comprendere in che modo l'agente ottiene i risultati. |
Eseguire i comandi seguenti per installare i pacchetti Python.
pip install azure-ai-projects
pip install azure-identity
pip install openai
Successivamente, per autenticare le richieste API ed eseguire il programma, usare il comando az login per accedere alla sottoscrizione di Azure.
az login
Usare il codice seguente per creare ed eseguire un agente. Per eseguire questo codice, è necessario creare un stringa di connessione usando le informazioni del progetto. Questa stringa è nel formato:
<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<ProjectName>
Suggerimento
È anche possibile trovare il stringa di connessione nella panoramica del progetto nel portale di Azure AI Foundry, in Dettagli>progetto stringa di connessione.
HostName
è disponibile passando all'oggetto discovery_url
e rimuovendo l'oggetto iniziale https://
e finale /discovery
. Per trovare discovery_url
, eseguire questo comando dell'interfaccia della riga di comando:
az ml workspace show -n {project_name} --resource-group {resource_group_name} --query discovery_url
Ad esempio, il stringa di connessione potrebbe essere simile al seguente:
eastus.api.azureml.ms;12345678-abcd-1234-9fc6-62780b3d3e05;my-resource-group;my-project-name
Impostare questa stringa di connessione come variabile di ambiente denominata 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}")
| Documentazione di | riferimento | - Pacchetto del codice | sorgente della libreria di esempi (npm) |
Prerequisiti
- Una sottoscrizione di Azure: crearne una gratuitamente.
- Node.js LTS
- Assicurarsi di avere assegnato il ruolo Controllo degli accessi in base al ruolo degli sviluppatoridi Intelligenza artificiale di Azure al livello appropriato.
- Installare l'interfaccia della riga di comando di Azure e l'estensione di Machine Learning. Se l'interfaccia della riga di comando è già installata, assicurarsi che sia aggiornata alla versione più recente.
Configurare il progetto hub e agente di Intelligenza artificiale di Azure
La sezione seguente illustra come configurare le risorse necessarie per iniziare a usare il servizio Azure AI Agent:
Creazione di un hub di intelligenza artificiale di Azure per configurare l'ambiente dell'app e le risorse di Azure.
La creazione di un progetto di intelligenza artificiale di Azure nell'hub crea un endpoint per chiamare l'app e configura i servizi app per l'accesso alle risorse nel tenant.
Connessione di una risorsa OpenAI di Azure o di una risorsa di Servizi di intelligenza artificiale di Azure
Scegliere l'installazione dell'agente Basic o Standard
Configurazione di base: gli agenti usano risorse di ricerca e archiviazione multi-tenant completamente gestite da Microsoft. Non si ha visibilità o controllo su queste risorse di Azure sottostanti.
Configurazione standard: gli agenti usano risorse di ricerca e archiviazione a tenant singolo di proprietà del cliente. Con questa configurazione, si ha il controllo completo e la visibilità su queste risorse, ma si comportano costi in base all'utilizzo.
[Facoltativo] Selezione del modello nel modello di distribuzione automatica
È possibile personalizzare il modello usato dall'agente modificando i parametri del modello nel modello di distribuzione automatica. Per distribuire un modello diverso, è necessario aggiornare almeno i modelName
parametri e modelVersion
.
Per impostazione predefinita, il modello di distribuzione è configurato con i valori seguenti:
Parametro del modello | Valore predefinito |
---|---|
modelName | gpt-4o-mini |
modelFormat | OpenAI (per Azure OpenAI) |
modelVersion | 18-07-2024 |
modelSkuName | GlobalStandard |
modelLocation | eastus |
Importante
Non modificare il parametro modelFormat.
I modelli supportano solo la distribuzione di modelli OpenAI di Azure. Vedere quali modelli OpenAI di Azure sono supportati nella documentazione del supporto del modello del servizio Azure AI Agent.
[Facoltativo] Usare le proprie risorse durante la configurazione dell'agente
Nota
Se si usa una risorsa di Servizi di intelligenza artificiale o OpenAI di Azure esistente, non verrà distribuito alcun modello. È possibile distribuire un modello nella risorsa al termine dell'installazione dell'agente.
Usare una risorsa di intelligenza artificiale esistente, Azure OpenAI, Ricerca di intelligenza artificiale e/o Archiviazione BLOB di Azure fornendo l'ID risorsa arm completo nel file dei parametri:
aiServiceAccountResourceId
aiSearchServiceResourceId
aiStorageAccountResourceId
Se si vuole usare una risorsa OpenAI di Azure esistente, è necessario aggiornare aiServiceAccountResourceId
e i aiServiceKind
parametri nel file dei parametri. Il aiServiceKind
parametro deve essere impostato su AzureOpenAI
.
Per altre informazioni, vedere come usare le proprie risorse.
Configurare ed eseguire un agente
Componente | Descrizione |
---|---|
Agente | Intelligenza artificiale personalizzata che usa i modelli di intelligenza artificiale in combinazione con gli strumenti. |
Strumento | Gli strumenti consentono di estendere la capacità di un agente di rispondere in modo affidabile e accurato durante la conversazione. Ad esempio la connessione alle knowledge base definite dall'utente al modello o l'abilitazione della ricerca Web per fornire informazioni correnti. |
Thread | Sessione di conversazione tra un agente e un utente. I thread archiviano messaggi e gestiscono automaticamente il troncamento per adattare il contenuto al contesto di un modello. |
Message | Messaggio creato da un agente o da un utente. I messaggi possono includere testo, immagini e altri file. I messaggi vengono archiviati come elenco nel thread. |
Run | Attivazione di un agente per iniziare l'esecuzione in base al contenuto di Thread. L'agente usa la configurazione e i messaggi del thread per eseguire attività chiamando modelli e strumenti. Nell'ambito di un'operazione Run, l'agente aggiunge messaggi al thread. |
Eseguire il passaggio | Elenco dettagliato dei passaggi eseguiti dall'agente come parte di un'esecuzione. Un agente può chiamare strumenti o creare messaggi durante l'esecuzione. L'analisi dei passaggi di esecuzione consente di comprendere in che modo l'agente ottiene i risultati. |
Eseguire i comandi seguenti per installare i pacchetti npm.
npm install @azure/ai-projects
npm install @azure/identity
Successivamente, per autenticare le richieste API ed eseguire il programma, usare il comando az login per accedere alla sottoscrizione di Azure.
az login
Usare il codice seguente per creare ed eseguire un agente. Per eseguire questo codice, è necessario creare un stringa di connessione usando le informazioni del progetto. Questa stringa è nel formato:
<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<ProjectName>
Suggerimento
È anche possibile trovare il stringa di connessione nella panoramica del progetto nel portale di Azure AI Foundry, in Dettagli>progetto stringa di connessione.
HostName
è disponibile passando all'oggetto discovery_url
e rimuovendo l'oggetto iniziale https://
e finale /discovery
. Per trovare discovery_url
, eseguire questo comando dell'interfaccia della riga di comando:
az ml workspace show -n {project_name} --resource-group {resource_group_name} --query discovery_url
Ad esempio, il stringa di connessione potrebbe essere simile al seguente:
eastus.api.azureml.ms;12345678-abcd-1234-9fc6-62780b3d3e05;my-resource-group;my-project-name
Impostare questa stringa di connessione come variabile di ambiente denominata 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);
});
L'output contiene il prompt e le risposte.
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!
---------------------------------
| Documentazione di | riferimento | - Pacchetto del codice | sorgente della libreria di esempi (npm) |
Prerequisiti
- Una sottoscrizione di Azure: crearne una gratuitamente.
- Node.js LTS
- TypeScript 5.x
- Assicurarsi di avere assegnato il ruolo Controllo degli accessi in base al ruolo degli sviluppatoridi Intelligenza artificiale di Azure al livello appropriato.
- Installare l'interfaccia della riga di comando di Azure e l'estensione di Machine Learning. Se l'interfaccia della riga di comando è già installata, assicurarsi che sia aggiornata alla versione più recente.
Configurare il progetto hub e agente di Intelligenza artificiale di Azure
La sezione seguente illustra come configurare le risorse necessarie per iniziare a usare il servizio Azure AI Agent:
Creazione di un hub di intelligenza artificiale di Azure per configurare l'ambiente dell'app e le risorse di Azure.
La creazione di un progetto di intelligenza artificiale di Azure nell'hub crea un endpoint per chiamare l'app e configura i servizi app per l'accesso alle risorse nel tenant.
Connessione di una risorsa OpenAI di Azure o di una risorsa di Servizi di intelligenza artificiale di Azure
Scegliere l'installazione dell'agente Basic o Standard
Configurazione di base: gli agenti usano risorse di ricerca e archiviazione multi-tenant completamente gestite da Microsoft. Non si ha visibilità o controllo su queste risorse di Azure sottostanti.
Configurazione standard: gli agenti usano risorse di ricerca e archiviazione a tenant singolo di proprietà del cliente. Con questa configurazione, si ha il controllo completo e la visibilità su queste risorse, ma si comportano costi in base all'utilizzo.
[Facoltativo] Selezione del modello nel modello di distribuzione automatica
È possibile personalizzare il modello usato dall'agente modificando i parametri del modello nel modello di distribuzione automatica. Per distribuire un modello diverso, è necessario aggiornare almeno i modelName
parametri e modelVersion
.
Per impostazione predefinita, il modello di distribuzione è configurato con i valori seguenti:
Parametro del modello | Valore predefinito |
---|---|
modelName | gpt-4o-mini |
modelFormat | OpenAI (per Azure OpenAI) |
modelVersion | 18-07-2024 |
modelSkuName | GlobalStandard |
modelLocation | eastus |
Importante
Non modificare il parametro modelFormat.
I modelli supportano solo la distribuzione di modelli OpenAI di Azure. Vedere quali modelli OpenAI di Azure sono supportati nella documentazione del supporto del modello del servizio Azure AI Agent.
[Facoltativo] Usare le proprie risorse durante la configurazione dell'agente
Nota
Se si usa una risorsa di Servizi di intelligenza artificiale o OpenAI di Azure esistente, non verrà distribuito alcun modello. È possibile distribuire un modello nella risorsa al termine dell'installazione dell'agente.
Usare una risorsa di intelligenza artificiale esistente, Azure OpenAI, Ricerca di intelligenza artificiale e/o Archiviazione BLOB di Azure fornendo l'ID risorsa arm completo nel file dei parametri:
aiServiceAccountResourceId
aiSearchServiceResourceId
aiStorageAccountResourceId
Se si vuole usare una risorsa OpenAI di Azure esistente, è necessario aggiornare aiServiceAccountResourceId
e i aiServiceKind
parametri nel file dei parametri. Il aiServiceKind
parametro deve essere impostato su AzureOpenAI
.
Per altre informazioni, vedere come usare le proprie risorse.
Configurare ed eseguire un agente
Componente | Descrizione |
---|---|
Agente | Intelligenza artificiale personalizzata che usa i modelli di intelligenza artificiale in combinazione con gli strumenti. |
Strumento | Gli strumenti consentono di estendere la capacità di un agente di rispondere in modo affidabile e accurato durante la conversazione. Ad esempio la connessione alle knowledge base definite dall'utente al modello o l'abilitazione della ricerca Web per fornire informazioni correnti. |
Thread | Sessione di conversazione tra un agente e un utente. I thread archiviano messaggi e gestiscono automaticamente il troncamento per adattare il contenuto al contesto di un modello. |
Message | Messaggio creato da un agente o da un utente. I messaggi possono includere testo, immagini e altri file. I messaggi vengono archiviati come elenco nel thread. |
Run | Attivazione di un agente per iniziare l'esecuzione in base al contenuto di Thread. L'agente usa la configurazione e i messaggi del thread per eseguire attività chiamando modelli e strumenti. Nell'ambito di un'operazione Run, l'agente aggiunge messaggi al thread. |
Eseguire il passaggio | Elenco dettagliato dei passaggi eseguiti dall'agente come parte di un'esecuzione. Un agente può chiamare strumenti o creare messaggi durante l'esecuzione. L'analisi dei passaggi di esecuzione consente di comprendere in che modo l'agente ottiene i risultati. |
Eseguire i comandi seguenti per installare i pacchetti npm.
npm install @azure/ai-projects
npm install @azure/identity
Successivamente, per autenticare le richieste API ed eseguire il programma, usare il comando az login per accedere alla sottoscrizione di Azure.
az login
Usare il codice seguente per creare ed eseguire un agente. Per eseguire questo codice, è necessario creare un stringa di connessione usando le informazioni del progetto. Questa stringa è nel formato:
<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<ProjectName>
Suggerimento
È anche possibile trovare il stringa di connessione nella panoramica del progetto nel portale di Azure AI Foundry, in Dettagli>progetto stringa di connessione.
HostName
è disponibile passando all'oggetto discovery_url
e rimuovendo l'oggetto iniziale https://
e finale /discovery
. Per trovare discovery_url
, eseguire questo comando dell'interfaccia della riga di comando:
az ml workspace show -n {project_name} --resource-group {resource_group_name} --query discovery_url
Ad esempio, il stringa di connessione potrebbe essere simile al seguente:
eastus.api.azureml.ms;12345678-abcd-1234-9fc6-62780b3d3e05;my-resource-group;my-project-name
Impostare questa stringa di connessione come variabile di ambiente denominata 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);
});
L'output contiene il prompt e le risposte.
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!
---------------------------------