Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На этом шаге руководства показано, как вести многократный обмен репликами с агентом, который построен на сервисе завершения чата Azure OpenAI.
Это важно
Agent Framework поддерживает множество различных типов агентов. В этом руководстве используется агент, основанный на сервисе завершения чата, но все остальные типы агентов выполняются так же. Дополнительные сведения о других типах агентов и их создании см. в руководстве пользователя Agent Framework.
Предпосылки
Предварительные требования и создание агента см. в разделе "Создание и запуск простого агента" в этом руководстве.
Запуск агента с помощью многоэтапной беседы
Агенты не имеют состояния и не сохраняют никакую информацию о состоянии между вызовами. Чтобы иметь многократный диалог с агентом, необходимо создать объект для хранения состояния беседы и передать этот объект агенту при его запуске.
Чтобы создать объект состояния беседы, вызовите метод GetNewThread на экземпляре агента.
AgentThread thread = agent.GetNewThread();
Затем этот объект потока RunAsync можно передать методам RunStreamingAsync экземпляра агента вместе с входными данными пользователя.
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));
Это позволит сохранить состояние беседы между вызовами, и агент сможет ссылаться на предыдущие входные и ответные сообщения в беседе при реагировании на новые входные данные.
Это важно
Тип службы, используемой этим параметром AIAgent , определяет, как хранится журнал бесед. Например, при использовании службы ChatCompletion, например в этом примере, журнал бесед хранится в объекте AgentThread и отправляется в службу по каждому вызову. С другой стороны, при использовании службы агента ИИ Azure журнал бесед хранится в службе агента ИИ Azure, а по каждому вызову отправляется только ссылка на беседу.
Один агент с несколькими беседами
Можно иметь несколько независимых бесед с одинаковым экземпляром агента, создавая несколько AgentThread объектов.
Затем эти потоки можно использовать для поддержания отдельных состояний беседы для каждой беседы.
Беседы будут полностью независимы друг от друга, так как агент не поддерживает какое-либо состояние внутри себя.
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));
Запуск агента с помощью многоэтапной беседы
Агенты не имеют состояния и не сохраняют никакую информацию о состоянии между вызовами. Чтобы иметь многократный диалог с агентом, необходимо создать объект для хранения состояния беседы и передать этот объект агенту при его запуске.
Чтобы создать объект состояния беседы, вызовите метод get_new_thread() на экземпляре агента.
thread = agent.get_new_thread()
Затем этот объект потока run можно передать методам run_stream экземпляра агента вместе с входными данными пользователя.
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())
Это позволит сохранить состояние беседы между вызовами, и агент сможет ссылаться на предыдущие входные и ответные сообщения в беседе при реагировании на новые входные данные.
Это важно
Тип службы, используемой агентом, определяет, как хранится журнал бесед. Например, при использовании службы завершения чата, например в этом примере, журнал бесед хранится в объекте AgentThread и отправляется в службу по каждому вызову. С другой стороны, при использовании службы агента ИИ Azure журнал бесед хранится в службе агента ИИ Azure, а по каждому вызову отправляется только ссылка на беседу.
Один агент с несколькими беседами
Можно иметь несколько независимых бесед с одинаковым экземпляром агента, создавая несколько AgentThread объектов.
Затем эти потоки можно использовать для поддержания отдельных состояний беседы для каждой беседы.
Беседы будут полностью независимы друг от друга, так как агент не поддерживает какое-либо состояние внутри себя.
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())