PlayFetch
Mit PlayFetch können Sie Ihrer App schnell und problemlos Funktionen für große Sprachmodelle hinzufügen.
Hintergrund
LLMs haben die Art und Weise verändert, wie Produktteams arbeiten. Immer größere Teile der Anwendungen werden mittlerweile mit natürlicher Sprache erstellt. An diesem Prozess sind häufig nicht-technische Teammitglieder beteiligt – Content-Strategen, denen der Ton und die Übermittlung des generierten Textes am Herzen liegen, Fachexperten, die hochspezialisiertes Wissen in die generierten Inhalte einbringen, und Designer und Produktmanager, die ein tiefes Verständnis dafür haben ihre Produktbedürfnisse. Da diese neuen Teammitglieder neben dem Engineering-Team an der Prototypenerstellung, Entwicklung und Wartung kritischer Teile von Anwendungen beteiligt sind, ergeben sich viele neue Interaktionen.
Diese neuen Interaktionen zwischen Ingenieuren und dem Rest des Teams erfordern neue Werkzeuge. Ingenieure möchten nicht, dass Klartext in ihren Codebasen verteilt wird und ständig nach Aktualisierungen gefragt wird, nur um dann festzustellen, dass die neue Version nicht wirklich besser ist. Mitwirkende an Eingabeaufforderungen oder Ketten möchten nicht darauf warten müssen, dass ein Techniker ihre Updates integriert, bevor sie feststellen, dass sie nicht wie erwartet funktionieren. PlayFetch löst diese und viele andere Probleme, die wir bei Unternehmen beobachtet haben, die auf diese Weise arbeiten.
Was ist PlayFetch?
- Ein intuitiver Prompt-Playground, der auf der Zusammenarbeit mit Kommentaren, Anmerkungen, Beschriftungen und Bewertungen basiert.
- Ein zerstörungsfreies Versionierungssystem, das jedes Teammitglied transparent nutzen kann.
- Eine Testumgebung mit Datenimport und -export, Messketten und automatisierten Chatbot-Tests.
- Eine LLM-Plattform, die sich nahtlos in Tools für Quellcodeverwaltung, Projektmanagement und Vektorspeicher integrieren lässt.
- Eine modellunabhängige Hosting-Lösung mit einer einfachen einheitlichen API, die einfache Anrufe, Chat und manuelle Unterbrechungen unterstützt.
- Eine Analyse- und Überwachungslösung, die sich auf die LLM-Funktionsanforderungen konzentriert.
Bereitstellung von PlayFetch in Google Cloud
PlayFetch wurde für die Ausführung auf der Google Cloud Platform optimiert. Befolgen Sie die nachstehenden Anweisungen, um Ihre eigene Instanz zum Laufen zu bringen. Wir gehen davon aus, dass Sie das offizielle PlayFetch-Repository unter https://github.com/yello-xyz/playfetch geforkt haben (damit Sie eine kontinuierliche Integration einrichten können). Wenn Sie Codeänderungen vornehmen möchten, können Sie diese Anweisungen mehrmals durchgehen, um separate Instanzen für Entwicklung, Staging und Produktion einzurichten.
Konfigurieren Sie ein neues Projekt
- Richten Sie Ihr Google Cloud Platform-Konto unter https://cloud.google.com/ ein.
- Greifen Sie auf die Cloud Console unter https://console.cloud.google.com zu.
- Navigieren Sie zu IAM & Admin → Ressourcen verwalten und klicken Sie auf PROJEKT ERSTELLEN .
- Wählen Sie einen eindeutigen Namen (kann später nicht geändert werden) und klicken Sie auf ERSTELLEN .
- Navigieren Sie zu Abrechnung und stellen Sie unter Kontoverwaltung sicher, dass die Abrechnung für das neue Projekt aktiviert ist.
Konfigurieren Sie APIs
- Navigieren Sie zu APIs & Services → Aktivierte APIs & Services .
- Stellen Sie sicher, dass das neu erstellte Projekt oben in der Projektauswahl ausgewählt ist.
- Klicken Sie auf APIs und Dienste aktivieren .
- Suchen Sie nach der App Engine Admin API und klicken Sie auf AKTIVIEREN .
- Suchen Sie nach Cloud Build API und klicken Sie auf AKTIVIEREN .
- Suchen Sie nach Cloud Datastore API und klicken Sie auf AKTIVIEREN .
- Suchen Sie nach Cloud Scheduler API und klicken Sie auf AKTIVIEREN .
- Suchen Sie nach der flexiblen Google App Engine-Umgebung und klicken Sie auf AKTIVIEREN .
- Suchen Sie nach Identity and Access Management (IAM) API und klicken Sie auf AKTIVIEREN .
- Suchen Sie nach Vertex AI API und klicken Sie auf AKTIVIEREN .
Konfigurieren Sie die App Engine-Anwendung
- Navigieren Sie zu App Engine → Dashboard und klicken Sie auf ANWENDUNG ERSTELLEN .
- Wählen Sie einen Standort (kann später nicht geändert werden).
- Lassen Sie die Option „Dienstkonto“ geöffnet (wir verwenden die Standardeinstellung) und klicken Sie auf WEITER .
- Ignorieren Sie das Bereitstellungsfenster (klicken Sie auf „ICH WERDE DAS SPÄTER MACHEN “).
Konfigurieren Sie den Datenspeicher
- Navigieren Sie zu Datastore .
- Wenn der (Standard-) Datenspeicher nicht angezeigt wird, warten Sie eine Minute und aktualisieren Sie ihn.
- Wählen Sie den (Standard-) Datenspeicher aus.
- Wählen Sie in der Seitenleiste „ Time-to-live (TTL)“ aus und klicken Sie auf „RICHTLINIE ERSTELLEN“ .
- Setzen Sie „Kind“ auf „_nextauth_token“ und „Timestamp“ auf „expires“ und klicken Sie auf „CREATE“ .
- Erstellen Sie eine weitere Richtlinie mit der Art „cache“ und der Eigenschaft „expiresAt“ .
Konfigurieren Sie den Speicher-Bucket
- Navigieren Sie zu Cloud Storage → Buckets und wählen Sie Bucket [Projektname] .appspot.com aus.
- Klicken Sie unter BERECHTIGUNGEN auf ZUGRIFF GEWÄHREN .
- Fügen Sie den Hauptbenutzer allUsers hinzu und weisen Sie die Rolle Storage Object Viewer zu.
- Klicken Sie auf SPEICHERN und ÖFFENTLICHEN ZUGRIFF ERLAUBEN (dieser Bucket wird zum Speichern von Avataren verwendet).
Erstellen Sie das Build-Dienstkonto
- Navigieren Sie zu IAM & Admin → Dienstkonten und klicken Sie auf DIENSTKONTO ERSTELLEN .
- Wählen Sie einen eindeutigen Namen und klicken Sie auf ERSTELLEN UND FORTFAHREN .
- Wählen Sie die Rolle „Dienstkontobenutzer“ aus.
- Klicken Sie auf WEITERE ROLLE HINZUFÜGEN und wählen Sie App Engine Deployer aus.
- Klicken Sie auf WEITERE ROLLE HINZUFÜGEN und wählen Sie den Service-Agent für die flexible App Engine-Umgebung aus.
- Klicken Sie auf WEITERE ROLLE HINZUFÜGEN und wählen Sie App Engine Service Admin aus.
- Klicken Sie auf WEITERE ROLLE HINZUFÜGEN und wählen Sie Cloud Build Service Account aus.
- Klicken Sie auf WEITERE ROLLE HINZUFÜGEN und wählen Sie Cloud Datastore Index Admin aus.
- Klicken Sie auf WEITERE ROLLE HINZUFÜGEN und wählen Sie Cloud Scheduler-Administrator aus.
- Klicken Sie auf WEITER und FERTIG .
[optional] Benutzerdefinierte Domäne konfigurieren
- Navigieren Sie zu App Engine → Einstellungen .
- Klicken Sie unter BENUTZERDEFINIERTE DOMÄNEN auf BENUTZERDEFINIERTE DOMÄNE HINZUFÜGEN .
- Geben Sie die benutzerdefinierte Domäne und die Subdomänen ein, die Sie verwenden möchten (folgen Sie den Anweisungen zur Überprüfung des Besitzes).
- Klicken Sie auf WEITER und FERTIG .
- Fügen Sie die angezeigten Einträge zur DNS-Konfiguration Ihres benutzerdefinierten Domänenanbieters hinzu.
[optional, aber empfohlen] Konfigurieren Sie die Google OAuth-Benutzerauthentifizierung
- Navigieren Sie zu APIs & Dienste → OAuth-Zustimmungsbildschirm .
- Wählen Sie je nach Anwendungsfall entweder den Benutzertyp „Intern“ oder „Extern“ und klicken Sie auf ERSTELLEN .
- Füllen Sie die erforderlichen Felder aus, klicken Sie auf SPEICHERN UND WEITER und dann auf SCOPES HINZUFÜGEN ODER ENTFERNEN .
- Überprüfen Sie den Bereich .../auth/userinfo.profile und .../auth/userinfo.email und klicken Sie dann auf UPDATE und SAVE AND CONTINUE .
- Wenn Sie oben den Typ „Externer Benutzer“ ausgewählt haben, können Sie einige Testkonten hinzufügen (bevor Sie die App in der Produktion veröffentlichen). Geben Sie unbedingt die E-Mail-Adresse an, die Sie für Ihren ersten Admin-Benutzer verwenden möchten. Beachten Sie, dass Sie diesen Benutzern weiterhin auch in PlayFetch Zugriff gewähren müssen.
- Klicken Sie auf SPEICHERN UND WEITER und dann auf ZURÜCK ZUM DASHBOARD .
- Wählen Sie in der Seitenleiste Anmeldeinformationen aus und klicken Sie dann auf Anmeldeinformationen und OAuth-Client-ID erstellen .
- Wählen Sie Webanwendung als Anwendungstyp und wählen Sie einen Namen.
- Fügen Sie unter Autorisierte JavaScript-Ursprünge https:// [Projektname] .appspot.com (und eine benutzerdefinierte Domäne, falls vorhanden) hinzu. Wenn Sie beim lokalen Ausführen der App auch die Google-Authentifizierung verwenden möchten, fügen Sie auch http://localhost:3000 hinzu.
- Fügen Sie unter Autorisierte Weiterleitungs-URIs https:// [Projektname] .appspot.com/api/auth/callback/google hinzu (und eine ähnliche URL für jede benutzerdefinierte Domäne). Wenn Sie beim lokalen Ausführen der App auch die Google-Authentifizierung verwenden möchten, fügen Sie auch http://localhost:3000/api/auth/callback/google hinzu.
- Klicken Sie auf ERSTELLEN und kopieren Sie die generierte Client-ID und das Client-Geheimnis, um sie im Build-Trigger-Setup unten zu verwenden.
Konfigurieren Sie den Build
- Navigieren Sie zu Cloud Build → Triggers und klicken Sie auf REPOSITORY VERBINDEN .
- Wählen Sie Quell- GitHub (Cloud Build GitHub App) aus und klicken Sie auf WEITER, um das GitHub-Konto zu authentifizieren, in dem Sie das Repository geforkt haben (in einem Popup-Fenster).
- Wählen Sie das geforkte Repository aus, aktivieren Sie das Kontrollkästchen darunter und klicken Sie auf VERBINDEN .
- Klicken Sie auf TRIGGER ERSTELLEN .
- Wählen Sie einen Namen für Ihren Build.
- Wählen Sie unter Konfiguration die Cloud Build-Konfigurationsdatei (YAML oder JSON) aus.
- Für eine Mindesteinrichtung müssen Sie die folgenden Substitutionsvariablen zu Ihrem Build-Trigger (im Abschnitt „Erweitert“ ) hinzufügen, indem Sie auf VARIABLE HINZUFÜGEN klicken:
- _ENCRYPTION_KEY : zufällige Zeichenfolge mit 64 hexadezimalen Ziffern.
- _NEXTAUTH_SECRET : zufällige Zeichenfolge mit mindestens 32 Zeichen.
- _NEXTAUTH_URL : öffentlich zugängliche URL für Ihre Instanz, entweder eine benutzerdefinierte Domäne, falls Sie eine haben, oder andernfalls https:// [Projektname] .appspot.com .
- _GCLOUD_STORAGE_BUCKET : Der Name des Cloud Storage-Buckets, auf den Sie öffentlichen Zugriff gewährt haben, z. B. [Projektname] .appspot.com .
- _NOREPLY_EMAIL_USER und _NOREPLY_EMAIL_PASSWORD : Gmail-Konto, das für ausgehende Transaktions-E-Mails verwendet werden soll. Dies kann ein dediziertes Konto in Ihrem Google Workspace (mit regulärem Passwort) oder ein separates Gmail-Konto (mit App-Passwort) sein. Lesen Sie die nachstehenden Anweisungen, wenn Sie einen anderen E-Mail-Anbieter verwenden müssen.
- Wenn Sie oben die Google-Authentifizierung konfiguriert haben, sollten Sie auch die folgenden Variablen hinzufügen:
- _GOOGLE_CLIENT_ID und _GOOGLE_CLIENT_SECRET : die Werte, die Sie oben kopiert haben, nachdem Sie OAuth-Anmeldeinformationen generiert haben.
- Wählen Sie unter Dienstkonto das Dienstkonto aus, das Sie oben erstellt haben.
- Klicken Sie auf ERSTELLEN .
- Klicken Sie neben Ihrem neu erstellten Trigger auf AUSFÜHREN und dann auf TRIGGER AUSFÜHREN.
- Wählen Sie in der Seitenleiste „Verlauf“ aus und warten Sie, bis der Build erfolgreich abgeschlossen wurde (kann 10–15 Minuten dauern).
Initialisieren Sie Ihre PlayFetch-Umgebung
- Wählen Sie eine E-Mail-Adresse aus, die als Login für den ersten Admin-Benutzer verwendet wird.
- Öffnen Sie einen Browser und navigieren Sie zu https:// [Projektname] .appspot.com/api/admin/init?admin= [[email protected]] (stellen Sie sicher, dass Sie in der Abfrage die richtige E-Mail-Adresse angeben).
- Dieser Endpunkt führt ein Skript aus, um den Datenspeicher zu initialisieren (was eine Minute dauern kann), aber Sie können es nur einmal ausführen (es sei denn, Sie erstellen den Datenspeicher neu).
- Sobald das Skript abgeschlossen ist, kopieren Sie die Werte für _PLAYFETCH_API_KEY und _PLAYFETCH_ENDPOINT_URL , die in der Antwort angezeigt werden.
- Navigieren Sie zu Cloud Build → Triggers , klicken Sie auf den von Ihnen erstellten Trigger, fügen Sie die beiden zusätzlichen Substitutionsvariablen aus dem obigen Schritt hinzu und klicken Sie auf SPEICHERN .
- Führen Sie Ihren Build-Trigger erneut mit den hinzugefügten Variablen aus. Dieser Build muss möglicherweise fehlende Datenspeicherindizes generieren. Warten Sie daher am besten, bis er erneut abgeschlossen ist.
Sie sollten nun in der Lage sein, zu https:// [Projektname] .appspot.com zu navigieren und sich mit der E-Mail-Adresse anzumelden, die Sie für Ihren ersten Administratorbenutzer angegeben haben. Sie können entweder die Google-Authentifizierung (falls konfiguriert) oder E-Mail-Links verwenden (vorausgesetzt, die _NOREPLY_EMAIL- Variablen sind korrekt eingerichtet). Im Admin-Bereich kann weiteren Benutzern Zugriff gewährt werden.
PlayFetch lokal ausführen
Wenn Sie zu PlayFetch beitragen oder Probleme beheben möchten, können Sie die folgenden Anweisungen befolgen, um es auf Ihrem lokalen Computer zum Laufen zu bringen.
Installieren Sie Node und NPM
Der einfachste Weg, die neueste Version von Node und NPM zu installieren, besteht darin, das neueste Installationsprogramm auszuführen.
Klonen Sie das Repository
Entweder mit GitHub Desktop öffnen und in ein lokales Verzeichnis klonen oder mit SSH eine Verbindung zu GitHub herstellen und git clone [email protected]:yello-xyz/playfetch.git
ausführen. Wenn Sie das Repository bereits geforkt haben, können Sie stattdessen dieses klonen.
Umgebung konfigurieren
Um die App lokal auszuführen, müssen Sie einige derselben Variablen zu Ihrer lokalen .env.local- Datei hinzufügen (diese Datei wird von der Quellcodeverwaltung ignoriert, um Schlüssellecks zu vermeiden). Dies können die gleichen Werte sein wie die, die Sie in Ihrem Google Cloud-Build-Trigger für Ihre Entwicklungsinstanz angegeben haben (vorausgesetzt, Sie führen eine separate Instanz für die Produktion aus, da Sie nicht riskieren möchten, dass diese Schlüssel verloren gehen), mit Ausnahme von _NEXTAUTH_URL , wo angegeben werden sollte der Wert http://localhost:3000.
Sie können von Ihrem lokalen Computer aus auf den Datenspeicher in Google Cloud zugreifen (vorausgesetzt, Sie führen eine separate Entwicklungsinstanz aus, damit Sie nicht versehentlich Produktionsdaten beschädigen oder verlieren), indem Sie die Google Cloud-CLI installieren und wie hier erläutert initialisieren (Sie können dies überspringen). die anderen Schritte). Führen Sie die folgenden Befehle aus, um sich mit Ihrem Google-Konto anzumelden:
-
gcloud auth login
-
gcloud init
-
gcloud auth application-default login
-
gcloud init
Erstellen und ausführen
Sie sollten nun in der Lage sein, die folgenden Befehle auszuführen:
-
npm install
-
npm run build
-
npm run start
Alternativ können Sie während der Entwicklung einfach den folgenden Befehl ausführen, um einen Debug-Build mit schneller Aktualisierung auszuführen:
npm run dev
Um alle Tests einmal auszuführen:
npm run test
Um auf Änderungen zu achten und die relevanten Testsuiten automatisch erneut auszuführen:
npm run watch
Optionale Funktionen
Um die Mindesteinrichtung zu erweitern, können Sie die folgenden Umgebungsvariablen konfigurieren (entweder in Ihrem GCP-Build-Trigger oder in Ihrer lokalen .env.local-Datei), um einige zusätzliche Funktionen zu aktivieren.
Integrationen
- _GITHUB_CLIENT_ID , _GITHUB_CLIENT_SECRET : kann zum Konfigurieren der GitHub-OAuth-Authentifizierung verwendet werden (ähnlich wie bei Google). Erfordert die Einrichtung einer GitHub OAuth-App.
- _GITHUB_APP_CLIENT_ID , _GITHUB_APP_CLIENT_SECRET , _GITHUB_APP_ID , _GITHUB_APP_PRIVATE_KEY , _NEXT_PUBLIC_GITHUB_APP_INSTALL_LINK : Kann zum Konfigurieren der Versionsverwaltungsintegration verwendet werden. Erfordert die Einrichtung einer GitHub-App.
- _LINEAR_APP_CLIENT_ID , _LINEAR_APP_CLIENT_SECRET , _LINEAR_APP_WEBHOOK_SECRET : Kann zum Konfigurieren der Aufgabenverwaltungsintegration verwendet werden. Erfordert auch die Einrichtung einer Linear-App.
- _NOTION_TOKEN, _NOTION_ONBOARDING_PAGE_ID, _NOTION_WAITLIST_PAGE_ID : können verwendet werden, um Wartelistenanmeldungen und Onboarding-Umfrageantworten automatisch mit Notion zu synchronisieren. Erfordert die Einrichtung einer Notion-App.
Analytik
- _GOOGLE_ANALYTICS_API_SECRET , _GOOGLE_ANALYTICS_MEASUREMENT_ID : kann zum Konfigurieren serverseitiger Analysen (GA4) verwendet werden.
- _NEXT_PUBLIC_GOOGLE_TAG_MANAGER_ID , _NEXT_PUBLIC_COOKIE_DOMAIN , _NEXT_PUBLIC_COOKIE_NAME : kann zum Konfigurieren von Cookies und clientseitigen Analysen (Google Tag Manager) verwendet werden.
Umfeld
- _GOOGLE_ANALYTICS_DASHBOARD_URL , _GOOGLE_ANALYTICS_REPORTS_URL , _GOOGLE_SEARCH_CONSOLE_URL , _INTEGRATION_TEST_URL , _SERVER_LOGS_URL : können verwendet werden, um verschiedene Diagnoselinks im Admin-Bereich hinzuzufügen.
- _NEXT_PUBLIC_DOCS_URL , _NEXT_PUBLIC_SUPPORT_EMAIL : können verwendet werden, um die Links zu Dokumentation und Support im Arbeitsbereich und in den Projektseitenleisten zu generieren.
- _NOREPLY_EMAIL_HOST , _NOREPLY_EMAIL_PORT : kann verwendet werden, um einen alternativen E-Mail-Anbieter für ausgehende Transaktions-E-Mails zu konfigurieren.
- _API_URL : kann verwendet werden, um den Datenverkehr zwischen Website und API aufzuteilen, z. B. wenn Sie separate Subdomains haben, die auf Ihre Instanz verweisen.
Lizenz
PlayFetch ist Open Source und steht unter einer freizügigen MIT-Lizenz.
Bitte beachten Sie, dass PlayFetch CodeMirror als Abhängigkeit verwendet. Wenn Sie CodeMirror kommerziell nutzen, besteht eine soziale (jedoch keine rechtliche) Erwartung, dass Sie bei der Finanzierung der Wartung mithelfen.
Mitwirken
PlayFetch wird auf GitHub entwickelt. Beiträge sind willkommen. Fühlen Sie sich frei, Probleme zu öffnen oder Pull-Requests zu öffnen, wenn Sie Fehler beheben oder Funktionen hinzufügen. Um Ihnen den Einstieg zu erleichtern, finden Sie in TODO.md einige Inspirationen.