Технические заметки по одному текущему проекту
В последнее время много работаю с различными LLM и хочу поделиться некоторыми инсайтами.
Основную работу делаем через openai gpt-4o. Модель отлично справляется с извлечением JSON из текста, анализом информации, переводами и генерацией markdown таблиц. Кстати, забавный момент – пытались использовать gpt 4o-mini для оптимизации расходов, но столкнулись с тем, что она иногда игнорирует часть инструкций в промпте, особенно когда нужно и перевести текст с английского на русский, и сконвертировать его в markdown.
◾️ Structured output – база. Очень удобно вытаскивать нужную информацию из респонсов в виде JSON, а потом использовать в приложении.
◾️ Интеграция с zod (я пишу на node js) позволяет использовать схему для ответа модели еще и для типов в typescript.
◾️ Узнал, что у openai есть ограничения на длину ответа при использовании structured output - 15k символов (не токенов)
◾️ Кэширование на redis – мастхэв при разработке. В качестве ключей использую хэш system message + хэш user message, очень здорово экономятся токены.
Самый интересный технический челлендж возник при интеграции с Perplexity для получения актуальных данных. Оказалось, что их модели не очень дружит с русским языком – в ответах появляются китайские иероглифы🤯 Потом обнаружил, что их модели основаны на llama 3.1, а эта модель не поддерживает русский язык. Пришлось выкручиваться: теперь формируем запросы на английском, а потом переводим через gpt-4o. Хотя качество перевода пока не идеальное, подумываем о подключении специализированного сервиса переводов.
Забавно, но даже если в англоязычном промпте для Perplexity попросить ответить на русском – модель упорно игнорирует эту часть запроса😐
В последнее время много работаю с различными LLM и хочу поделиться некоторыми инсайтами.
Основную работу делаем через openai gpt-4o. Модель отлично справляется с извлечением JSON из текста, анализом информации, переводами и генерацией markdown таблиц. Кстати, забавный момент – пытались использовать gpt 4o-mini для оптимизации расходов, но столкнулись с тем, что она иногда игнорирует часть инструкций в промпте, особенно когда нужно и перевести текст с английского на русский, и сконвертировать его в markdown.
◾️ Structured output – база. Очень удобно вытаскивать нужную информацию из респонсов в виде JSON, а потом использовать в приложении.
◾️ Интеграция с zod (я пишу на node js) позволяет использовать схему для ответа модели еще и для типов в typescript.
◾️ Узнал, что у openai есть ограничения на длину ответа при использовании structured output - 15k символов (не токенов)
◾️ Кэширование на redis – мастхэв при разработке. В качестве ключей использую хэш system message + хэш user message, очень здорово экономятся токены.
Самый интересный технический челлендж возник при интеграции с Perplexity для получения актуальных данных. Оказалось, что их модели не очень дружит с русским языком – в ответах появляются китайские иероглифы
Забавно, но даже если в англоязычном промпте для Perplexity попросить ответить на русском – модель упорно игнорирует эту часть запроса