################################################################################
# ____ _ ____ _ _ #
# / ___|___ | |__ ___ _ __ ___ / ___| __ _ _ __ __| | |__ _____ __ #
# | | / _ | '_ / _ '__/ _ ___ / _` | '_ / _` | '_ / _ / / #
# | |__| (_) | | | | __/ | | __/ ___) | (_| | | | | (_| | |_) | (_) > < #
# _______/|_| |_|___|_| ___| |____/ __,_|_| |_|__,_|_.__/ ___/_/_ #
# #
# This project is part of Cohere Sandbox, Cohere's Experimental Open Source #
# offering. This project provides a library, tooling, or demo making use of #
# the Cohere Platform. You should expect (self-)documented, high quality code #
# but be warned that this is EXPERIMENTAL. Therefore, also expect rough edges, #
# non-backwards compatible changes, or potential changes in functionality as #
# the library, tool, or demo evolves. Please consider referencing a specific #
# git commit or version if depending upon the project in any mission-critical #
# code as part of your own projects. #
# #
# Please don't hesitate to raise issues or submit pull requests, and thanks #
# for checking out this project! #
# #
################################################################################
Betreuer: Cohere ConvAI Team
Projekt gepflegt bis mindestens (JJJJ-MM-TT): 01.03.2023
Bauen Sie Konversations-KI auf der Grundlage der großen Sprachmodelle von Cohere auf
conversant
conversant
mit Pip conversant
ist ein in Arbeit befindliches Framework zum Erstellen anpassbarer Dialogagenten (auch bekannt als Chatbots), die Fragen beantworten und mit Benutzern mit einer Vielzahl unterschiedlicher Chatbot-Personas kommunizieren können. conversant
möchte modular, flexibel und erweiterbar sein, sodass Sie jede Art von Chatbots erstellen können, die Sie möchten!
Wir stellen Ihnen mehrere benutzerdefinierte Personas zur Verfügung, darunter ? einen Kundendienstmitarbeiter, ⌚️ einen Uhrenverkäufer, ?? ein Mathematiklehrer und ? ein Fantasy-Zauberer. Erstellen Sie Ihre eigene Persona mit nur einer Beschreibung und einigen Beispielgesprächen!
Lesen Sie in unserem Launch-Blogbeitrag mehr darüber, wie conversant
Teil der Cohere Sandbox ist.
Probieren Sie hier unsere Streamlit-Demo conversant
! ?
conversant
ist auf PyPI verfügbar und wurde auf Python 3.8+ und Cohere 2.8.0+ getestet.
pip install conversant
Möchten Sie es zuerst in Aktion sehen? Sie können conversant
in einer Streamlit-App verwenden, ohne hier etwas zu installieren! ?
Cohere verwendet Streamlit, um seine Demoanwendungen zu erstellen. Wenn Sie Streamlit noch nicht kennen, können Sie es hier installieren und hier mehr über die Ausführung von Streamlit-Befehlen lesen.
Wenn Sie diese Streamlit-Demo lokal ändern möchten, empfehlen wir dringend, dieses Repository zu forken, anstatt es als Bibliothek von PyPI zu installieren.
Wenn Sie Ihre eigene Instanz der Streamlit-Demo starten möchten, benötigen Sie zunächst einen COHERE_API_KEY
. Sie können eines erstellen, indem Sie Dashboard.cohere.ai besuchen.
Wenn Sie planen, die Streamlit-App lokal auszuführen, können Sie den Schlüssel zu .streamlit/secrets.toml
hinzufügen:
COHERE_API_KEY = "YOUR_API_KEY_HERE"
Bei lokaler Ausführung liest Streamlit die Datei secrets.toml
und fügt diese Werte stillschweigend in die Umgebungsvariablen ein. Alternativ können Sie den API-Schlüssel direkt als Umgebungsvariable festlegen, indem Sie den folgenden Befehl über die Befehlszeile ausführen:
export COHERE_API_KEY = "YOUR_API_KEY_HERE"
Starten Sie die Streamlit-App über die Befehlszeile mit dem folgenden Befehl:
streamlit run conversant/demo/streamlit_example.py
Wenn Sie stattdessen eine gehostete Streamlit-App erstellen möchten, fügen Sie Ihren Cohere-API-Schlüssel über Secrets Management zu Streamlit hinzu. Fügen Sie die folgende Zeile als Secret hinzu:
COHERE_API_KEY = "YOUR_API_KEY_HERE"
Sobald Sie Ihre eigene Instanz der Streamlit-App haben, können Sie mit der Erstellung benutzerdefinierter Personas experimentieren! Sehen Sie sich die config.json
für jede Persona im Verzeichnis conversant/personas
an. Sie müssen in diesem Verzeichnis einen Unterordner erstellen, der Ihrer neuen Persona entspricht, und eine config.json
Datei hinzufügen.
Als Hinweis empfehlen wir dringend, das sandbox-conversant-lib
Repository zu forken, anstatt es als Bibliothek von PyPI zu installieren. Wenn Sie eine neue Persona erstellen, verwenden Sie das personas
-Verzeichnis im geklonten Repository. Die Verzeichnisstruktur sollte wie folgt aussehen:
conversant/personas
├── fortune-teller
│ └── config.json
└── your-persona-name # new
└── config.json
Die Konfigurationsdatei sollte Folgendes enthalten:
chatbot_config
:max_context_examples
: Die Länge des Chatverlaufs, den der Chatbot als Antwort verwenden soll.avatar
: Optionaler Emoji-Shortcode oder URL zum Bild als Avatar des Chatbots. Standardmäßig ist ?.client_config
: Parameter für co.generate()
chat_prompt_config
:preamble
: Beschreibung der Persona.example_separator
: Eine Zeichenfolge, die jede Beispielkonversation trennt.headers
: Ein Name für den bot
und den user
.examples
: Ein paar Konversationsbeispiele (few-shot) oder leer (zero-shot). conversant
kümmert sich um den Rest! Schauen Sie sich als Beispiel fortune-teller/config.json
an. Wenn Sie die Streamlit-App starten, wird die neue Persona im Dropdown-Menü angezeigt.
Wenn Sie die App mit einer Teilmenge benutzerdefinierter Personas ausführen möchten, können Sie ein neues Verzeichnis erstellen, das nur die gewünschten Personas enthält. Dies ist analog zum Verzeichnis conversant/personas
und muss die gleiche Struktur haben:
custom-personas
├── your-first-persona
│ └── config.json
└── your-second-persona
└── config.json
Nachdem Sie dieses Verzeichnis erstellt haben, müssen Sie der App mitteilen, wo es danach suchen soll. In der Demo-Streamlit-App ( streamlit_example.py
) lautet eine der ersten Zeilen CUSTOM_PERSONA_DIRECTORY = None
. Ändern Sie dies, um das gewünschte Persona-Verzeichnis anzugeben, z. B. CUSTOM_PERSONA_DIRECTORY = "/Users/yourname/custom-personas"
.
Wenn dies unverändert bleibt, verwendet die App standardmäßig das Verzeichnis, das die conversant
Demo-Personas enthält.
Wenn Sie die neue Persona nicht im Dropdown-Menü sehen, müssen Sie möglicherweise ein benutzerdefiniertes Persona-Verzeichnis angeben. Befolgen Sie die obigen Anweisungen, um der App mitzuteilen, wo sie nach den Personas suchen soll.
Sie können eine Persona auch in der Streamlit-App bearbeiten!
Mit conversant
können Sie mit nur dem folgenden Codeausschnitt einen Chatbot erstellen, der auf den großen Sprachmodellen von Cohere basiert.
import cohere
import conversant
co = cohere . Client ( "YOUR_API_KEY_HERE" )
bot = conversant . PromptChatbot . from_persona ( "fantasy-wizard" , client = co )
print ( bot . reply ( "Hello!" ))
>> > "Well met, fair traveller. What bringest thou to mine village?"
Sie können auch Ihre eigene Persona definieren, indem Sie Ihr eigenes ChatPrompt
übergeben.
from conversant . prompts import ChatPrompt
shakespeare_config = {
"preamble" : "Below is a conversation between Shakespeare and a Literature Student." ,
"example_separator" : " n " ,
"headers" : {
"user" : "Literature Student" ,
"bot" : "William Shakespeare" ,
},
"examples" : [
[
{
"user" : "Who are you?" ,
"bot" : "Mine own nameth is Shakespeare, and I speaketh in riddles." ,
},
]
],
}
shakespeare_bot = conversant . PromptChatbot (
client = co , prompt = ChatPrompt . from_dict ( shakespeare_config )
)
print ( shakespeare_bot . reply ( "Hello!" ))
>> > "Greeteth, and welcome. I am Shakespeare, the great poet, dramatist, and playwright."
conversant
verwendet die sofortige Vervollständigung, um eine Chatbot-Persona mit einer Beschreibung und einigen Beispielen zu definieren. Die Eingabeaufforderung wird als Eingabe an den Endpunkt co.generate()
von Cohere gesendet, damit ein autoregressives Sprachmodell in wenigen Schritten Text aus den Beispielen und dem aktuellen Dialogkontext generiert.
Jede Benutzernachricht und Chatbot-Antwort wird an einen Chat-Verlauf angehängt, sodass zukünftige Antworten vom Dialogkontext zu diesem Zeitpunkt abhängig gemacht werden.
In der Zukunft planen wir, die Funktionalität eines Chatbots hinzuzufügen, damit er mithilfe von Text, der aus einem lokalen Dokumentcache abgerufen wird, eine sachliche Grundlage erhält.
Weitere Informationen finden Sie in diesem Abschnitt in CONTRIBUTORS.md
.
Die vollständige Dokumentation finden Sie hier.
Wenn Sie Fragen oder Kommentare haben, melden Sie bitte ein Problem oder kontaktieren Sie uns auf Discord.
Wenn Sie zu diesem Projekt beitragen möchten, lesen Sie bitte CONTRIBUTORS.md
in diesem Repository und unterzeichnen Sie die Lizenzvereinbarung für Mitwirkende, bevor Sie Pull-Anfragen einreichen. Ein Link zum Signieren der Cohere CLA wird generiert, wenn Sie zum ersten Mal eine Pull-Anfrage an ein Cohere-Repository stellen.
Zusätzlich zu Richtlinien für die Übermittlung von Code an dieses Repository enthält CONTRIBUTORS.md
eine exemplarische Vorgehensweise, die Entwicklern den Einstieg erleichtert, sowie Schaltpläne, die erklären, wie conversant
unter der Haube funktioniert. ?
conversant
verfügt über eine MIT-Lizenz.