Megosztás a következőn keresztül:


Rövid útmutató: Új ügynök létrehozása

Az Azure AI Foundry Agent Service lehetővé teszi az igényeinek megfelelő AI-ügynökök létrehozását egyéni utasításokon keresztül, fejlett eszközökkel, például kódértelmezővel és egyéni függvényekkel kiegészítve.

Előfeltételek

  • Azure-előfizetés – Hozzon létre egyet ingyenesen.
  • Győződjön meg arról, hogy a fiókot és projektet létrehozó személy rendelkezik azure AI-fióktulajdonosi szerepkörrel az előfizetés hatókörében
    • Alternatívaként, ha az előfizetési szinten rendelkezik a közreműködő vagy Cognitive Services-közreműködő szerepkörrel, az is megfelel ennek a követelménynek.

Fontos

Az Azure AI Foundry portál jelenleg csak az alapszintű ügynökkészletet támogatja. Ha szabványos ügynökbeállítást szeretne végrehajtani, további információkért tekintse meg a Környezet beállítása című cikket.

Foundry-fiók és -projekt létrehozása az Azure AI Foundry portálon

Ha fiókot és projektet szeretne létrehozni az Azure AI Foundryben, kövesse az alábbi lépéseket:

  1. Nyissa meg az Azure AI Foundryt. Ha projektben van, válassza a lap bal felső részén található Azure AI Foundry lehetőséget a kezdőlapra való ugráshoz.

  2. Használja az ügyfélszolgálati munkatárs gyors indulási folyamatát a leggyorsabb élmény érdekében. Kattintson az Ügynök létrehozása elemre.

    Képernyőkép az Azure AI Foundry portálról.

  3. Adjon meg a projekt nevét. Ha testre szeretné szabni az alapértelmezett értékeket, válassza a Speciális beállítások lehetőséget.

    Képernyőkép a projekt létrehozásának speciális lehetőségeiről.

  4. Válassza a Create gombot.

  5. Várjon, amíg az erőforrások rendelkezésre állnak.

    1. Létrejön egy fiók és projekt (a fiók gyermekerőforrása).
    2. A gpt-4o modell automatikusan üzembe lesz helyezve
    3. Létrejön egy alapértelmezett ügynök
  6. A befejezés után közvetlenül az ügynökök játszóterére jut, és elkezdheti létrehozni az ügynököket.

    Képernyőkép az ügynök játszóteréről.

    Megjegyzés:

    Ha az ügynökök konfigurálásakor vagy létrehozásakor engedélyhiba jelenik meg, győződjön meg arról, hogy rendelkezik az Azure AI-felhasználóval a projektben.

| Referenciadokumentáció | Példák | Kódtár forráskód | Csomag (NuGet) |

Előfeltételek

  • Egy beállított ügynökkörnyezet
  • Rendelje hozzá az Azure AI-felhasználóiRBAC-szerepkört minden olyan csapattaghoz, akinek ügynököket kell létrehoznia vagy szerkesztenie az SDK vagy az Agent Playground használatával
    • Ezt a szerepkört a projekt hatókörében kell hozzárendelni
    • Minimálisan szükséges engedélyek: ügynökök/*/olvasás, ügynökök/*/művelet, ügynökök/*/törlés

Ügynök konfigurálása és futtatása

Összetevő Leírás
Ügynök Egyéni AI, amely AI-modelleket használ az eszközökkel együtt.
Eszköz Az eszközök segítenek kiterjeszteni az ügynök azon képességét, hogy megbízhatóan és pontosan válaszoljon a beszélgetés során. Ilyen például a felhasználó által definiált tudásbázis csatlakoztatása a modell alapozásához, vagy a webes keresés engedélyezése az aktuális információk megadásához.
Szál Egy ügynök és egy felhasználó közötti beszélgetési munkamenet. A szálak tárolják az üzeneteket, és automatikusan kezelik a csonkolást, hogy a tartalom illeszkedjen a modell környezetébe.
Üzenet Ügynök vagy felhasználó által létrehozott üzenet. Az üzenetek tartalmazhatnak szöveget, képeket és más fájlokat. Az üzenetek listaként vannak tárolva a szálon.
Fuss! Ügynök aktiválása a szál tartalma alapján a futás megkezdéséhez. Az ügynök a konfigurációjával és a szál üzeneteivel hajtja végre a feladatokat modellek és eszközök meghívásával. A futtatás részeként az ügynök hozzáfűzi az üzeneteket a szálhoz.

Hozzon létre egy .NET-konzolprojektet.

dotnet new console

Telepítse a .NET-csomagot a projektbe. Ha például a .NET CLI-t használja, futtassa a következő parancsot.

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

Ezután az API-kérések hitelesítéséhez és a program futtatásához használja az az login parancsot az Azure-előfizetésbe való bejelentkezéshez.

az login

Ügynök létrehozásához és futtatásához használja az alábbi kódot. A kód futtatásához le kell kérnie a projekt végpontját. Ennek a karaktersornak a formátuma:

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

A végpontot az Azure AI Foundry portálon, az Azure AI Foundrykódtárak területén találja meg a projekt >.

Képernyőkép az Azure AI Foundry portál végpontjáról.

A végpont például a következőképpen nézhet ki:

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

Állítsa be ezt a végpontot egy környezeti változó nevű ProjectEndpointváltozóban.

Szüksége lesz a modell üzembe helyezésének nevére is. A bal oldali navigációs menü Modellek + Végpontok területén található.

Képernyőkép a modell üzembe helyezésének képernyőjről az AI Foundry portálon.

Mentse a modell üzembehelyezési nevének nevét egy környezeti változó neveként.ModelDeploymentName

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

| Referenciadokumentáció | Példák | Könyvtár forráskódja | Csomag (PyPi) |

Előfeltételek

  • Egy beállított ügynökkörnyezet
  • Rendelje hozzá az Azure AI-felhasználóiRBAC-szerepkört minden olyan csapattaghoz, akinek ügynököket kell létrehoznia vagy szerkesztenie az SDK vagy az Agent Playground használatával
    • Ezt a szerepkört a projekt hatókörében kell hozzárendelni
    • Minimálisan szükséges engedélyek: ügynökök/*/olvasás, ügynökök/*/művelet, ügynökök/*/törlés

Ügynök konfigurálása és futtatása

Összetevő Leírás
Ügynök Egyéni AI, amely AI-modelleket használ az eszközökkel együtt.
Eszköz Az eszközök segítenek kiterjeszteni az ügynök azon képességét, hogy megbízhatóan és pontosan válaszoljon a beszélgetés során. Ilyen például a felhasználó által definiált tudásbázis csatlakoztatása a modell alapozásához, vagy a webes keresés engedélyezése az aktuális információk megadásához.
Szál Egy ügynök és egy felhasználó közötti beszélgetési munkamenet. A szálak tárolják az üzeneteket, és automatikusan kezelik a csonkolást, hogy a tartalom illeszkedjen a modell környezetébe.
Üzenet Ügynök vagy felhasználó által létrehozott üzenet. Az üzenetek tartalmazhatnak szöveget, képeket és más fájlokat. Az üzenetek listaként vannak tárolva a szálon.
Fuss! Ügynök aktiválása a szál tartalma alapján a futás megkezdéséhez. Az ügynök a konfigurációjával és a szál üzeneteivel hajtja végre a feladatokat modellek és eszközök meghívásával. A futtatás részeként az ügynök hozzáfűzi az üzeneteket a szálhoz.
Futtatás lépése Az ügynök által a feladat részeként végrehajtott lépések részletes listája. Az ügynök a futtatása során eszközöket hívhat vagy üzeneteket hozhat létre. A folyamatlépések megvizsgálásával megértheti, hogyan jut el az ügynök az eredményekhez.

Futtassa az alábbi parancsokat a Python-csomagok telepítéséhez.

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

Ezután az API-kérések hitelesítéséhez és a program futtatásához használja az az login parancsot az Azure-előfizetésbe való bejelentkezéshez.

az login

Ügynök létrehozásához és futtatásához használja az alábbi kódot. A kód futtatásához le kell kérnie a projekt végpontját. Ennek a karaktersornak a formátuma:

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

A végpontot az Azure AI Foundry portálon, az Azure AI Foundrykódtárak területén találja meg a projekt >.

Képernyőkép az Azure AI Foundry portál végpontjáról.

A végpont például a következőképpen nézhet ki:

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

Állítsa be ezt a végpontot a következő nevű PROJECT_ENDPOINTkörnyezeti változóként: .

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")

| Referenciadokumentáció | Minták | Könyvtárforráskód | Csomag (npm) |

Előfeltételek

  • Egy beállított ügynökkörnyezet
  • Rendelje hozzá az Azure AI-felhasználóiRBAC-szerepkört minden olyan csapattaghoz, akinek ügynököket kell létrehoznia vagy szerkesztenie az SDK vagy az Agent Playground használatával
    • Ezt a szerepkört a projekt hatókörében kell hozzárendelni
    • Minimálisan szükséges engedélyek: ügynökök/*/olvasás, ügynökök/*/művelet, ügynökök/*/törlés

Ügynök konfigurálása és futtatása

Összetevő Leírás
Ügynök Egyéni AI, amely AI-modelleket használ eszközökkel.
Eszköz Az eszközök segítenek kiterjeszteni az ügynök azon képességét, hogy megbízhatóan és pontosan válaszoljon a beszélgetés során. Ilyen például a felhasználó által definiált tudásbázis csatlakoztatása a modell alapozásához, vagy a webes keresés engedélyezése az aktuális információk megadásához.
Szál Egy ügynök és egy felhasználó közötti beszélgetési munkamenet. A szálak tárolják az üzeneteket, és automatikusan kezelik a csonkolást, hogy a tartalom illeszkedjen a modell környezetébe.
Üzenet Ügynök vagy felhasználó által létrehozott üzenet. Az üzenetek tartalmazhatnak szöveget, képeket és más fájlokat. Az üzenetek listaként vannak tárolva a szálon.
Fuss! Ügynök aktiválása a szál tartalma alapján a futás megkezdéséhez. Az ügynök a konfigurációjával és a szál üzeneteivel hajtja végre a feladatokat modellek és eszközök meghívásával. A futtatás részeként az ügynök hozzáfűzi az üzeneteket a szálhoz.
Futtatás lépése Az ügynök által a feladat részeként végrehajtott lépések részletes listája. Az ügynök a futtatása során eszközöket hívhat vagy üzeneteket hozhat létre. A folyamatlépések megvizsgálásával megértheti, hogyan jut el az ügynök az eredményekhez.

A kód legfontosabb objektumai a következők:

Először inicializáljon egy új projektet a következő futtatásával:

npm init -y

Futtassa az alábbi parancsokat a szükséges npm-csomagok telepítéséhez.

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

Ezután az API-kérések hitelesítéséhez és a program futtatásához használja az az login parancsot az Azure-előfizetésbe való bejelentkezéshez.

az login

Az alábbi kód használatával hozzon létre és futtasson egy ügynököt, amely feltölt egy CSV-adatfájlt , majd létrehoz egy sávdiagramot az adatokból. A kód futtatásához le kell kérnie a projekt végpontját. Ennek a karaktersornak a formátuma:

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

A végpontot az Azure AI Foundry portálon, az Azure AI Foundrykódtárak területén találja meg a projekt >.

Képernyőkép az Azure AI Foundry portál végpontjáról.

A végpont például a következőképpen néz ki:

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

Állítsa be ezt a végpontot egy PROJECT_ENDPOINT fájlban, mint .env nevű környezeti változót.

Fontos

  • Ez a gyorsindító kód környezeti változókat használ az érzékeny konfigurációhoz. Soha ne adja hozzá a .env fájlt a verziókövető rendszerbe, és győződjön meg róla, hogy a .env szerepel a .gitignore fájlban.
  • Ne feledje: Ha véletlenül bizalmas információkat követ el, tekintse a hitelesítő adatokat veszélyeztetettnek, és azonnal cserélje le őket.

Ezután hozzon létre egy index.js fájlt, és illessze be a következő kódba:

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

Futtassa a kódot a következővel: node index.js. Ez a kód létrehoz egy sávdiagram PNG-képfájlt a közlekedési szektorban a feltöltött CSV-fájl működési nyereségéhez, és átadja Önnek a fájlt. Teljes mintaforráskód érhető el.

| Referenciadokumentáció |

Előfeltételek

  • Egy beállított ügynökkörnyezet
  • Rendelje hozzá az Azure AI-felhasználóiRBAC-szerepkört minden olyan csapattaghoz, akinek ügynököket kell létrehoznia vagy szerkesztenie az SDK vagy az Agent Playground használatával
    • Ezt a szerepkört a projekt hatókörében kell hozzárendelni
    • Minimálisan szükséges engedélyek: ügynökök/*/olvasás, ügynökök/*/művelet, ügynökök/*/törlés

Ügynök konfigurálása és futtatása

Összetevő Leírás
Ügynök Egyéni AI, amely AI-modelleket használ az eszközökkel együtt.
Eszköz Az eszközök segítenek kiterjeszteni az ügynök azon képességét, hogy megbízhatóan és pontosan válaszoljon a beszélgetés során. Ilyen például a felhasználó által definiált tudásbázis csatlakoztatása a modell alapozásához, vagy a webes keresés engedélyezése az aktuális információk megadásához.
Szál Egy ügynök és egy felhasználó közötti beszélgetési munkamenet. A szálak tárolják az üzeneteket, és automatikusan kezelik a csonkolást, hogy a tartalom illeszkedjen a modell környezetébe.
Üzenet Ügynök vagy felhasználó által létrehozott üzenet. Az üzenetek tartalmazhatnak szöveget, képeket és más fájlokat. Az üzenetek listaként vannak tárolva a szálon.
Fuss! Ügynök aktiválása a szál tartalma alapján a futás megkezdéséhez. Az ügynök a konfigurációjával és a szál üzeneteivel hajtja végre a feladatokat modellek és eszközök meghívásával. A futtatás részeként az ügynök hozzáfűzi az üzeneteket a szálhoz.
Futtatás lépése Az ügynök által a feladat részeként végrehajtott lépések részletes listája. Az ügynök a futtatása során eszközöket hívhat vagy üzeneteket hozhat létre. A folyamatlépések megvizsgálásával megértheti, hogyan jut el az ügynök az eredményekhez.

API-hívás adatai

Az API-kérések hitelesítéséhez használja az az login parancsot az Azure-előfizetésbe való bejelentkezéshez.

az login

Ezután le kell kérnie az Entra ID-jogkivonatot, hogy engedélyként megadhassa az API-hívásokhoz. A tokent szerezze be a CLI parancs segítségével:

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

Állítsa be a hozzáférési tokent egy AGENT_TOKEN nevű környezeti változóként.

Az Azure AI Foundry Agent Service-be irányuló REST API-hívások sikeres indításához a végpontot az alábbiak szerint kell használnia:

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

A végpont például a következőképpen nézhet ki:

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

Állítsa be ezt a végpontot a következő nevű AZURE_AI_FOUNDRY_PROJECT_ENDPOINTkörnyezeti változóként: .

Megjegyzés:

  • Paraméter esetén api-version a GA API verziója és 2025-05-01 a legújabb előzetes API-verzió.2025-05-15-preview Az előzetes verziójú API-t kell használnia az előzetes verzióban lévő eszközökhöz.
  • Fontolja meg az API-verzió környezeti változóvá tételét, például $API_VERSION.

Ügynök létrehozása

Megjegyzés:

Az Azure AI Agents Service-ben a model paraméterhez modelltelepítési név szükséges. Ha a modell központi telepítési neve eltér az alapul szolgáló modell nevéétől, akkor a kódot a következőre "model": "{your-custom-model-deployment-name}"kell módosítania: .

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

Szál létrehozása

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

Felhasználói kérdés hozzáadása a szálhoz

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

A szál futtatása

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

A folyamat állapotának lekérése

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"

Az ügynök válaszának lekérése

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