Aracı Yanıtlarını Akışla Gönderme. (Deneysel)
Uyarı
Semantik Çekirdek Aracısı Çerçevesi deneyseldir, hala geliştirme aşamasındadır ve değiştirilebilir.
Akışlı Yanıt nedir?
Akışlı yanıt, ileti içeriğini küçük, artımlı öbekler halinde teslim eder. Bu yaklaşım, tüm yanıtın yüklenmesini beklemek yerine ileti açılırken görüntülemesine ve iletiyle etkileşim kurmasına izin vererek kullanıcı deneyimini geliştirir. Kullanıcılar, hızlı yanıt verme ve etkileşim duygusunu geliştirerek bilgileri hemen işlemeye başlayabilir. Sonuç olarak, gecikmeleri en aza indirir ve kullanıcıların iletişim süreci boyunca daha fazla etkileşim kurmasını sağlar.
Akış Başvuruları:
- AI Akış Kılavuzu'nu açma
- Yapay Zeka Sohbeti Tamamlama Akışını Açma
- AI Yardımcısı Akışı'nı açma
- Azure OpenAI Hizmeti REST API'si
Anlam Çekirdeğinde Akış
Anlam Çekirdeğinde akışı destekleyen AI Hizmetleri , tam olarak biçimlendirilmiş iletiler için kullanılanlara kıyasla farklı içerik türleri kullanır. Bu içerik türleri, akış verilerinin artımlı doğasını işlemek için özel olarak tasarlanmıştır. Aynı içerik türleri, Aracı Çerçevesi içinde benzer amaçlarla da kullanılır. Bu, akış bilgileriyle ilgilenirken her iki sistem arasında tutarlılık ve verimlilik sağlar.
Aracılar şu anda Java'da kullanılamıyor.
Akış Aracısı Çağırma
Aracı Çerçevesi, Aracı Sohbeti kullanılırken veya doğrudan bir Sohbet Tamamlama Aracısı veya Açık AI Yardımcısı Aracısı çağrılırken akışlı yanıtları destekler. Her iki modda da çerçeve, akışa alınan yanıtları zaman uyumsuz olarak sunar. Akışı yapılan yanıtın yanı sıra, konuşmayı izlemek için tutarlı ve akışsız bir geçmiş korunur. Bu, hem gerçek zamanlı etkileşim hem de konuşma akışının güvenilir bir kaydını sağlar.
Sohbet Tamamlama Aracısı'ndan akış yanıtı
Sohbet Tamamlama Aracısı'ndan akışlı yanıt çağrılırken, tam yanıt alındıktan sonra Sohbet Geçmişi güncelleştirilir. Yanıt artımlı olarak akışla aktarılmış olsa da, geçmiş yalnızca iletinin tamamını kaydeder. Bu, Sohbet Geçmişi'nin tutarlılık için tam biçimlendirilmiş yanıtları yansıtmasını sağlar.
// Define agent
ChatCompletionAgent agent = ...;
// Create a ChatHistory object to maintain the conversation state.
ChatHistory chat = [];
// Add a user message to the conversation
chat.Add(new ChatMessageContent(AuthorRole.User, "<user input>"));
// Generate the streamed agent response(s)
await foreach (StreamingChatMessageContent response in agent.InvokeStreamingAsync(chat))
{
// Process streamed response(s)...
}
# Define agent
agent = ChatCompletionAgent(...)
# Create a ChatHistory object to maintain the conversation state.
chat = ChatHistory()
# Add a user message to the conversation
chat.add_message(ChatMessageContent(AuthorRole.USER, "<user input>"))
# Generate the streamed agent response(s)
async for response in agent.invoke_stream(chat)
{
# Process streamed response(s)...
}
Aracılar şu anda Java'da kullanılamıyor.
Açık AI Yardımcısı Aracısı'ndan akışlı yanıt
Açık AI Yardımcısı Aracısından akışlı yanıt çağrılırken, gerekirse daha fazla analiz için iletilerin tamamını yakalamak için isteğe bağlı bir Sohbet Geçmişi sağlanabilir. Yardımcı konuşma durumunu uzak bir iş parçacığı olarak koruduğundan, bu iletileri yakalamak her zaman gerekli değildir. Yanıtın tamamını depolama ve analiz etme kararı, etkileşimin belirli gereksinimlerine bağlıdır.
// 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 streamed agent response(s)
await foreach (StreamingChatMessageContent response in agent.InvokeStreamingAsync(threadId))
{
// Process streamed response(s)...
}
// Delete the thread when it is no longer needed
await agent.DeleteThreadAsync(threadId);
# Define agent
agent = OpenAIAssistantAgent(...)
# Create a thread for the agent conversation.
thread_id = await agent.create_thread()
# Add user message to the conversation
await agent.add_chat_message(ChatMessageContent(role=AuthorRole.USER, content="<user input>"))
# Generate the streamed agent response(s)
async for response in agent.invoke_stream(thread_id=thread_id):
# Process streamed response(s)...
Aracılar şu anda Java'da kullanılamıyor.
Aracı Sohbeti ile Akış
Aracı Sohbeti kullanılırken, konuşma geçmişinin tamamı her zaman korunur ve doğrudan Aracı Sohbeti örneği üzerinden erişilebilir. Bu nedenle, akışlı ve akışsız çağrılar arasındaki temel fark, teslim yönteminde ve sonuçta elde edilen içerik türündedir. Her iki durumda da kullanıcılar tam geçmişe erişmeye devam edebilir, ancak akışlı yanıtlar konuşma ilerledikçe gerçek zamanlı güncelleştirmeler sağlar. Bu, uygulamanın gereksinimlerine bağlı olarak etkileşimleri işlemede daha fazla esneklik sağlar.
// Define agents
ChatCompletionAgent agent1 = ...;
OpenAIAssistantAgent agent2 = ...;
// Create chat with participating agents.
AgentGroupChat chat =
new(agent1, agent2)
{
// Override default execution settings
ExecutionSettings =
{
TerminationStrategy = { MaximumIterations = 10 }
}
};
// Invoke agents
string lastAgent = string.Empty;
await foreach (StreamingChatMessageContent response in chat.InvokeStreamingAsync())
{
if (!lastAgent.Equals(response.AuthorName, StringComparison.Ordinal))
{
// Process begining of agent response
lastAgent = response.AuthorName;
}
// Process streamed content...
}
# Define agents
agent1 = ChatCompletionAgent(...)
agent2 = OpenAIAssistantAgent(...)
# Create chat with participating agents
chat = AgentGroupChat(
agents=[agent1, agent2],
termination_strategy=DefaultTerminationStrategy(maximum_iterations=10),
)
# Invoke agents
last_agent = None
async for response in chat.invoke_stream():
if message.content is not None:
if last_agent != response.name:
# Process beginning of agent response
last_agent = message.name
# Process streamed content
Aracılar şu anda Java'da kullanılamıyor.