Sdílet prostřednictvím


Rychlý start: Vytvoření nového agenta

Note

Tento dokument se týká portálu Microsoft Foundry (Classic).

🔍Informace o novém portálu najdete v dokumentaci k Microsoft Foundry (nové).

Note

Tento rychlý úvod je určený pro starší verzi agentů. Informace o použití nové verze rozhraní API najdete v rychlém startu pro Microsoft Foundry .

Služba Foundry Agent service umožňuje vytvářet agenty umělé inteligence přizpůsobené vašim potřebám prostřednictvím vlastních pokynů a rozšířená o pokročilé nástroje, jako je interpret kódu a vlastní funkce.

Prerequisites

  • Předplatné Azure – Vytvořte si ho zdarma.
  • Ujistěte se, že jednotlivec, který vytváří účet a projekt, má v oboru předplatného roli Vlastník účtu Azure AI , která udělí potřebná oprávnění k vytvoření projektu.
    • Další možností je, že role Přispěvatel nebo Přispěvatel služeb Cognitive Services na úrovni předplatného umožní vytvoření projektu.
  • Po vytvoření projektu se ujistěte, že jednotlivec, který v rámci projektu vytváří agenta, má roli uživatele Azure AI na úrovni projektu.

Important

Portál Microsoft Foundry v současnosti podporuje pouze základní nastavení agenta. Pokud chcete provést standardní instalaci agenta, přečtěte si článek o nastavení prostředí , kde najdete další informace.

Vytvoření účtu Foundry a projektu na portálu Foundry

Pokud chcete vytvořit účet a projekt v Foundry, postupujte takto:

  1. Přejděte do Foundry. Pokud jste v projektu, vyberte Foundry v levém horním rohu stránky a přejděte na domovskou stránku.

  2. Chcete-li co nejrychleji začít, použijte proces vytvoření agenta. Klikněte na Vytvořit agenta.

    Snímek obrazovky portálu Foundry

  3. Zadejte název projektu. Pokud chcete přizpůsobit výchozí hodnoty, vyberte Upřesnit možnosti.

    Snímek obrazovky s rozšířenými možnostmi pro vytvoření projektu

  4. Vyberte Vytvořit.

  5. Počkejte, než se vaše prostředky zřídí.

    1. Účet a projekt (podřízený zdroj vašeho účtu) budou vytvořeny.
    2. Model gpt-4o se nasadí automaticky.
    3. Vytvoří se výchozí agent.
  6. cs-CZ: Jakmile dokončíte, dostanete se přímo do prostředí pro agenty a můžete začít vytvářet agenty. Agentovi můžete dát pokyny k tomu, co dělat a jak to udělat. Například: "Jste užitečný agent, který může odpovídat na otázky týkající se zeměpisné oblasti." Pak můžete začít chatovat s vaším agentem.

    Snímek obrazovky s herním hřištěm agenta

    Note

    Pokud při pokusu o konfiguraci nebo vytvoření agentů dochází k chybě oprávnění, ujistěte se, že máte v projektu uživatele Azure AI .

| Referenční dokumentace | Vzorky | Zdrojový kód | knihovnyBalíček (NuGet) |

Prerequisites

  • Nastavení prostředí agenta
  • Přiřaďte roli RBACuživatele Azure AI každému členovi týmu, který potřebuje vytvářet nebo upravovat agenty pomocí sady SDK nebo Agent Playground.
    • Tato role musí být přiřazena v oboru projektu.
    • Minimální požadovaná oprávnění: agents/*/read, agents/*/action, agents/*/delete

Nakonfigurujte a spusťte agenta

Vytvořte projekt konzoly .NET.

dotnet new console

Nainstalujte balíček .NET do svého projektu. Pokud například používáte rozhraní příkazového řádku .NET, spusťte následující příkaz.

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

Dále, k ověření vašich API požadavků a spuštění programu, použijte příkaz az login pro přihlášení k vašemu Azure předplatnému.

az login

Použijte následující kód pro vytvoření a spuštění agenta. Pokud chcete tento kód spustit, budete muset získat koncový bod pro váš projekt. Tento řetězec je ve formátu:

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

Important

Od května 2025 používá služba agenta Azure AI koncový bod pro projekty Foundry místo připojovacího řetězce, který se dříve používal pro projekty založené na centrech. Pokud používáte projekt založený na centru, nebudete moct používat aktuální verze sady SDK a rozhraní REST API. Další informace najdete v tématu Využití sady SDK s projekty založenými na centrech.

Koncový bod najdete v přehledu projektu na portálu Microsoft Foundry v části Knihovny>Foundry.

Snímek obrazovky znázorňující koncový bod na portálu Foundry

Nastavte tento koncový bod v proměnné prostředí a pojmenujte ho ProjectEndpoint.

Potřebujete také název nasazení modelu. Najdete ho v levé navigační nabídce v modelech a koncových bodech .

Snímek obrazovky s nasazením modelu na portálu Foundry

Uložte jméno nasazení modelu jako proměnnou prostředí pojmenovanou 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);

| Referenční dokumentace | Vzorky | Zdrojový kód | knihovnyBalíček (PyPi) |

Prerequisites

  • Nastavení prostředí agenta
  • Přiřaďte roli RBACuživatele Azure AI každému členovi týmu, který potřebuje vytvářet nebo upravovat agenty pomocí sady SDK nebo Agent Playground.
    • Tato role musí být přiřazena v oboru projektu.
    • Minimální požadovaná oprávnění: agents/*/read, agents/*/action, agents/*/delete

Nakonfigurujte a spusťte agenta

Spusťte následující příkazy k instalaci balíčků Python.

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

Dále, k ověření vašich API požadavků a spuštění programu, použijte příkaz az login pro přihlášení k vašemu Azure předplatnému.

az login

Použijte následující kód pro vytvoření a spuštění agenta. Pokud chcete tento kód spustit, budete muset získat koncový bod pro váš projekt. Tento řetězec je ve formátu:

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

Important

Od května 2025 používá služba agenta Azure AI koncový bod pro projekty Foundry místo připojovacího řetězce, který se dříve používal pro projekty založené na centrech. Pokud používáte projekt založený na centru, nebudete moct používat aktuální verze sady SDK a rozhraní REST API. Další informace najdete v tématu Využití sady SDK s projekty založenými na centrech.

Koncový bod najdete v přehledu projektu na portálu Microsoft Foundry v části Knihovny>Foundry.

Snímek obrazovky znázorňující koncový bod na portálu Foundry

Nastavte tento koncový bod jako proměnnou prostředí pojmenovanou PROJECT_ENDPOINT.

Potřebujete také název nasazení modelu. Najdete ho v levé navigační nabídce v modelech a koncových bodech .

Snímek obrazovky s nasazením modelu na portálu Foundry

Uložte jméno nasazení modelu jako proměnnou prostředí pojmenovanou 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")

| Referenční dokumentace | Vzorky | Zdrojový kód | knihovnyBalíček (npm) |

Prerequisites

  • Nastavení prostředí agenta
  • Přiřaďte roli RBACuživatele Azure AI každému členovi týmu, který potřebuje vytvářet nebo upravovat agenty pomocí sady SDK nebo Agent Playground.
    • Tato role musí být přiřazena v oboru projektu.
    • Minimální požadovaná oprávnění: agents/*/read, agents/*/action, agents/*/delete

Nakonfigurujte a spusťte agenta

Klíčové objekty v tomto kódu zahrnují:

Nejprve inicializujete nový projekt TypeScript spuštěním příkazu:

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

Spusťte následující příkazy k instalaci požadovaných balíčků npm.

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

Dále, k ověření vašich API požadavků a spuštění programu, použijte příkaz az login pro přihlášení k vašemu Azure předplatnému.

az login

Pomocí následujícího kódu odpovězte na matematickou otázku I need to solve the equation '3x + 11 = 14'. Can you help me?. Abyste mohli tento kód spustit, budete muset získat koncový bod pro váš projekt. Tento řetězec je ve formátu:

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

Koncový bod najdete v přehledu projektu na portálu Microsoft Foundry v části Knihovny>Foundry.

Snímek obrazovky znázorňující koncový bod na portálu Foundry

Tento koncový bod nastavte jako proměnnou prostředí pojmenovanou PROJECT_ENDPOINT.env v souboru.

Potřebujete také název nasazení modelu. Najdete ho v levé navigační nabídce v modelech a koncových bodech .

Snímek obrazovky s nasazením modelu na portálu Foundry

Uložte jméno nasazení modelu jako proměnnou prostředí pojmenovanou MODEL_DEPLOYMENT_NAME.

Important

  • Tento úvodní kód používá proměnné prostředí pro citlivou konfiguraci. Nikdy nepřidávejte soubor .env do verzování tím, že zajistíte, že .env je uveden ve vašem souboru .gitignore.
  • Pamatujte: Pokud omylem nasdílíte citlivé informace, považujte tyto přihlašovací údaje za kompromitované a okamžitě je změňte.

Vytvořte soubor tsconfig.json s následujícím obsahem:

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

Dále vytvořte index.ts soubor a vložte následující kód:

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

Spusťte kód pomocí npx tsx -r dotenv/config index.ts. Tento kód odpoví na otázku I need to solve the equation '3x + 11 = 14'. Can you help me?. Odpovědi nejsou deterministické, výstup bude vypadat podobně jako v následujícím výstupu:

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

K dispozici je úplný ukázkový zdrojový kód .

| Referenční dokumentace | Vzorky | Zdrojový kód | knihovnyBalíček (Maven) |

Prerequisites

  • Nastavení prostředí agenta
  • Přiřaďte roli RBACuživatele Azure AI každému členovi týmu, který potřebuje vytvářet nebo upravovat agenty pomocí sady SDK nebo Agent Playground.
    • Tato role musí být přiřazena v oboru projektu.
    • Minimální požadovaná oprávnění: agents/*/read, agents/*/action, agents/*/delete

Nakonfigurujte a spusťte agenta

Nejprve vytvořte nový projekt konzoly Java. Ke spuštění kódu budete potřebovat následující závislosti:

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

Dále, k ověření vašich API požadavků a spuštění programu, použijte příkaz az login pro přihlášení k vašemu Azure předplatnému.

az login

Použijte následující kód pro vytvoření a spuštění agenta. Abyste mohli tento kód spustit, budete muset získat koncový bod pro váš projekt. Tento řetězec je ve formátu:

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

Important

Od května 2025 používá služba agenta Azure AI koncový bod pro projekty Foundry místo připojovacího řetězce, který se dříve používal pro projekty založené na centrech. Pokud používáte projekt založený na centru, nebudete moct používat aktuální verze sady SDK a rozhraní REST API. Další informace najdete v tématu Využití sady SDK s projekty založenými na centrech.

Koncový bod najdete v přehledu projektu na portálu Microsoft Foundry v části Knihovny>Foundry.

Snímek obrazovky znázorňující koncový bod na portálu Foundry

Nastavte tento koncový bod v proměnné prostředí a pojmenujte ho PROJECT_ENDPOINT.

Potřebujete také název nasazení modelu. Najdete ho v levé navigační nabídce v modelech a koncových bodech .

Snímek obrazovky s nasazením modelu na portálu Foundry

Uložte jméno nasazení modelu jako proměnnou prostředí pojmenovanou MODEL_DEPLOYMENT_NAME.

Příklad kódu

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

| Referenční dokumentace |

Prerequisites

  • Nastavení prostředí agenta
  • Přiřaďte roli RBACuživatele Azure AI každému členovi týmu, který potřebuje vytvářet nebo upravovat agenty pomocí sady SDK nebo Agent Playground.
    • Tato role musí být přiřazena v oboru projektu.
    • Minimální požadovaná oprávnění: agents/*/read, agents/*/action, agents/*/delete

Nakonfigurujte a spusťte agenta

Aby vaše požadavky na API byly ověřeny, použijte příkaz az login k přihlášení do vašeho předplatného Azure.

az login

Dále budete muset načíst token Entra ID, který použijete jako autorizaci pro volání API. Získejte token pomocí příkazové řádky:

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

Nastavte přístupový token jako proměnnou prostředí s názvem AGENT_TOKEN.

Pokud chcete úspěšně provést volání rozhraní REST API do služby Foundry Agent Service, budete muset použít koncový bod projektu:

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

Například koncový bod bude vypadat nějak takto:

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

Nastavte tento koncový bod jako proměnnou prostředí pojmenovanou AZURE_AI_FOUNDRY_PROJECT_ENDPOINT.

Note

  • Pro api-version parametr je verze 2025-05-01 rozhraní API GA a nejnovější verze rozhraní API Preview je 2025-05-15-preview. Pro nástroje, které jsou ve verzi Preview, musíte použít rozhraní API ve verzi Preview.
  • Zvažte vytvoření verze rozhraní API jako proměnnou prostředí, například $API_VERSION.

Vytvořit agenta

Note

Ve službě Azure AI Agents vyžaduje parametr model název nasazení modelu. Pokud se název nasazení modelu liší od názvu základního modelu, upravte kód na "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"
  }'

Vytvořit vlákno

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

Přidejte dotaz uživatele do vlákna

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

Spustit vlákno

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

Zjistit stav běhu

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"

Načtěte odpověď agenta

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

Další kroky

Seznamte se s nástroji , které můžete použít k rozšíření možností agentů, jako je přístup k webu, poskytování informací o uzemnění a další.