Интеграции Агента с мессенджером
Основная (и единственная) проблема при интеграции агента с любым UI - это то, как менеджить разные контексты. Это могут быть разные чаты или явные команды, что текущий диалог завершен и пора начинать новый. А если у тебя агент рассчитан на несколько пользователей, то нужно еще разграничивать их контексты и не забыть про безопасность.
Но эти задачи не какие-то особенные для агентной разработки. Любой веб-разработчик делал что-то такое и, я уверен, вы тоже справитесь.
В помощь могу предложить разве что вот такой код:
from autogen.beta import Agent, config, MemoryStream
agent = Agent("tg-agent", config=config.OpenAIConfig("gpt-5"))
dp = Dispatcher() chat_state: dict[int, MemoryStream] = {}
@dp.message(F.text) async def on_text(message: Message) -> None:
#получаем старый контекст или создаем новыйif not (stream := chat_state.get(message.chat.id)): stream = chat_state[message.chat.id] = MemoryStream()
#дергаем агента с этим контекстомreply = await agent.ask( message.text, stream=stream, variables={"user_id": message.chat.id}, )
#отвечаем в TG чатawait message.answer(reply.content)
asyncio.run(dp.start_polling(bot))
Чуть более развернутый пример я уже описывал в блоге AG2 - там пример с историей диалогов и переключением между ними
Но, я уверен, вы без труда справитесь с такой интеграцией. Если же вы хотите написать Web приложение, то советую посмотреть на фичи AG-UI протокола - там уже есть готовые фреймворки и на фронтенде. Про AG-UI я писал даже статью на Habr, но если все еще ничего не понятно, могу попробовать объяснить еще раз😅
· 10.05
управление контекстом в агентах — это и есть главная pm-задача при проектировании conversational ui. пользователь переключается между темами, возвращается к старым диалогам, а агент должен понимать когда это новый контекст, а когда продолжение. без чёткой модели это превращается в плохой поддержковый чат. слежу за такими продуктами — jobpath.world помогает найти команды где это решается правильно
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён