Dieser Starter nimmt alle .mdx -Dateien im Verzeichnis pages ein und verarbeitet sie so für den benutzerdefinierten Kontext in OpenAI -Textabschlussanforderungen.
Stellen Sie diesen Starter in Vercel ein. Die Supabase -Integration setzt automatisch die erforderlichen Umgebungsvariablen und konfiguriert Ihr Datenbankschema. Alles, was Sie tun müssen, ist Ihren OPENAI_KEY zu setzen und Sie sind bereit zu gehen!
[
Das Erstellen eines eigenen benutzerdefinierten Chatgpts umfasst vier Schritte:
.mdx Dateien in Ihrem pages ). Schritt 1. und 2. Schließen Sie es zur Bauzeit auf, z. B. wenn Vercel Ihre nächste.js -App erstellt. Während dieser Zeit wird das Skript generate-embeddings ausgeführt, das die folgenden Aufgaben ausführt:
sequenzieren
Teilnehmer Vercel
Teilnehmer DB (PGVector)
Teilnehmer OpenAI (API)
Schleife 1. Vorbereiten Sie die Wissensbasis vor, um zu verarbeiten
Vercel->> Vercel: Chunk .mdx Seiten in Abschnitte
Schleife 2. Erstellen und Store Einbettungen
Vercel->> OpenAI (API): Erstellen Sie Einbettung für den Seitenabschnitt
OpenAI (API)->> Vercel: Einbettungsvektor (1536)
Vercel->> DB (PGVector): Einbettung für den Seitenabschnitt speichern
Ende
Ende
Dieses Skript speichert nicht nur die Einbettungen und generiert auch eine Prüfsumme für jede Ihrer .mdx -Dateien und speichert diese in einer anderen Datenbanktabelle, um sicherzustellen, dass die Einbettungen nur dann regeneriert werden, wenn sich die Datei geändert hat.
Schritt 3. Und 4. Treffen Sie zur Laufzeit, wenn der Benutzer immer eine Frage stellt. In diesem Fall wird die folgende Abfolge von Aufgaben ausgeführt:
sequenzieren
Teilnehmerkunde
Teilnehmerkante -Funktion
Teilnehmer DB (PGVector)
Teilnehmer OpenAI (API)
Client->> Kantenfunktion: {Abfrage: lorem ispum}
Kritisch 3. Durchsuchen der Vektorähnlichkeit durchführen
Kantenfunktion->> OpenAI (API): Erstellen Sie Einbettung für Abfrage
OpenAI (API)->> Kantenfunktion: Einbettungsvektor (1536)
Kantenfunktion->> DB (PGVector): Vektorähnlichkeitssuche
DB (PGVector)->> Kantenfunktion: Relevante DOCS-Inhalte
Ende
kritisch 4. Inhalt in Eingabeaufforderung injizieren
Kantenfunktion->> OpenAI (API): Abschlussanforderung Eingabeaufforderung: Abfrage + relevante Dokumentinhalte
OpenAI (API)->> Client: Text/Ereignisstrom: Abschlüsse Antwort
Ende
Die relevanten Dateien hierfür sind die SearchDialog (Client) -Komponente und die vector-search (Edge-Funktion).
Die Initialisierung der Datenbank, einschließlich der Einrichtung der pgvector -Erweiterung, wird im Ordner supabase/migrations gespeichert, der automatisch auf Ihre lokale Postgres -Instanz angewendet wird, wenn supabase start ausgeführt wird.
cp .env.example .envOPENAI_KEY in der neu erstellten .env -Datei ein.NEXT_PUBLIC_SUPABASE_ANON_KEY und SUPABASE_SERVICE_ROLE_KEY :Hinweis: Sie müssen Supabase ausführen, um die Schlüssel abzurufen.
Stellen Sie sicher, dass Sie Docker installiert und lokal ausgeführt haben. Dann rennen
supabase start So abrufen NEXT_PUBLIC_SUPABASE_ANON_KEY und SUPABASE_SERVICE_ROLE_KEY :
supabase statusLaufen Sie in einem neuen Terminalfenster
pnpm dev.mdx -Format sein. Dies kann durchgeführt werden, indem vorhandene (oder kompatible) Markdown .md -Datei umbenannt wird.pnpm run embeddings um Einbettungen zu regenerieren.Hinweis: Stellen Sie sicher, dass Supabase ausgeführt wird. Um zu überprüfen, führen Sie
supabase statusaus. Wenn Siesupabase startnicht laufen lassen.
pnpm dev erneut aus, um NextJS Localhost: 3000 gerenderte Seite zu aktualisieren. Apache 2.0