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


Изучение агента помощника по использованию семантического ядра Open AI (экспериментальный)

Предупреждение

Платформа агента семантического ядра является экспериментальной, по-прежнему в разработке и подлежит изменению.

Подробная документация по API, связанная с этим обсуждением, доступна по адресу:

Агенты в настоящее время недоступны в Java.

Что такое помощник?

API Помощника OpenAI — это специализированный интерфейс, предназначенный для более сложных и интерактивных возможностей ИИ, что позволяет разработчикам создавать персонализированные и многофакторные агенты, ориентированные на задачи. В отличие от API завершения чата, который ориентирован на простые обмены беседами, API помощника позволяет динамическим, ориентированным на цель взаимодействия с дополнительными функциями, такими как интерпретатор кода и поиск файлов.

Создание агента Помощника по открытому ИИ

Для создания помощника open AI требуется вызов удаленной службы, которая обрабатывается асинхронно. Чтобы управлять этим, агент Open AI Assistant создается с помощью статического метода фабрики, гарантируя, что процесс выполняется неблокирующим образом. Этот метод абстрагирует сложность асинхронного вызова, возвращая обещание или будущее после полного инициализации и готовности помощника к использованию.

OpenAIAssistantAgent agent =
    await OpenAIAssistantAgent.CreateAsync(
        OpenAIClientProvider.ForAzureOpenAI(/*<...service configuration>*/),
        new OpenAIAssistantDefinition("<model name>")
        {
          Name = "<agent name>",
          Instructions = "<agent instructions>",
        },
        new Kernel());
azure_agent = await AzureAssistantAgent.create(
    kernel=kernel, 
    service_id=service_id, 
    name="<agent name>", 
    instructions="<agent instructions>"
)

# or

openai_agent = await OpenAIAssistantAgent.create(
    kernel=kernel, 
    service_id=service_id, 
    name="<agent name>", 
    instructions="<agent instructions>"
)

Агенты в настоящее время недоступны в Java.

Получение агента Помощника по открытому искусственному интеллекту

После создания идентификатор помощника может получить доступ через его идентификатор. Этот идентификатор можно использовать для создания агента Помощника по open AI из существующего определения помощника.

Для .NET идентификатор агента предоставляется в виде string свойства, определенного любым агентом.

OpenAIAssistantAgent agent =
    await OpenAIAssistantAgent.RetrieveAsync(
        OpenAIClientProvider.ForAzureOpenAI(/*<...service configuration>*/),
        "<your agent id>",
        new Kernel());
agent = await OpenAIAssistantAgent.retrieve(id=agent_id, kernel=kernel)

# or

agent = await AzureAssistantAgent.retrieve(id=agent_id, kernel=kernel)

Агенты в настоящее время недоступны в Java.

Использование агента Помощника по open AI

Как и во всех аспектах API помощника, беседы хранятся удаленно. Каждая беседа называется потоком и определяется уникальным string идентификатором. Взаимодействия с агентом Помощника OpenAI привязаны к этому конкретному идентификатору потока, который необходимо указать при вызове агента/

// Define agent
OpenAIAssistantAgent agent = ...;

// Create a thread for the agent conversation.
string threadId = await agent.CreateThreadAsync();

// Add a user message to the conversation
chat.Add(threadId, new ChatMessageContent(AuthorRole.User, "<user input>"));

// Generate the agent response(s)
await foreach (ChatMessageContent response in agent.InvokeAsync(threadId))
{
  // Process agent response(s)...
}

// Delete the thread when it is no longer needed
await agent.DeleteThreadAsync(threadId);
# Define agent
openai_agent = await ...

# Create a thread for the agent conversation
thread_id = await agent.create_thread()

# Add a user message to the conversation
await agent.add_chat_message(
  thread_id=thread_id, 
  message=ChatMessageContent(role=AuthorRole.USER, content="<user input>"),
)

# Generate the agent response(s)
async for response in agent.invoke(thread_id=thread_id):
  # process agent response(s)...

# Delete the thread when it is no longer needed
await agent.delete_thread(thread_id)

Агенты в настоящее время недоступны в Java.

Удаление агента Помощника по открытому искусственному интеллекту

Так как определение помощника хранится удаленно, оно поддерживает возможность самостоятельного удаления. Это позволяет удалить агент из системы, если он больше не нужен.

Примечание. Попытка использовать экземпляр агента после удаления приводит к исключению.

Для .NET идентификатор агента предоставляется в виде string свойства, определенного Agent.Id любым агентом.

// Perform the deletion
await agent.DeleteAsync();

// Inspect whether an agent has been deleted
bool isDeleted = agent.IsDeleted();
await agent.delete()

is_deleted = agent._is_deleted

Агенты в настоящее время недоступны в Java.

Инструкции

Полный пример агента Open AI Assistant см. в следующих примерах: