Exploration du noyau sémantique OpenAIAssistantAgent
Important
Cette fonctionnalité se trouve dans la phase candidate de mise en production. Les fonctionnalités à ce stade sont presque complètes et généralement stables, bien qu’elles puissent subir des améliorations mineures ou des optimisations avant d’atteindre une disponibilité générale complète.
La documentation détaillée de l’API relative à cette discussion est disponible à l’adresse suivante :
Les agents sont actuellement indisponibles en Java.
Qu’est-ce qu’un Assistant ?
L’API Assistant OpenAI est une interface spécialisée conçue pour des capacités d’IA plus avancées et interactives, permettant aux développeurs de créer des agents personnalisés et multi-étapes orientés vers les tâches. Contrairement à l’API d’achèvement de conversation, qui se concentre sur des échanges conversationnels simples, l’API Assistant permet des interactions dynamiques pilotées par les objectifs avec des fonctionnalités supplémentaires telles que l’interpréteur de code et la recherche de fichiers.
Préparation de votre environnement de développement
Pour poursuivre le développement d’un OpenAIAIAssistantAgent
, configurez votre environnement de développement avec les packages appropriés.
Ajoutez le package Microsoft.SemanticKernel.Agents.OpenAI
à votre projet :
dotnet add package Microsoft.SemanticKernel.Agents.AzureAI --prerelease
Vous pouvez également inclure le package Azure.Identity
:
dotnet add package Azure.Identity
Installez le package semantic-kernel
avec les dépendances facultatives Azure :
pip install semantic-kernel[azure]
Les agents sont actuellement indisponibles en Java.
Création d’un OpenAIAssistantAgent
La création d’un OpenAIAssistant
nécessite l’appel d’un service distant, qui est géré de manière asynchrone. Pour gérer cela, la OpenAIAssistantAgent
est instanciée par le biais d'une méthode statique de fabrication, ce qui garantit que le processus s'effectue de manière non bloquante. Cette méthode extrait la complexité de l’appel asynchrone, en renvoyant une promesse ou un futur une fois que l’Assistant est entièrement initialisé et prêt à être utilisé.
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,
)
Les agents sont actuellement indisponibles en Java.
Récupération d’un OpenAIAssistantAgent
Une fois créé, l’identificateur de l’Assistant peut être accessible via son identificateur. Cet identificateur peut être utilisé pour créer une OpenAIAssistantAgent
à partir d’une définition d’assistant existante.
Pour .NET, l’identificateur de l’agent est exposé sous la forme d’une string
propriété définie par n’importe quel agent.
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,
)
Les agents sont actuellement indisponibles en Java.
Utilisation d’un OpenAIAssistantAgent
Comme avec tous les aspects de l’API Assistant, les conversations sont stockées à distance. Chaque conversation est appelée thread et identifiée par un identificateur uniquestring
. Les interactions avec votre OpenAIAssistantAgent
sont liées à cet identificateur de thread spécifique qui doit être spécifié lors de l’appel de l’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)
Les agents sont actuellement indisponibles en Java.
Suppression d’un OpenAIAssistantAgent
Étant donné que la définition de l’assistant est stockée à distance, elle persistera si elle n’est pas supprimée.
La suppression d’une définition d’assistant peut être effectuée directement avec le AssistantClient
.
Remarque : une tentative d’utilisation d’une instance d’agent après la suppression entraîne une exception de service.
Pour .NET, l’identificateur de l’agent est exposé sous la forme d’une string
Agent.Id
propriété définie par n’importe quel agent.
AssistantClient client = OpenAIAssistantAgent.CreateAzureOpenAIClient(...).GetAssistantClient();
Assistant assistant = await this.AssistantClient.DeleteAssistantAsync("<assistant id>");
await agent.delete()
is_deleted = agent._is_deleted
Les agents sont actuellement indisponibles en Java.
Procédure
Pour obtenir un exemple de bout en bout pour un OpenAIAssistantAgent
, consultez :
- guide pratique :
OpenAIAssistantAgent
interpréteur de code - Guide pratique :
OpenAIAssistantAgent
recherche de fichiers