** 공개 : 나는 문서 작성에 능숙하지 않으며, 사용 방법에 대한 더 많은 지원이 필요하다면 문제를 자유롭게 열어주십시오 **
귀하의 개인 비서. Cyrano는 사용자에게 답변하는 데 필요할 때마다 사용할 수있는 일련의 도구에 액세스 할 수있는 큰 언어 모델입니다. 그 이름은 Edmond Rostand의 프랑스 극장 캐릭터 Cyrano de Bergerac에서 유래했습니다.
Cyrano는 마지막 OpenAI 모델을 사용합니다 : GPT-3.5-Turbo-0613 (빠른) 또는 GPT-4-0613 (Smarter). 그들은 OpenAI 기능에 액세스 할 수 있습니다. 이 repo는 Langchain 프레임 워크를 기반으로합니다.
TODO : 예제 및/또는 비디오를 추가하십시오
Cyrano는 파이썬 체스를 사용하여 항상 내부 체스 보드 상태를 유지합니다. 대화에서 체스가 자연어로 움직이는 소리를들을 때 해당 대수 표현으로 번역하여 내부 Python-Chess 보드에서 재생합니다. 스톡 피쉬를 0.1 초 동안 사용하여 응답으로 무엇을 해야할지 결정합니다. 그런 다음 보드는 JSON 파일의 펜으로 저장되어 앞으로 언제든지 게임을 재개 할 수 있습니다.
Cyrano는 3 개의 체스 관련 조치에 액세스 할 수 있습니다.
시라노는 마지막 메시지를 컨텍스트 창에서 일정량의 토큰 (기본 1500)까지 저장합니다.
종이 생성제에 기초하여 : Park, et. 알.
장기 메모리는 시간 가중 벡터 스토어를 사용합니다. 대화가 1500 개의 토큰을 초과 할 때마다 가장 오래된 메시지가 요약되고, 벡터화되고 (문장 변압기 모델 사용) 벡터 스토어 데이터베이스 (QDRANT)에 저장됩니다. 시라노는 기억을 저장할 때마다 기억에 남는 시간에 대해 10 점 만점에 점수를 매 깁니다. 각 메모리는 짧은 텍스트, 해당 벡터, 중요도 _score, create_at dateTime 객체 및 last_accessed_at dateTime 객체입니다.
런타임에 Cyrano는 상위 5 개가 가장 관련성있는 추억을 가져 와서 마지막 사용자 메시지에 추가합니다. 가장 관련성이 높은 메모리를 선택할 때, 그것은 semantic_similarity + (1 - decay_rate) ** hours_passed 사용하여 메모리의 나이에 의해 가중치가 가중되는 시맨틱 유사성을 사용합니다. semantic_similarity는 벡터 사이의 코사인 거리 인 것을 위해, Decay_rate는 기억이 얼마나 빨리 관련성을 잃는지를 나타냅니다. 그리고 Hours_pass는 현재와 last_accessed_at 사이의 델타입니다.
src/main.py에서 사운드 변수를 False로 설정하여 Cyrano를 텍스트 전용 에이전트로 사용할 수 있습니다. 나는 당신이 그렇게하기로 선택하고, 입력은 Python input() 이며 출력은 텍스트가됩니다.
음성과 귀를 사용하여 상호 작용하기로 선택한 경우 웨이크 워드 감지에 고슴도치를 사용해야합니다. 이 "Alexa"또는 "Hey Google"에 해당하는 경우, 나는 단순히 "Cyrano"를 선택했습니다. 모델과 상호 작용할 때마다 이름을 크게 말하고 경고음을 기다렸다가 대화를 시작할 수 있습니다.
참고 : 깨우기 단어는 현재 프랑스 악센트로 설정되어 있습니다. Porcupine 웹 사이트에서 필요한 경우 다른 언어로 재생성하십시오.
Sound는 SpeechRecognition 라이브러리를 사용하여 녹음됩니다. 침묵을 들으면 녹음을 중지하고 사운드 파일을 Openai Whisper API로 보냅니다.
Cyrano는 3 개의 TTS 옵션을 사용할 수 있습니다.
무료이며 Windows에서 로봇이지만 허용 가능한 목소리를 가진 Pyttsx3.
Google Cloud tts 매우 좋은 품질/ 가격 옵션 imo. 모든 OS에서 잘 작동합니다.
11 개의 실험실 최고의 사운드 품질이지만 무료 버전은 제한되어 있으며 유료 버전은 한 달에 충분한 문자를 제공하지 않습니다.
사이 라노가 라즈베리를 달리기 위해 필요했기 때문에 좋은 품질과 대량의 양을 원했기 때문에 너무 비싸지 않기 때문에 Google TTS를 선택했습니다. src/sound_utils.py의 3 가지 옵션에 대한 모든 기능을 남겼습니다. 자신에게 가장 적합한 사람을 자유롭게 사용하십시오. Google 또는 11 개의 실험실의 경우 .env 파일에 API 키를 추가해야합니다.
repo를 복제 한 다음 모든 API_Key와 다음을 포함하는 시스템 프롬프트로 .env 파일을 만듭니다.
시스템 프롬프트의 예 (모델의 ID) :
SYS_PROMPT="You are Cyrano, a personal assistant with the personality of Cyrano de Bergerac. Today's date is {current_date}. You're on {user_name}'s desk. {user_description}. {user_name}'s messages are recorded in sound and then transcribed into text. It may happen that the sound is incorrectly transcribed. You regularly reply in a sarcastic and humorous manner."
Openai API 키
Google 검색 API 키
옵션 : Google 검색 API 키
필요한 라이브러리를 설치하십시오 : pip install -r requirements.txt
앱을 시작하십시오 : python src/main.py
앱을 시작할 때 앱은 몇 가지 메모를 재생해야합니다. "시라노"라고 말하면 상호 작용을 원할 때 경고음은 침묵을 감지하고 전사를 중지 할 때 듣고 있다는 사실을 알립니다.