Zkoumání sémantického jádra OpenAIAssistantAgent
Důležitý
Tato funkce je ve fázi před vydáním. Funkce v této fázi jsou téměř dokončené a obecně stabilní, i když mohou před dosažením úplné obecné dostupnosti projít menší vylepšení nebo optimalizace.
Podrobná dokumentace k rozhraní API související s touto diskuzí je k dispozici na adrese:
Agenti momentálně nejsou v Javě k dispozici.
Co je asistent?
Rozhraní API pro OpenAI Assistant je specializované rozhraní navržené pro pokročilejší a interaktivní funkce AI, které vývojářům umožňují vytvářet přizpůsobené a vícekrokové agenty orientované na úlohy. Na rozdíl od rozhraní API pro dokončování chatu, které se zaměřuje na jednoduché konverzační výměny, umožňuje rozhraní API pomocníka dynamické interakce řízené cíli s dalšími funkcemi, jako je interpret kódu a vyhledávání souborů.
- Průvodce asistentem OpenAI
- API OpenAI Assistant
- API asistenta v Azure
Příprava vývojového prostředí
Pokud chcete pokračovat v vývoji OpenAIAIAssistantAgent
, nakonfigurujte vývojové prostředí s příslušnými balíčky.
Přidejte do projektu balíček Microsoft.SemanticKernel.Agents.OpenAI
:
dotnet add package Microsoft.SemanticKernel.Agents.AzureAI --prerelease
Můžete také zahrnout balíček Azure.Identity
:
dotnet add package Azure.Identity
Nainstalujte balíček semantic-kernel
s volitelnými závislostmi Azure:
pip install semantic-kernel[azure]
Agenti momentálně nejsou v Javě k dispozici.
Vytvoření OpenAIAssistantAgent
Vytvoření OpenAIAssistant
vyžaduje vyvolání vzdálené služby, která se zpracovává asynchronně. Aby se toho dosáhlo, OpenAIAssistantAgent
je instanciováno prostřednictvím statické tovární metody, což zajistí, aby proces probíhal neblokujícím způsobem. Tato metoda abstrahuje složitost asynchronního volání a vrací příslib nebo budoucnost, jakmile je asistent plně inicializován a připraven k použití.
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,
)
Agenti momentálně nejsou v Javě k dispozici.
Načtení OpenAIAssistantAgent
Po vytvoření může být identifikátor asistenta přístupný prostřednictvím jeho identifikátoru. Tento identifikátor lze použít k vytvoření OpenAIAssistantAgent
z existující definice asistenta.
Pro .NET je identifikátor agenta vystaven jako string
prostřednictvím vlastnosti definované libovolným agentem.
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,
)
Agenti momentálně nejsou v Javě k dispozici.
Použití OpenAIAssistantAgent
Stejně jako u všech aspektů rozhraní API pomocníka se konverzace ukládají vzdáleně. Každá konverzace se označuje jako vlákno a identifikuje se jedinečným string
identifikátorem. Interakce s vaším OpenAIAssistantAgent
jsou svázané s tímto konkrétním identifikátorem vlákna, který je potřeba zadat při volání agenta/
// 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)
Agenti momentálně nejsou v Javě k dispozici.
Odstranění jednoho OpenAIAssistantAgent
Vzhledem k tomu, že definice asistenta je uložená vzdáleně, zůstane v případě, že se neodstraní.
Odstranění definice asistenta může být provedeno přímo s AssistantClient
.
Poznámka: Při pokusu o použití instance agenta po odstranění dojde k výjimce služby.
Pro .NET je identifikátor agenta vystaven jako string
prostřednictvím Agent.Id
vlastnosti definované libovolným agentem.
AssistantClient client = OpenAIAssistantAgent.CreateAzureOpenAIClient(...).GetAssistantClient();
Assistant assistant = await this.AssistantClient.DeleteAssistantAsync("<assistant id>");
await agent.delete()
is_deleted = agent._is_deleted
Agenti momentálně nejsou v Javě k dispozici.
Postupy
Pro úplný příklad pro OpenAIAssistantAgent
, viz: