Дэвид — специалист по виниловым пластинкам. Вы можете попросить его дать рекомендацию или дополнительную информацию о любой записи в вашей коллекции Discogs. Дэвид будет рад помочь вам.
Это приложение LLM представляет собой простой пример диалогового агента, который использует API Discogs для предоставления информации о виниловых пластинках. Он состоит из 4 основных строительных блоков:
В настоящее время он использует LangChain4j в качестве платформы с GPT-4o в качестве помощника искусственного интеллекта, но его можно легко адаптировать для использования других механизмов.
Архитектура приложения, показанная на диаграмме ниже, реализуется платформой ArchUnit посредством тестов в классе ArchitectureTest.
Пользовательский интерфейс для этого проекта был разработан с использованием следующей подсказки:
I need the code for an HTML 5 page that contains an input field for a Discogs username
and a text area for inserting prompts for the application to send to AI agents.
Above the text area there should be the space in which the AI responses are displayed, in the ChatGPT style
Сгенерированный код HTML5 из GitHub Copilot предоставил исходные визуальные элементы пользовательского интерфейса, которые я затем изменил, добавив соединение через веб-сокет и логику для отправки и получения сообщений от помощника искусственного интеллекта. Я обнаружил, что это очень быстрый подход к прототипированию. Затем я перешел к более надежным компонентам ant-design, включая чат.
Изначально я хотел использовать llama3. Модель llama3 в настоящее время не поддерживает инструменты (июнь 2024 г.). Это означает, что ИИ-помощник не может получить имя пользователя Discogs и получить коллекцию записей самостоятельно. Мы перешли на GPT-4o, чтобы Дэвид мог запрашивать информацию Discogs и избавился от необходимости заполнять какие-либо формы.
Некоторые LLM не так умны, как другие. Несмотря на то, что модель Mistral 7b поддерживает инструменты, мне не удалось получить от нее хороших ответов. Он даже не прошел мои интеграционные тесты. При этом я не смог запустить LLM с бесплатными инструментами.
Галлюцинации – это боль. Я начинаю свое путешествие в RAG, чтобы свести это к минимуму. Поскольку Дэвид работает в сфере музыки, Википедия — первая база знаний, которая приходит на ум RAG. Возможно, я смогу использовать API MediaWiki для поиска музыкальных страниц, имеющих отношение к разговору. На данный момент я использую только поиск Google, и иногда это помогает, но явно недостаточно, учитывая затраты, которые он добавляет с помощью токенов.
Тестирование приложения LLM было непростой задачей. Я провел больше интеграционных тестов, чем обычно. Это привело к замедлению цикла разработки. Кроме того, вероятностный характер ИИ-помощника затрудняет детерминированное тестирование приложения.
В мире LLM модульные тесты включают в себя вызов модели ИИ, а не просто вызов модуля кода. При использовании облачной модели выполнение модульных тестов требует затрат. Я также экспериментировал с использованием второго агента ИИ, который помогал бы мне утверждать результаты основного ИИ. Это многообещающий подход, поскольку мы можем выполнять семантические утверждения, а не только обработку строк. Компромисс здесь заключается в том, что это также приводит к увеличению затрат и суммирует риск вероятностных ошибок, вносимых LLM.
Для запуска этого приложения у вас должен быть действительный ключ API OpenAI.
./gradlew bootRun
, чтобы запустить приложение.http://localhost:8080
в своем браузере, чтобы взаимодействовать с помощником AI.