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
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.
OpenAIResponsesAgentyakında.
Tavsiye
Bu tartışmayla ilgili ayrıntılı API belgelerine şu adreste ulaşabilirsiniz:
Özellik şu anda Java'da kullanılamıyor.
Yanıt Temsilcisi nedir?
OpenAI Yanıtları API'si, OpenAI'nin model yanıtları oluşturmaya yönelik en gelişmiş arabirimidir. Metin ve görüntü girişlerini ve metin çıkışlarını destekler. Önceki yanıtların çıktısını giriş olarak kullanarak modelle durum bilgisine sahip etkileşimler oluşturabilirsiniz. Ayrıca dosya arama, web araması, bilgisayar kullanımı ve daha fazlası için yerleşik araçlarla modelin özelliklerini genişletmek de mümkündür.
Geliştirme Ortamınızı Hazırlama
OpenAIResponsesAgentgeliştirmeye devam etmek için geliştirme ortamınızı uygun paketlerle yapılandırın.
OpenAIResponsesAgentyakında.
semantic-kernel Paketi yükleyin:
pip install semantic-kernel
Önemli
, OpenAIResponsesAgent Anlam Çekirdeği Python paketleri 1.27.0 ve üzeri sürümlerde desteklenir.
Özellik şu anda Java'da kullanılamıyor.
Bir OpenAIResponsesAgent oluşturma
Bir OpenAIResponsesAgent oluşturmak için önce uzak hizmetle iletişim kurabilecek bir istemci oluşturmanız gerekir.
OpenAIResponsesAgentyakında.
OpenAI veya Azure OpenAI Yanıtları API'sinin kullandığı modeli yapılandırmak için yeni ortam değişkenleri kullanıma sunulur:
OPENAI_RESPONSES_MODEL_ID=""
AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME=""
Kullandığınız sağlayıcıya bağlı olarak uygun değişkeni ayarlayın.
Tavsiye
İzin verilen en düşük Azure OpenAI api sürümü: 2025-03-01-preview. Bölge kullanılabilirliğini, model desteğini ve diğer ayrıntıları görüntülemek için lütfen aşağıdaki bağlantıyı ziyaret edin.
Azure OpenAI modelleriyle kullanılacak bir AzureResponsesAgent oluşturmak için:
from semantic_kernel.agents import AzureResponsesAgent
from semantic_kernel.connectors.ai.open_ai import AzureOpenAISettings, OpenAISettings
# Set up the client and model using Azure OpenAI Resources
client = AzureResponsesAgent.create_client()
# Create the AzureResponsesAgent instance using the client and the model
agent = AzureResponsesAgent(
ai_model_id=AzureOpenAISettings().responses_deployment_name,
client=client,
instructions="your instructions",
name="name",
)
Alternatif olarak, OpenAI modelleriyle kullanılacak bir OpenAIResponsesAgent oluşturmak için:
from semantic_kernel.agents import OpenAIResponsesAgent
# Set up the client and model using OpenAI Resources
client = OpenAIResponsesAgent.create_client()
# Create the OpenAIResponsesAgent instance using the client and the model
agent = OpenAIResponsesAgent(
ai_model_id=OpenAISettings().responses_model_id,
client=client,
instructions="your instructions",
name="name",
)
Özellik şu anda Java'da kullanılamıyor.
Bir OpenAIResponsesAgent kullanmak
OpenAIResponsesAgentyakında.
OpenAI Yanıtları API'si, konuşmaların isteğe bağlı uzak depolamasını destekler. Varsayılan olarak, bir ResponsesAgentThread kullanıldığında yanıtlar uzaktan depolanır. Bu, çağrılar arasında bağlamı korumak için Yanıtlar API'lerinin previous_response_id kullanılmasını sağlar.
Her konuşma, benzersiz bir dize kimliğiyle tanımlanan bir konu olarak değerlendirilir.
OpenAIResponsesAgent ile olan tüm etkileşimler, bu iş parçacığı tanımlayıcısına göre belirlenmiştir.
Yanıtlar API iş parçacığının temel mekanikleri, ResponsesAgentThread arabirimini uygulayan AgentThread sınıfı tarafından soyutlanır.
OpenAIResponsesAgent halihazırda yalnızca ResponsesAgentThreadtüründe iş parçacıklarını destekler.
OpenAIResponsesAgent'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.
from semantic_kernel.agents import AzureResponsesAgent
# Set up the client and model using Azure OpenAI Resources
client = AzureResponsesAgent.create_client()
# Create the AzureResponsesAgent instance using the client and the model
agent = AzureResponsesAgent(
ai_model_id=AzureOpenAISettings().responses_deployment_name,
client=client,
instructions="your instructions",
name="name",
)
USER_INPUTS = [
"My name is John Doe.",
"Tell me a joke",
"Explain why this is funny.",
"What have we been talking about?",
]
thread = None
# Generate the agent response(s)
for user_input in USER_INPUTS:
print(f"# User: '{user_input}'")
# Invoke the agent for the current message and print the response
response = await agent.get_response(messages=user_input, thread=thread)
print(f"# {response.name}: {response.content}")
# Update the thread so the previous response id is used
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.
OpenAIResponsesAgent kullanarak Ara İletileri Yönetme
Anlam Çekirdeği OpenAIResponsesAgent , 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.
OpenAIResponsesAgentyakında.
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 AzureResponsesAgent
from semantic_kernel.contents import AuthorRole, FunctionCallContent, FunctionResultContent
from semantic_kernel.contents.chat_message_content import ChatMessageContent
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():
# 1. Create the client using Azure OpenAI resources and configuration
client = AzureResponsesAgent.create_client()
# 2. Create a Semantic Kernel agent for the OpenAI Responses API
agent = AzureResponsesAgent(
ai_model_id=AzureOpenAISettings().responses_deployment_name,
client=client,
name="Host",
instructions="Answer questions about the menu.",
plugins=[MenuPlugin()],
)
# 3. Create a thread for the agent
# If no thread is provided, a new thread will be
# created and returned with the initial response
thread = 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,
):
thread = response.thread
print(f"# {response.name}: {response.content}")
finally:
await thread.delete() if thread else None
if __name__ == "__main__":
asyncio.run(main())
Aşağıda aracı çağırma işleminden alınan örnek çıkış gösterilmektedir:
AuthorRole.USER: 'Hello'
Host: Hi there! How can I assist you with the menu 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
Host: The special soup is Clam Chowder. Would you like to know more about any other specials?
AuthorRole.USER: 'What is the special drink?'
Host: The special drink is Chai Tea. Would you like any more information?
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
Host: The Chai Tea is $9.99. Is there anything else you would like to know?
AuthorRole.USER: 'Thank you'
Host: You're welcome! If you have any more questions, 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.
OpenAIResponsesAgent 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 OpenAIResponsesAgent uygulamasının uçtan uca uygulamaları için şu kavram örneklerine bakın:
AzureResponsesAgent Örnekleri:
OpenAIResponsesAgent Örnekleri:
Örnek: YAML'den AzureAIAgent oluşturma
En düşük YAML bildirim belirtimi aşağıdaki gibi görünebilir:
type: openai_responses
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.