Я давно заметил, что AI Agent нода работает куда хуже как агент, нежели OpenAI ассистент.
С ней агенты хуже следуют промптам, помнят историю и выбирают инструменты.
Я решил разобраться почему так.
1️⃣Каждая модель (OpenAI, Gemini, Claude) натренирована определенным образом и ожидает на входе данные в определенном формате с разметкой.
2️⃣По сути модель всегда обрабатывает 1 сообщение, которое содержит в себе сразу все - системный промпт, ваш запрос, предыдущую историю, описание тулзов, описание output формата.
3️⃣ Каждую модель обучали по своему - к примеру OpenAI использует ChatML, где указаны роли (ассистент, пользователь, система) и промпты в формате JSON. Также с разметкой идет и история, тулзы и тд.
[
{ "role": "system", "content": "You are a helpful assistant." },
{ "role": "user", "content": "What is the capital of France?" },
{ "role": "assistant", "content": "Paris." }
]4️⃣ Langchain принимает данные на входе в одном формате, а далее “переводит” их в формат выбранной LLM.
Пока он это делает, он может немного видоизменять данные и формат в силу технических особенностей и непоспеванием за обновлениями LLM.
Наглядно - если открыть execution AI agent ноды в N8N и посмотреть, что он отправляет во время рассуждений, то там видно, как он склеивает system prompt, user prompt и историю в одну гигантскую кашу, где даже человек ногу сломит.
➡️В итоге как результат LLM (а конкретно OpenAI) получает вводные данные не в том виде, в котором привыкла, а значит хуже их распознает.
Это влияет на все - следование промпту, выбор инструментов, память прошлых сообщений.
Таким образом, лучше всего использовать OpenAI ассистента напрямую - тогда он будет лучше распознавать инструменты, использовать умную память, которая делает автоматическое саммари, а не просто удаляет старые сообщения.
Я проводил этот эксперимент на 5+ проектах клиентов и друзей - просто менял AI agent ноду на OpenAI ассистента, оставляя набор инструментов и промпт тем же. Результат - агенты сразу начинали себя вести так, как они должны себя вести.
___
ПС Это мое обывательское понимание Langchain, которое я выудил из Gemini. Не знаю читают ли меня хардовые ML инженеры, возможно они смогут поправить, если понял не так.
