본문으로 건너뛰기

2024년 나만의 LLM 장난감 DIY에 대한 가장 간단한 가이드

· 약 24분
CEO of Pu'ersa Technology Co., Ltd.

2024년이 왔습니다. DIY LLM 장난감이 있나요? 지금은 완전히 중요합니다. 기술적인 마법은 필요하지 않습니다. 단지 호기심만 있으면 됩니다. 나는 약간의 코딩과 많은 재미를 섞어서 뛰어들었고, bam은 나만의 말하는 장난감을 만들었습니다. AI 친구를 쉽게 만들고 싶다면 잘 찾아오셨습니다. 함께 기술에 대한 신비를 풀고 AI 친구에게 생명을 불어넣어 보세요. 기술이 점점 일상 생활과 교차하는 세상에서 자신만의 LLM 장난감을 만드는 것은 AI를 이해할 수 있을 뿐만 아니라 대화형 기술의 경이로움에 대한 개인화된 관문을 제공합니다.

먼저 최종 효과를 살펴보겠습니다.

솔직히, 꽤 굉장합니다. 시작할 준비가 되셨나요? 뛰어들어보자!

그건 어떻게 작동하나요?

세 가지 주요 단계가 있습니다.

  1. 녹음: 장난감이 UDP를 통해 전송하는 실시간 녹음 데이터를 수신하고, STT(Sound-To-Text) API를 호출하여 소리를 텍스트로 변환합니다.
  2. 사고: 이전 텍스트를 수신한 후 LLM(Large-Language-Model) API가 즉시 호출되어 LLM에서 생성된 문장을 스트리밍 방식으로 가져옵니다. 그런 다음 TTS(Text-To-Sound) API를 호출하여 문장을 사람의 음성으로 변환합니다.
  3. 오디오 재생: 장난감은 FoloToy 서버에서 생성된 TTS(Text-To-Sound) 오디오 파일 스트림을 수신하여 순서에 따라 재생합니다.

개발 전 준비

LLM 장난감 제작을 시작하기 전에 필요한 하드웨어, 소프트웨어 및 기술 지식을 이해하는 것이 중요합니다. 이 섹션에서는 원활한 시작을 위해 모든 필수 사항을 준비하는 방법을 안내합니다.

하드웨어

Folotoy Core: ChatGPT AI 음성 대화 코어 보드는 프로젝트의 두뇌 역할을 하여 AI와의 음성 상호 작용을 가능하게 합니다.

장난감 구성 요소: 마이크, 스피커, 버튼, 스위치, 전원 공급 장치와 같은 필수 구성 요소가 필요합니다. 바로 사용할 수 있는 설정을 위해 Alilo Honey Bunny G6을 선택하겠습니다.

Octopus Dev Suit (기타 선택): AI 기능으로 기존 장난감을 개조하려는 사람들에게 이상적입니다.

구매 시 프로모션 코드 F-001–9를 입력하시면 할인을 받으실 수 있습니다.

서버

MacBook Pro와 같은 자신의 컴퓨터를 활용하여 장난감이 음성 상호 작용을 처리하고 응답할 수 있는 안정적인 백엔드를 갖도록 합니다. 또는 GCE(Google Cloud Engine)와 같은 클라우드 서비스를 사용하면 더 광범위한 애플리케이션에 맞게 프로젝트를 확장할 수 있습니다.

지식

  1. Docker (필수): Docker를 이해하는 것은 컨테이너에 소프트웨어를 배포하고 프로젝트를 이식 가능하고 확장 가능하게 만드는 데 중요합니다. Folo 서버를 시작하는 데 사용합니다.
  2. Git (필수): 프로젝트의 코드베이스를 관리하려면 버전 관리가 필수적입니다. Folo 서버 코드베이스를 관리하는 데 사용합니다.
  3. MQTT(선택 사항): 고급 사용자 정의를 목표로 하는 경우 MQTT(경량 메시징 프로토콜)에 익숙하면 장난감과 서버 간 통신에 도움이 됩니다.
  4. EMQX(선택 사항): IoT, IIoT 및 연결된 차량을 위한 오픈 소스 MQTT 브로커입니다. 장난감을 관리하는 데 사용됩니다.
  5. ollama(선택 사항): 대규모 언어 모델을 로컬에서 실행하려는 경우 좋은 선택입니다.

서비스 및 등록

장난감에 생기를 불어넣으려면 특정 AI 서비스에 액세스해야 합니다. 이 프로젝트에서는 OpenAI의 제품을 활용하기로 결정했습니다.

  1. TTS(Text-to-Speech): OpenAI의 Whisper 서비스는 AI의 텍스트 응답을 음성으로 변환하여 상호작용을 자연스럽게 만들어줍니다.
  2. LLM(Large Language Model): 인간과 유사한 텍스트 응답을 이해하고 생성하기 위해 OpenAI의 모델을 활용합니다.
  3. STT(Speech-to-Text): OpenAI의 TTS 서비스는 음성을 텍스트로 변환하여 AI가 음성 명령이나 쿼리를 이해할 수 있도록 합니다.

가장 중요한 것은 OpenAI 플랫폼에 등록하고 키 생성이 필요하다는 점입니다. sk-...i7TL처럼 말이죠.

장난감 조립하기

이제 모든 조각을 모아 나만의 LLM 장난감을 만들 차례입니다.

일반적인 단계는 다음과 같습니다. 먼저 동영상 튜토리얼을 시청하는 것이 좋습니다.

  1. Alilo G6의 녹화 및 재생이 정상적인지 확인하세요.
  2. 드라이버를 사용하여 Alilo G6 뒷면에 있는 나사 6개를 푸세요.
  3. Alilo G6의 케이스를 조심스럽게 열고 마더보드의 모든 플러그를 뽑은 다음 먼저 전원 플러그를 뽑고 플러그에 접착제가 있으면 아트 나이프를 사용하여 부드럽게 잘라서 열 수 있습니다. 손을 자르지 마십시오.
  4. 마더보드의 나사 4개를 풀어 제거합니다.
  5. 원래 마더보드를 FoloToy의 마더보드로 교체하고 나사 3개를 조여 고정합니다.
  6. 마이크, 조명, 스피커 및 전원 소켓을 연결하고 마지막으로 전원 소켓을 연결합니다.
  7. 모든 소켓을 연결한 후 아직 케이스를 닫거나 나사를 설치하지 마십시오. 먼저 토끼 꼬리에 있는 켜기/끄기 스위치를 켜고 새로 설치된 조명이 켜지고 파란색으로 천천히 깜박일 수 있는지 확인하세요.
  8. 문제가 없으면 케이스를 설치하고 나사를 조여 교체 작업을 완료합니다.

서버 설정

LLM 장난감이 음성 명령을 이해하고 응답하도록 하려면 강력한 백엔드 지원이 핵심입니다. 이 섹션에서는 서버 코드 베이스를 복제하고, 서버를 구성하고, Docker 컨테이너를 시작하여 장난감이 안정적인 백엔드를 지원하는지 확인하는 방법을 설명합니다. 먼저 GitHub에서 Folo 서버 코드베이스를 복제하세요.

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

그런 다음 docker-compose.yml 파일의 기본 서버 구성을 원하는 대로 변경하세요.

이름설명
OPENAI_OPENAI_KEYOpenAI API 키입니다.sk-...i7TL
OPENAI_TTS_KEYOpenAI API 키입니다.sk-...i7TL
OPENAI_WHISPER_KEYOpenAI API 키입니다.sk-...i7TL
AUDIO_DOWNLOAD_URL오디오 파일의 URL입니다.http://192.168.xx:8082
SPEECH_UDP_SERVER_HOST서버의 IP 주소입니다.192.168.xx

그런 다음 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.xx) 및 포트 번호(기본값 1883 유지)를 설정할 수 있는 구성 페이지가 자동으로 열립니다. ).

네트워크를 구성하고 서버에 연결한 후 중앙에 있는 크고 둥근 버튼을 누르면 대화가 시작됩니다. 말하기를 멈추면 FoloToy는 녹음 종료를 알리는 경고음을 울립니다.

주위에 있는 7개의 둥근 작은 버튼은 역할 전환 버튼입니다. 클릭하면 역할 전환이 적용됩니다.

디버깅

서버이든 장난감이든 기술적인 문제가 발생할 수 있습니다. 이 섹션에서는 가능한 문제를 진단 및 해결하고 LLM 장난감이 원활하게 실행되도록 하는 데 도움이 되는 몇 가지 기본적인 디버깅 팁과 도구를 제공합니다.

서버 디버깅

서버 로그를 확인하려면 다음 명령을 실행하십시오.

docker compose logs -f

LOG_LEVEL은 docker-compose.yml 파일에서 설정하여 로그 수준을 제어할 수 있습니다.

장난감 디버깅

Folo Toy는 USB 직렬 포트에서 장난감 베이스를 디버깅하는 쉬운 방법을 제공합니다. Folo 장난감 웹 도구를 사용하여 장난감을 디버깅할 수 있습니다.

  1. USB 케이블을 사용하여 장난감을 컴퓨터와 연결합니다.
  2. Folo 장난감 웹 도구를 연 다음 "콘솔" 버튼을 클릭하여 장난감에 연결합니다.
  3. 연결되면 콘솔에서 장치의 실시간 로그를 볼 수 있습니다.

또한 장난감에는 LED가 있어 장난감의 상태를 나타내는 다양한 색상으로 켜집니다. .

MQTT 디버깅

EMQX 대시보드를 열어 MQTT 메시지를 확인하세요. 기본 사용자 이름은 admin이고 비밀번호는 public입니다. 어쨌든 로그인 후 비밀번호를 안전한 비밀번호로 변경하세요.

고급 사용자 정의

LLM 장난감을 더 자세히 살펴보고 사용자 정의하려는 고급 사용자를 위해 이 섹션에서는 대규모 언어 모델을 로컬에서 실행하고, CloudFlare AI Gateway와 같은 도구를 사용하고, 캐릭터 음성을 사용자 정의하는 방법을 소개합니다. 이것은 DIY LLM 장난감의 더 넓은 세계를 열어줄 것입니다.

로컬에서 LLM 실행

대규모 언어 모델을 로컬에서 실행하는 것은 흥미로운 일입니다. Llama 2, Gemma 및 전 세계의 모든 종류의 오픈 소스 대형 모델을 실행할 수 있으며, 심지어 직접 훈련한 모델도 실행할 수 있습니다. 올라마를 이용하면 쉽게 할 수 있습니다. 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

그게 다입니다. 원하는대로 모델을 Gemma 또는 다른 모델로 변경하고 즐기십시오.

CloudFlare AI 게이트웨이 사용

Cloudflare의 AI Gateway를 사용하면 AI 앱에 대한 가시성과 제어력을 얻을 수 있습니다. 앱을 AI Gateway에 연결하면 사람들이 분석 및 로깅을 통해 애플리케이션을 어떻게 사용하는지에 대한 통찰력을 수집한 다음 캐싱, 속도 제한, 요청 재시도, 모델 대체 등과 같은 기능을 통해 애플리케이션을 확장하는 방법을 제어할 수 있습니다.

먼저 새 AI 게이트웨이를 생성해야 합니다.

그런 다음 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 음성 목록에서 원하는 음성을 찾아보세요.

Edge tts에는 선택할 수 있는 목소리가 많이 있습니다. 다음과 같이 즐겨보세요.

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

지식 기반 지원

지식 기반 지원과 같은 더 높은 수준의 사용자 정의를 위한 것입니다. 내장된 RAG 엔진을 포함하여 생성적 AI 네이티브 애플리케이션을 구축하는 데 필요한 핵심 기술 스택을 다루는 서비스로서의 백엔드와 LLMOps의 개념을 결합한 Dify를 사용하는 것이 좋습니다. Dify를 사용하면 모든 모델을 기반으로 Assistants 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 개발 키트도 제공합니다. 칩은 작고 가벼우며 봉제 인형, 플라스틱, 나무 등 모든 유형의 장난감에 쉽게 들어갈 수 있습니다.

산시성(陝西省) 선인장을 DIY로 만들었습니다. 상상력을 발휘하여 좋아하는 장난감에 넣어볼 수 있으며, 그렇게 하는 것은 특별히 복잡하지 않습니다.

  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 서버를 인터넷에 공개적으로 사용하려면 EMQX 서비스를 보호하고 비밀번호로만 EMQX에 대한 액세스를 허용하는 것이 좋습니다. EMQX 보안에 대해 자세히 알아보세요.

결론

나만의 LLM 장난감을 만드는 것은 AI와 기술의 세계로의 흥미로운 여행입니다. DIY 매니아이든 초보자이든 이 가이드는 진정으로 대화형이며 개인화된 무언가를 만들 수 있는 로드맵을 제공합니다. Folotoy Core를 획득하는 데 어려움을 겪거나 도중에 문제가 발생하는 경우 Telegram 그룹에 가입하면 커뮤니티 지원과 전문가 조언을 얻을 수 있습니다.

기성 솔루션을 선호하는 분들은 완제품을 여기에서 구매하실 수 있습니다. 이 옵션은 조립할 필요 없이 동일한 대화형 경험을 제공합니다. Folo 장난감은 여기에서 찾을 수 있는 다른 많은 제품도 제공합니다. 매장 주소는 다음과 같습니다: https://folotoy.taobao.com/

지금 Folo Toy 제품을 구매하고 고객 서비스에 문의할 때 프로모션 코드 F-001–9를 입력하면 할인 혜택을 받을 수 있습니다. Fofo G6에서는 20RMB, Octopus Dev Suit에서는 15RMB, Cactus에서는 10RMB를 절약할 수 있습니다. 대부분의 다른 품목도 10위안 할인을 받을 수 있지만, 문의하려면 고객 서비스에 문의하세요.

교육, 엔터테인먼트 등을 위한 LLM 장난감의 광대한 잠재력을 활용하여 AI 동반자에게 생명을 불어넣는 이 창의적인 벤처에 착수하십시오.

참조 링크:

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