Condividi tramite


Introduzione rapida: Creare un nuovo agente

Il servizio Azure AI Foundry Agent consente di creare agenti di intelligenza artificiale personalizzati in base alle proprie esigenze tramite istruzioni personalizzate e aumentata da strumenti avanzati come l'interprete del codice e le funzioni personalizzate.

Prerequisiti

  • Una sottoscrizione di Azure: crearne una gratuitamente.
  • Assicurarsi che l'utente che crea l'account e il progetto abbia il ruolo proprietario dell'account Azure AI nell'ambito della sottoscrizione
    • In alternativa, avere il ruolo Collaboratore o Collaboratore Servizi cognitivi a livello di sottoscrizione soddisfa anche questo requisito.

Importante

Il portale di Azure AI Foundry supporta attualmente solo l'agente di base impostato. Per eseguire una configurazione standard dell'agente, vedere l'articolo Configurazione dell'ambiente per altre informazioni.

Creare un account e un progetto Foundry nel portale di Azure AI Foundry

Per creare un account e un progetto in Azure AI Foundry, seguire questa procedura:

  1. Passare ad Azure AI Foundry. Se si usa un progetto, selezionare Azure AI Foundry nella parte superiore sinistra della pagina per passare alla home page.

  2. Usare la procedura rapida di creazione dell'agente per un'esperienza più veloce. Fare clic su Crea un agente.

    Screenshot del portale di Azure AI Foundry.

  3. Immettere un nome per il progetto. Per personalizzare i valori predefiniti, selezionare Opzioni avanzate.

    Screenshot delle opzioni avanzate per la creazione di un progetto.

  4. Fare clic su Crea.

  5. Attendere che le risorse siano fornite.

    1. Verrà creato un account e un progetto (risorsa figlio dell'account).
    2. Il modello gpt-4o verrà distribuito automaticamente
    3. Verrà creato un agente predefinito
  6. Al termine, atterrerai direttamente nel playground degli agenti e potrai iniziare a creare agenti.

    Screenshot dell'ambiente di prova dell'agente.

    Annotazioni

    Se si riceve un errore di autorizzazione durante il tentativo di configurare o creare agenti, assicurarsi di disporre dell'utente di Intelligenza artificiale di Azure nel progetto.

| Documentazione di riferimento | Esempi | Codice sorgente della libreria | Pacchetto (NuGet) |

Prerequisiti

  • Ambiente dell'agente configurato
  • Assegnare il ruolo Utente AI di Azure ruolo RBAC a ogni membro del team che deve creare o modificare agenti usando l'SDK o Agent Playground
    • Questo ruolo deve essere assegnato nell'ambito del progetto
    • Autorizzazioni minime necessarie: agents/*/read, agents/*/action, agents/*/delete

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, collegarsi alle basi di conoscenze definite dall'utente per basare il modello o abilitare la ricerca web per fornire informazioni attuali.
Filo 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.
Messaggio 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.
Correre 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.

Creare un progetto console .NET.

dotnet new console

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.Agents.Persistent
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, sarà necessario ottenere l'endpoint per il progetto. Questa stringa è nel formato:

https://<AIFoundryResourceName>.services.ai.azure.com/api/projects/<ProjectName>

Suggerimento

È inoltre possibile trovare l'endpoint nella panoramica del progetto nel portale Azure AI Foundry, nella sezione Librerie sotto >. Screenshot che mostra l'endpoint nel portale di Azure AI Foundry.

Ad esempio, l'endpoint potrebbe essere simile al seguente:

https://myresource.services.ai.azure.com/api/projects/myproject

Impostare questo endpoint in una variabile appsetting denominata ProjectEndpoint.

using Azure;
using Azure.AI.Agents.Persistent;
using Azure.Identity;
using Microsoft.Extensions.Configuration;
using System.Diagnostics;

IConfigurationRoot configuration = new ConfigurationBuilder()
    .SetBasePath(AppContext.BaseDirectory)
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    .Build();

var projectEndpoint = configuration["ProjectEndpoint"];
var modelDeploymentName = configuration["ModelDeploymentName"];

//Create a PersistentAgentsClient and PersistentAgent.
PersistentAgentsClient client = new(projectEndpoint, new DefaultAzureCredential());

//Give PersistentAgent a tool to execute code using CodeInterpreterToolDefinition.
PersistentAgent agent = client.Administration.CreateAgent(
    model: modelDeploymentName,
    name: "My Test Agent",
    instructions: "You politely help with math questions. Use the code interpreter tool when asked to visualize numbers.",
    tools: [new CodeInterpreterToolDefinition()]
);

//Create a thread to establish a session between Agent and a User.
PersistentAgentThread thread = client.Threads.CreateThread();

//Ask a question of the Agent.
client.Messages.CreateMessage(
    thread.Id,
    MessageRole.User,
    "Hi, Agent! Draw a graph for a line with a slope of 4 and y-intercept of 9.");

//Have Agent beging processing user's question with some additional instructions associated with the ThreadRun.
ThreadRun run = client.Runs.CreateRun(
    thread.Id,
    agent.Id,
    additionalInstructions: "Please address the user as Jane Doe. The user has a premium account.");

//Poll for completion.
do
{
    Thread.Sleep(TimeSpan.FromMilliseconds(500));
    run = client.Runs.GetRun(thread.Id, run.Id);
}
while (run.Status == RunStatus.Queued
    || run.Status == RunStatus.InProgress
    || run.Status == RunStatus.RequiresAction);

//Get the messages in the PersistentAgentThread. Includes Agent (Assistant Role) and User (User Role) messages.
Pageable<PersistentThreadMessage> messages = client.Messages.GetMessages(
    threadId: thread.Id,
    order: ListSortOrder.Ascending);

//Display each message and open the image generated using CodeInterpreterToolDefinition.
foreach (PersistentThreadMessage threadMessage in messages)
{
    foreach (MessageContent content in threadMessage.ContentItems)
    {
        switch (content)
        {
            case MessageTextContent textItem:
                Console.WriteLine($"[{threadMessage.Role}]: {textItem.Text}");
                break;
            case MessageImageFileContent imageFileContent:
                Console.WriteLine($"[{threadMessage.Role}]: Image content file ID = {imageFileContent.FileId}");
                BinaryData imageContent = client.Files.GetFileContent(imageFileContent.FileId);
                string tempFilePath = Path.Combine(AppContext.BaseDirectory, $"{Guid.NewGuid()}.png");
                File.WriteAllBytes(tempFilePath, imageContent.ToArray());
                client.Files.DeleteFile(imageFileContent.FileId);

                ProcessStartInfo psi = new()
                {
                    FileName = tempFilePath,
                    UseShellExecute = true
                };
                Process.Start(psi);
                break;
        }
    }
}

//Clean up test resources.
client.Threads.DeleteThread(threadId: thread.Id);
client.Administration.DeleteAgent(agentId: agent.Id);

| Documentazione di riferimento | Esempi | Codice sorgente della libreria | Pacchetto (PyPi) |

Prerequisiti

  • Ambiente dell'agente configurato
  • Assegnare il ruolo Utente AI di Azure ruolo RBAC a ogni membro del team che deve creare o modificare agenti usando l'SDK o Agent Playground
    • Questo ruolo deve essere assegnato nell'ambito del progetto
    • Autorizzazioni minime necessarie: agents/*/read, agents/*/action, agents/*/delete

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, collegarsi alle basi di conoscenze definite dall'utente per basare il modello o abilitare la ricerca web per fornire informazioni attuali.
Filo 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.
Messaggio 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.
Correre 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.
Passaggio esecuzione 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, sarà necessario ottenere l'endpoint per il progetto. Questa stringa è nel formato:

https://<AIFoundryResourceName>.services.ai.azure.com/api/projects/<ProjectName>

Suggerimento

È inoltre possibile trovare l'endpoint nella panoramica del progetto nel portale Azure AI Foundry, nella sezione Librerie sotto >. Screenshot che mostra l'endpoint nel portale di Azure AI Foundry.

Ad esempio, l'endpoint potrebbe essere simile al seguente:

https://myresource.services.ai.azure.com/api/projects/myproject

Impostare questo endpoint come variabile di ambiente denominata PROJECT_ENDPOINT.

import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from azure.ai.agents.models import CodeInterpreterTool

# Create an Azure AI Client from an endpoint, copied from your Azure AI Foundry project.
# You need to login to Azure subscription via Azure CLI and set the environment variables
project_endpoint = os.environ["PROJECT_ENDPOINT"]  # Ensure the PROJECT_ENDPOINT environment variable is set

# Create an AIProjectClient instance
project_client = AIProjectClient(
    endpoint=project_endpoint,
    credential=DefaultAzureCredential(),  # Use Azure Default Credential for authentication
)

code_interpreter = CodeInterpreterTool()
with project_client:
    # Create an agent with the Bing Grounding tool
    agent = project_client.agents.create_agent(
        model=os.environ["MODEL_DEPLOYMENT_NAME"],  # Model deployment name
        name="my-agent",  # Name of the agent
        instructions="You are a helpful agent",  # Instructions for the agent
        tools=code_interpreter.definitions,  # Attach the tool
    )
    print(f"Created agent, ID: {agent.id}")

    # Create a thread for communication
    thread = project_client.agents.threads.create()
    print(f"Created thread, ID: {thread.id}")
    
    # Add a message to the thread
    message = project_client.agents.messages.create(
        thread_id=thread.id,
        role="user",  # Role of the message sender
        content="What is the weather in Seattle today?",  # Message content
    )
    print(f"Created message, ID: {message['id']}")
    
    # Create and process an agent run
    run = project_client.agents.runs.create_and_process(thread_id=thread.id, agent_id=agent.id)
    print(f"Run finished with status: {run.status}")
    
    # Check if the run failed
    if run.status == "failed":
        print(f"Run failed: {run.last_error}")
    
    # Fetch and log all messages
    messages = project_client.agents.messages.list(thread_id=thread.id)
    for message in messages:
        print(f"Role: {message.role}, Content: {message.content}")
    
    # Delete the agent when done
    project_client.agents.delete_agent(agent.id)
    print("Deleted agent")

| Documentazione di riferimento | Esempi | Codice sorgente della libreria | Pacchetto (npm) |

Prerequisiti

  • Ambiente dell'agente configurato
  • Assegnare il ruolo Utente AI di Azure ruolo RBAC a ogni membro del team che deve creare o modificare agenti usando l'SDK o Agent Playground
    • Questo ruolo deve essere assegnato nell'ambito del progetto
    • Autorizzazioni minime necessarie: agents/*/read, agents/*/action, agents/*/delete

Configurare ed eseguire un agente

Componente Descrizione
Agente Intelligenza artificiale personalizzata che usa modelli di intelligenza artificiale con strumenti.
Strumento Gli strumenti consentono di estendere la capacità di un agente di rispondere in modo affidabile e accurato durante la conversazione. Ad esempio, collegarsi alle basi di conoscenze definite dall'utente per basare il modello o abilitare la ricerca web per fornire informazioni attuali.
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.
Messaggio 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.
Correre 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.
Passaggio esecuzione 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.

Gli oggetti chiave in questo codice includono:

Per prima cosa, inizializzare un nuovo progetto eseguendo:

npm init -y

Eseguire i comandi seguenti per installare i pacchetti npm necessari.

npm install @azure/ai-agents @azure/identity
npm install dotenv

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 che carica un file CSV di dati e quindi genera un grafico a barre da tali dati. Per eseguire questo codice, è necessario ottenere l'endpoint per il progetto. Questa stringa è nel formato:

https://<AIFoundryResourceName>.services.ai.azure.com/api/projects/<ProjectName>

Suggerimento

È inoltre possibile trovare l'endpoint nella panoramica del progetto nel portale Azure AI Foundry, nella sezione Librerie sotto >. Screenshot che mostra l'endpoint nel portale di Azure AI Foundry.

Ad esempio, l'endpoint ha un aspetto simile al seguente:

https://myresource.services.ai.azure.com/api/projects/myproject

Impostare questo endpoint come variabile di ambiente denominata PROJECT_ENDPOINT in un .env file.

Importante

  • Questo codice di avvio rapido usa le variabili di ambiente per la configurazione sensibile. Non eseguire mai il commit del file .env nel sistema di controllo delle versioni, assicurati che .env sia elencato nel file .gitignore.
  • Tenere presente che se si esegue accidentalmente il commit di informazioni riservate, prendere in considerazione le credenziali compromesse e ruotarle immediatamente.

Creare quindi un index.js file e incollarlo nel codice seguente:

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

/**
 * This sample demonstrates how to use agent operations with code interpreter from the Azure Agents service.
 *
 * @summary demonstrates how to use agent operations with code interpreter.
 */
// @ts-nocheck
import type {
  MessageDeltaChunk,
  MessageDeltaTextContent,
  MessageImageFileContent,
  MessageTextContent,
  ThreadRun,
} from "@azure/ai-agents";
import {
  RunStreamEvent,
  MessageStreamEvent,
  DoneEvent,
  ErrorEvent,
  AgentsClient,
  isOutputOfType,
  ToolUtility,
} from "@azure/ai-agents";
import { DefaultAzureCredential } from "@azure/identity";

import * as fs from "fs";
import path from "node:path";
import "dotenv/config";

const projectEndpoint = process.env["PROJECT_ENDPOINT"] || "<project endpoint>";
const modelDeploymentName = process.env["MODEL_DEPLOYMENT_NAME"] || "gpt-4o";

export async function main(): Promise<void> {
  // Create an Azure AI Client
  const client = new AgentsClient(projectEndpoint, new DefaultAzureCredential());

  // Upload file and wait for it to be processed
  const filePath = "./data/nifty500QuarterlyResults.csv";
  const localFileStream = fs.createReadStream(filePath);
  const localFile = await client.files.upload(localFileStream, "assistants", {
    fileName: "myLocalFile",
  });

  console.log(`Uploaded local file, file ID : ${localFile.id}`);

  // Create code interpreter tool
  const codeInterpreterTool = ToolUtility.createCodeInterpreterTool([localFile.id]);

  // Notice that CodeInterpreter must be enabled in the agent creation, otherwise the agent will not be able to see the file attachment
  const agent = await client.createAgent(modelDeploymentName, {
    name: "my-agent",
    instructions: "You are a helpful agent",
    tools: [codeInterpreterTool.definition],
    toolResources: codeInterpreterTool.resources,
  });
  console.log(`Created agent, agent ID: ${agent.id}`);

  // Create a thread
  const thread = await client.threads.create();
  console.log(`Created thread, thread ID: ${thread.id}`);

  // Create a message
  const message = await client.messages.create(
    thread.id,
    "user",
    "Could you please create a bar chart in the TRANSPORTATION sector for the operating profit from the uploaded CSV file and provide the file to me?",
  );

  console.log(`Created message, message ID: ${message.id}`);

  // Create and execute a run
  const streamEventMessages = await client.runs.create(thread.id, agent.id).stream();

  for await (const eventMessage of streamEventMessages) {
    switch (eventMessage.event) {
      case RunStreamEvent.ThreadRunCreated:
        console.log(`ThreadRun status: ${(eventMessage.data as ThreadRun).status}`);
        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";
              console.log(`Text delta received:: ${textValue}`);
            }
          });
        }
        break;

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

  // Delete the original file from the agent to free up space (note: this does not delete your version of the file)
  await client.files.delete(localFile.id);
  console.log(`Deleted file, file ID : ${localFile.id}`);

  // Print the messages from the agent
  const messagesIterator = client.messages.list(thread.id);
  const messagesArray = [];
  for await (const m of messagesIterator) {
    messagesArray.push(m);
  }
  console.log("Messages:", messagesArray);

  // Get most recent message from the assistant
// Get most recent message from the assistant
  const assistantMessage = messagesArray.find((msg) => msg.role === "assistant");
  if (assistantMessage) {
    // Look for an image file in the assistant's message
    const imageFileOutput = assistantMessage.content.find(content => 
      content.type === "image_file" && content.imageFile?.fileId);
    
    if (imageFileOutput) {
      try {
        // Save the newly created file
        console.log(`Saving new files...`);
        const imageFile = imageFileOutput.imageFile.fileId;
        const imageFileName = path.resolve(
          "./data/" + (await client.files.get(imageFile)).filename + "ImageFile.png",
        );
        console.log(`Image file name : ${imageFileName}`);

        const fileContent = await client.files.getContent(imageFile).asNodeStream();
        if (fileContent && fileContent.body) {
          const chunks = [];
          for await (const chunk of fileContent.body) {
            chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
          }
          const buffer = Buffer.concat(chunks);
          fs.writeFileSync(imageFileName, buffer);
          console.log(`Successfully saved image to ${imageFileName}`);
        } else {
          console.error("No file content available in the response");
        }
      } catch (error) {
        console.error("Error saving image file:", error);
      }
    } else {
      console.log("No image file found in assistant's message");
    }
  } else {
    console.log("No assistant message found");
  }

  // Iterate through messages and print details for each annotation
  console.log(`Message Details:`);
  messagesArray.forEach((m) => {
    console.log(`File Paths:`);
    console.log(`Type: ${m.content[0].type}`);
    if (isOutputOfType<MessageTextContent>(m.content[0], "text")) {
      const textContent = m.content[0] as MessageTextContent;
      console.log(`Text: ${textContent.text.value}`);
    }
    console.log(`File ID: ${m.id}`);
    // firstId and lastId are properties of the paginator, not the messages array
    // Removing these references as they don't exist in this context
  });

  // Delete the agent once done
  await client.deleteAgent(agent.id);
  console.log(`Deleted agent, agent ID: ${agent.id}`);
}

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

Eseguire il codice usando node index.js. Questo codice genera un file di immagine PNG di un grafico a barre nel settore dei trasporti per il profitto operativo dal file CSV caricato e ti fornisce il file. Il codice sorgente di esempio completo è disponibile.

| Documentazione di riferimento |

Prerequisiti

  • Ambiente dell'agente configurato
  • Assegnare il ruolo Utente AI di Azure ruolo RBAC a ogni membro del team che deve creare o modificare agenti usando l'SDK o Agent Playground
    • Questo ruolo deve essere assegnato nell'ambito del progetto
    • Autorizzazioni minime necessarie: agents/*/read, agents/*/action, agents/*/delete

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, collegarsi alle basi di conoscenze definite dall'utente per basare il modello o abilitare la ricerca web per fornire informazioni attuali.
Thread di discussione 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.
Messaggio 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.
Correre 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.
Passaggio esecuzione 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.

Informazioni sulle chiamate API

Per autenticare le richieste API, usare il comando az login per accedere alla sottoscrizione di Azure.

az login

Successivamente, sarà necessario recuperare il token Entra ID per fornire come autorizzazione alle chiamate API. Recuperare il token usando il comando CLI:

az account get-access-token --resource 'https://ai.azure.com' | jq -r .accessToken | tr -d '"'

Impostare il token di accesso come variabile di ambiente denominata AGENT_TOKEN.

Per effettuare correttamente chiamate API REST al servizio agente di Azure AI Foundry, è necessario usare l'endpoint come indicato di seguito:

https://<your_ai_service_name>.services.ai.azure.com/api/projects/<your_project_name>

Ad esempio, l'endpoint potrebbe essere simile al seguente:

https://exampleaiservice.services.ai.azure.com/api/projects/project

Impostare questo endpoint come variabile di ambiente denominata AZURE_AI_FOUNDRY_PROJECT_ENDPOINT.

Annotazioni

  • Per api-version il parametro, la versione dell'API GA è 2025-05-01 e la versione più recente dell'API di anteprima è 2025-05-15-preview. È necessario usare l'API di anteprima per gli strumenti in anteprima.
  • Prendere in considerazione la possibilità di rendere la versione dell'API una variabile di ambiente, ad esempio $API_VERSION.

Creare un agente

Annotazioni

Con il servizio Azure AI Agents il model parametro richiede il nome della distribuzione del modello. Se il nome della distribuzione del modello è diverso dal nome del modello sottostante, è necessario modificare il codice in "model": "{your-custom-model-deployment-name}".

curl --request POST \
  --url $AZURE_AI_FOUNDRY_PROJECT_ENDPOINT/assistants?api-version=2025-05-01 \
  -H "Authorization: Bearer $AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "instructions": "You are a helpful agent.",
    "name": "my-agent",
    "tools": [{"type": "code_interpreter"}],
    "model": "gpt-4o-mini"
  }'

Creare un thread

curl --request POST \
  --url $AZURE_AI_FOUNDRY_PROJECT_ENDPOINT/threads?api-version=2025-05-01 \
  -H "Authorization: Bearer $AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d ''

Aggiungere una domanda utente al thread

curl --request POST \
  --url $AZURE_AI_FOUNDRY_PROJECT_ENDPOINT/threads/thread_abc123/messages?api-version=2025-05-01 \
  -H "Authorization: Bearer $AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
      "role": "user",
      "content": "I need to solve the equation `3x + 11 = 14`. Can you help me?"
    }'

Eseguire il thread

curl --request POST \
  --url $AZURE_AI_FOUNDRY_PROJECT_ENDPOINT/threads/thread_abc123/runs?api-version=2025-05-01 \
  -H "Authorization: Bearer $AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "assistant_id": "asst_abc123",
  }'

Recuperare lo stato dell'esecuzione

curl --request GET \
  --url $AZURE_AI_FOUNDRY_PROJECT_ENDPOINT/threads/thread_abc123/runs/run_abc123?api-version=2025-05-01 \
  -H "Authorization: Bearer $AGENT_TOKEN"

Recuperare la risposta dell'agente

curl --request GET \
  --url $AZURE_AI_FOUNDRY_PROJECT_ENDPOINT/threads/thread_abc123/messages?api-version=2025-05-01 \
  -H "Authorization: Bearer $AGENT_TOKEN"