| Generative AI Application Builder auf AWS | ? Funktionsanfrage | ? Fehlerbericht | Implementierungsleitfaden |
NOTIZ:
Die Generative AI Application Builder on AWS-Lösung (GAAB) bietet ein webbasiertes Management-Dashboard zur Bereitstellung anpassbarer Anwendungsfälle für generative KI (Gen AI). Mit diesem Bereitstellungs-Dashboard können Kunden verschiedene Kombinationen von LLM-Anwendungsfällen (Large Language Model) bereitstellen, damit experimentieren und vergleichen. Sobald Kunden ihren Anwendungsfall erfolgreich konfiguriert und optimiert haben, können sie ihre Bereitstellung in die Produktion übernehmen und in ihre Anwendungen integrieren.
Der Generative AI Application Builder wird unter einer Apache 2.0-Lizenz veröffentlicht und richtet sich an Anfänger bis erfahrene Benutzer, die verschiedene Gen AI-Anwendungsfälle experimentieren und produzieren möchten. Die Lösung nutzt die Open-Source-Software (OSS) von LangChain, um Verbindungen zu den Large Language Models (LLMs) Ihrer Wahl für verschiedene Anwendungsfälle zu konfigurieren. Mit der ersten Version von GAAB können Benutzer Chat-Anwendungsfälle bereitstellen, die die Möglichkeit bieten, die Unternehmensdaten der Benutzer in einer Benutzeroberfläche (UI) im Chatbot-Stil abzufragen, zusammen mit einer API zur Unterstützung benutzerdefinierter Endbenutzerimplementierungen.
Einige der Merkmale von GAAB sind:
Eine detaillierte Anleitung zur Lösungsimplementierung finden Sie unter The Generative AI Application Builder auf AWS
Es gibt drei einzigartige Benutzerpersönlichkeiten, auf die in der folgenden Lösungsanleitung Bezug genommen wird:
NOTIZ:
Wenn der DevOps-Benutzer das Bereitstellungs-Dashboard bereitstellt, werden die folgenden Komponenten im AWS-Konto bereitgestellt:
Note: Although the Deployment dashboard can be launched in most AWS regions, the deployed use cases have some restrictions based on service availability. See Supported AWS Regions in the Implementation Guide for more details.
Sobald das Bereitstellungs-Dashboard bereitgestellt ist, kann der Administrator mehrere Anwendungsfall-Stacks bereitstellen. Wenn ein Anwendungsfall-Stack vom Administratorbenutzer bereitgestellt wird, werden die folgenden Komponenten im AWS-Konto bereitgestellt:
NOTIZ:
Für die Bereitstellung in Ihrem AWS-Konto gibt es zwei Optionen:
cdk deploy
Für die lokale Erstellung und Bereitstellung gelten folgende Voraussetzungen:
ensurepip
und pip
enthalten. Wenn Sie jedoch in einer Umgebung ohne diese Pakete ausgeführt werden, müssen Sie sie manuell installieren (z. B. ein minimales Docker-Image). Weitere Informationen finden Sie in der Installationsanleitung von pip. Hinweis: Konfigurieren Sie die AWS CLI mit Ihren AWS-Anmeldeinformationen oder lassen Sie diese in die CLI-Terminalumgebung exportieren. Falls die Anmeldeinformationen ungültig oder abgelaufen sind, führt die Ausführung cdk deploy
zu einem Fehler.
Wenn Sie cdk bootstrap
in diesem Konto und dieser Region noch nicht ausgeführt haben, befolgen Sie bitte die Anweisungen hier, um cdk Bootstrap als einmaligen Vorgang auszuführen, bevor Sie mit den folgenden Schritten fortfahren.
Führen Sie nach dem Klonen des Repos von GitHub die folgenden Schritte aus:
NOTIZ:
cdk-asset-bucket
in source/infrastructure/cdk.json
. Der Wert dieser Eigenschaft sollte der Bucket-Name sein, der cdk bootstrap
Prozess erstellt wurde. Sofern kein Bucket-Name konfiguriert ist, erstellt der cdk bootstrap
Prozess einen Bucket im folgenden Format: cdk-hnb659fds-assets--
(wobei die AWS-Konto-ID ist, in der die Lösung bereitgestellt wird). das Spezifische). Für das Repo ist derzeit der folgende Wert festgelegt: "cdk-asset-bucket": "cdk-hnb659fds-assets-123456789012-us-east-1"
cd /source/infrastructure
npm install
npm run build
cdk synth
cdk deploy DeploymentPlatformStack --parameters AdminUserEmail=
Hinweis: Da cdk deploy
mit einem Stack-Namen ausgeführt wird, werden die anderen CloudFormation-Stacks im Infrastrukturordner nicht synthetisiert. Um sicherzustellen, dass alle Stacks basierend auf den Änderungen am Infrastrukturcode synthetisiert werden, stellen Sie bitte sicher, dass Sie cdk synth
verwenden. Eine vollständige Liste der cdk-Befehle, die ausgeführt werden können, finden Sie unter Toolkit-Befehle
Damit das Bereitstellungs-Dashboard LLM-Chat-Anwendungsfälle bereitstellen kann, müssten Sie zusätzlich synthetisierte CDK-Assets (z. B. Lambdas, synthetisierte CloudFormation-Vorlagen usw.) aus dem Verzeichnis source/infrastructure/cdk.out
in einen konfigurierten S3-Bucket in Ihrem Konto bereitstellen von wo diese Ressourcen zum Zeitpunkt der Bereitstellung abgerufen werden. Um das Staging dieser Assets zu vereinfachen, können Sie das Skript source/stage-assets.sh
verwenden. Dieses Skript sollte aus dem source
ausgeführt werden.
cd /source
./stage-assets.sh
Wenn es ausgeführt wird, sieht das Skript folgendermaßen aus:
>>> ./stage-assets.sh
This script should be run from the 'source' folder
The region to upload CDK artifacts to (default:us-east-1)?
>>> us-west-2
>>> All assets will be uploaded to cdk-hnb659fds-assets-123456789-us-west-2
>>> Do you want to proceed? (y/n) y
Sie müssen den vollständigen Regionsnamen als erste Eingabe für das Skript angeben, wie im obigen Beispiel gezeigt.
Hinweis: Assets müssen bei jeder Änderung in der Codebasis bereitgestellt werden, um über die aktuellsten bereitgestellten Assets zu verfügen. Es wird außerdem empfohlen, cdk synth
vor dem Staging auszuführen.
Weitere Informationen finden Sie im Abschnitt Erstellen eines benutzerdefinierten Builds
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Config
├── LICENSE.txt
├── NOTICE.txt
├── README.md
├── buildspec.yml
├── deployment
│ ├── build-open-source-dist.sh
│ ├── build-s3-dist.sh
│ ├── cdk-solution-helper
│ ├── clean-for-scan.sh
│ ├── get-cdk-version.js
│ └── manifest.yaml
| ├── run-unit-tests.sh [shell script that can run unit tests for the entire project]
├── pyproject.toml
├── pytest.ini
├── sonar-project.properties
└── source
├── images
├── infrastructure [CDK infrastructure]
├── lambda [Lambda functions for the application]
├── pre-build-lambda-layers.sh [pre-builds lambda layers for the project]
├── scripts [standalone utility scripts]
├── stage-assets.sh
├── test
├── ui-chat [Web App project for chat UI]
└── ui-deployment [Web App project for deployment dashboard UI]
└── docs
Das Projekt stellt einen Dokumentordner bereit, der Ihnen Zugriff auf Beispieleingaben von SageMaker bietet. Da SageMaker-Modelle eine Vielzahl von Eingabe- bzw. Ausgabeschemata aufnehmen und ausgeben können, fordert die Lösung diese Werte von den Benutzern an, um einen korrekten Modellaufruf zu ermöglichen. Dadurch kann die Lösung eine breite Palette von SageMaker-Modellen unterstützen.
Die Eingabeschemata stellen im Wesentlichen die Nutzlast Ihres Modells dar, mit Platzhaltern für die tatsächlichen Werte. Die Platzhalter ermöglichen das Ersetzen der tatsächlichen Modellwerte zur Laufzeit und werden durch ein in spitze Klammern eingeschlossenes Schlüsselwort wie <
dargestellt. Beachten Sie, dass <
und <
reservierte Platzhalter für die Modelleingabeaufforderung bzw. Temperaturen sind.
Der Ausgabe-JSONPath des Modells stellt der Lösung einen Pfad zum Abrufen der Textantwort des LLM aus der Modellantwort bereit.
Bitte sehen Sie sich immer die Modelldokumentation und die SageMaker JumpStart Jupyter-Notebook-Beispiele an, um die aktuellsten Modellnutzlasten und unterstützten Parameter zu sehen.
Führen Sie den folgenden Befehl aus:
git clone https://github.com/aws-solutions/
cd /source/infrastructure
npm install
Hinweis: Um die Komponententests auszuführen, muss Docker installiert und ausgeführt werden und gültige AWS-Anmeldeinformationen müssen konfiguriert sein.
cd /deployment
chmod +x ./run-unit-tests.sh
./run-unit-tests.sh
export DIST_OUTPUT_BUCKET=my-bucket-name
export VERSION=my-version
cd /deployment
chmod +x ./build-s3-dist.sh
./build-s3-dist.sh $DIST_OUTPUT_BUCKET $SOLUTION_NAME $VERSION $CF_TEMPLATE_BUCKET_NAME
Parameterdetails:
$DIST_OUTPUT_BUCKET - This is the global name of the distribution. For the bucket name, the AWS Region is added to the global name (example: 'my-bucket-name-us-east-1') to create a regional bucket. The lambda
artifacts should be uploaded to the regional buckets for the CloudFormation template to pick it up for deployment.
$SOLUTION_NAME - The name of This solution (example: generative-ai-application-builder-on-aws)
$VERSION - The version number of the change
$CF_TEMPLATE_BUCKET_NAME - The name of the S3 bucket where the CloudFormation templates should be uploaded
Wenn Sie Buckets erstellen und verwenden, empfehlen wir Folgendes:
Hinweis: Sie müssen die AWS CLI installiert haben.
aws s3 cp ./global-s3-assets/ s3://my-bucket-name-/generative-ai-application-builder-on-aws// --recursive --acl bucket-owner-full-control --profile aws-cred-profile-name
aws s3 cp ./regional-s3-assets/ s3://my-bucket-name-/generative-ai-application-builder-on-aws// --recursive --acl bucket-owner-full-control --profile aws-cred-profile-name
Die Lösung umfasst zwei separate React-basierte Webanwendungen: die Deployment Dashboard-Benutzeroberfläche und die Chat-Benutzeroberfläche. Beide Benutzeroberflächen werden mit Vite erstellt, einem modernen und schnellen Build-Tool für moderne Webprojekte.
Öffnen Sie ein Terminal
Navigieren Sie zum Quellverzeichnis
source
im Projektstammverzeichnis: cd /source
Laufzeitkonfiguration abrufen und aktualisieren
Führen Sie das bereitgestellte Skript setup_local_dev_server.py
mit den entsprechenden Argumenten aus:
python setup_local_dev_server.py --ui-project-type --website
entweder durch ui-chat
oder ui-deployment
je nachdem, welches UI-Projekt Sie einrichten möchten.
durch die URL der Website, auf der die Lösung bereitgestellt wird (z. B. https://example.com
).Das Skript ruft die Laufzeitkonfiguration ab, die zum Konfigurieren von AWS Amplify verwendet wird und das das Projekt verwendet. Außerdem wird der Cognito-App-Client aktualisiert, indem die Localhost-Adresse zur Callback-URLs- und Logouturls-Liste hinzugefügt wird, sodass er mit der von Cognito gehosteten Domäne funktioniert.
So aktualisieren Sie beispielsweise das UI-Chat-Projekt:
python setup_local_dev_server.py --ui-project-type ui-chat --website https://example.com
oder
python setup_local_dev_server.py -t ui-chat -w https://example.com
So aktualisieren Sie das UI-Bereitstellungsprojekt:
python setup_local_dev_server.py --ui-project-type ui-deployment --website https://example.com
oder
python setup_local_dev_server.py -t ui-deployment -w https://example.com
Navigieren Sie zum UI-Projektverzeichnis
Wechseln Sie in das Verzeichnis des UI-Projekts, mit dem Sie arbeiten möchten:
cd ui-chat
oder
cd ui-deployment
Abhängigkeiten installieren
Installieren Sie die erforderlichen Node.js-Abhängigkeiten, indem Sie den folgenden Befehl im Projektverzeichnis ausführen:
npm install
Starten Sie den lokalen Entwicklungsserver
Führen Sie im Projektverzeichnis den folgenden Befehl aus, um den lokalen Vite-Entwicklungsserver zu starten:
npm start
Der Deployment Dashboard-UI-Entwicklungsserver startet unter http://localhost:5177
und der Chat-UI-Entwicklungsserver startet unter http://localhost:5178
.
Wenn diese Ports auf Ihrem Computer bereits verwendet werden, können Sie das Skript setup_local_dev_server.py
anpassen, um andere Ports zu verwenden.
Nachdem Sie die lokale Entwicklungsumgebung eingerichtet haben, können Sie nun die React-Komponenten und die Funktionalität der UI-Projekte entsprechend Ihren Anforderungen anpassen. Der Quellcode für die Deployment Dashboard-Benutzeroberfläche befindet sich im Verzeichnis source/ui-deployment
“ und der Quellcode für die Chat-Benutzeroberfläche befindet sich im Verzeichnis source/ui-chat
.
Befolgen Sie den standardmäßigen React-Entwicklungsworkflow, um Änderungen am Code vorzunehmen, und verwenden Sie den lokalen Vite-Entwicklungsserver, um eine Vorschau Ihrer Änderungen in Echtzeit anzuzeigen.
Wenn Sie bereit sind, Ihre benutzerdefinierten UI-Projekte bereitzustellen, befolgen Sie die Anweisungen in der Haupt-README-Datei zum Erstellen und Bereitstellen der Lösung mithilfe des AWS CDK.
Diese Lösung sammelt anonymisierte Betriebsmetriken, um AWS dabei zu helfen, die Qualität und Funktionen der Lösung zu verbessern. Weitere Informationen, einschließlich der Deaktivierung dieser Funktion, finden Sie im Implementierungsleitfaden.
Urheberrecht: Amazon.com, Inc. oder seine Tochtergesellschaften. Alle Rechte vorbehalten.
Lizenziert unter der Apache-Lizenz, Version 2.0 (die „Lizenz“); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Eine Kopie der Lizenz erhalten Sie unter
http://www.apache.org/licenses/LICENSE-2.0
Sofern nicht durch geltendes Recht vorgeschrieben oder schriftlich vereinbart, wird die im Rahmen der Lizenz vertriebene Software „WIE BESEHEN“ und OHNE GEWÄHRLEISTUNGEN ODER BEDINGUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend, vertrieben. Die spezifische Sprache, die die Berechtigungen und Einschränkungen im Rahmen der Lizenz regelt, finden Sie in der Lizenz.
Ein Skript ist enthalten, um mit v1.X erstellte Anwendungsfälle in eine aktualisierte v2.X-Bereitstellung zu migrieren. Siehe Dokumentation