Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Anlam Çekirdeği Keşfi
Önemli
gibi OpenAIAssistantAgenttek aracılı özellikler, sürüm adayı aşamasındadır. Bu özellikler neredeyse eksiksiz ve genel olarak kararlıdır, ancak tam genel kullanıma ulaşmadan önce küçük iyileştirmeler veya iyileştirmeler gerçekleştirebilirler.
Tavsiye
Bu tartışmayla ilgili ayrıntılı API belgelerine şu adreste ulaşabilirsiniz:
Tavsiye
Bu tartışmayla ilgili ayrıntılı API belgelerine şu adreste ulaşabilirsiniz:
Özellik şu anda Java'da kullanılamıyor.
Yardımcı nedir?
OpenAI Yardımcıları API'si, geliştiricilerin kişiselleştirilmiş ve çok adımlı görev odaklı aracılar oluşturmasına olanak tanıyan, daha gelişmiş ve etkileşimli yapay zeka özellikleri için tasarlanmış özel bir arabirimdir. Basit konuşma değişimlerine odaklanan Sohbet Tamamlama API'sinin aksine, Yardımcı API kod yorumlayıcı ve dosya arama gibi ek özelliklerle dinamik, hedef odaklı etkileşimlere olanak tanır.
Geliştirme Ortamınızı Hazırlama
OpenAIAssistantAgentgeliştirmeye devam etmek için geliştirme ortamınızı uygun paketlerle yapılandırın.
projenize Microsoft.SemanticKernel.Agents.OpenAI paketini ekleyin:
dotnet add package Microsoft.SemanticKernel.Agents.OpenAI --prerelease
ayrıca Azure.Identity paketini de dahil etmek isteyebilirsiniz:
dotnet add package Azure.Identity
semantic-kernel Paketi yükleyin:
pip install semantic-kernel
Özellik şu anda Java'da kullanılamıyor.
Bir OpenAIAssistantAgent oluşturma
Bir OpenAIAssistant oluşturmak için önce uzak hizmetle iletişim kurabilecek bir istemci oluşturmanız gerekir.
AssistantClient client = OpenAIAssistantAgent.CreateAzureOpenAIClient(...).GetAssistantClient();
Assistant assistant =
await client.CreateAssistantAsync(
"<model name>",
"<agent name>",
instructions: "<agent instructions>");
OpenAIAssistantAgent agent = new(assistant, client);
from semantic_kernel.agents import AssistantAgentThread, AzureAssistantAgent, OpenAIAssistantAgent
from semantic_kernel.connectors.ai.open_ai import AzureOpenAISettings, OpenAISettings
# Set up the client and model using Azure OpenAI Resources
client = AzureAssistantAgent.create_client()
# Define the assistant definition
definition = await client.beta.assistants.create(
model=AzureOpenAISettings().chat_deployment_name,
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 = OpenAIAssistantAgent.create_client()
# Define the assistant definition
definition = await client.beta.assistants.create(
model=OpenAISettings().chat_model_id,
instructions="<instructions>",
name="<agent name>",
)
# Create the OpenAIAssistantAgent instance using the client and the assistant definition
agent = OpenAIAssistantAgent(
client=client,
definition=definition,
)
Özellik şu anda Java'da kullanılamıyor.
OpenAIAssistantAgent geri alma
Oluşturulduktan sonra, yardımcının kimliğine, tanımlayıcısı üzerinden erişilebilir. Bu tanımlayıcı, var olan bir yardımcı tanımından OpenAIAssistantAgent oluşturmak için kullanılabilir.
.NET için aracı tanımlayıcısı, herhangi bir aracı tarafından tanımlanan özellik aracılığıyla string olarak görünür hale getirilir.
AssistantClient client = OpenAIAssistantAgent.CreateAzureOpenAIClient(...).GetAssistantClient();
Assistant assistant = await client.GetAssistantAsync("<assistant id>");
OpenAIAssistantAgent agent = new(assistant, client);
# Using Azure OpenAI Resources
# Create the client using Azure OpenAI resources and configuration
client = AzureAssistantAgent.create_client()
# Create the assistant definition
definition = await client.beta.assistants.create(
model=AzureOpenAISettings().chat_deployment_name,
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,
)
Özellik şu anda Java'da kullanılamıyor.
Bir OpenAIAssistantAgent kullanmak
Yardımcı API'sinin tüm yönleriyle olduğu gibi konuşmalar da uzaktan depolanır. Her konuşma bir konu olarak adlandırılır ve benzersiz string tanımlayıcıyla belirlenir. Sizin OpenAIAssistantAgent ile etkileşimleriniz, bu belirli iş parçacığı tanımlayıcısına bağlıdır. Yardımcı API iş parçacığının özellikleri, OpenAIAssistantAgentThread'in bir uygulaması olan AgentThread sınıfı aracılığıyla soyutlanır.
OpenAIAssistantAgent halihazırda yalnızca OpenAIAssistantAgentThreadtüründe iş parçacıklarını destekler.
OpenAIAssistantAgent'i, bir AgentThread belirtmeden çağırabilir ve bir yanıtın parçası olarak yeni bir iş parçacığıyla birlikte yeni bir AgentThread döndürülebilir.
// Define agent
OpenAIAssistantAgent agent = ...;
AgentThread? agentThread = null;
// Generate the agent response(s)
await foreach (AgentResponseItem<ChatMessageContent> response in agent.InvokeAsync(new ChatMessageContent(AuthorRole.User, "<user input>")))
{
// Process agent response(s)...
agentThread = response.Thread;
}
// Delete the thread if no longer needed
if (agentThread is not null)
{
await agentThread.DeleteAsync();
}
oluşturduğunuz bir OpenAIAssistantAgent ile de AgentThread çağıralabilirsiniz.
// Define agent
OpenAIAssistantAgent agent = ...;
// Create a thread with some custom metadata.
AgentThread agentThread = new OpenAIAssistantAgentThread(client, metadata: myMetadata);
// Generate the agent response(s)
await foreach (ChatMessageContent response in agent.InvokeAsync(new ChatMessageContent(AuthorRole.User, "<user input>"), agentThread))
{
// Process agent response(s)...
}
// Delete the thread when it is no longer needed
await agentThread.DeleteAsync();
Ayrıca, daha önceki bir konuşmayı kimliğine göre sürdüren bir OpenAIAssistantAgentThread oluşturabilirsiniz.
// Create a thread with an existing thread id.
AgentThread agentThread = new OpenAIAssistantAgentThread(client, "existing-thread-id");
from semantic_kernel.agents import AssistantAgentThread, AzureAssistantAgent
# Define agent
openai_agent = await ...
# Create a thread for the agent conversation
thread: AssistantAgentThread = None
# Generate the agent response(s)
async for response in agent.invoke(messages="user input", thread=thread):
# process agent response(s)...
thread = response.thread
# Delete the thread when it is no longer needed
await thread.delete() if thread else None
Özellik şu anda Java'da kullanılamıyor.
Bir OpenAIAssistantAgent'ı silme
Yardımcının tanımı uzaktan depolandığından, silinmezse kalıcı olur.
Bir yardımcı tanımını silme işlemi doğrudan istemciyle gerçekleştirilebilir.
Not: Silinmiş bir aracı örneğini kullanmaya çalışmak, bir hizmet hatasıyla sonuçlanacaktır.
.NET için, aracı tanımlayıcısı, herhangi bir aracı tarafından tanımlanan bir özellik olarak string aracılığıyla görünür hale getirilir.
AssistantClient client = OpenAIAssistantAgent.CreateAzureOpenAIClient(...).GetAssistantClient();
await client.DeleteAssistantAsync("<assistant id>");
await client.beta.assistants.delete(agent.id)
Özellik şu anda Java'da kullanılamıyor.
OpenAIAssistantAgent kullanarak Ara İletileri Yönetme
Anlam Çekirdeği OpenAIAssistantAgent , kullanıcı sorgularını veya sorularını yerine getiren bir aracı çağırmak için tasarlanmıştır. Çağırma sırasında aracı, son yanıtı türetmek için araçlar çalıştırabilir. Bu işlem sırasında üretilen ara iletilere erişmek için, çağıranlar FunctionCallContent veya FunctionResultContent örneklerini işleyen bir geri çağırma işlevi sağlayabilir.
OpenAIAssistantAgentiçin geri çağırma belgeleri yakında sunulacaktır.
on_intermediate_message geri çağırmayı agent.invoke(...) veya agent.invoke_stream(...) içinde yapılandırmak, arayanın, ajanın nihai yanıtını formüle etme süreci sırasında üretilen ara mesajları almasına olanak tanır.
import asyncio
from typing import Annotated
from semantic_kernel.agents import AssistantAgentThread, AzureAssistantAgent
from semantic_kernel.connectors.ai.open_ai import AzureOpenAISettings
from semantic_kernel.contents import AuthorRole, ChatMessageContent, FunctionCallContent, FunctionResultContent
from semantic_kernel.functions import kernel_function
# Define a sample plugin for the sample
class MenuPlugin:
"""A sample Menu Plugin used for the concept sample."""
@kernel_function(description="Provides a list of specials from the menu.")
def get_specials(self) -> Annotated[str, "Returns the specials from the menu."]:
return """
Special Soup: Clam Chowder
Special Salad: Cobb Salad
Special Drink: Chai Tea
"""
@kernel_function(description="Provides the price of the requested menu item.")
def get_item_price(
self, menu_item: Annotated[str, "The name of the menu item."]
) -> Annotated[str, "Returns the price of the menu item."]:
return "$9.99"
# This callback function will be called for each intermediate message,
# which will allow one to handle FunctionCallContent and FunctionResultContent.
# If the callback is not provided, the agent will return the final response
# with no intermediate tool call steps.
async def handle_intermediate_steps(message: ChatMessageContent) -> None:
for item in message.items or []:
if isinstance(item, FunctionResultContent):
print(f"Function Result:> {item.result} for function: {item.name}")
elif isinstance(item, FunctionCallContent):
print(f"Function Call:> {item.name} with arguments: {item.arguments}")
else:
print(f"{item}")
async def main():
# Create the client using Azure OpenAI resources and configuration
client = AzureAssistantAgent.create_client()
# Define the assistant definition
definition = await client.beta.assistants.create(
model=AzureOpenAISettings().chat_deployment_name,
name="Host",
instructions="Answer questions about the menu.",
)
# Create the AzureAssistantAgent instance using the client and the assistant definition and the defined plugin
agent = AzureAssistantAgent(
client=client,
definition=definition,
plugins=[MenuPlugin()],
)
# Create a new thread for use with the assistant
# If no thread is provided, a new thread will be
# created and returned with the initial response
thread: AssistantAgentThread = None
user_inputs = [
"Hello",
"What is the special soup?",
"What is the special drink?",
"How much is that?",
"Thank you",
]
try:
for user_input in user_inputs:
print(f"# {AuthorRole.USER}: '{user_input}'")
async for response in agent.invoke(
messages=user_input,
thread=thread,
on_intermediate_message=handle_intermediate_steps,
):
print(f"# {response.role}: {response}")
thread = response.thread
finally:
await thread.delete() if thread else None
await client.beta.assistants.delete(assistant_id=agent.id)
if __name__ == "__main__":
asyncio.run(main())
Aşağıda aracı çağırma işleminden alınan örnek çıkış gösterilmektedir:
AuthorRole.USER: 'Hello'
AuthorRole.ASSISTANT: Hello! How can I assist you today?
AuthorRole.USER: 'What is the special soup?'
Function Call:> MenuPlugin-get_specials with arguments: {}
Function Result:>
Special Soup: Clam Chowder
Special Salad: Cobb Salad
Special Drink: Chai Tea
for function: MenuPlugin-get_specials
AuthorRole.ASSISTANT: The special soup is Clam Chowder. Would you like to know more about the specials or
anything else?
AuthorRole.USER: 'What is the special drink?'
AuthorRole.ASSISTANT: The special drink is Chai Tea. If you have any more questions, feel free to ask!
AuthorRole.USER: 'How much is that?'
Function Call:> MenuPlugin-get_item_price with arguments: {"menu_item":"Chai Tea"}
Function Result:> $9.99 for function: MenuPlugin-get_item_price
AuthorRole.ASSISTANT: The Chai Tea is priced at $9.99. If there's anything else you'd like to know,
just let me know!
AuthorRole.USER: 'Thank you'
AuthorRole.ASSISTANT: You're welcome! If you have any more questions or need further assistance, feel free to
ask. Enjoy your day!
Özellik şu anda Java'da kullanılamıyor.
Bildirim Temelli Belirtim
Bildirim temelli özellikleri kullanma belgeleri yakında kullanıma sunulacaktır.
Önemli
Bu özellik deneysel aşamadadır. Bu aşamadaki özellikler geliştirme aşamasındadır ve önizleme veya sürüm adayı aşamasına geçmeden önce değiştirilebilir.
OpenAIAssistantAgent YAML bildirimsel belirtiminden örnek oluşturmayı destekler. Bildirim temelli yaklaşım, aracı özelliklerini, yönergelerini, model yapılandırmasını, araçlarını ve diğer seçenekleri tek, denetlenebilir bir belgede tanımlamanızı sağlar. Bu, aracı bileşiminin taşınabilir olmasını ve farklı ortamlar arasında kolay bir şekilde yönetilmesini sağlar.
Uyarı
Bildirim temelli YAML'de listelenen tüm araçlar, işlevler veya eklentiler, inşaat zamanında aracı tarafından kullanılabilir olmalıdır. Çekirdek tabanlı eklentiler için bu, çekirdekte kayıtlı olmaları gerektiği anlamına gelir. Kod Yorumlayıcı veya Dosya Arama gibi yerleşik araçlar için doğru yapılandırma ve kimlik bilgileri sağlanmalıdır. Ajan yükleyicisi sıfırdan fonksiyon oluşturmaz. Gerekli bir bileşen eksikse aracı oluşturma başarısız olur.
Bildirim Temelli Belirtimi Kullanma
Bu bölüm, olası tüm YAML yapılandırmalarını listelemek yerine temel ilkeleri özetler ve her araç türü için tam kodu gösteren kavram örneklerinin bağlantılarını sağlar. Bildirim temelli belirtimlere sahip bir OpenAIAssistantAgent uygulamasının uçtan uca uygulamaları için şu kavram örneklerine bakın:
AzureAssistantAgent Örnekleri:
- Kod Yorumlayıcısı
- Dosya Arama
- Dosyadan İşlev Eklentisi
- Mevcut Yardımcı Kimliğinden Yükleme
- İstem Şablonu
OpenAIAssistantAgent Örnekleri:
- Kod Yorumlayıcısı
- Dosya Arama
- İşlev Eklentisi
- Dosyadan İşlev Eklentisi
- Mevcut Yardımcı Kimliğinden Yükleme
- İstem Şablonu
Örnek: YAML'den AzureAIAgent oluşturma
En düşük YAML bildirim belirtimi aşağıdaki gibi görünebilir:
type: openai_assistant
name: Host
instructions: Respond politely to the user's questions.
model:
id: ${OpenAI:ChatModelId}
tools:
- id: MenuPlugin.get_specials
type: function
- id: MenuPlugin.get_item_price
type: function
Ajanı nasıl bağlayabileceğinizin detayları için yukarıda verilen tam kod örneklerine bakın.
Önemli Noktalar
- Bildirim temelli belirtimler YAML'de aracı yapısını, araçlarını ve davranışını tanımlamaya olanak sağlar.
- Başvurulan tüm araçlar ve eklentiler çalışma zamanında kayıtlı veya erişilebilir olmalıdır.
- Bing, Dosya Arama ve Kod Yorumlayıcı gibi yerleşik araçlar için uygun yapılandırma ve kimlik bilgileri gerekir (genellikle ortam değişkenleri veya açık bağımsız değişkenler aracılığıyla).
- Kapsamlı örnekler için eklenti kaydı, Azure kimlik yapılandırması ve gelişmiş araç kullanımı gibi pratik senaryoları gösteren sağlanan örnek bağlantılara bakın.
Bu özellik kullanılamıyor.
Nasıl Yapılır
OpenAIAssistantAgentiçin uçtan uca bir örnek için bkz: