Bagikan melalui


Mulai cepat: Membuat agen baru

Azure AI Foundry Agent Service memungkinkan Anda membuat agen AI yang disesuaikan dengan kebutuhan Anda melalui instruksi kustom dan ditambah oleh alat tingkat lanjut seperti penerjemah kode, dan fungsi kustom.

Prasyarat

  • Langganan Azure - Buat langganan gratis.
  • Pastikan bahwa individu yang membuat akun dan proyek memiliki peran Pemilik Akun Azure AI di cakupan langganan
    • Atau, memiliki peran Kontributor atau Kontributor Cognitive Services di tingkat langganan juga memenuhi persyaratan ini.

Penting

Portal Azure AI Foundry hanya mendukung agen dasar yang ditetapkan saat ini. Jika Anda ingin melakukan penyiapan agen standar, lihat artikel Penyiapan lingkungan untuk mempelajari selengkapnya.

Membuat akun dan proyek Foundry di portal Azure AI Foundry

Untuk membuat akun dan proyek di Azure AI Foundry, ikuti langkah-langkah berikut:

  1. Buka Azure AI Foundry. Jika Anda berada dalam proyek, pilih Azure AI Foundry di kiri atas halaman untuk masuk ke halaman Beranda.

  2. Gunakan alur pembuatan agen pemula untuk pengalaman tercepat. Klik Buat Agen.

    Cuplikan layar portal Azure AI Foundry.

  3. Masukkan nama untuk proyek tersebut. Jika Anda ingin menyesuaikan nilai default, pilih Opsi tingkat lanjut.

    Cuplikan layar opsi tingkat lanjut untuk membuat proyek.

  4. Pilih Buat.

  5. Tunggu hingga sumber daya Anda diprovisikan.

    1. Akun dan proyek (sumber daya anak akun Anda) akan dibuat.
    2. Model gpt-4o akan secara otomatis disebarkan
    3. Agen default akan dibuat
  6. Setelah selesai, Anda akan mendarat langsung di taman bermain agen dan Anda dapat mulai membuat agen.

    Cuplikan layar taman bermain agen.

    Nota

    Jika Anda mendapatkan kesalahan izin saat mencoba mengonfigurasi atau membuat agen, pastikan Anda memiliki Pengguna Azure AI pada proyek.

| Dokumentasi referensi | Contoh | Kode sumber pustaka | Paket (NuGet) |

Prasyarat

  • Menyiapkan lingkungan agen
  • Tetapkan peran RBACPengguna Azure AI untuk setiap anggota tim yang perlu membuat atau mengedit agen menggunakan SDK atau Agent Playground
    • Peran ini harus ditetapkan pada cakupan proyek
    • Izin minimum yang diperlukan: agents/*/read, agents/*/action, agents/*/delete

Mengonfigurasi dan menjalankan agen

Komponen Deskripsi
Agen AI kustomisasi yang menggunakan model AI beserta alat.
Alat Alat membantu memperluas kemampuan agen untuk merespons dengan andal dan akurat selama percakapan. Seperti menyambungkan ke basis pengetahuan yang ditentukan pengguna sebagai dasar bagi model, atau memungkinkan pencarian di web untuk memberikan informasi terkini.
Utas Sesi percakapan antara agen dan pengguna. Thread menyimpan pesan dan secara otomatis menangani pemotongan agar konten sesuai dengan konteks model.
Pesan Pesan yang dibuat oleh agen atau pengguna. Pesan dapat menyertakan teks, gambar, dan file lainnya. Pesan disimpan sebagai daftar di Utas Percakapan.
Lari Aktivasi agen untuk mulai berjalan berdasarkan konten Thread. Agen menggunakan konfigurasinya dan Pesan dari Thread untuk melakukan tugas dengan memanggil model dan alat. Sebagai bagian dari Proses, agen menambahkan Pesan ke Utas.

Buat proyek Konsol .NET.

dotnet new console

Instal paket .NET ke proyek Anda. Misalnya jika Anda menggunakan .NET CLI, jalankan perintah berikut.

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

Selanjutnya, untuk mengautentikasi permintaan API Anda dan menjalankan program, gunakan perintah az login untuk masuk ke langganan Azure Anda.

az login

Gunakan kode berikut untuk membuat dan menjalankan agen. Untuk menjalankan kode ini, Anda harus mendapatkan titik akhir untuk proyek Anda. String ini dalam format:

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

Petunjuk / Saran

Anda dapat menemukan titik akhir Anda di gambaran umum untuk proyek Anda di portal Azure AI Foundry, di bawah Pustaka>Azure AI Foundry. Cuplikan layar memperlihatkan titik akhir di portal Azure AI Foundry.

Misalnya, titik akhir Anda mungkin terlihat seperti:

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

Atur titik akhir ini dalam variabel appsetting bernama ProjectEndpoint.

using Azure;
using Azure.AI.Agents.Persistent;
using Azure.Identity;
using Microsoft.Extensions.Configuration;
using System.Diagnostics;

IConfigurationRoot configuration = new ConfigurationBuilder()
    .SetBasePath(AppContext.BaseDirectory)
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    .Build();

var projectEndpoint = configuration["ProjectEndpoint"];
var modelDeploymentName = configuration["ModelDeploymentName"];

//Create a PersistentAgentsClient and PersistentAgent.
PersistentAgentsClient client = new(projectEndpoint, new DefaultAzureCredential());

//Give PersistentAgent a tool to execute code using CodeInterpreterToolDefinition.
PersistentAgent agent = client.Administration.CreateAgent(
    model: modelDeploymentName,
    name: "My Test Agent",
    instructions: "You politely help with math questions. Use the code interpreter tool when asked to visualize numbers.",
    tools: [new CodeInterpreterToolDefinition()]
);

//Create a thread to establish a session between Agent and a User.
PersistentAgentThread thread = client.Threads.CreateThread();

//Ask a question of the Agent.
client.Messages.CreateMessage(
    thread.Id,
    MessageRole.User,
    "Hi, Agent! Draw a graph for a line with a slope of 4 and y-intercept of 9.");

//Have Agent beging processing user's question with some additional instructions associated with the ThreadRun.
ThreadRun run = client.Runs.CreateRun(
    thread.Id,
    agent.Id,
    additionalInstructions: "Please address the user as Jane Doe. The user has a premium account.");

//Poll for completion.
do
{
    Thread.Sleep(TimeSpan.FromMilliseconds(500));
    run = client.Runs.GetRun(thread.Id, run.Id);
}
while (run.Status == RunStatus.Queued
    || run.Status == RunStatus.InProgress
    || run.Status == RunStatus.RequiresAction);

//Get the messages in the PersistentAgentThread. Includes Agent (Assistant Role) and User (User Role) messages.
Pageable<PersistentThreadMessage> messages = client.Messages.GetMessages(
    threadId: thread.Id,
    order: ListSortOrder.Ascending);

//Display each message and open the image generated using CodeInterpreterToolDefinition.
foreach (PersistentThreadMessage threadMessage in messages)
{
    foreach (MessageContent content in threadMessage.ContentItems)
    {
        switch (content)
        {
            case MessageTextContent textItem:
                Console.WriteLine($"[{threadMessage.Role}]: {textItem.Text}");
                break;
            case MessageImageFileContent imageFileContent:
                Console.WriteLine($"[{threadMessage.Role}]: Image content file ID = {imageFileContent.FileId}");
                BinaryData imageContent = client.Files.GetFileContent(imageFileContent.FileId);
                string tempFilePath = Path.Combine(AppContext.BaseDirectory, $"{Guid.NewGuid()}.png");
                File.WriteAllBytes(tempFilePath, imageContent.ToArray());
                client.Files.DeleteFile(imageFileContent.FileId);

                ProcessStartInfo psi = new()
                {
                    FileName = tempFilePath,
                    UseShellExecute = true
                };
                Process.Start(psi);
                break;
        }
    }
}

//Clean up test resources.
client.Threads.DeleteThread(threadId: thread.Id);
client.Administration.DeleteAgent(agentId: agent.Id);

| Referensi dokumentasi | Sampel | Kode sumber pustaka | Paket (PyPi) |

Prasyarat

  • Menyiapkan lingkungan agen
  • Tetapkan peran RBACPengguna Azure AI untuk setiap anggota tim yang perlu membuat atau mengedit agen menggunakan SDK atau Agent Playground
    • Peran ini harus ditetapkan pada cakupan proyek
    • Izin minimum yang diperlukan: agents/*/read, agents/*/action, agents/*/delete

Mengonfigurasi dan menjalankan agen

Komponen Deskripsi
Agen AI kustomisasi yang menggunakan model AI beserta alat.
Alat Alat membantu memperluas kemampuan agen untuk merespons dengan andal dan akurat selama percakapan. Seperti menyambungkan ke basis pengetahuan yang ditentukan pengguna sebagai dasar bagi model, atau memungkinkan pencarian di web untuk memberikan informasi terkini.
Utas Sesi percakapan antara agen dan pengguna. Thread menyimpan pesan dan secara otomatis menangani pemotongan agar konten sesuai dengan konteks model.
Pesan Pesan yang dibuat oleh agen atau pengguna. Pesan dapat menyertakan teks, gambar, dan file lainnya. Pesan disimpan sebagai daftar di Utas Percakapan.
Lari Aktivasi agen untuk mulai berjalan berdasarkan konten Thread. Agen menggunakan konfigurasinya dan Pesan dari Thread untuk melakukan tugas dengan memanggil model dan alat. Sebagai bagian dari Proses, agen menambahkan Pesan ke Utas.
Jalankan Tahap Daftar terperinci langkah yang diambil agen sebagai bagian dari suatu Proses. Agen dapat memanggil alat atau membuat Pesan selama prosesnya. Memeriksa Tahapan Eksekusi memungkinkan Anda untuk memahami bagaimana agen mencapai hasilnya.

Jalankan perintah berikut untuk menginstal paket python.

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

Selanjutnya, untuk mengautentikasi permintaan API Anda dan menjalankan program, gunakan perintah az login untuk masuk ke langganan Azure Anda.

az login

Gunakan kode berikut untuk membuat dan menjalankan agen. Untuk menjalankan kode ini, Anda harus mendapatkan titik akhir untuk proyek Anda. String ini dalam format:

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

Petunjuk / Saran

Anda dapat menemukan titik akhir Anda di gambaran umum untuk proyek Anda di portal Azure AI Foundry, di bawah Pustaka>Azure AI Foundry. Cuplikan layar memperlihatkan titik akhir di portal Azure AI Foundry.

Misalnya, titik akhir Anda mungkin terlihat seperti:

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

Atur titik akhir ini sebagai variabel lingkungan bernama PROJECT_ENDPOINT.

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

# Create an Azure AI Client from an endpoint, copied from your Azure AI Foundry project.
# You need to login to Azure subscription via Azure CLI and set the environment variables
project_endpoint = os.environ["PROJECT_ENDPOINT"]  # Ensure the PROJECT_ENDPOINT environment variable is set

# Create an AIProjectClient instance
project_client = AIProjectClient(
    endpoint=project_endpoint,
    credential=DefaultAzureCredential(),  # Use Azure Default Credential for authentication
)

code_interpreter = CodeInterpreterTool()
with project_client:
    # Create an agent with the Bing Grounding tool
    agent = project_client.agents.create_agent(
        model=os.environ["MODEL_DEPLOYMENT_NAME"],  # Model deployment name
        name="my-agent",  # Name of the agent
        instructions="You are a helpful agent",  # Instructions for the agent
        tools=code_interpreter.definitions,  # Attach the tool
    )
    print(f"Created agent, ID: {agent.id}")

    # Create a thread for communication
    thread = project_client.agents.threads.create()
    print(f"Created thread, ID: {thread.id}")
    
    # Add a message to the thread
    message = project_client.agents.messages.create(
        thread_id=thread.id,
        role="user",  # Role of the message sender
        content="What is the weather in Seattle today?",  # Message content
    )
    print(f"Created message, ID: {message['id']}")
    
    # Create and process an agent run
    run = project_client.agents.runs.create_and_process(thread_id=thread.id, agent_id=agent.id)
    print(f"Run finished with status: {run.status}")
    
    # Check if the run failed
    if run.status == "failed":
        print(f"Run failed: {run.last_error}")
    
    # Fetch and log all messages
    messages = project_client.agents.messages.list(thread_id=thread.id)
    for message in messages:
        print(f"Role: {message.role}, Content: {message.content}")
    
    # Delete the agent when done
    project_client.agents.delete_agent(agent.id)
    print("Deleted agent")

| Dokumentasi referensi | Contoh | Kode sumber pustaka | Paket (npm) |

Prasyarat

  • Menyiapkan lingkungan agen
  • Tetapkan peran RBACPengguna Azure AI untuk setiap anggota tim yang perlu membuat atau mengedit agen menggunakan SDK atau Agent Playground
    • Peran ini harus ditetapkan pada cakupan proyek
    • Izin minimum yang diperlukan: agents/*/read, agents/*/action, agents/*/delete

Mengonfigurasi dan menjalankan agen

Komponen Deskripsi
Agen AI kustom yang memanfaatkan model AI dan alat.
Alat Alat membantu memperluas kemampuan agen untuk merespons dengan andal dan akurat selama percakapan. Seperti menyambungkan ke basis pengetahuan yang ditentukan pengguna sebagai dasar bagi model, atau memungkinkan pencarian di web untuk memberikan informasi terkini.
Utas Sesi percakapan antara agen dan pengguna. Thread menyimpan pesan dan secara otomatis menangani pemotongan agar konten sesuai dengan konteks model.
Pesan Pesan yang dibuat oleh agen atau pengguna. Pesan dapat menyertakan teks, gambar, dan file lainnya. Pesan disimpan sebagai daftar di Utas Percakapan.
Lari Aktivasi agen untuk mulai berjalan berdasarkan konten Thread. Agen menggunakan konfigurasinya dan Pesan dari Thread untuk melakukan tugas dengan memanggil model dan alat. Sebagai bagian dari Proses, agen menambahkan Pesan ke Utas.
Jalankan Tahap Daftar terperinci langkah yang diambil agen sebagai bagian dari suatu Proses. Agen dapat memanggil alat atau membuat Pesan selama prosesnya. Memeriksa Tahapan Eksekusi memungkinkan Anda untuk memahami bagaimana agen mencapai hasilnya.

Objek kunci dalam kode ini meliputi:

Pertama, inisialisasi proyek baru dengan menjalankan:

npm init -y

Jalankan perintah berikut untuk menginstal paket npm yang diperlukan.

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

Selanjutnya, untuk mengautentikasi permintaan API Anda dan menjalankan program, gunakan perintah az login untuk masuk ke langganan Azure Anda.

az login

Gunakan kode berikut untuk membuat dan menjalankan agen yang mengunggah file data CSV lalu menghasilkan bagan batang dari data tersebut. Untuk menjalankan kode ini, Anda harus mendapatkan titik akhir untuk proyek Anda. String ini dalam format:

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

Petunjuk / Saran

Anda dapat menemukan titik akhir Anda di gambaran umum untuk proyek Anda di portal Azure AI Foundry, di bawah Pustaka>Azure AI Foundry. Cuplikan layar memperlihatkan titik akhir di portal Azure AI Foundry.

Misalnya, titik akhir Anda terlihat seperti:

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

Atur titik akhir ini sebagai variabel lingkungan bernama PROJECT_ENDPOINT dalam .env file.

Penting

  • Kode mulai cepat ini menggunakan variabel lingkungan untuk konfigurasi sensitif. Jangan pernah mengunggah file .env Anda ke kontrol versi dengan memastikan bahwa .env tercatat dalam file .gitignore Anda.
  • Ingat: Jika Anda secara tidak sengaja mengunggah informasi sensitif, anggap kredensial tersebut sudah disusupi dan segera ubah.

Selanjutnya, buat index.js file dan tempelkan dalam kode berikut:

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

/**
 * This sample demonstrates how to use agent operations with code interpreter from the Azure Agents service.
 *
 * @summary demonstrates how to use agent operations with code interpreter.
 */
// @ts-nocheck
import type {
  MessageDeltaChunk,
  MessageDeltaTextContent,
  MessageImageFileContent,
  MessageTextContent,
  ThreadRun,
} from "@azure/ai-agents";
import {
  RunStreamEvent,
  MessageStreamEvent,
  DoneEvent,
  ErrorEvent,
  AgentsClient,
  isOutputOfType,
  ToolUtility,
} from "@azure/ai-agents";
import { DefaultAzureCredential } from "@azure/identity";

import * as fs from "fs";
import path from "node:path";
import "dotenv/config";

const projectEndpoint = process.env["PROJECT_ENDPOINT"] || "<project endpoint>";
const modelDeploymentName = process.env["MODEL_DEPLOYMENT_NAME"] || "gpt-4o";

export async function main(): Promise<void> {
  // Create an Azure AI Client
  const client = new AgentsClient(projectEndpoint, new DefaultAzureCredential());

  // Upload file and wait for it to be processed
  const filePath = "./data/nifty500QuarterlyResults.csv";
  const localFileStream = fs.createReadStream(filePath);
  const localFile = await client.files.upload(localFileStream, "assistants", {
    fileName: "myLocalFile",
  });

  console.log(`Uploaded local file, file ID : ${localFile.id}`);

  // Create code interpreter tool
  const codeInterpreterTool = ToolUtility.createCodeInterpreterTool([localFile.id]);

  // Notice that CodeInterpreter must be enabled in the agent creation, otherwise the agent will not be able to see the file attachment
  const agent = await client.createAgent(modelDeploymentName, {
    name: "my-agent",
    instructions: "You are a helpful agent",
    tools: [codeInterpreterTool.definition],
    toolResources: codeInterpreterTool.resources,
  });
  console.log(`Created agent, agent ID: ${agent.id}`);

  // Create a thread
  const thread = await client.threads.create();
  console.log(`Created thread, thread ID: ${thread.id}`);

  // Create a message
  const message = await client.messages.create(
    thread.id,
    "user",
    "Could you please create a bar chart in the TRANSPORTATION sector for the operating profit from the uploaded CSV file and provide the file to me?",
  );

  console.log(`Created message, message ID: ${message.id}`);

  // Create and execute a run
  const streamEventMessages = await client.runs.create(thread.id, agent.id).stream();

  for await (const eventMessage of streamEventMessages) {
    switch (eventMessage.event) {
      case RunStreamEvent.ThreadRunCreated:
        console.log(`ThreadRun status: ${(eventMessage.data as ThreadRun).status}`);
        break;
      case MessageStreamEvent.ThreadMessageDelta:
        {
          const messageDelta = eventMessage.data as MessageDeltaChunk;
          messageDelta.delta.content.forEach((contentPart) => {
            if (contentPart.type === "text") {
              const textContent = contentPart as MessageDeltaTextContent;
              const textValue = textContent.text?.value || "No text";
              console.log(`Text delta received:: ${textValue}`);
            }
          });
        }
        break;

      case RunStreamEvent.ThreadRunCompleted:
        console.log("Thread Run Completed");
        break;
      case ErrorEvent.Error:
        console.log(`An error occurred. Data ${eventMessage.data}`);
        break;
      case DoneEvent.Done:
        console.log("Stream completed.");
        break;
    }
  }

  // Delete the original file from the agent to free up space (note: this does not delete your version of the file)
  await client.files.delete(localFile.id);
  console.log(`Deleted file, file ID : ${localFile.id}`);

  // Print the messages from the agent
  const messagesIterator = client.messages.list(thread.id);
  const messagesArray = [];
  for await (const m of messagesIterator) {
    messagesArray.push(m);
  }
  console.log("Messages:", messagesArray);

  // Get most recent message from the assistant
// Get most recent message from the assistant
  const assistantMessage = messagesArray.find((msg) => msg.role === "assistant");
  if (assistantMessage) {
    // Look for an image file in the assistant's message
    const imageFileOutput = assistantMessage.content.find(content => 
      content.type === "image_file" && content.imageFile?.fileId);
    
    if (imageFileOutput) {
      try {
        // Save the newly created file
        console.log(`Saving new files...`);
        const imageFile = imageFileOutput.imageFile.fileId;
        const imageFileName = path.resolve(
          "./data/" + (await client.files.get(imageFile)).filename + "ImageFile.png",
        );
        console.log(`Image file name : ${imageFileName}`);

        const fileContent = await client.files.getContent(imageFile).asNodeStream();
        if (fileContent && fileContent.body) {
          const chunks = [];
          for await (const chunk of fileContent.body) {
            chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
          }
          const buffer = Buffer.concat(chunks);
          fs.writeFileSync(imageFileName, buffer);
          console.log(`Successfully saved image to ${imageFileName}`);
        } else {
          console.error("No file content available in the response");
        }
      } catch (error) {
        console.error("Error saving image file:", error);
      }
    } else {
      console.log("No image file found in assistant's message");
    }
  } else {
    console.log("No assistant message found");
  }

  // Iterate through messages and print details for each annotation
  console.log(`Message Details:`);
  messagesArray.forEach((m) => {
    console.log(`File Paths:`);
    console.log(`Type: ${m.content[0].type}`);
    if (isOutputOfType<MessageTextContent>(m.content[0], "text")) {
      const textContent = m.content[0] as MessageTextContent;
      console.log(`Text: ${textContent.text.value}`);
    }
    console.log(`File ID: ${m.id}`);
    // firstId and lastId are properties of the paginator, not the messages array
    // Removing these references as they don't exist in this context
  });

  // Delete the agent once done
  await client.deleteAgent(agent.id);
  console.log(`Deleted agent, agent ID: ${agent.id}`);
}

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

Jalankan kode menggunakan node index.js. Kode ini menghasilkan file gambar PNG bagan batang di sektor TRANSPORTASI untuk laba operasi dari file CSV yang diunggah dan kemudian memberikan file tersebut kepada Anda. Sampel lengkap kode sumber tersedia.

| Dokumentasi rujukan |

Prasyarat

  • Menyiapkan lingkungan agen
  • Tetapkan peran RBACPengguna Azure AI untuk setiap anggota tim yang perlu membuat atau mengedit agen menggunakan SDK atau Agent Playground
    • Peran ini harus ditetapkan pada cakupan proyek
    • Izin minimum yang diperlukan: agents/*/read, agents/*/action, agents/*/delete

Mengonfigurasi dan menjalankan agen

Komponen Deskripsi
Agen AI kustomisasi yang menggunakan model AI beserta alat.
Alat Alat membantu memperluas kemampuan agen untuk merespons dengan andal dan akurat selama percakapan. Seperti menyambungkan ke basis pengetahuan yang ditentukan pengguna sebagai dasar bagi model, atau memungkinkan pencarian di web untuk memberikan informasi terkini.
Utas Sesi percakapan antara agen dan pengguna. Thread menyimpan pesan dan secara otomatis menangani pemotongan agar konten sesuai dengan konteks model.
Pesan Pesan yang dibuat oleh agen atau pengguna. Pesan dapat menyertakan teks, gambar, dan file lainnya. Pesan disimpan sebagai daftar di Utas Percakapan.
Lari Aktivasi agen untuk mulai berjalan berdasarkan konten Thread. Agen menggunakan konfigurasinya dan Pesan dari Thread untuk melakukan tugas dengan memanggil model dan alat. Sebagai bagian dari Proses, agen menambahkan Pesan ke Utas.
Jalankan Tahap Daftar terperinci langkah yang diambil agen sebagai bagian dari suatu Proses. Agen dapat memanggil alat atau membuat Pesan selama prosesnya. Memeriksa Tahapan Eksekusi memungkinkan Anda untuk memahami bagaimana agen mencapai hasilnya.

Informasi panggilan API

Untuk mengautentikasi permintaan API Anda, gunakan perintah az login untuk masuk ke langganan Azure Anda.

az login

Selanjutnya, Anda harus mengambil token ID Entra untuk menyediakan sebagai otorisasi ke panggilan API. Ambil token menggunakan perintah CLI:

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

Atur token akses sebagai variabel lingkungan bernama AGENT_TOKEN.

Agar berhasil melakukan panggilan REST API ke Azure AI Foundry Agent Service, Anda harus menggunakan titik akhir seperti di bawah ini:

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

Misalnya, titik akhir Anda mungkin terlihat seperti:

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

Atur titik akhir ini sebagai variabel lingkungan bernama AZURE_AI_FOUNDRY_PROJECT_ENDPOINT.

Nota

  • Untuk api-version parameter, versi GA API adalah 2025-05-01 dan versi API pratinjau terbaru adalah 2025-05-15-preview. Anda harus menggunakan API pratinjau untuk alat yang sedang dalam pratinjau.
  • Pertimbangkan untuk menjadikan versi API Anda sebagai variabel lingkungan, seperti $API_VERSION.

Membuat agen

Nota

Dengan layanan Azure AI Agents model parameter memerlukan nama penyebaran model. Jika nama penyebaran model Anda berbeda dari nama model yang digunakan sebagai dasar, maka Anda perlu menyesuaikan kode Anda dengan "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"
  }'

Buat utas

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

Tambahkan pertanyaan pengguna ke topik

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

Jalankan thread

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

Mengambil status proses

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"

Dapatkan respons agen

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