Перейти к основному содержимому

Самое простое руководство по изготовлению собственной игрушки LLM в 2024 году

· 12 мин. чтения
CEO of Pu'ersa Technology Co., Ltd.

2024 здесь, и игрушки DIY LLM? Абсолютно вещь сейчас. Никакого технического волшебства не нужно, только ваше любопытство. Я сделал решительный шаг, смешав немного кодирования с кучами веселья, и бам - создал свою собственную говорящая игрушку. Если вы хотите с легкостью создать приятеля по искусственному интеллекту, вы находитесь в правильном месте. Давайте вместе разоблизуем технологии и воплотим в жизнь вашего друга с искусственным интеллектом. В мире, где технологии все больше пересекаются с повседневной жизнью, создание собственной игрушки LLM не только демистифицирует ИИ, но и обеспечивает персонализированные ворота к чудесам интерактивных технологий.

Давайте сначала посмотрим на конечный эффект.

Честно говоря, это довольно круто. Готовы начать? Давайте погрузимся!

Как Это Работает?

Есть три ключевых шага:

  1. Запись: Получите данные записи в режиме реального времени, отправленные игрушкой через UDP, и вызовите STT (Sound-To-Text) API для преобразования звука в текст.
  2. Мышление: После получения предыдущего текста API LLM (Large-Language-Model) будет немедленно вызван для получения предложений, сгенерированных LLM в потоковом режиме. Затем вызывается API TTS (Text-To-Sound) для преобразования предложений в человеческую речь.
  3. Воспроизведение аудио: Игрушки будут получать потоки аудиофайлов TTS (Text-To-Sound), сгенерированные сервером FoloToy, и воспроизводить их в соответствии с заказом.

Подготовка Перед Разработкой

Прежде чем вы начнете делать свою игрушку LLM, очень важно понять необходимое оборудование, программное обеспечение и технические знания. Этот раздел поможет вам подготовить все необходимое для обеспечения плавного начала.

Оборудование

Folotoy Core: Core Board для голосового разговора ChatGPT AI служит мозгом вашего проекта, обеспечивая голосовое взаимодействие с ИИ.

Компоненты для игрушки: Необходимы такие предметы первой необходимости, как микрофон, динамик, кнопки, переключатели и блок питания. Я иду с Alilo Honey Bunny G6 за готовую к использованию настройку.

Octopus Dev Suit (Другой вариант): Идеально подходит для тех, кто хочет переоборудовать существующие игрушки возможностями искусственного интеллекта.

При совершении покупки предоставьте мой промо-код F-001–9, чтобы получить скидку.

Сервер

Использование собственной машины, такой как MacBook Pro, гарантирует, что ваша игрушка имеет надежный бэкэнд для обработки и реагирования на голосовые взаимодействия. Кроме того, облачные сервисы, такие как Google Cloud Engine (GCE), могут масштабировать ваш проект для более широких приложений.

Знание

  1. Docker (обязательно): Понимание Docker имеет решающее значение для развертывания программного обеспечения в контейнерах, что делает ваш проект портативным и масштабируемым. Я использую его для запуска сервера Folo.
  2. Git (обязательно): Контроль версий необходим для управления кодовой базой вашего проекта. Я использую его для управления кодовой базой сервера Folo.
  3. MQTT (необязательно): Если вы стремитесь к расширенной настройке, знакомство с MQTT (легкий протокол обмена сообщениями) будет полезно для связи между игрушкой и сервером.
  4. EMQX (необязательно): брокер MQTT с открытым исходным кодом для IoT, IIoT и подключенных транспортных средств. Используется для управления вашими игрушками.
  5. ollama (необязательно): Если вы хотите запускать большие языковые модели локально, это хороший выбор.

Услуги и регистрация

Чтобы оживить вашу игрушку, вам понадобится доступ к определенным сервисам искусственного интеллекта. Для этого проекта я решил использовать предложения OpenAI:

  1. TTS (Text-to-Speech): Сервис Whisper от OpenAI преобразует текстовые ответы из ИИ в речь, делая взаимодействие естественным.
  2. LLM (Large Language Model): Использование моделей OpenAI для понимания и создания человеческих текстовых ответов.
  3. STT (Speech-to-Text): Служба TTS OpenAI транскрибирует произнесенные слова в текст, позволяя ИИ понимать голосовые команды или запросы.

Самое главное, что вам нужно зарегистрироваться на платформе OpenAI и создать ключ, например, sk-...i7TL.

Соберите Свою Игравку

Теперь пришло время собрать все части вместе и сделать свою собственную игрушку LLM.

Общие шаги следующие, рекомендуется сначала посмотреть видеоурок.

  1. Проверьте, в норме ли запись и воспроизведение Alilo G6.
  2. Используйте отвертку, чтобы открутить 6 винтов на задней части Alilo G6.
  3. Осторожно откройте корпус Alilo G6, отсоедините все вилки на материнской плате, сначала отсоедините вилку питания, на вилке есть клей, вы можете использовать художественный нож, чтобы аккуратно разрезать его, убедитесь, что не режете руку.
  4. Открутите 4 винта на материнской плате и снимите ее.
  5. Замените оригинальную материнскую плату на материнскую плату FoloToy и затяните 3 винта, чтобы зафиксировать ее.
  6. Подключите микрофон, свет, динамик и розетки, наконец, подключите розетку.
  7. После подключения всех розеток пока не закрывайте корпус и не устанавливайте винты. Сначала включите/выключите переключатель на хвосте кролика, чтобы увидеть, может ли недавно установленный свет включаться и медленно мигать синим цветом.
  8. Если нет проблем, установите корпус и затяните винты, чтобы завершить процесс замены.

Настройка сервера

Сильная поддержка бэкэнда является ключом к тому, чтобы ваши игрушки LLM понимали и реагировали на голосовые команды. Этот раздел научит вас, как клонировать базу кода сервера, настраивать сервер и запускать контейнеры Docker, чтобы убедиться, что ваши игрушки имеют стабильную поддержку сервера.

Сначала клонируйте кодовую базу сервера Folo из GitHub.

git clone [email protected]:FoloToy/folotoy-server-self-hosting.git

Затем измените конфигурацию базового сервера в файле docker-compose.yml на свою собственную.

ИмяОписаниеПример
OPENAI_OPENAI_KEYВаш ключ OpenAI API.sk-...i7TL
OPENAI_TTS_KEYВаш ключ OpenAI API.sk-...i7TL
OPENAI_WHISPER_KEYВаш ключ OpenAI API.sk-...i7TL
AUDIO_DOWNLOAD_URLURL-адрес аудиофайла.http://192.168.x.x:8082
SPEECH_UDP_SERVER_HOSTIP-адрес вашего сервера.192.168.x.x

Затем настройте свои роли в файле config/roles.json, вот минимальный пример, для полной настройки, пожалуйста, обратитесь к документация Folotoy.

{
"1": {
"start_text": "Здравствуйте, что я могу для вас сделать?",
"prompt": "You are a helpful assistant."
}
}

Затем запустите контейнеры Docker.

docker compose up -d

Я запускаю сервер Folo на своей собственной машине, если вы хотите запустить его в облаке, почти так же. Следует отметить, что вам нужно предоставить порты 1883, 8082, 8085, 18083 и 8083 общедоступной сети.

Для получения дополнительной информации, пожалуйста, обратитесь к документации Folotoy.

Чат со своей игрушкой

Как только все будет готово, пришло время взаимодействовать с вашей игрушкой LLM.

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

Включите телефон или компьютер и выберите беспроводную сеть "FoloToy-xxxx". Через некоторое время ваш телефон или компьютер автоматически откроет страницу конфигурации, где вы сможете установить, к какой сети WiFi (SSID и пароль) для подключения, а также адрес сервера (например, 192.168.x.x) и номер порта (сохраните значение 1883 по умолчанию).

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

7 круглых маленьких кнопок вокруг - это кнопки переключения ролей. После нажатия переключатель ролей вступает в силу.

Отладка

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

Отладка сервера

Чтобы проверить журналы сервера, выполните следующую команду.

docker compose logs -f

LOG_LEVEL можно установить в файле docker-compose.yml для управления уровнем журнала.

Отладка Игрубки

Folo Toy предоставляет простой способ отладки базы игрушки на последовательном порту USB. Вы можете использовать Folo Toy Web Tool для отладки игрушки.

  1. Подключите игрушку к компьютеру с помощью USB-кабеля.
  2. Откройте Folo Toy Web Tool, а затем нажмите кнопку "Консоль", чтобы подключиться к игрушке.
  3. После подключения вы сможете видеть журналы в режиме реального времени с вашего устройства в консоли.

Также на игрушке есть светодиод, он будет гореть разные цвета, чтобы указать статус игрушки.

Отладка MQTT

Откройте EMQX Dashboard, чтобы проверить сообщения MQTT. Имя пользователя по умолчанию - admin, а пароль - public. В любом случае, измените пароль на безопасный после входа в систему.

Расширенная настройка

Для продвинутых пользователей, которые хотят дополнительно изучить и настроить свои игрушки LLM, в этом разделе будет представлено, как локально запускать большие языковые модели, использовать такие инструменты, как CloudFlare AI Gateway, и настраивать голос персонажей. Это откроет для вас более широкий мир игрушек DIY LLM.

Запустить LLM локально

Запуск больших языковых моделей локально - это интересная вещь. Вы можете запустить Llama 2, Gemma и все виды крупных моделей с открытым исходным кодом со всего мира, даже модели, обученные самостоятельно. Используя ollama, вы можете сделать это легко. Сначала установить ollama, а затем выполните следующую команду, чтобы запустить модель Llama 2.

ollama run llama2

Затем измените конфигурацию роли, чтобы использовать локальную модель LLM.

{
"1": {
"start_text": "Здравствуйте, что я могу для вас сделать?",
"prompt": "You are a helpful assistant.",
"llm_type": "ollama",
"llm_config": {
"api_base": "http://host.docker.internal:11434",
"model": "llama2"
}
}
}

api_base должен быть адресом вашего сервера ollama, и не забудьте перезапустить сервер Folo, чтобы изменения вступили в силу.

docker compose restart folotoy

Вот и все, измените модель на Джемму или другие модели, как вам нравится, и наслаждайтесь этим.

Используйте шлюз CloudFlare AI Gateway

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

Во-первых, вам нужно создать новый шлюз искусственного интеллекта.

Затем отредактируйте файл docker-compose.yml, чтобы изменить OPENAI_OPENAI_API_BASE на адрес вашего шлюза AI, следующим образом:

services:
folotoy:
environment: OPENAI_OPENAI_API_BASE=https://gateway.ai.cloudflare.com/v1/${ACCOUNT_TAG}/${GATEWAY}/openai

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

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

Это фантастика, не так ли?

Стоимость озвучивания роли

Вы можете настроить голос роли, изменив поле voice_name в файле конфигурации роли.

{
"1": {
"tts_type": "openai-tts",
"tts_config": {
"voice_name": "alloy"
}
}
}

Найдите голос, который вам нравится, в OpenAI TTS Voice List.

У Edge tts много голосов на выбор, наслаждайтесь этим вот так:

{
"1": {
"tts_type": "edge-tts",
"tts_config": {
"voice_name": "en-NG-EzinneNeural"
}
}
}

Поддержка базы знаний

Для более высоких уровней настройки, таких как поддержка базы знаний. Рекомендуется использовать Dify, который сочетает в себе концепции Backend as Service и LLMOps, охватывая основной технологический стек, необходимый для создания генеративных приложений искусственного интеллекта, включая встроенный движок RAG. С помощью Dify вы можете самостоятельно развертывать такие возможности, как API помощников и GPT на основе любой модели.

Давайте сосредоточимся на встроенном движке RAG, который представляет собой генеративную модель на основе поиска, которую можно использовать для таких задач, как вопрос и ответ, диалог и обобщение документов. Dify включает в себя различные возможности RAG, основанные на полнотекстовой индексации или встраивании векторной базы данных, что позволяет напрямую загружать различные текстовые форматы, такие как PDF и TXT. Загрузите свою базу знаний, чтобы вам не пришлось беспокоиться о том, что игрушка будет делать ерунду, потому что вы не знаете базовых знаний.

Dify можно развернуть самостоятельно или использовать облачную версию напрямую. Конфигурация на Folo также очень проста:

{
"1": {
"llm_type": "dify",
"llm_config": {
"api_base": "http://192.168.52.164/v1",
"key": "app-AAAAAAAAAAAAAAAAAAa"
}
}
}

Пользовательская форма игрушки

С точки зрения принципа работы, любая игрушка может быть изменена. Folo Toy также предлагает Octopus AI Development Kit, который может превратить любую обычную игрушку в интеллектуальную говорящую игрушку. Чип маленький и легкий и может легко вписаться в любой тип игрушки, будь то плюшевая, пластиковая или деревянная.

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

  1. откройте игрушку
  2. Поместите в него комплект разработки Octopus AI
  3. закройте игрушку

Сервер по-прежнему использует тот же самый. Вы можете назначить разные роли разным игрушкам через sn, которые здесь не будут расширены. Вы можете проверить конфигурационный документ на официальном сайте.

Примечания к безопасности

Обратите внимание, никогда не размещайте ключ в общественном месте, таком как GitHub, иначе он будет злоупотреблять. Если ваш ключ просочился, немедленно удалите его на платформе OpenAI и сгенерируйте новый.

Вы также можете использовать переменные среды в docker-compose.yml и передавать их при запуске контейнера, чтобы избежать разоблачения ключа в коде.

services:
folotoy:
environment:
- OPENAI_OPENAI_KEY=${OPENAI_OPENAI_KEY}
OPENAI_OPENAI_KEY=sk-...i7TL docker compose up -d

Если вы хотите сделать FoloToy Server общедоступным в Интернете, настоятельно рекомендуется защитить сервис EMQX и разрешить доступ к EMQX только с помощью пароля. Узнайте больше о EMQX Security.

Заключение

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

Для тех, кто предпочитает готовое решение, готовый продукт доступен для покупки здесь. Эта опция обеспечивает тот же интерактивный опыт без необходимости сборки. Игрушки Folo также предлагают множество других продуктов, которые можно найти здесь. Это адрес их магазина: https://folotoy.taobao.com/

Приозите продукты Folo Toy сейчас и наслаждайтесь скидками, предоставив мой промо-код, F-001-9, при обратении в службу поддержки клиентов. Вы можете сэкономить 20 юаней на Fofo G6, 15 юаней на костюме Octopus Dev и 10 юаней на Cactus. Большинство других товаров также имеют право на скидку в размере 10 юаней, но, пожалуйста, свяжитесь со службой поддержки клиентов, чтобы узнать.

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

Справочные ссылки:

  1. https://medium.com/@chenzhiqing/simplest-guide-to-creating-your-own-llm-toy-in-2024-ab5a5fe5d440
  2. https://docs.folotoy.com/