Адриен Треуиль, директор по управлению продуктами и глава Streamlit в Snowflake, приводит на портале The New Stack несколько советов и приемов для повышения точности приложений на основе больших языковых моделей (LLM), а также соображения по выбору правильной LLM.

За год, прошедший после того, как OpenAI выпустила свою первую модель ChatGPT, интерес к генеративному ИИ (GenAI) резко возрос. Приложения, работающие на основе LLM, сейчас находятся в приоритете у компаний, которые думают о производительности и эффективности, а выбор инструментов и фреймворков для создания приложений на основе GenAI значительно расширился. Однако точность результатов GenAI по-прежнему вызывает опасения, и разработчикам необходимо быстро научиться решать эту и другие проблемы, чтобы создавать мощные и надежные приложения.

Эксперты Streamlit, бесплатного Open Source-фреймворк для быстрого создания и совместного использования веб-приложений в области машинного обучения и науки о данных, недавно опубликовали отчет, в котором проанализировано более 21 тыс. LLM-приложений, созданных более чем 13 тыс. различных разработчиков на Streamlit Community Cloud. В исследовании содержится информация о некоторых инструментах и методах, которые разработчики используют для создания своих приложений, что позволяет сформулировать некоторые советы, приведенные ниже.

Например, инструменты векторного поиска могут быть эффективны для улучшения контекстных рекомендаций в приложениях на базе LLM, но, как показало наше исследование, сегодня векторные возможности использует меньшинство разработчиков, что говорит о больших перспективах в будущем.

По мере того как все больше разработчиков будут использовать возможности GenAI для разработки приложений, мы будет все чаще видеть, как в приложения различных категорий и отраслевых вертикалей начинают встраивать поиск на основе ИИ, а также разговорный опыт и функции ассистента.

Ниже приведены четыре совета разработчикам, которые помогут им создавать лучшие приложения на базе LLM, чтобы они могли привнести настоящие перемены в свои организации.

Используйте агенты и оркестровку для создания более «умных» приложений

Механизмы оркестровки, такие как LangChain и LlamaIndex, могут помочь расширить вашу модель с помощью дополнительных инструментов, или агентов, которые увеличивают возможности вашего приложения на основе LLM. В этом контексте агент — это подключаемая система, позволяющая встраивать в приложение дополнительную функциональность, выраженную на естественном языке.

Эти агенты могут быть объединены для управления и оптимизации функций LLM, например для совершенствования рассуждений ИИ, устранения предвзятости и интеграции внешних источников данных. Агенты также могут дать LLM возможность задуматься о том, не совершает ли она ошибку и какие шаги ей нужно предпринять для успешного выполнения задачи.

Для аналогии представьте себе, как разработчик пишет API, обеспечивающий определенную функцию, и документацию, описывающую ее: API выражается в виде кода, а документация — на естественном языке. Агенты работают аналогичным образом, за исключением того, что документация предоставляется в интересах LLM, а не других разработчиков. Таким образом, LLM рассматривает поставленную задачу, изучает документацию агента и определяет, может ли агент помочь ей выполнить задачу.

Эти агенты также добавляют надежности LLM-приложениям, предоставляя им возможность размышлять о собственных ошибках и исправлять их. Например, предположим, что LLM-приложение пишет SQL-код для выполнения задачи, например проверки в базе данных уровня запасов, но допускает ошибку в коде. Для стандартного, «наивного» LLM-приложения ошибка — это конец пути.

Однако если в приложении есть агент, выполняющий SQL, оно может посмотреть на ошибку и с помощью агента определить, что следовало сделать по-другому, а затем исправить ошибку. Это может быть что-то простое, как небольшое изменение в синтаксисе, но без агента у LLM нет способа объяснить свою ошибку.

Используйте векторную магию и RAG для борьбы с галлюцинациями

Иногда используемая вами LLM не имеет доступа ко всей информации, необходимой для выполнения поставленных задач. Дополнительная информация может быть введена во время подсказок, но большинство LLM устанавливают ограничения на размер этих подсказок. Чтобы обойти эти ограничения, LLM может потребоваться запросить внешнюю базу данных с помощью векторов — эта техника называется генерацией с расширенным извлечением/поиском (retrieval augmented generation, RAG).

Чтобы понять, чем RAG может быть полезна для LLM-приложения, полезно вспомнить о трех различных уровнях LLM-приложений.

  • Уровень 1: приложение может генерировать результаты, используя знания, уже имеющиеся в LLM.
  • Уровень 2: приложению требуется дополнительная информация, которая может быть введена в систему в нужный момент. Сделать это довольно просто, если вы можете оставаться в рамках лимитов на подсказки.
  • Уровень 3: для выполнения задания LLM необходимо обратиться к внешнему источнику информации, например к базе данных.

На третьем уровне в дело вступает RAG, а внешняя база данных обычно семантически индексируется векторами, поэтому в последнее время вы, возможно, часто слышите о векторных базах данных и инструментах векторного поиска.

Приложения с векторными базами данных и векторным поиском обеспечивают быстрый контекстный поиск за счет категоризации больших неструктурированных наборов данных (включая текст, изображения, видео или аудио). Это может быть невероятно эффективным для более быстрого создания более качественных контекстных рекомендаций. Однако векторные инструменты пока еще не получили широкого распространения. Исследование Streamlit показало, что только 20% приложений, работающих на основе GenAI, используют векторные технологии в той или иной форме.

Чатботы предоставляют пользователям мощный способ уточнения запросов

Чатботы привнесли GenAI в мейнстрим, однако существует определенный скептицизм по поводу того, будут ли они эффективным интерфейсом в будущем. Некоторые утверждают, что чатботы предоставляют пользователю слишком много свободы и не дают достаточного контекста для использования LLM-приложения. Других отпугивают неудачи прошлого: скрепка Clippy оказалась катастрофой, так почему же чатботы должны преуспеть сегодня?

Очевидно, что целесообразность применения чатбота зависит от предполагаемого использования приложения. Но у чатботов есть как минимум одно очень полезное качество, которое не стоит упускать из виду: они предоставляют пользователям простой и интуитивно понятный способ добавления контекста и уточнения ответов с помощью интерактивного, похожего на человеческий, интерфейса.

Чтобы понять, почему это так важно, вспомните о поисковых системах. Обычно у пользователя нет возможности уточнить запрос в поисковой системе; если результаты немного не совпадают, нет возможности сказать поисковой системе «попробуй еще раз, но исключи ответы о X», например, или «придай больше значения Y». Это была бы удобная и мощная возможность, и именно ее предоставляют чатботы для LLM-приложений.

Наше исследование показало, что 28% приложений GenAI, созданных в Streamlit, были чатботами, а 72% приложений, как правило, не позволяли уточнять данные в разговоре. С другой стороны, еженедельное использование этих чатботов выросло почти до 40%, в то время как использование приложений без чатботов снизилось. Так что, возможно, чатботы являются предпочтительным интерфейсом для конечных пользователей. В отчете приведены примеры приложений с различными способами приема текстового ввода, так что вы можете взглянуть и посмотреть, что возможно.

Рассмотрите альтернативы GPT, в том числе LLM с открытым исходным кодом

Основополагающие модели GPT по-прежнему являются самыми известными LLM, и они очень эффективны, но за последний год появилось больше вариантов, и некоторые из них могут оказаться более подходящими для вашего приложения. Следует учитывать такие факторы, как объем знаний, требуемых от LLM, размер LLM, ваши потребности в обучении и бюджет, а также то, важно ли для вас, чтобы LLM была опенсорсной или проприетарной. Как и во многих других областях технологий, здесь есть свои компромиссы.

Если вы создаете GenAI-приложение для внутреннего использования, возможно, вам придется обучать LLM на внутренних корпоративных данных. Для большинства предприятий предоставление конфиденциальных данных публичной LLM нецелесообразно по соображениям безопасности, поэтому многие компании используют LLM в пределах существующего облачного периметра безопасности. Это часто приводит их к небольшим LLM, таким как AI21 и Reka.

Очень большие LLM имеют тенденцию к более высоким задержкам и, как правило, более дороги в эксплуатации из-за требуемых вычислительных ресурсов. Если приложение выполняет относительно простую задачу, например перевод текста или обобщение документов, то небольшая LLM может быть вполне достаточна, а ее использование и поддержка обойдутся значительно дешевле.

У вас также могут быть причины предпочесть LLM с открытым исходным кодом, например LLaMA, проприетарным LLM, таким как OpenAI, Anthropic или Cohere, где исходный код, данные обучения, веса и другие детали модели обычно не раскрываются. Опенсорсные LLM требуют самостоятельного хостинга или посредничества хостинг-провайдера, но исходный код и другие детали модели более доступны.

Начните работать с GenAI уже сегодня

GenAI — это все еще очень молодая область, но необходимые инструменты и технологии быстро совершенствуются, и есть много возможностей начать работу уже сегодня. Разработчики, которые воспользуются этой возможностью, смогут принести большую пользу своей организации, внедряя ИИ-приложения в качестве обычной функции для ежедневных бизнес-операций и задач. Поскольку GenAI продолжает менять роли и обязанности в организациях, разработчики, которые станут экспертами в области приложений на базе LLM, окажутся в выигрыше, а приведенные выше советы помогут вам встать на правильный путь.