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.
Bu öğretici adım, Azure OpenAI Sohbet Tamamlama hizmeti üzerinde oluşturulan bir ajan ile yapılandırılmış çıkış üretmenin nasıl yapıldığını göstermektedir.
Önemli
Tüm aracı türleri yapılandırılmış çıkışı desteklemez. Bu adımda yapılandırılmış çıkışı destekleyen bir ChatClientAgentkullanılır.
Önkoşullar
Önkoşullar ve NuGet paketlerini yükleme için bu öğreticideki Basit bir aracı oluşturma ve çalıştırma adımına bakın.
Yapılandırılmış çıkış ile aracı oluştur
ChatClientAgent, herhangi bir IChatClient uygulamanın üzerine kurulmuştur.
ChatClientAgent altta yatan sohbet istemcisi tarafından sağlanan yapılandırılmış çıkış desteğini kullanır.
Aracıyı oluştururken, temel alınan sohbet istemcisi için kullanılacak varsayılan ChatOptions örneği sağlama seçeneğiniz vardır.
Bu ChatOptions örnek, tercih edilen ChatResponseFormatöğesini seçmenize olanak tanır.
için ResponseFormat çeşitli seçenekler mevcuttur:
- Yerleşik ChatResponseFormat.Text bir özellik: Yanıt düz metin olacaktır.
- Yerleşik ChatResponseFormat.Json bir özellik: Yanıt, belirli bir şema olmadan bir JSON nesnesi olacaktır.
- Özel ChatResponseFormatJson bir örnek: Yanıt, belirli bir şemaya uyan bir JSON nesnesi olacaktır.
Bu örnek, belirli bir şemaya uyan bir JSON nesnesi biçiminde yapılandırılmış çıkış üreten bir aracı oluşturur.
Şemayı oluşturmanın en kolay yolu, aracıdan istediğiniz çıkışın yapısını temsil eden bir tür tanımlamak ve ardından türünden AIJsonUtilities.CreateJsonSchema bir şema oluşturmak için yöntemini kullanmaktır.
using System.Text.Json;
using System.Text.Json.Serialization;
using Microsoft.Extensions.AI;
public class PersonInfo
{
public string? Name { get; set; }
public int? Age { get; set; }
public string? Occupation { get; set; }
}
JsonElement schema = AIJsonUtilities.CreateJsonSchema(typeof(PersonInfo));
Ardından yanıt biçimi için bu şemayı kullanan bir ChatOptions örnek oluşturabilirsiniz.
using Microsoft.Extensions.AI;
ChatOptions chatOptions = new()
{
ResponseFormat = ChatResponseFormat.ForJsonSchema(
schema: schema,
schemaName: "PersonInfo",
schemaDescription: "Information about a person including their name, age, and occupation")
};
Bu ChatOptions örnek aracı oluşturulurken kullanılabilir.
using System;
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Agents.AI;
using OpenAI;
AIAgent agent = new AzureOpenAIClient(
new Uri("https://<myresource>.openai.azure.com"),
new AzureCliCredential())
.GetChatClient("gpt-4o-mini")
.CreateAIAgent(new ChatClientAgentOptions()
{
Name = "HelpfulAssistant",
Instructions = "You are a helpful assistant.",
ChatOptions = chatOptions
});
Artık ajanı, ajanının yapılandırılmış çıktısını doldurmak için kullanabileceği bazı metin bilgileriyle çalıştırabilirsiniz.
var response = await agent.RunAsync("Please provide information about John Smith, who is a 35-year-old software engineer.");
Yanıt nesnesinde PersonInfo yöntemi kullanılarak, aracı yanıtı Deserialize<T> sınıfına deseriyalize edilebilir.
var personInfo = response.Deserialize<PersonInfo>(JsonSerializerOptions.Web);
Console.WriteLine($"Name: {personInfo.Name}, Age: {personInfo.Age}, Occupation: {personInfo.Occupation}");
Akış yapılırken, ajan yanıtı bir dizi güncelleştirme olarak iletilir ve ancak tüm güncellemelere ulaşıldıktan sonra yanıt seri durumdan çıkartılabilir. Seri durumdan çıkarmadan önce tüm güncellemeleri tek bir yanıt içinde birleştirmeniz gerekir.
var updates = agent.RunStreamingAsync("Please provide information about John Smith, who is a 35-year-old software engineer.");
personInfo = (await updates.ToAgentRunResponseAsync()).Deserialize<PersonInfo>(JsonSerializerOptions.Web);
Bu öğretici adım, Azure OpenAI Sohbet Tamamlama hizmeti üzerinde oluşturulan bir ajan ile yapılandırılmış çıkış üretmenin nasıl yapıldığını göstermektedir.
Önemli
Tüm aracı türleri yapılandırılmış çıkışı desteklemez. , ChatAgent uyumlu sohbet istemcileriyle kullanıldığında yapılandırılmış çıkışı destekler.
Önkoşullar
Önkoşullar ve paketleri yükleme için bu öğreticideki Basit bir aracı oluşturma ve çalıştırma adımına bakın.
Yapılandırılmış çıkış ile aracı oluştur
, ChatAgent yapılandırılmış çıkışı destekleyen tüm sohbet istemcisi uygulamalarının üzerine kurulmuştur.
ChatAgent, istenen çıkış şemasını belirtmek için response_format parametresini kullanır.
Aracıyı oluştururken veya çalıştırırken beklenen çıkışın yapısını tanımlayan bir Pydantic modeli sağlayabilirsiniz.
Temel alınan sohbet istemcisi özelliklerine göre çeşitli yanıt biçimleri desteklenir.
Bu örnek, Pydantic model şemasına uyan bir JSON nesnesi biçiminde yapılandırılmış çıkış üreten bir aracı oluşturur.
İlk olarak, aracıdan istediğiniz çıkışın yapısını temsil eden bir Pydantic modeli tanımlayın:
from pydantic import BaseModel
class PersonInfo(BaseModel):
"""Information about a person."""
name: str | None = None
age: int | None = None
occupation: str | None = None
Artık Azure OpenAI Sohbet İstemcisi'ni kullanarak bir aracı oluşturabilirsiniz:
from agent_framework.azure import AzureOpenAIChatClient
from azure.identity import AzureCliCredential
# Create the agent using Azure OpenAI Chat Client
agent = AzureOpenAIChatClient(credential=AzureCliCredential()).create_agent(
name="HelpfulAssistant",
instructions="You are a helpful assistant that extracts person information from text."
)
Artık aracıyı bazı metinsel bilgilerle çalıştırabilir ve parametresini response_format kullanarak yapılandırılmış çıkış biçimini belirtebilirsiniz:
response = await agent.run(
"Please provide information about John Smith, who is a 35-year-old software engineer.",
response_format=PersonInfo
)
Ajans yanıtı, value özelliğinde yapılandırılmış çıktıyı içerecektir ve bu çıkışa doğrudan bir Pydantic model örneği olarak erişilebilir.
if response.value:
person_info = response.value
print(f"Name: {person_info.name}, Age: {person_info.age}, Occupation: {person_info.occupation}")
else:
print("No structured data found in response")
Akış esnasında, temsilci yanıtı bir dizi güncelleme olarak iletilir. Yapılandırılmış çıkışı almak için tüm güncelleştirmeleri toplamanız ve ardından son yanıt değerine erişmeniz gerekir:
from agent_framework import AgentRunResponse
# Get structured response from streaming agent using AgentRunResponse.from_agent_response_generator
# This method collects all streaming updates and combines them into a single AgentRunResponse
final_response = await AgentRunResponse.from_agent_response_generator(
agent.run_stream(query, response_format=PersonInfo),
output_format_type=PersonInfo,
)
if final_response.value:
person_info = final_response.value
print(f"Name: {person_info.name}, Age: {person_info.age}, Occupation: {person_info.occupation}")