Semantic Kernel Open AI Assistant Agent の探索 (試験段階)
警告
Semantic Kernel Agent Framework はまだ開発中であり、変更される可能性があります。
この説明に関連する詳細な API ドキュメントは、次のサイトで入手できます。
現在、エージェントは Java では使用できません。
アシスタントとは
OpenAI Assistant API は、より高度で対話型の AI 機能用に設計された特殊なインターフェイスであり、開発者はカスタマイズされた複数ステップのタスク指向エージェントを作成できます。 単純な会話交換に焦点を当てた Chat Completion API とは異なり、Assistant API を使用すると、コード インタープリターやファイル検索などの追加機能を使用して、動的な目標主導の対話を行うことができます。
Open AI Assistant Agent の作成
Open AI Assistant を作成するには、非同期的に処理されるリモート サービスを呼び出す必要があります。 これを管理するために、 Open AI Assistant Agent は静的ファクトリ メソッドを使用してインスタンス化され、プロセスが非ブロッキング方式で確実に実行されます。 このメソッドは非同期呼び出しの複雑さを抽象化し、アシスタントが完全に初期化され、使用できる状態になると、promise または future を返します。
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 Assistant Agent の取得
作成されたアシスタントの識別子は、その識別子を介してアクセスできます。 この識別子は、既存のアシスタント定義から Open AI Assistant Agent を作成するために使用できます。
.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 Assistant Agent の使用
Assistant API のすべての側面と同様に会話はリモートで格納されます。 各会話は thread と呼ばれ、一意の string
識別子によって識別されます。 OpenAI Assistant Agent との対話は、エージェントを呼び出すときに指定する必要があるこの特定のスレッド識別子に関連付けられます。
// 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 では使用できません。
Open AI Assistant Agent の削除
アシスタントの定義はリモートに保存されるため、自己削除機能をサポートします。 これにより、不要になったときにエージェントをシステムから削除できます。
注: 削除された後にエージェント インスタンスを使用しようとすると、例外が発生します。
.NET の場合、エージェント識別子は、任意のエージェントによって定義された Agent.Id
プロパティを介してstring
として公開されます。
// 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 Agent のエンド ツー エンドの例についてはを参照してください。