Menjelajahi Kernel Semantik OpenAIAssistantAgent
Penting
Fitur ini sedang dalam tahap kandidat rilis. Fitur pada tahap ini hampir lengkap dan umumnya stabil, meskipun mungkin mengalami penyempurnaan atau pengoptimalan kecil sebelum mencapai ketersediaan umum penuh.
Dokumentasi API terperinci yang terkait dengan diskusi ini tersedia di:
Agen saat ini tidak tersedia di Java.
Apa itu Asisten?
OpenAI Assistant API adalah antarmuka khusus yang dirancang untuk kemampuan AI yang lebih canggih dan interaktif, memungkinkan pengembang untuk membuat agen berorientasi tugas yang dipersonalisasi dan multi-langkah. Tidak seperti API Penyelesaian Obrolan, yang berfokus pada pertukaran percakapan sederhana, Assistant API memungkinkan interaksi dinamis berbasis tujuan dengan fitur tambahan seperti penerjemah kode dan pencarian file.
Menyiapkan lingkungan pengembangan Anda
Untuk melanjutkan pengembangan OpenAIAIAssistantAgent
, konfigurasikan lingkungan pengembangan Anda dengan paket yang sesuai.
Tambahkan paket Microsoft.SemanticKernel.Agents.OpenAI
ke proyek Anda:
dotnet add package Microsoft.SemanticKernel.Agents.AzureAI --prerelease
Anda mungkin juga ingin menyertakan paket Azure.Identity
:
dotnet add package Azure.Identity
Instal paket semantic-kernel
dengan dependensi Azure opsional:
pip install semantic-kernel[azure]
Agen saat ini tidak tersedia di Java.
Membuat OpenAIAssistantAgent
Membuat OpenAIAssistant
memerlukan pemanggilan layanan jarak jauh, yang ditangani dengan cara asinkron. Untuk mengelola ini, OpenAIAssistantAgent
dibuat melalui metode pabrik statis, memastikan proses terjadi dengan cara yang tanpa pemblokiran. Metode ini mengabstraksi kompleksitas panggilan asinkron, mengembalikan janji atau masa depan setelah asisten sepenuhnya diinisialisasi dan siap digunakan.
AssistantClient client = OpenAIAssistantAgent.CreateAzureOpenAIClient(...).GetAssistantClient();
Assistant assistant =
await this.AssistantClient.CreateAssistantAsync(
"<model name>",
"<agent name>",
instructions: "<agent instructions>");
OpenAIAssistantAgent agent = new(assistant, client);
from semantic_kernel.agents.open_ai import AzureAssistantAgent, OpenAIAssistantAgent
# Set up the client and model using Azure OpenAI Resources
client, model = AzureAssistantAgent.setup_resources()
# Define the assistant definition
definition = await client.beta.assistants.create(
model=model,
instructions="<instructions>",
name="<agent name>",
)
# Create the AzureAssistantAgent instance using the client and the assistant definition
agent = AzureAssistantAgent(
client=client,
definition=definition,
)
# or
# Set up the client and model using OpenAI Resources
client, model = OpenAIAssistantAgent.setup_resources()
# Define the assistant definition
definition = await client.beta.assistants.create(
model=model,
instructions="<instructions>",
name="<agent name>",
)
# Create the OpenAIAssistantAgent instance using the client and the assistant definition
agent = OpenAIAssistantAgent(
client=client,
definition=definition,
)
Agen saat ini tidak tersedia di Java.
Mengambil data OpenAIAssistantAgent
Setelah dibuat, pengidentifikasi asisten dapat diakses melalui pengidentifikasi tersebut. Pengidentifikasi ini dapat digunakan untuk membuat OpenAIAssistantAgent
berdasarkan definisi asisten yang sudah ada.
Untuk .NET, pengidentifikasi agen diekspos sebagai string
melalui properti yang ditentukan oleh agen mana pun.
AssistantClient client = OpenAIAssistantAgent.CreateAzureOpenAIClient(...).GetAssistantClient();
Assistant assistant = await this.AssistantClient.GetAssistantAsync("<assistant id>");
OpenAIAssistantAgent agent = new(assistant, client);
# Using Azure OpenAI Resources
# Create the client using Azure OpenAI resources and configuration
client, model = AzureAssistantAgent.setup_resources()
# Create the assistant definition
definition = await client.beta.assistants.create(
model=model,
name="<agent name>",
instructions="<instructions>",
)
# Store the assistant ID
assistant_id = definition.id
# Retrieve the assistant definition from the server based on the assistant ID
new_asst_definition = await client.beta.assistants.retrieve(assistant_id)
# Create the AzureAssistantAgent instance using the client and the assistant definition
agent = AzureAssistantAgent(
client=client,
definition=new_asst_definition,
)
Agen saat ini tidak tersedia di Java.
Menggunakan OpenAIAssistantAgent
Seperti semua aspek Assistant API, percakapan disimpan dari jarak jauh. Setiap percakapan disebut sebagai utas dan diidentifikasi oleh ID unik string
. Interaksi dengan OpenAIAssistantAgent
Anda terkait dengan pengidentifikasi thread khusus ini yang harus ditentukan saat menghubungi agen.
// 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)
Agen saat ini tidak tersedia di Java.
Menghapus sebuah OpenAIAssistantAgent
Karena definisi asisten disimpan dari jarak jauh, definisi akan bertahan jika tidak dihapus.
Menghapus definisi asisten dapat dilakukan langsung dengan AssistantClient
.
Catatan: Mencoba menggunakan instans agen setelah dihapus akan menghasilkan pengecualian layanan.
Untuk .NET, pengidentifikasi agen diekspos sebagai string
melalui properti Agent.Id
yang ditentukan oleh agen apa pun.
AssistantClient client = OpenAIAssistantAgent.CreateAzureOpenAIClient(...).GetAssistantClient();
Assistant assistant = await this.AssistantClient.DeleteAssistantAsync("<assistant id>");
await agent.delete()
is_deleted = agent._is_deleted
Agen saat ini tidak tersedia di Java.
Panduan Cara
Untuk contoh lengkap untuk OpenAIAssistantAgent
, lihat:
-
Panduan:
OpenAIAssistantAgent
Penerjemah Kode -
OpenAIAssistantAgent
Pencarian File