Поделиться через


Краткое руководство по началу работы: Создание нового агента

Служба агента Azure AI Foundry позволяет создавать агенты ИИ, адаптированные к вашим потребностям, с помощью пользовательских инструкций и дополнены расширенными средствами, такими как интерпретатор кода и пользовательские функции.

Предпосылки

  • Подписка Azure — создайте бесплатную учетную запись.
  • Убедитесь, что пользователь, создающий учетную запись и проект, имеет роль владельца учетной записи ИИ Azure в области подписки.
    • Кроме того, роль участника или участника Cognitive Services на уровне подписки также удовлетворяет этому требованию.

Это важно

Портал Azure AI Foundry поддерживает только базовый набор агентов в настоящее время. Если вы хотите выполнить стандартную настройку агента, ознакомьтесь со статьей о настройке среды , чтобы узнать больше.

Создание учетной записи Foundry и проекта на портале Azure AI Foundry

Чтобы создать учетную запись и проект в Azure AI Foundry, выполните следующие действия.

  1. Перейдите в Azure AI Foundry. Если вы находитесь в проекте, выберите Azure AI Foundry в левом верхнем углу страницы, чтобы перейти на домашнюю страницу.

  2. Используйте поток создания агента для быстрого начала работы. Нажмите кнопку "Создать агент".

    Снимок экрана: портал Azure AI Foundry.

  3. Введите имя проекта. Если вы хотите настроить значения по умолчанию, выберите дополнительные параметры.

    Снимок экрана: дополнительные параметры для создания проекта.

  4. Нажмите кнопку "Создать".

  5. Подождите, пока будут подготовлены ресурсы.

    1. Будет создана учетная запись и проект (дочерний ресурс учетной записи).
    2. Модель gpt-4o будет автоматически развернута
    3. Агент по умолчанию будет создан
  6. После завершения вы окажетесь непосредственно на площадке для агентов и можете приступить к созданию агентов.

    Снимок экрана: игровая площадка агента.

    Замечание

    Если вы получаете ошибку разрешения при попытке настроить или создать агентов, убедитесь, что у вас есть пользователь Azure AI в проекте.

| Справочная документация | Примеры | Исходный код библиотеки | Пакет (NuGet) |

Предпосылки

  • Настройка среды агента
  • Назначьте каждому участнику команды роль пользователя Azure ИИRBAC, который должен создавать или изменять агентов с помощью набора средств разработки или Agent Playground.
    • Эта роль должна быть назначена в пределах проекта
    • Минимальные необходимые разрешения: агенты/*/чтение, агенты/*/действие, агенты/*/удаление

Настройка и запуск агента

Компонент Описание
Агент Настраиваемый ИИ, использующий модели ИИ в сочетании с инструментами.
Инструмент Средства помогают расширить способность агента надежно и точно реагировать во время беседы. Например, подключение к пользовательским базам знаний для фиксации модели или включение веб-поиска для предоставления актуальной информации.
Нить Сеанс беседы между агентом и пользователем. Потоки хранят сообщения и автоматически обрабатывают обрезку, чтобы вписать содержимое в контекст модели.
Сообщение Сообщение, созданное агентом или пользователем. Сообщения могут включать текст, изображения и другие файлы. Сообщения хранятся как список в треде.
Бежать Активация агента для запуска с учётом содержимого "Thread". Агент использует свою конфигурацию и сообщения потока для выполнения задач путем вызова моделей и инструментов. В рамках запуска агент добавляет сообщения в нить.

Создайте проект консоли .NET.

dotnet new console

Установите пакет .NET в проект. Например, если вы используете интерфейс командной строки .NET, выполните следующую команду.

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

Затем, чтобы пройти проверку подлинности запросов API и запустить программу, используйте команду az login для входа в подписку Azure.

az login

Используйте следующий код для создания и запуска агента. Чтобы запустить этот код, необходимо получить конечную точку для проекта. Эта строка находится в формате:

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

Вы можете найти конечную точку в обзоре проекта на портале Azure AI Foundry в разделе "Библиотеки>Azure AI Foundry".

Снимок экрана: конечная точка на портале Azure AI Foundry.

Например, конечная точка может выглядеть примерно так:

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

Задайте эту конечную точку в переменной среды с именем ProjectEndpoint.

Вам также потребуется имя развертывания модели. Его можно найти в левой панели навигации "Модели и конечные точки".

Снимок экрана: экран развертывания модели на портале AI Foundry.

Сохраните имя имени развертывания модели в качестве переменной среды с именем ModelDeploymentName.

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

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

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

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

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

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

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

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

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

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

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

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

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

| Справочная документация | Примеры | Исходный код библиотеки | Пакет (PyPi) |

Предпосылки

  • Настройка среды агента
  • Назначьте каждому участнику команды роль пользователя Azure ИИRBAC, который должен создавать или изменять агентов с помощью набора средств разработки или Agent Playground.
    • Эта роль должна быть назначена в пределах проекта
    • Минимальные необходимые разрешения: агенты/*/чтение, агенты/*/действие, агенты/*/удаление

Настройка и запуск агента

Компонент Описание
Агент Настраиваемый ИИ, использующий модели ИИ в сочетании с инструментами.
Инструмент Средства помогают расширить способность агента надежно и точно реагировать во время беседы. Например, подключение к пользовательским базам знаний для фиксации модели или включение веб-поиска для предоставления актуальной информации.
Нить Сеанс беседы между агентом и пользователем. Потоки хранят сообщения и автоматически обрабатывают обрезку, чтобы вписать содержимое в контекст модели.
Сообщение Сообщение, созданное агентом или пользователем. Сообщения могут включать текст, изображения и другие файлы. Сообщения хранятся как список в треде.
Бежать Активация агента для запуска с учётом содержимого "Thread". Агент использует свою конфигурацию и сообщения потока для выполнения задач путем вызова моделей и инструментов. В рамках запуска агент добавляет сообщения в нить.
Выполнить шаг Подробный список шагов, выполненных агентом в рамках выполнения задачи. Агент может вызывать инструменты или создавать сообщения во время своего выполнения. Изучение шагов выполнения позволяет лучше понять, каким образом агент достигает своих результатов.

Выполните следующие команды, чтобы установить пакеты Python.

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

Затем, чтобы пройти проверку подлинности запросов API и запустить программу, используйте команду az login для входа в подписку Azure.

az login

Используйте следующий код для создания и запуска агента. Чтобы запустить этот код, необходимо получить конечную точку для проекта. Эта строка находится в формате:

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

Вы можете найти конечную точку в обзоре проекта на портале Azure AI Foundry в разделе "Библиотеки>Azure AI Foundry".

Снимок экрана: конечная точка на портале Azure AI Foundry.

Например, конечная точка может выглядеть примерно так:

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

Задайте эту конечную точку в качестве переменной среды с именем 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")

| Справочная документация | Примеры | Исходный код библиотеки | Пакет (npm) |

Предпосылки

  • Настройка среды агента
  • Назначьте каждому участнику команды роль пользователя Azure ИИRBAC, который должен создавать или изменять агентов с помощью набора средств разработки или Agent Playground.
    • Эта роль должна быть назначена в пределах проекта
    • Минимальные необходимые разрешения: агенты/*/чтение, агенты/*/действие, агенты/*/удаление

Настройка и запуск агента

Компонент Описание
Агент Настраиваемый ИИ, использующий модели ИИ и инструменты.
Инструмент Средства помогают расширить способность агента надежно и точно реагировать во время беседы. Например, подключение к пользовательским базам знаний для фиксации модели или включение веб-поиска для предоставления актуальной информации.
Нить Сеанс беседы между агентом и пользователем. Потоки хранят сообщения и автоматически обрабатывают обрезку, чтобы вписать содержимое в контекст модели.
Сообщение Сообщение, созданное агентом или пользователем. Сообщения могут включать текст, изображения и другие файлы. Сообщения хранятся как список в треде.
Бежать Активация агента для запуска с учётом содержимого "Thread". Агент использует свою конфигурацию и сообщения потока для выполнения задач путем вызова моделей и инструментов. В рамках запуска агент добавляет сообщения в нить.
Выполнить шаг Подробный список шагов, выполненных агентом в рамках выполнения задачи. Агент может вызывать инструменты или создавать сообщения во время своего выполнения. Изучение шагов выполнения позволяет лучше понять, каким образом агент достигает своих результатов.

Ключевые объекты в этом коде включают:

Сначала инициализировать новый проект, выполнив команду:

npm init -y

Выполните следующие команды, чтобы установить необходимые пакеты npm.

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

Затем, чтобы пройти проверку подлинности запросов API и запустить программу, используйте команду az login для входа в подписку Azure.

az login

Используйте следующий код для создания и запуска агента, который отправляет CSV-файл данных, а затем создает линейчатую диаграмму из этих данных. Чтобы запустить этот код, необходимо получить конечную точку для проекта. Эта строка находится в формате:

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

Вы можете найти конечную точку в обзоре проекта на портале Azure AI Foundry в разделе "Библиотеки>Azure AI Foundry".

Снимок экрана: конечная точка на портале Azure AI Foundry.

Например, конечная точка выглядит примерно так:

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

Задайте эту конечную точку в качестве переменной среды с именем PROJECT_ENDPOINT в .env файле.

Это важно

  • В этом коде быстрого старта используются переменные среды для чувствительной конфигурации. Никогда не добавляйте .env файл в систему управления версиями, убедившись в том, что .env указан в файле .gitignore.
  • Помните: если вы случайно зафиксируете конфиденциальную информацию, считайте эти учетные данные скомпрометированными и немедленно замените их.

Затем создайте index.js файл и вставьте следующий код:

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

Запустите код с помощью node index.js. Этот код создает файл изображения PNG барной диаграммы в секторе Транспортировка для операционной прибыли из загруженного CSV-файла и предоставляет вам этот файл. Доступен полный пример исходного кода .

| Справочная документация |

Предпосылки

  • Настройка среды агента
  • Назначьте каждому участнику команды роль пользователя Azure ИИRBAC, который должен создавать или изменять агентов с помощью набора средств разработки или Agent Playground.
    • Эта роль должна быть назначена в пределах проекта
    • Минимальные необходимые разрешения: агенты/*/чтение, агенты/*/действие, агенты/*/удаление

Настройка и запуск агента

Компонент Описание
Агент Настраиваемый ИИ, использующий модели ИИ в сочетании с инструментами.
Инструмент Средства помогают расширить способность агента надежно и точно реагировать во время беседы. Например, подключение к пользовательским базам знаний для фиксации модели или включение веб-поиска для предоставления актуальной информации.
Нить Сеанс беседы между агентом и пользователем. Потоки хранят сообщения и автоматически обрабатывают обрезку, чтобы вписать содержимое в контекст модели.
Сообщение Сообщение, созданное агентом или пользователем. Сообщения могут включать текст, изображения и другие файлы. Сообщения хранятся как список в треде.
Бежать Активация агента для запуска с учётом содержимого "Thread". Агент использует свою конфигурацию и сообщения потока для выполнения задач путем вызова моделей и инструментов. В рамках запуска агент добавляет сообщения в нить.
Выполнить шаг Подробный список шагов, выполненных агентом в рамках выполнения задачи. Агент может вызывать инструменты или создавать сообщения во время своего выполнения. Изучение шагов выполнения позволяет лучше понять, каким образом агент достигает своих результатов.

Сведения о вызове API

Чтобы выполнить проверку подлинности запросов API, используйте команду az login для входа в подписку Azure.

az login

Затем необходимо получить токен Entra ID, чтобы использовать его в качестве авторизации при вызовах API. Извлеките токен с помощью команды CLI:

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

Задайте маркер доступа в качестве переменной среды с именем AGENT_TOKEN.

Чтобы успешно выполнять вызовы REST API к службе агента Azure AI Foundry, необходимо использовать конечную точку, как показано ниже:

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

Например, конечная точка может выглядеть примерно так:

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

Задайте эту конечную точку в качестве переменной среды с именем AZURE_AI_FOUNDRY_PROJECT_ENDPOINT.

Замечание

  • Для параметра api-version используется GA версия API 2025-05-01, а последняя версия предварительного API 2025-05-15-preview. Необходимо использовать API предварительной версии для средств, которые находятся в предварительной версии.
  • Можно сделать версию API переменной среды, например $API_VERSION.

Создание агента

Замечание

Для службы агентов ИИ Azure для model параметра требуется имя развертывания модели. Если имя развертывания модели отличается от имени базовой модели, то вы измените код на "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"
  }'

Создать тему

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

Добавьте вопрос пользователя в тему

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

Запустить поток

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

Получить статус выполнения

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"

Получение ответа агента

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