Der Zweck dieses Machbarkeitsnachweises besteht darin, zu beurteilen, was erforderlich ist, um einen vielseitigen, zuverlässigen und intuitiven Chatbot zu erstellen, damit Benutzer sich an Alkemio-bezogenen Themen beteiligen können. Das Projekt ist in seiner jetzigen Form nicht einsetzbar, soll aber als wertvoller Input für die Demonstration generativer KI-Fähigkeiten dienen und dabei helfen, zu beurteilen, was zur Einbettung dieser Funktionalität in die Plattform erforderlich ist.
Large Language Models (LLMs) haben sich in der letzten Zeit erheblich verbessert und sind nicht allgegenwärtig und leistungsstark. Dies eröffnet viele Möglichkeiten für den Einsatz in verschiedenen Bereichen. OpenAI ist der bekannteste kommerzielle Anbieter von LLMs, es gibt jedoch eine große Auswahl an LLM-Modellen, entweder kommerziell oder Open Source. Dies bietet zwar Optionen, birgt aber auch die Gefahr einer Anbieterbindung.
LLMs sind nur eine Komponente, die für die praktische Umsetzung generativer KI-Lösungen erforderlich ist, aber auch viele andere „Bausteine“ sind notwendig. Langchain ist eine beliebte Open-Source-Bibliothek, die diese Bausteine bereitstellt und eine Abstraktionsschicht erstellt, wodurch Anbieterunabhängigkeit entsteht.
Die Ausbildung eines LLM ist für die meisten Organisationen unerschwinglich teuer, für die meisten praktischen Implementierungen ist jedoch die Einbeziehung organisationsspezifischer Daten erforderlich. Ein gängiger Ansatz besteht darin, der an das LLM übermittelten Eingabeaufforderung einen spezifischen Kontext zu einer Benutzerfrage hinzuzufügen. Dies stellt eine Herausforderung dar, da LLMs im Allgemeinen nur Eingabeaufforderungen mit einer begrenzten Größe (normalerweise etwa 4.000 Token) zulassen. Daher ist es wichtig, dass die relevanten Kontextinformationen bereitgestellt werden und dass Folgendes getan werden muss:
Dieses Projekt wurde von vielen Artikeln inspiriert, sowohl theoretisch als auch praktisch. Ein erheblicher Teil der Codebasis stammt aus dem Projekt „Building an AWS Well-Architected Chatbot with LangChain“.
Das Projekt wurde als Container-basierter Microservice mit einem RabbitMQ RPC implementiert. Es gibt eine RabbitMQ-Warteschlange:
alkemio-virtual-contributor-engine-guidance
– Warteschlange zum Senden von Anfragen an den MicroserviceDie Anfrage-Payload besteht aus JSON mit folgender Struktur (Beispiel für eine Abfrage):
{
"data": {
"userId": "userID",
"question": "What are the key Alkemio concepts?",
"language": "UK"
},
"pattern": {
"cmd": "query"
}
}
Die Operationstypen sind:
ingest
: Datenerfassung von der Website der Alkemio Foundation (über die Github-Quelle) und Einbettung mithilfe des OpenAI Ada-Textmodells, keine Hinzufügung von Daten .reset
: Setzt den Chat-Verlauf für den laufenden Chat zurück, benötigt eine Benutzer-ID.query
: Stellen Sie die nächste Frage in einer Chatsequenz, siehe BeispielDie Antwort wird in einer automatisch generierten, exklusiven, unbenannten Warteschlange veröffentlicht.
Es gibt einen Implementierungsentwurf für die Interaktionssprache des Modells (dieser muss erheblich verbessert werden). Wenn kein Sprachcode angegeben ist, wird Englisch angenommen. Zur Auswahl stehen: „EN“: „Englisch“, „US“: „Englisch“, „UK“: „Englisch“, „FR“: „Französisch“, „DE“: „Deutsch“, „ES“: „Spanisch“. , „NL“: „Niederländisch“, „BG“: „Bulgarisch“, „UA“: „Ukrainisch“
*Hinweis: Es gibt eine frühere (veraltete) RESTful-Implementierung unter https://github.com/alkem-io/virtual-contributor-engine-guidance/tree/http-api
Der folgende Befehl kann verwendet werden, um den Container über die Docker-CLI zu erstellen (Standardarchitektur ist amd64, also --build-arg ARCHITECTURE=arm64
für amd64-Builds): docker build --build-arg ARCHITECTURE=arm64 --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.4.0 .
docker build --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.2.0 .
Die Docker-Datei verfügt über einige selbsterklärende Konfigurationsargumente.
Mit dem folgenden Befehl kann der Container über die Docker-CLI gestartet werden: docker run --name virtual-contributor-engine-guidance -v /dev/shm:/dev/shm --env-file .env virtual-contributor-engine-guidance
where .env
basiert auf .azure-template.env
Alternativ können Sie docker-compose up -d
verwenden.
mit:
AZURE_OPENAI_API_KEY
: ein gültiger OpenAI-API-SchlüsselOPENAI_API_VERSION
: eine gültige Azure OpenAI-Version. Zum Zeitpunkt des Schreibens ist der letzte Stand 2023-05-15
AZURE_OPENAI_ENDPOINT
: eine gültige Azure OpenAI-Basis-URL, z. B. https://{your-azure-resource-name}.openai.azure.com/
RABBITMQ_HOST
: der RabbitMQ-HostnameRABBITMQ_USER
: der RabbitMQ-BenutzerRABBITMQ_PASSWORD
: das RabbitMQ-PasswortAI_MODEL_TEMPERATURE
: Die temperature
des Modells, verwenden Sie einen Wert zwischen 0 und 1. 1 bedeutet eine eher zufällige Antwort, näher an 0 – eine strengere AntwortLLM_DEPLOYMENT_NAME
: der Bereitstellungsname des AI-GPT-Modells in AzureEMBEDDINGS_DEPLOYMENT_NAME
: der Bereitstellungsname des AI-Einbettungsmodells in AzureAI_SOURCE_WEBSITE
: die URL der Stiftungswebsite, die die Quelldaten enthält (nur für Referenzen)AI_SOURCE_WEBSITE2
: die URL der Willkommenswebsite, die die Quelldaten enthält (nur für Referenzen)AI_LOCAL_PATH
: Lokaler Dateipfad zum Speichern von DatenAI_WEBSITE_REPO
: URL des Git-Repositorys, das die Quelldaten der Foundation-Website enthält, basierend auf Hugo – ohne httpsAI_WEBSITE_REPO2
: URL des Git-Repositorys, das die Quelldaten der Willkommens-Website enthält, basierend auf Hugo – ohne httpsAI_GITHUB_USER
: Github-Benutzer, der zum Klonen von Website-Repos verwendet wirdAI_GITHUB_PAT
: Persönliches Zugriffstoken zum Klonen von Website-ReposLANGCHAIN_TRACING_V2
: Langchain-Tracing aktivierenLANGCHAIN_ENDPOINT
: Langchain-Tracing-Endpunkt (z. B. „https://api.smith.langchain.com“)LANGCHAIN_API_KEY
: Langchain-Tracing-API-SchlüsselLANGCHAIN_PROJECT
: Langchain-Tracing-Projektname (z. B. „virtual-contributor-engine-guidance“) Beispielwerte finden Sie in .azure-template.env
. Konfigurieren Sie sie und erstellen Sie eine .env
Datei mit den aktualisierten Einstellungen.
Für das Projekt ist die Installation von Python & Poetry erforderlich. Die Mindestversionsabhängigkeiten finden Sie unter pyproject.toml
. Nach der Installation von Python & Poetry:
poetry install
poetry run python virtual_contributor_engine_guidance.py
Das Projekt erfordert mindestens Python 3.11 und muss Go und Hugo installiert haben, um eine lokale Version der Website zu erstellen. Installationsanweisungen finden Sie in der Go- und Hugo-Dokumentation (nur bei Ausführung außerhalb des Containers).
Folgende Aufgaben sind noch offen: