Я пытался добавить ИИ-чат в свое приложение и зашел в тупик

Я пытался добавить ИИ-ассистента в свой инструмент для управления проектами. Я хотел, чтобы пользователи могли задавать вопросы о просроченных задачах или заметках с совещаний. Это казалось простым. Я думал, что просто вызову API и дело с концом. Я ошибался.

После 15 сообщений ИИ стал работать медленно и выдавать бессвязные ответы. API начал выдавать ошибки, потому что диалог стал слишком длинным. Я использовал GPT-4 с лимитом в 8k токенов. Каждое сообщение включало длинные описания и заметки. История росла слишком быстро.

Я попробовал три разных решения:

  • Усечение истории: я оставлял только последние несколько сообщений. Это ускорило работу, но ИИ забывал всё остальное.
  • Суммаризация: я просил ИИ резюмировать чат каждые 5 сообщений. Это помогло с памятью, но увеличило расходы и задержку.
  • Оценка релевантности: я пытался оставлять только самые важные сообщения. Это потребовало использования векторного хранилища и слишком усложнило систему.

Я понял, что мне нужна более эффективная стратегия. Я остановился на двух методах: стриминг и фиксированное окно контекста.

Стриминг делает приложение визуально быстрым. Пользователи видят, как текст появляется мгновенно, вместо того чтобы ждать полного ответа. Я использовал Server-Sent Events для отправки фрагментов текста по мере их поступления.

Я также разделил свой контекст на три части:

  • Системный промпт: фиксированный набор инструкций.
  • Динамический контекст: последние обновления проекта и статусы задач.
  • История диалога: скользящее окно последних сообщений.

Я не отправляю всю историю каждый раз. Я отправляю ровно столько, сколько нужно для ответа на текущий вопрос. Это сократило размер полезной нагрузки на 40%. Это сэкономило мне деньги и повысило скорость работы.

Если вы создаете функции с ИИ, помните: Стриминг дает вам скорость. Хорошая стратегия контекста дает вам интеллект.

Как вы управляете памятью диалогов в своих приложениях? Используете ли вы скользящие окна или суммаризацию?

Источник: https://dev.to/__c1b9e06dc90a7e0a676b/i-tried-to-add-ai-chat-to-my-app-and-hit-a-wall-with-context-tokens-459b