Сохранение контекста разговора в Django API View с помощью OpenAI GPT для приложения чата
Я создаю чат-приложение на Django, которое интегрируется с GPT от OpenAI для генерации ответов на основе истории разговора. Я создал APIView в Django для обработки взаимодействия с чатом, но испытываю трудности с сохранением и отправкой контекста предыдущего разговора в OpenAI API для генерации контекстно-значимых ответов.
Текущая реализация:
Вот упрощенная версия моего ChatGptApiView:
Проблемы:
Поддержание контекста: Я не знаю, как правильно вести и структурировать историю разговоров для каждой пользовательской сессии, чтобы OpenAI API понимал контекст разговора. Структура данных: Как лучше всего структурировать данные, отправляемые в OpenAI, чтобы максимизировать качество ответов? Эффективность: Как эффективно управлять лимитом токенов, установленным OpenAI (4096 токенов), без потери важного контекста разговора? Обработка ошибок: Мне нужен совет по лучшим практикам обработки ошибок или исключений в этой системе, особенно связанных с ограничениями API или неожиданными ответами. Попытки решения:
Я пробовал добавлять новые данные пользователя в список (conversation_history) и включал в него предыдущие чаты, полученные из базы данных. Я рассматривал возможность реализации стратегии усечения, когда разговор превышает лимит токенов, но не уверен, как лучше применить ее без потери важного контекста. Вопросы:
Как эффективно сохранять и отправлять историю разговоров в Django APIView при интеграции с OpenAI's GPT? Есть ли рекомендуемый подход к структурированию истории разговоров для обеспечения контекстно релевантных ответов от OpenAI? Есть ли советы по эффективному управлению количеством токенов в разговоре, чтобы не выходить за рамки OpenAI? Буду признателен за любые идеи или примеры от тех, кто занимался подобными вопросами.
Используйте API Assistants. Ассистент использует поток, который автоматически сохраняет историю сообщений.
Как говорится в официальной документации OpenAI:
- Ассистенты могут вызывать модели OpenAI с определенными инструкциями, чтобы настроить их индивидуальность и возможности.
- Ассистенты могут обращаться к нескольким инструментам параллельно. Это могут быть как инструменты, размещенные в OpenAI - например, интерпретатор кода и поиск знаний. или инструменты, которые вы создаете/хостите (через вызов функций).
- Ассистенты могут обращаться к постоянным потокам. Потоки упрощают разработку приложений ИИ, сохраняя историю сообщений и обрезая ее когда разговор становится слишком длинным для контекста модели. Вы создаете поток один раз и просто добавляете в него сообщения по мере того, как ваши пользователи отвечают.
- Ассистенты могут получать доступ к файлам в нескольких форматах - либо в процессе их создания, либо в рамках потоков между ассистентами и пользователями. При использовании инструментов помощники могут также создавать файлы (например, изображения, электронные таблицы и т. д.) и ссылаться на файлы, на которые они ссылаются, в создаваемых ими Сообщениях. создают.