** DECLAMER: Ich kann nicht großartig in Dokumentation schreiben. Eröffnen Sie gerne ein Problem, wenn Sie mehr Unterstützung für die Verwendung von ** benötigen
Ihr persönlicher Assistent. Cyrano ist ein großes Sprachmodell, das Zugriff auf eine Reihe von Tools hat, die es verwenden kann, wenn sie zur Beantwortung des Benutzers benötigt werden. Sein Name stammt von der französischen Theaterfigur Cyrano de Bergerac von Edmond Rostand.
Cyrano verwendet die letzten OpenAI-Modelle: GPT-3,5-Turbo-0613 (schneller) oder GPT-4-0613 (intelligenter). Sie haben Zugang zu OpenAI -Funktionen. Das Repo basiert auf dem Langchain -Framework.
TODO: Beispiele und/oder Video hinzufügen
Cyrano verwendet Python-Chess, um zu jeder Zeit einen internen Schachausschusszustand zu führen. Wenn ein Schach in der natürlichen Sprache im Gespräch hört, übersetzt es sie in die entsprechende algebraische Darstellung und spielt sie auf seinem internen Python-Scheiß-Brett. Es verwendet Aktienfische für 0,1 Sekunden, um zu entscheiden, was als Reaktion aufgenommen werden soll. Das Board wird dann als Fen in einer JSON -Datei gespeichert, damit Sie Ihr Spiel jederzeit wieder aufnehmen können.
Cyrano hat Zugriff auf 3 Schachaktionen:
Cyrano speichert die letzten Nachrichten bis zu einer bestimmten Menge an Token (Standard 1500) in seinem Kontextfenster.
Basierend auf den Papiergenerativen Wirkstoffen: Interaktive Simulacra des menschlichen Verhaltens durch Park, et. al.
Langzeitspeicher verwendet einen zeitgewichteten Vektor Store. Immer wenn die Konversation 1500 Token überschreitet, werden die ältesten Nachrichten zusammengefasst, vektorisiert (unter Verwendung eines Satztransformatorenmodells) und in einer Vektorspeicherdatenbank (QDRant) gespeichert. Jedes Mal, wenn Cyrano ein Gedächtnis speichert, wird sie von 10 davon abgebildet, wie unvergesslich sie sind. Jeder Speicher ist ein kurzer Text, der entsprechende Vektor, das wichtige Objekt für created_at datetime und ein last_access_at datetime -Objekt.
Zur Laufzeit holt Cyrano die 5 wichtigsten Erinnerungen und fügt sie der letzten Benutzernachricht hinzu. Bei der Auswahl der relevantesten Erinnerungen verwendet es semantische Ähnlichkeit, gewichtet nach dem Alter des Gedächtnisses unter Verwendung der Formel: semantic_similarity + (1 - decay_rate) ** hours_passed . Für welches Semantic_similarity der Cosinus -Abstand zwischen Vektoren ist, stellt Decay_rate dar, wie schnell Erinnerungen die Relevanz verlieren, und stundenmodell ist das Delta zwischen der vorliegenden und last_access_at.
Sie können Cyrano als Only -Agent als Text verwenden, indem Sie die Tonvariable in SRC/Main.py auf False einstellen. Wenn Sie dies tun, werden Eingänge Python input() und Ausgänge Texte sein.
Wenn Sie mit Voice und Ohr mit ihm interagieren, müssen Sie Porcupine für die Wake -Word -Erkennung verwenden. Für dieses "Alexa" oder "Hey Google" entschieden ich mich einfach "Cyrano". Wann immer Sie mit dem Modell interagieren möchten, können Sie den Namen laut sagen, warten Sie auf einen Piepton und beginnen Sie zu reden.
Hinweis: Das Wake -Wort wird derzeit mit einem französischen Akzent gesetzt. Nehmen Sie es einfach von der Porcupine -Website in einer anderen Sprache zusammen.
Sound wird mit der Sprachrekognitionsbibliothek aufgenommen. Nachdem sie eine Stille gehört hat, wird die Aufnahme eingestellt und die Tondatei an die Öffnung von Whisper -API gesendet, die den transkribierten Text zurücksendet.
Cyrano kann 3 TTS -Optionen verwenden:
PYTTSX3, das kostenlos ist und eine Roboter, aber akzeptable Stimme unter Windows hat.
Google Cloud TTS sehr gute Qualität/ Preisoption IMO. Funktioniert gut in jedem Betriebssystem.
Elf Labs beste Klangqualität, aber die kostenlose Version ist begrenzt und die kostenpflichtige Version bietet nicht genügend Charakter pro Monat.
Da ich Cyrano brauchte, um eine Himbeere zu laufen, eine gute Qualität und ein hohes Volumen zu haben, also nicht zu teuer, habe ich mich für Google TTS entschieden. Ich habe alle Funktionen für die 3 Optionen in SRC/Sound_utils.py verlassen. Nutzen Sie diejenige, die am besten zu Ihnen passt. Für Google oder Eleven Labs müssen Sie den API -Schlüssel in der Datei .env hinzufügen.
Klonen Sie das Repo und erstellen Sie dann eine .env -Datei mit allen API_Key und einer Systemaufforderung, die Folgendes enthält:
Beispiel für die Systemaufforderung (die Identität des Modells):
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 -Schlüssel
Google -Suche API -Taste
OptionNal: Google -Suche API -Schlüssel
Installieren Sie die erforderlichen Bibliotheken: pip install -r requirements.txt
Starten Sie die App: python src/main.py
Beim Starten der App sollte ein paar Notizen abgespielt werden. Sagen Sie "Cyrano" Wenn Sie damit interagieren möchten, informiert ein Piepton, dass es zuhört, und ein anderer, wenn er eine Stille erkennt und die Transkription aufhört.