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


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

Note

Ez a dokumentum a Microsoft Foundry (klasszikus) portálra hivatkozik.

🔍Az új portállal kapcsolatos információkért tekintse meg a Microsoft Foundry (új) dokumentációját.

Note

Ez a rövid útmutató az ügynökök korábbi verziójához készült. Az API új verziójának használatához tekintse meg a Microsoft Foundry rövid útmutatóját .

A 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.

Prerequisites

  • 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, amely megadja a projekt létrehozásához szükséges engedélyeket
    • Másik lehetőségként, ha a Közreműködő vagy a Cognitive Services közreműködői szerepköre az előfizetés szintjén van, lehetővé teszi a projekt létrehozását
  • A projekt létrehozása után győződjön meg arról, hogy a projekten belül az ügynököt létrehozó személy az Azure AI-felhasználói szerepkörrel rendelkezik a projekt szintjén

Important

A Microsoft Foundry portál jelenleg csak az alapszintű ügynökbeállítást 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 Foundry portálon

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

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

  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 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. Az ügynöknek útmutatást adhat arról, mit és hogyan kell végrehajtani. Például: "Ön egy hasznos ügynök, aki válaszolhat a földrajzi helyzetre vonatkozó kérdésekre." Ezután elkezdhet csevegni az ügynökével.

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

    Note

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

Prerequisites

  • 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

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>

Important

2025 májusától kezdődően az Azure AI Agent Service a korábban központi projektekhez használt kapcsolati sztring helyett egy Foundry-projektek végpontját használja. Ha központalapú projektet használ, nem fogja tudni használni az SDK és a REST API aktuális verzióit. További információ: SDK-használat központalapú projektekkel.

A végpontot a projekt áttekintésében , a Microsoft Foundry portálon, a Libraries>Foundry alatt találja.

Képernyőkép a végpontról az Foundry portálon.

Állítsa be ezt a végpontot egy környezeti változóban, amelynek neve ProjectEndpoint.

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éről az 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 System.Diagnostics;

var projectEndpoint = System.Environment.GetEnvironmentVariable("ProjectEndpoint");
var modelDeploymentName = System.Environment.GetEnvironmentVariable("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 begin 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;
        }
    }
}

//If you want to delete your agent, uncomment the following lines:
//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) |

Prerequisites

  • 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

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>

Important

2025 májusától kezdődően az Azure AI Agent Service a korábban központi projektekhez használt kapcsolati sztring helyett egy Foundry-projektek végpontját használja. Ha központalapú projektet használ, nem fogja tudni használni az SDK és a REST API aktuális verzióit. További információ: SDK-használat központalapú projektekkel.

A végpontot a projekt áttekintésében , a Microsoft Foundry portálon, a Libraries>Foundry alatt találja.

Képernyőkép a végpontról az Foundry portálon.

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

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éről az Foundry portálon.

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

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

# Create an AIProjectClient instance
project_client = AIProjectClient(
    endpoint=os.getenv("PROJECT_ENDPOINT"),
    credential=DefaultAzureCredential(),  
    # Use Azure Default Credential for authentication
)

with project_client:

    code_interpreter = CodeInterpreterTool()

    agent = project_client.agents.create_agent(
        model=os.getenv("MODEL_DEPLOYMENT_NAME"),  # Model deployment name
        name="my-agent",  # Name of the agent
        instructions="""You politely help with math questions. 
        Use the Code Interpreter tool when asked to visualize numbers.""",  
        # Instructions for the agent
        tools=code_interpreter.definitions,  # Attach the tool
        tool_resources=code_interpreter.resources,  # Attach tool resources
    )
    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}")

    question = """Draw a graph for a line with a slope of 4 
    and y-intercept of 9 and provide the file to me?"""

    # Add a message to the thread
    message = project_client.agents.messages.create(
        thread_id=thread.id,
        role="user",  # Role of the message sender
        content=question,  # 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,
        additional_instructions="""Please address the user as Jane Doe.
        The user has a premium account.""",
    )

    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)
    print(f"Messages: {messages}")

    for message in messages:
        print(f"Role: {message.role}, Content: {message.content}")
        for this_content in message.content:
            print(f"Content Type: {this_content.type}, Content Data: {this_content}")
            if this_content.text.annotations:
                for annotation in this_content.text.annotations:
                    print(f"Annotation Type: {annotation.type}, Text: {annotation.text}")
                    print(f"Start Index: {annotation.start_index}")
                    print(f"End Index: {annotation.end_index}")
                    print(f"File ID: {annotation.file_path.file_id}")
                    # Save every image file in the message
                    file_id = annotation.file_path.file_id
                    file_name = f"{file_id}_image_file.png"
                    project_client.agents.files.save(file_id=file_id, file_name=file_name)
                    print(f"Saved image file to: {Path.cwd() / file_name}")
    #Uncomment these lines to 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) |

Prerequisites

  • 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

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

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

npm init -y
npm pkg set type="module"

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

npm install @azure/ai-agents @azure/identity
npm install @types/node typescript --save-dev

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

A matematikai kérdés I need to solve the equation '3x + 11 = 14'. Can you help me?megválaszolá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 a projekt áttekintésében , a Microsoft Foundry portálon, a Libraries>Foundry alatt találja.

Képernyőkép a végpontról az Foundry portálon.

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

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éről az Foundry portálon.

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

Important

  • 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.

Hozzon létre egy tsconfig.json fájlt a következő tartalommal:

{
  "compilerOptions": {
    "module": "nodenext",
    "target": "esnext",
    "types": ["node"],
    "lib": ["esnext"],
    "sourceMap": true,
    "declaration": true,
    "declarationMap": true,
    "noUncheckedIndexedAccess": true,
    "exactOptionalPropertyTypes": true,
    "strict": true,
    "verbatimModuleSyntax": true,
    "isolatedModules": true,
    "noUncheckedSideEffectImports": true,
    "moduleDetection": "force",
    "skipLibCheck": true,
  }
}

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

import { AgentsClient } from "@azure/ai-agents";
import { DefaultAzureCredential } from "@azure/identity";

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

  // Create an agent
  const agent = await client.createAgent(modelDeploymentName, {
    name: "my-agent",
    instructions: "You are a helpful agent specialized in math. When providing mathematical explanations, use plain text formatting with simple characters like +, -, *, / for operations. Do not use LaTeX formatting with backslashes or special notation. Make your explanations clear and easy to read in a terminal.",
  });
  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}`);

  // List all threads for the agent
  const threads = client.threads.list();
  console.log(`Threads for agent ${agent.id}:`);
  for await (const t of threads) {
    console.log(`Thread ID: ${t.id} created at: ${t.createdAt}`);
  }

  // Create a message
  const message = await client.messages.create(thread.id, "user", "I need to solve the equation `3x + 11 = 14`. Can you help me?");
  console.log(`Created message, message ID : ${message.id}`);

  // Create and poll a run
  console.log("Creating run...");
  const run = await client.runs.createAndPoll(thread.id, agent.id, {
    pollingOptions: {
      intervalInMs: 2000,
    },
    onResponse: (response): void => {
      const parsedBody =
        typeof response.parsedBody === "object" && response.parsedBody !== null
          ? response.parsedBody
          : null;
      const status = parsedBody && "status" in parsedBody ? parsedBody.status : "unknown";
      console.log(`Received response with status: ${status}`);
    },
  });
  console.log(`Run finished with status: ${run.status}`);

  const messagesIterator = client.messages.list(thread.id);
  console.log("\n\n========================================================");
  console.log("=================== CONVERSATION RESULTS ===================");
  console.log("========================================================\n");
  
  // Collect all messages first
  const messages = [];
  for await (const m of messagesIterator) {
    messages.push(m);
  }
  
  // Reverse the order of messages (or sort by timestamp if available)
  messages.reverse();
  
  // Display messages in the new order
  for (const m of messages) {
    if (m.role === "user") {
      console.log(`\n❓ USER QUESTION: ${
        Array.isArray(m.content) && m.content[0]?.type === "text" && 'text' in m.content[0]
          ? m.content[0].text.value
          : JSON.stringify(m.content)
      }`);
    } else if (m.role === "assistant") {
      console.log("\n🤖 ASSISTANT'S ANSWER:");
      console.log("--------------------------------------------------");
      
      // Extract and print the text content in a more readable format
      if (m.content && Array.isArray(m.content)) {
        for (const content of m.content) {
          if (content.type === "text" && 'text' in content) {
            console.log(content.text?.value);
          } else {
            console.log(content);
          }
        }
      } else {
        console.log(JSON.stringify(m.content, null, 2));
      }
      console.log("--------------------------------------------------\n");
    }
  }
  
  console.log("\n========================================================");
  console.log("====================== END OF RESULTS ======================");
  console.log("========================================================\n");

  // Clean up
  await client.threads.delete(thread.id);
  await client.deleteAgent(agent.id);
}

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

Futtassa a kódot a következővel: npx tsx -r dotenv/config index.ts. Ez a kód választ ad a kérdésre I need to solve the equation '3x + 11 = 14'. Can you help me?. A válaszok nem determinisztikusak, a kimenet az alábbi kimenethez hasonlóan fog kinézni:

Created agent, agent ID : asst_X4yDNWrdWKb8LN0SQ6xlzhWk
Created thread, thread ID : thread_TxqZcHL2BqkNWl9dFzBYMIU6
Threads for agent asst_X4yDNWrdWKb8LN0SQ6xlzhWk:
...
Created message, message ID : msg_R0zDsXdc2UbfsNXvS1zeS6hk
Creating run...
Received response with status: queued
Received response with status: in_progress
Received response with status: completed
Run finished with status: completed


========================================================
=================== CONVERSATION RESULTS ===================
========================================================


❓ USER QUESTION: I need to solve the equation `3x + 11 = 14`. Can you help me?

🤖 ASSISTANT'S ANSWER:
--------------------------------------------------
Certainly! Let's solve the equation step by step:

We have:
3x + 11 = 14

### Step 1: Eliminate the constant (+11) on the left-hand side.
Subtract 11 from both sides:
3x + 11 - 11 = 14 - 11
This simplifies to:
3x = 3

We have:
3x + 11 = 14

### Step 1: Eliminate the constant (+11) on the left-hand side.
Subtract 11 from both sides:
3x + 11 - 11 = 14 - 11
This simplifies to:
3x = 3

### Step 2: Solve for x.
Divide both sides by 3:
3x / 3 = 3 / 3
This simplifies to:
x = 1

### Final Answer:
x = 1
--------------------------------------------------


========================================================
====================== END OF RESULTS ======================
========================================================

Teljes mintaforráskód érhető el.

| Referenciadokumentáció | Minták | Kódtár forráskódja | Csomag (Maven) |

Prerequisites

  • 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

Először hozzon létre egy új Java-konzolprojektet. A kód futtatásához a következő függőségekre lesz szüksége:

<dependencies>
    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-ai-agents-persistent</artifactId>
        <version>1.0.0-beta.2</version>
    </dependency>
    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-identity</artifactId>
        <version>1.17.0-beta.1</version>
    </dependency>
</dependencies>

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>

Important

2025 májusától kezdődően az Azure AI Agent Service a korábban központi projektekhez használt kapcsolati sztring helyett egy Foundry-projektek végpontját használja. Ha központalapú projektet használ, nem fogja tudni használni az SDK és a REST API aktuális verzióit. További információ: SDK-használat központalapú projektekkel.

A végpontot a projekt áttekintésében , a Microsoft Foundry portálon, a Libraries>Foundry alatt találja.

Képernyőkép a végpontról az Foundry portálon.

Állítsa be ezt a végpontot egy környezeti változóban, amelynek neve PROJECT_ENDPOINT.

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éről az Foundry portálon.

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

Kódrészlet

package com.example.agents;

import com.azure.ai.agents.persistent.MessagesClient;
import com.azure.ai.agents.persistent.PersistentAgentsAdministrationClient;
import com.azure.ai.agents.persistent.PersistentAgentsClient;
import com.azure.ai.agents.persistent.PersistentAgentsClientBuilder;
import com.azure.ai.agents.persistent.RunsClient;
import com.azure.ai.agents.persistent.ThreadsClient;
import com.azure.ai.agents.persistent.models.CodeInterpreterToolDefinition;
import com.azure.ai.agents.persistent.models.CreateAgentOptions;
import com.azure.ai.agents.persistent.models.CreateRunOptions;
import com.azure.ai.agents.persistent.models.MessageImageFileContent;
import com.azure.ai.agents.persistent.models.MessageRole;
import com.azure.ai.agents.persistent.models.MessageTextContent;
import com.azure.ai.agents.persistent.models.PersistentAgent;
import com.azure.ai.agents.persistent.models.PersistentAgentThread;
import com.azure.ai.agents.persistent.models.RunStatus;
import com.azure.ai.agents.persistent.models.ThreadMessage;
import com.azure.ai.agents.persistent.models.ThreadRun;
import com.azure.ai.agents.persistent.models.MessageContent;
import com.azure.core.http.rest.PagedIterable;
import com.azure.identity.DefaultAzureCredentialBuilder;
import java.util.Arrays;

public class AgentSample {

    public static void main(String[] args) {
        // variables for authenticating requests to the agent service 
        String projectEndpoint = System.getenv("PROJECT_ENDPOINT");
        String modelName = System.getenv("MODEL_DEPLOYMENT_NAME");

        // initialize clients to manage various aspects of agent runtime
        PersistentAgentsClientBuilder clientBuilder = new PersistentAgentsClientBuilder()
            .endpoint(projectEndpoint)
            .credential(new DefaultAzureCredentialBuilder().build());
        PersistentAgentsClient agentsClient = clientBuilder.buildClient();
        PersistentAgentsAdministrationClient administrationClient = agentsClient.getPersistentAgentsAdministrationClient();
        ThreadsClient threadsClient = agentsClient.getThreadsClient();
        MessagesClient messagesClient = agentsClient.getMessagesClient();
        RunsClient runsClient = agentsClient.getRunsClient();
        
        
        String agentName = "my-agent"; // the name of the agent
        CreateAgentOptions createAgentOptions = new CreateAgentOptions(modelName)
            .setName(agentName)
            .setInstructions("You are a helpful agent") // system insturctions
            .setTools(Arrays.asList(new CodeInterpreterToolDefinition()));
        PersistentAgent agent = administrationClient.createAgent(createAgentOptions);

        PersistentAgentThread thread = threadsClient.createThread();
        ThreadMessage createdMessage = messagesClient.createMessage(
            thread.getId(),
            MessageRole.USER,
            "I need to solve the equation `3x + 11 = 14`. Can you help me?"); // The message to the agent

        try {
            //run the agent
            CreateRunOptions createRunOptions = new CreateRunOptions(thread.getId(), agent.getId())
                .setAdditionalInstructions("");
            ThreadRun threadRun = runsClient.createRun(createRunOptions);
            // wait for the run to complete before printing the message
            waitForRunCompletion(thread.getId(), threadRun, runsClient);
            printRunMessages(messagesClient, thread.getId());
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        } finally {
            //cleanup - uncomment these lines if you want to delete the agent
            //threadsClient.deleteThread(thread.getId());
            //administrationClient.deleteAgent(agent.getId());
        }
    }

    // A helper function to print messages from the agent
    public static void printRunMessages(MessagesClient messagesClient, String threadId) {

        PagedIterable<ThreadMessage> runMessages = messagesClient.listMessages(threadId);
        for (ThreadMessage message : runMessages) {
            System.out.print(String.format("%1$s - %2$s : ", message.getCreatedAt(), message.getRole()));
            for (MessageContent contentItem : message.getContent()) {
                if (contentItem instanceof MessageTextContent) {
                    System.out.print((((MessageTextContent) contentItem).getText().getValue()));
                } else if (contentItem instanceof MessageImageFileContent) {
                    String imageFileId = (((MessageImageFileContent) contentItem).getImageFile().getFileId());
                    System.out.print("Image from ID: " + imageFileId);
                }
                System.out.println();
            }
        }
    }

    // a helper function to wait until a run has completed running
    public static void waitForRunCompletion(String threadId, ThreadRun threadRun, RunsClient runsClient)
        throws InterruptedException {

        do {
            Thread.sleep(500);
            threadRun = runsClient.getRun(threadId, threadRun.getId());
        }
        while (
            threadRun.getStatus() == RunStatus.QUEUED
                || threadRun.getStatus() == RunStatus.IN_PROGRESS
                || threadRun.getStatus() == RunStatus.REQUIRES_ACTION);

        if (threadRun.getStatus() == RunStatus.FAILED) {
            System.out.println(threadRun.getLastError().getMessage());
        }
    }
}

| Referenciadokumentáció |

Prerequisites

  • 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

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 be kell szereznie az Entra ID-jogkivonatot, hogy engedélyként szolgáljon 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.

A REST API-hívások Foundry Agent Service szolgáltatásba való sikeres indításához a projekt végpontját 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 fog kinézni:

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: .

Note

  • 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

Note

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"

Következő lépések

Megismerheti az ügynökök képességeinek bővítéséhez használható eszközöket , például a webes hozzáférést, a földi információk biztosítását és egyebeket.