Aracılığıyla paylaş


Bir asistanla çok adımlı konuşmalar

Bu öğretici adımında, aracının Azure OpenAI Sohbet Tamamlama hizmeti üzerinde oluşturulduğu bir aracıyla çok aşamalı konuşmanın nasıl yapılacağı gösterilir.

Önemli

Agent Framework birçok farklı aracı türünü destekler. Bu öğreticide Sohbet Tamamlama hizmetini temel alan bir aracı kullanılır, ancak diğer tüm aracı türleri aynı şekilde çalıştırılır. Diğer aracı türleri ve bunların nasıl oluşturulmuş olduğu hakkında daha fazla bilgi için Bkz. Agent Framework kullanıcı kılavuzu.

Önkoşullar

Önkoşullar ve aracı oluşturma için bu öğreticideki Basit bir aracı oluşturma ve çalıştırma adımına bakın.

Aracıyı çok adımlı bir konuşmayla çalıştırma

Ajanlar durum bilgisizdir ve çağrılar arasında dahili olarak herhangi bir durum saklamaz. Bir aracıyla çok aşamalı bir konuşma yapmak için konuşma durumunu tutacak bir nesne oluşturmanız ve bu nesneyi aracı çalıştırılacak şekilde aracıya iletmeniz gerekir.

Konuşma durumu nesnesini oluşturmak için aracı örneğinde GetNewThread yöntemini çağırın.

AgentThread thread = agent.GetNewThread();

Daha sonra bu iş parçacığı nesnesini kullanıcı girişiyle birlikte aracı örneğindeki RunAsync ve RunStreamingAsync yöntemlerine geçirebilirsiniz.

Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate.", thread));
Console.WriteLine(await agent.RunAsync("Now add some emojis to the joke and tell it in the voice of a pirate's parrot.", thread));

Bu, çağrılar arasındaki konuşma durumunu korur ve aracı yeni girişe yanıt verirken konuşmadaki önceki giriş ve yanıt iletilerine başvurabilecektir.

Önemli

tarafından AIAgent kullanılan hizmet türü, konuşma geçmişinin nasıl depolandığını belirler. Örneğin, bu örnekte olduğu gibi bir ChatCompletion hizmeti kullanılırken konuşma geçmişi AgentThread nesnesinde depolanır ve her çağrıda hizmete gönderilir. Öte yandan Azure AI Agent hizmetini kullanırken konuşma geçmişi Azure AI Agent hizmetinde depolanır ve her aramada hizmete yalnızca konuşmaya yönelik bir başvuru gönderilir.

Birden çok konuşmayı yöneten tek temsilci

Birden çok AgentThread nesne oluşturarak aynı aracının örneğiyle bağımsız birden çok konuşma yapmak mümkündür. Bu iş parçacıkları daha sonra her konuşma için ayrı konuşma durumlarını sürdürmek için kullanılabilir. Ajan dahili olarak herhangi bir durum bilgisi korumadığından, konuşmalar birbirinden tamamen bağımsız olacaktır.

AgentThread thread1 = agent.GetNewThread();
AgentThread thread2 = agent.GetNewThread();
Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate.", thread1));
Console.WriteLine(await agent.RunAsync("Tell me a joke about a robot.", thread2));
Console.WriteLine(await agent.RunAsync("Now add some emojis to the joke and tell it in the voice of a pirate's parrot.", thread1));
Console.WriteLine(await agent.RunAsync("Now add some emojis to the joke and tell it in the voice of a robot.", thread2));

Aracıyı çok adımlı bir konuşmayla çalıştırma

Ajanlar durum bilgisizdir ve çağrılar arasında dahili olarak herhangi bir durum saklamaz. Bir aracıyla çok aşamalı bir konuşma yapmak için konuşma durumunu tutacak bir nesne oluşturmanız ve bu nesneyi aracı çalıştırılacak şekilde aracıya iletmeniz gerekir.

Konuşma durumu nesnesini oluşturmak için aracı örneğinde get_new_thread() yöntemini çağırın.

thread = agent.get_new_thread()

Daha sonra bu iş parçacığı nesnesini kullanıcı girişiyle birlikte aracı örneğindeki run ve run_stream yöntemlerine geçirebilirsiniz.

async def main():
    result1 = await agent.run("Tell me a joke about a pirate.", thread=thread)
    print(result1.text)

    result2 = await agent.run("Now add some emojis to the joke and tell it in the voice of a pirate's parrot.", thread=thread)
    print(result2.text)

asyncio.run(main())

Bu, çağrılar arasındaki konuşma durumunu korur ve aracı yeni girişe yanıt verirken konuşmadaki önceki giriş ve yanıt iletilerine başvurabilecektir.

Önemli

Aracı tarafından kullanılan hizmet türü, konuşma geçmişinin nasıl depolandığını belirler. Örneğin, bu örnekte olduğu gibi bir Sohbet Tamamlama hizmeti kullanılırken konuşma geçmişi AgentThread nesnesinde depolanır ve her çağrıda hizmete gönderilir. Öte yandan Azure AI Agent hizmetini kullanırken konuşma geçmişi Azure AI Agent hizmetinde depolanır ve her aramada hizmete yalnızca konuşmaya yönelik bir başvuru gönderilir.

Birden çok konuşmayı yöneten tek temsilci

Birden çok AgentThread nesne oluşturarak aynı aracının örneğiyle bağımsız birden çok konuşma yapmak mümkündür. Bu iş parçacıkları daha sonra her konuşma için ayrı konuşma durumlarını sürdürmek için kullanılabilir. Ajan dahili olarak herhangi bir durum bilgisi korumadığından, konuşmalar birbirinden tamamen bağımsız olacaktır.

async def main():
    thread1 = agent.get_new_thread()
    thread2 = agent.get_new_thread()

    result1 = await agent.run("Tell me a joke about a pirate.", thread=thread1)
    print(result1.text)

    result2 = await agent.run("Tell me a joke about a robot.", thread=thread2)
    print(result2.text)

    result3 = await agent.run("Now add some emojis to the joke and tell it in the voice of a pirate's parrot.", thread=thread1)
    print(result3.text)

    result4 = await agent.run("Now add some emojis to the joke and tell it in the voice of a robot.", thread=thread2)
    print(result4.text)

asyncio.run(main())

Sonraki Adımlar