Dela via


Snabbstart: Skapa en ny agent

Med Azure AI Foundry Agent Service kan du skapa AI-agenter som är skräddarsydda för dina behov med hjälp av anpassade instruktioner och utökade med avancerade verktyg som kodtolkare och anpassade funktioner.

Prerequisites

  • En Azure-prenumeration – Skapa en kostnadsfritt.
  • Se till att den person som skapar kontot och projektet har rollen Azure AI-kontoägare i prenumerationsomfånget, vilket ger de behörigheter som krävs för att skapa projektet
    • Om du har rollen Deltagare eller Cognitive Services-deltagare på prenumerationsnivå kan du också skapa projektet
  • När projektet har skapats kontrollerar du att den person som skapar agenten i projektet har Rollen Azure AI-användare på projektnivå

Important

Azure AI Foundry-portalen stöder endast grundläggande agentkonfiguration just nu. Om du vill utföra en standardkonfiguration av agenten kan du läsa artikeln Miljökonfiguration om du vill veta mer.

Skapa ett Foundry-konto och ett projekt i Azure AI Foundry-portalen

Följ dessa steg för att skapa ett konto och projekt i Azure AI Foundry:

  1. Gå till Azure AI Foundry. Om du är i ett projekt väljer du Azure AI Foundry längst upp till vänster på sidan för att gå till startsidan.

  2. Använd flödet för att komma igång med att skapa en agent för en snabbare upplevelse. Klicka på Skapa en agent.

    En skärmbild av Azure AI Foundry-portalen.

  3. Ange ett namn för projektet. Om du vill anpassa standardvärdena väljer du Avancerade alternativ.

    En skärmbild av de avancerade alternativen för att skapa ett projekt.

  4. Välj Skapa.

  5. Vänta tills dina resurser har allokerats.

    1. Ett konto och projekt (underordnad resurs för ditt konto) skapas.
    2. Gpt-4o-modellen distribueras automatiskt
    3. En standardagent skapas
  6. När du är klar hamnar du direkt på agentens lekplats och du kan börja skapa agenter. Du kan ge agenten instruktioner om vad du ska göra och hur du gör det. Till exempel: "Du är en användbar agent som kan svara på frågor om geografi." Sedan kan du börja chatta med din agent.

    Skärmbild av agentens lekplats.

    Note

    Om du får behörighetsfel när du försöker konfigurera eller skapa agenter kontrollerar du att du har Azure AI-användaren i projektet.

| Referensdokumentation | Exempel | på biblioteks källkodspaket | (NuGet) |

Prerequisites

  • En konfigurerad agentmiljö
  • Tilldela RBAC-rollenför Azure AI-användare till varje gruppmedlem som behöver skapa eller redigera agenter med hjälp av SDK eller Agent Playground
    • Den här rollen måste tilldelas i projektomfånget
    • Minsta behörigheter som krävs: agenter/*/läsning, agenter/*/åtgärd, agenter/*/ta bort

Konfigurera och köra en agent

Skapa ett .NET-konsolprojekt.

dotnet new console

Installera .NET-paketet i projektet. Om du till exempel använder .NET CLI kör du följande kommando.

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

För att autentisera dina API-begäranden och köra programmet använder du kommandot az login för att logga in på din Azure-prenumeration.

az login

Använd följande kod för att skapa och köra en agent. Om du vill köra den här koden måste du hämta slutpunkten för projektet. Den här strängen är i formatet:

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

Important

Från och med maj 2025 använder Azure AI Agent Service en slutpunkt för Foundry-projekt i stället för anslutningssträngen som tidigare användes för hubbbaserade projekt. Om du använder ett hubbbaserat projekt kan du inte använda de aktuella versionerna av SDK och REST API. Mer information finns i SDK-användning med hubbbaserade projekt.

Du hittar slutpunkten i översikten för projektet i Azure AI Foundry-portalen under Bibliotek>Azure AI Foundry.

En skärmbild som visar slutpunkten i Azure AI Foundry-portalen.

Ange den här slutpunkten i en miljövariabel med namnet ProjectEndpoint.

Du behöver också modellens implementeringsnamn. Du hittar den i Modeller + slutpunkter i den vänstra navigeringsmenyn.

En skärmbild som visar modelldistributionsskärmen i AI Foundry-portalen.

Spara namnet på modelldistributionsnamnet som en miljövariabel med namnet 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);

| Referensdokumentation | Exempel | på biblioteks källkodspaket | (PyPi) |

Prerequisites

  • En konfigurerad agentmiljö
  • Tilldela RBAC-rollenför Azure AI-användare till varje gruppmedlem som behöver skapa eller redigera agenter med hjälp av SDK eller Agent Playground
    • Den här rollen måste tilldelas i projektomfånget
    • Minsta behörigheter som krävs: agenter/*/läsning, agenter/*/åtgärd, agenter/*/ta bort

Konfigurera och köra en agent

Kör följande kommandon för att installera Python-paketen.

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

För att autentisera dina API-begäranden och köra programmet använder du kommandot az login för att logga in på din Azure-prenumeration.

az login

Använd följande kod för att skapa och köra en agent. Om du vill köra den här koden måste du hämta slutpunkten för projektet. Den här strängen är i formatet:

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

Important

Från och med maj 2025 använder Azure AI Agent Service en slutpunkt för Foundry-projekt i stället för anslutningssträngen som tidigare användes för hubbbaserade projekt. Om du använder ett hubbbaserat projekt kan du inte använda de aktuella versionerna av SDK och REST API. Mer information finns i SDK-användning med hubbbaserade projekt.

Du hittar slutpunkten i översikten för projektet i Azure AI Foundry-portalen under Bibliotek>Azure AI Foundry.

En skärmbild som visar slutpunkten i Azure AI Foundry-portalen.

Ange den här slutpunkten som en miljövariabel med namnet PROJECT_ENDPOINT.

Du behöver också modellens implementeringsnamn. Du hittar den i Modeller + slutpunkter i den vänstra navigeringsmenyn.

En skärmbild som visar modelldistributionsskärmen i AI Foundry-portalen.

Spara namnet på modelldistributionsnamnet som en miljövariabel med namnet 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 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 Code Interpreter 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 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
    )
    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="Hi, Agent! Draw a graph for a line with a slope of 4 and y-intercept of 9.",  # 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)
    for message in messages:
        print(f"Role: {message.role}, Content: {message.content}")

        # Save every image file in the message
        for img in message.image_contents:
            file_id = img.image_file.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")

| Referensdokumentation | Exempel | Bibliotekskällkod | Paket (npm) |

Prerequisites

  • En konfigurerad agentmiljö
  • Tilldela RBAC-rollenför Azure AI-användare till varje gruppmedlem som behöver skapa eller redigera agenter med hjälp av SDK eller Agent Playground
    • Den här rollen måste tilldelas i projektomfånget
    • Minsta behörigheter som krävs: agenter/*/läsning, agenter/*/åtgärd, agenter/*/ta bort

Konfigurera och köra en agent

Viktiga objekt i den här koden är:

Initiera först ett nytt TypeScript-projekt genom att köra:

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

Kör följande kommandon för att installera de npm-paket som krävs.

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

För att autentisera dina API-begäranden och köra programmet använder du kommandot az login för att logga in på din Azure-prenumeration.

az login

Använd följande kod för att besvara matematikfrågan I need to solve the equation '3x + 11 = 14'. Can you help me?. Om du vill köra den här koden måste du hämta slutpunkten för projektet. Den här strängen är i formatet:

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

Du hittar slutpunkten i översikten för projektet i Azure AI Foundry-portalen under Bibliotek>Azure AI Foundry.

En skärmbild som visar slutpunkten i Azure AI Foundry-portalen.

Ange den här slutpunkten som en miljövariabel med namnet PROJECT_ENDPOINT i en .env fil.

Du behöver också modellens implementeringsnamn. Du hittar den i Modeller + slutpunkter i den vänstra navigeringsmenyn.

En skärmbild som visar modelldistributionsskärmen i AI Foundry-portalen.

Spara namnet på modelldistributionsnamnet som en miljövariabel med namnet MODEL_DEPLOYMENT_NAME.

Important

  • Den här snabbstartskoden använder miljövariabler för känslig konfiguration. Committa aldrig din .env-fil till versionskontroll, se till att .env listas i din .gitignore-fil.
  • Kom ihåg: Om du oavsiktligt committerar känslig information, tänk på att dessa autentiseringsuppgifter kan ha komprometterats och rotera dem omedelbart.

Skapa en tsconfig.json fil med följande innehåll:

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

Skapa sedan en index.ts fil och klistra in följande kod:

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

Kör koden med .npx tsx -r dotenv/config index.ts Den här koden besvarar frågan I need to solve the equation '3x + 11 = 14'. Can you help me?. Svaren är inte deterministiska, dina utdata ser ut ungefär som nedanstående utdata:

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

Fullständig exempelkod tillgänglig.

| Referensdokumentation | Prover | Källkod | för bibliotekPaket (Maven) |

Prerequisites

  • En konfigurerad agentmiljö
  • Tilldela RBAC-rollenför Azure AI-användare till varje gruppmedlem som behöver skapa eller redigera agenter med hjälp av SDK eller Agent Playground
    • Den här rollen måste tilldelas i projektomfånget
    • Minsta behörigheter som krävs: agenter/*/läsning, agenter/*/åtgärd, agenter/*/ta bort

Konfigurera och köra en agent

Skapa först ett nytt Java-konsolprojekt. Du behöver följande beroenden för att köra koden:

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

För att autentisera dina API-begäranden och köra programmet använder du kommandot az login för att logga in på din Azure-prenumeration.

az login

Använd följande kod för att skapa och köra en agent. Om du vill köra den här koden måste du hämta slutpunkten för projektet. Den här strängen är i formatet:

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

Important

Från och med maj 2025 använder Azure AI Agent Service en slutpunkt för Foundry-projekt i stället för anslutningssträngen som tidigare användes för hubbbaserade projekt. Om du använder ett hubbbaserat projekt kan du inte använda de aktuella versionerna av SDK och REST API. Mer information finns i SDK-användning med hubbbaserade projekt.

Du hittar slutpunkten i översikten för projektet i Azure AI Foundry-portalen under Bibliotek>Azure AI Foundry.

En skärmbild som visar slutpunkten i Azure AI Foundry-portalen.

Ange den här slutpunkten i en miljövariabel med namnet PROJECT_ENDPOINT.

Du behöver också modellens implementeringsnamn. Du hittar den i Modeller + slutpunkter i den vänstra navigeringsmenyn.

En skärmbild som visar modelldistributionsskärmen i AI Foundry-portalen.

Spara namnet på modelldistributionsnamnet som en miljövariabel med namnet MODEL_DEPLOYMENT_NAME.

Kodexempel

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

| Referensdokumentation |

Prerequisites

  • En konfigurerad agentmiljö
  • Tilldela RBAC-rollenför Azure AI-användare till varje gruppmedlem som behöver skapa eller redigera agenter med hjälp av SDK eller Agent Playground
    • Den här rollen måste tilldelas i projektomfånget
    • Minsta behörigheter som krävs: agenter/*/läsning, agenter/*/åtgärd, agenter/*/ta bort

Konfigurera och köra en agent

Om du vill autentisera dina API-begäranden använder du kommandot az login för att logga in på din Azure-prenumeration.

az login

Därefter måste du hämta Entra ID-token för att tillhandahålla som auktorisering till API-anropen. Hämta token med cli-kommandot:

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

Ange åtkomsttoken som en miljövariabel med namnet AGENT_TOKEN.

Om du vill göra REST API-anrop till Azure AI Foundry Agent Service måste du använda projektets slutpunkt:

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

Slutpunkten ser till exempel ut ungefär så här:

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

Ange den här slutpunkten som en miljövariabel med namnet AZURE_AI_FOUNDRY_PROJECT_ENDPOINT.

Note

  • För api-version parametern är 2025-05-01 GA API-versionen och den senaste förhandsversionen av API:et är 2025-05-15-preview. Du måste använda förhandsversions-API:et för verktyg som finns i förhandsversionen.
  • Överväg att göra DIN API-version till en miljövariabel, till exempel $API_VERSION.

Skapa en handläggare

Note

Med Azure AI Agents Service kräver parametern model modelldistributionsnamn. Om namnet på modelldistributionen skiljer sig från det underliggande modellnamnet justerar du koden till "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"
  }'

Skapa en tråd

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

Lägg till en användarfråga i tråden

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

Starta tråden

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

Hämta status för körningen

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"

Hämta agentsvaret

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

Nästa steg

Lär dig mer om de verktyg som du kan använda för att utöka agenternas funktioner, till exempel åtkomst till webben, tillhandahålla grundinformation med mera.