Delen via


Quickstart: Een nieuwe agent maken

Met azure AI Foundry Agent Service kunt u AI-agents maken die zijn afgestemd op uw behoeften via aangepaste instructies en uitgebreid met geavanceerde hulpprogramma's zoals code-interpreter en aangepaste functies.

Vereiste voorwaarden

  • Een Azure-abonnement: maak er gratis een.
  • Zorg ervoor dat de persoon die het account en project maakt, de rol Azure AI-accounteigenaar heeft op abonnementsniveau.
    • Als alternatief voldoet de rol Bijdrager of Cognitive Services Bijdrager op abonnementsniveau ook aan deze vereiste.

Belangrijk

De Azure AI Foundry-portal ondersteunt momenteel alleen basisagentset. Als u een standaardagentinstallatie wilt uitvoeren, raadpleegt u het artikel Omgevingsinstellingen voor meer informatie.

Een Foundry-account en -project maken in de Azure AI Foundry-portal

Volg deze stappen om een account en project te maken in Azure AI Foundry:

  1. Ga naar Azure AI Foundry. Als u zich in een project bevindt, selecteert u Azure AI Foundry linksboven op de pagina om naar de startpagina te gaan.

  2. Gebruik de stroom 'Aan de slag met het maken van agents' voor de snelste ervaring. Klik op Een agent maken.

    Een schermopname van de Azure AI Foundry-portal.

  3. Voer een naam in voor het project. Als u de standaardwaarden wilt aanpassen, selecteert u Geavanceerde opties.

    Een schermopname van de geavanceerde opties voor het maken van een project.

  4. Klik op Creëren.

  5. Wacht totdat uw middelen zijn ingericht.

    1. Er wordt een account en project (onderliggende resource van uw account) gemaakt.
    2. Het gpt-4o-model wordt automatisch geïmplementeerd
    3. Er wordt een standaardagent gemaakt
  6. Zodra dit is voltooid, komt u rechtstreeks in de agentspeelplaats terecht en kunt u beginnen met het maken van agents.

    Schermopname van de agentspeelplaats.

    Opmerking

    Als u een machtigingsfout krijgt bij het configureren of maken van agents, zorgt u ervoor dat u de Azure AI-gebruiker in het project hebt.

| Referentiedocumentatie | Voorbeelden | Bibliotheek broncode | Pakket (NuGet) |

Vereiste voorwaarden

  • Een agentomgeving instellen
  • Wijs de RBAC-rolvan de Azure AI-gebruiker toe aan elk teamlid dat agents moet maken of bewerken met behulp van de SDK of Agent Playground
    • Deze rol moet worden toegewezen binnen de projectscope
    • Minimale benodigde autorisaties: agents/*/read, agents/*/action, agents/*/delete

Een agent configureren en uitvoeren

Onderdeel Beschrijving
Vertegenwoordiger Aangepaste AI die AI-modellen gebruikt in combinatie met hulpprogramma's.
Werktuig Hulpprogramma's helpen de mogelijkheid van een agent om betrouwbaar en nauwkeurig te reageren tijdens het gesprek. Zoals het maken van verbinding met door de gebruiker gedefinieerde kennisbanken om het model te baseren, of het mogelijk maken van zoeken op internet om de actuele informatie te bieden.
Draad Een gesprekssessie tussen een agent en een gebruiker. Threads slaan berichten op en korten deze automatisch af zodat de inhoud in de context van een model past.
Bericht Een bericht dat is gemaakt door een agent of een gebruiker. Berichten kunnen tekst, afbeeldingen en andere bestanden bevatten. Berichten worden opgeslagen als een lijst op de thread.
Rennen Activering van een agent om te beginnen met uitvoeren op basis van de inhoud van Thread. De agent gebruikt de configuratie en berichten van Thread om taken uit te voeren door modellen en hulpprogramma's aan te roepen. Als onderdeel van een run voegt de agent berichten toe aan de thread.

Maak een .NET Console-project.

dotnet new console

Installeer het .NET-pakket in uw project. Als u bijvoorbeeld de .NET CLI gebruikt, voert u de volgende opdracht uit.

dotnet add package Azure.AI.Agents.Persistent
dotnet add package Azure.Identity

Als u vervolgens uw API-aanvragen wilt verifiëren en het programma wilt uitvoeren, gebruikt u de opdracht az login om u aan te melden bij uw Azure-abonnement.

az login

Gebruik de volgende code om een agent te maken en uit te voeren. Als u deze code wilt uitvoeren, moet u het eindpunt voor uw project ophalen. Deze tekenreeks is in de volgende indeling:

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

Aanbeveling

U vindt uw eindpunt ook in het overzicht van uw project in de Azure AI Foundry-portal, onder Bibliotheken>van Azure AI Foundry. Een schermopname van het eindpunt in de Azure AI Foundry-portal.

Uw eindpunt ziet er bijvoorbeeld ongeveer als volgt uit:

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

Stel dit eindpunt in een appsetting-variabele in met de naam 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);

| Referentiedocumentatie | Samples | Library source code | Package (PyPi) |

Vereiste voorwaarden

  • Een agentomgeving instellen
  • Wijs de RBAC-rolvan de Azure AI-gebruiker toe aan elk teamlid dat agents moet maken of bewerken met behulp van de SDK of Agent Playground
    • Deze rol moet worden toegewezen binnen de projectscope
    • Minimale benodigde autorisaties: agents/*/read, agents/*/action, agents/*/delete

Een agent configureren en uitvoeren

Onderdeel Beschrijving
Vertegenwoordiger Aangepaste AI die AI-modellen gebruikt in combinatie met hulpprogramma's.
Werktuig Hulpprogramma's helpen de mogelijkheid van een agent om betrouwbaar en nauwkeurig te reageren tijdens het gesprek. Zoals het maken van verbinding met door de gebruiker gedefinieerde kennisbanken om het model te baseren, of het mogelijk maken van zoeken op internet om de actuele informatie te bieden.
Draad Een gesprekssessie tussen een agent en een gebruiker. Threads slaan berichten op en korten deze automatisch af zodat de inhoud in de context van een model past.
Bericht Een bericht dat is gemaakt door een agent of een gebruiker. Berichten kunnen tekst, afbeeldingen en andere bestanden bevatten. Berichten worden opgeslagen als een lijst op de thread.
Rennen Activering van een agent om te beginnen met uitvoeren op basis van de inhoud van Thread. De agent gebruikt de configuratie en berichten van Thread om taken uit te voeren door modellen en hulpprogramma's aan te roepen. Als onderdeel van een run voegt de agent berichten toe aan de thread.
Stap uitvoeren Een gedetailleerde lijst met stappen die de agent heeft uitgevoerd als onderdeel van een run. Een agent kan hulpprogramma's aanroepen of berichten maken tijdens de uitvoering. Als u de uitvoeringsstappen bekijkt, kunt u begrijpen hoe de agent tot zijn resultaten komt.

Voer de volgende opdrachten uit om de Python-pakketten te installeren.

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

Als u vervolgens uw API-aanvragen wilt verifiëren en het programma wilt uitvoeren, gebruikt u de opdracht az login om u aan te melden bij uw Azure-abonnement.

az login

Gebruik de volgende code om een agent te maken en uit te voeren. Als u deze code wilt uitvoeren, moet u het eindpunt voor uw project ophalen. Deze tekenreeks is in de volgende indeling:

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

Aanbeveling

U vindt uw eindpunt ook in het overzicht van uw project in de Azure AI Foundry-portal, onder Bibliotheken>van Azure AI Foundry. Een schermopname van het eindpunt in de Azure AI Foundry-portal.

Uw eindpunt ziet er bijvoorbeeld ongeveer als volgt uit:

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

Stel dit eindpunt in als een omgevingsvariabele met de naam 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")

| Referentiedocumentatie | Samples | Library source code | Package (npm) |

Vereiste voorwaarden

  • Een agentomgeving instellen
  • Wijs de RBAC-rolvan de Azure AI-gebruiker toe aan elk teamlid dat agents moet maken of bewerken met behulp van de SDK of Agent Playground
    • Deze rol moet worden toegewezen binnen de projectscope
    • Minimale benodigde autorisaties: agents/*/read, agents/*/action, agents/*/delete

Een agent configureren en uitvoeren

Onderdeel Beschrijving
Vertegenwoordiger Aangepaste AI die gebruikmaakt van AI-modellen en hulpprogramma's.
Werktuig Hulpprogramma's helpen de mogelijkheid van een agent om betrouwbaar en nauwkeurig te reageren tijdens het gesprek. Zoals het maken van verbinding met door de gebruiker gedefinieerde kennisbanken om het model te baseren, of het mogelijk maken van zoeken op internet om de actuele informatie te bieden.
Draad Een gesprekssessie tussen een agent en een gebruiker. Threads slaan berichten op en korten deze automatisch af zodat de inhoud in de context van een model past.
Bericht Een bericht dat is gemaakt door een agent of een gebruiker. Berichten kunnen tekst, afbeeldingen en andere bestanden bevatten. Berichten worden opgeslagen als een lijst op de thread.
Rennen Activering van een agent om te beginnen met uitvoeren op basis van de inhoud van Thread. De agent gebruikt de configuratie en berichten van Thread om taken uit te voeren door modellen en hulpprogramma's aan te roepen. Als onderdeel van een run voegt de agent berichten toe aan de thread.
Stap uitvoeren Een gedetailleerde lijst met stappen die de agent heeft uitgevoerd als onderdeel van een run. Een agent kan hulpprogramma's aanroepen of berichten maken tijdens de uitvoering. Als u de uitvoeringsstappen bekijkt, kunt u begrijpen hoe de agent tot zijn resultaten komt.

Belangrijke objecten in deze code zijn onder andere:

Initialiseer eerst een nieuw project door het volgende uit te voeren:

npm init -y

Voer de volgende opdrachten uit om de vereiste NPM-pakketten te installeren.

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

Als u vervolgens uw API-aanvragen wilt verifiëren en het programma wilt uitvoeren, gebruikt u de opdracht az login om u aan te melden bij uw Azure-abonnement.

az login

Gebruik de volgende code om een agent te maken en uit te voeren waarmee een CSV-bestand met gegevens wordt geüpload en vervolgens een staafdiagram van die gegevens wordt gegenereerd. Als u deze code wilt uitvoeren, moet u het eindpunt voor uw project ophalen. Deze tekenreeks is in de volgende indeling:

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

Aanbeveling

U vindt uw eindpunt ook in het overzicht van uw project in de Azure AI Foundry-portal, onder Bibliotheken>van Azure AI Foundry. Een schermopname van het eindpunt in de Azure AI Foundry-portal.

Uw eindpunt ziet er bijvoorbeeld ongeveer als volgt uit:

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

Stel dit eindpunt in als een omgevingsvariabele met de naam PROJECT_ENDPOINT in een .env bestand.

Belangrijk

  • Deze quickstart-code maakt gebruik van omgevingsvariabelen voor gevoelige configuratie. Voer uw .env bestand nooit door naar versiebeheer door ervoor te zorgen dat .env wordt vermeld in uw .gitignore-bestand.
  • Vergeet niet: als u per ongeluk gevoelige informatie doorvoert, beschouw die referenties als gecompromitteerd en verander ze onmiddellijk.

Maak vervolgens een index.js bestand en plak de volgende code:

// 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);
});

Voer de code uit met behulp van node index.js. Deze code genereert een PNG-afbeeldingsbestand van een staafdiagram voor de operationele winst in de transportsector uit het geüploade CSV-bestand en verstrekt het bestand aan u. Volledige voorbeeldbroncode beschikbaar.

| Referentiedocumentatie |

Vereiste voorwaarden

  • Een agentomgeving instellen
  • Wijs de RBAC-rolvan de Azure AI-gebruiker toe aan elk teamlid dat agents moet maken of bewerken met behulp van de SDK of Agent Playground
    • Deze rol moet worden toegewezen binnen de projectscope
    • Minimale benodigde autorisaties: agents/*/read, agents/*/action, agents/*/delete

Een agent configureren en uitvoeren

Onderdeel Beschrijving
Vertegenwoordiger Aangepaste AI die AI-modellen gebruikt in combinatie met hulpprogramma's.
Werktuig Hulpprogramma's helpen de mogelijkheid van een agent om betrouwbaar en nauwkeurig te reageren tijdens het gesprek. Zoals het maken van verbinding met door de gebruiker gedefinieerde kennisbanken om het model te baseren, of het mogelijk maken van zoeken op internet om de actuele informatie te bieden.
Draad Een gesprekssessie tussen een agent en een gebruiker. Threads slaan berichten op en korten deze automatisch af zodat de inhoud in de context van een model past.
Bericht Een bericht dat is gemaakt door een agent of een gebruiker. Berichten kunnen tekst, afbeeldingen en andere bestanden bevatten. Berichten worden opgeslagen als een lijst op de thread.
Rennen Activering van een agent om te beginnen met uitvoeren op basis van de inhoud van Thread. De agent gebruikt de configuratie en berichten van Thread om taken uit te voeren door modellen en hulpprogramma's aan te roepen. Als onderdeel van een run voegt de agent berichten toe aan de thread.
Stap uitvoeren Een gedetailleerde lijst met stappen die de agent heeft uitgevoerd als onderdeel van een run. Een agent kan hulpprogramma's aanroepen of berichten maken tijdens de uitvoering. Als u de uitvoeringsstappen bekijkt, kunt u begrijpen hoe de agent tot zijn resultaten komt.

Informatie over API-aanroep

Als u uw API-aanvragen wilt verifiëren, gebruikt u de opdracht az login om u aan te melden bij uw Azure-abonnement.

az login

Vervolgens moet u het Entra ID-token ophalen om op te geven als autorisatie voor de API-aanroepen. Haal het token op met behulp van de CLI-opdracht:

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

Stel het toegangstoken in als een omgevingsvariabele met de naam AGENT_TOKEN.

Als u REST API-aanroepen wilt maken naar azure AI Foundry Agent Service, moet u het eindpunt als volgt gebruiken:

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

Uw eindpunt ziet er bijvoorbeeld ongeveer als volgt uit:

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

Stel dit eindpunt in als een omgevingsvariabele met de naam AZURE_AI_FOUNDRY_PROJECT_ENDPOINT.

Opmerking

  • Voor de parameter api-version is de GA API-versie 2025-05-01 en de nieuwste preview-API-versie is 2025-05-15-preview. U moet de preview-API gebruiken voor hulpprogramma's die in preview zijn.
  • Overweeg om uw API-versie een omgevingsvariabele te maken, zoals $API_VERSION.

Een agent maken

Opmerking

Bij Azure AI Agents Service is voor de parameter de naam van de model modelimplementatie vereist. Als de naam van uw modelimplementatie anders is dan de naam van het onderliggende model, past u de code aan. "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"
  }'

Een thread maken

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 ''

Een gebruikersvraag toevoegen aan de 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?"
    }'

De thread uitvoeren

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

Haal de status van de run op

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"

Het antwoord van de agent ophalen

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