Da die Nutzung von Chatbots und virtuellen Assistenten immer weiter zunimmt, suchen viele Unternehmen und Entwickler nach Möglichkeiten, ihre eigenen KI-gesteuerten Chatbots zu entwickeln. ChatGPT ist ein solcher Chatbot, der von OpenAI entwickelt wurde und der in der Lage ist, menschenähnliche Gespräche zu führen und eine Vielzahl von Fragen zu beantworten.

Was du bauen wirst

In diesem Tutorial lernst du, wie du mit React und der OpenAI API einen ChatGPT-Klon erstellst. Wenn du dich am Wochenende an einem lustigen und spannenden Projekt versuchen willst, ist dies eine gute Gelegenheit, um in React und OpenAI einzutauchen.

Außerdem erfährst du, wie du dein Projekt direkt von deinem GitHub-Repository auf der Kinsta Anwendungs-Hosting-Plattform bereitstellst, die eine kostenlose .kinsta.app-Domain bietet, damit dein Projekt schnell online gehen kann. Und mit der kostenlosen Testversion und dem Hobby-Tier von Kinsta kannst du ganz einfach und ohne Kosten loslegen.

Hier ist eine Live-Demo der ChatGPT-Klon-Anwendung.

ChatGPT-Klon-Anwendung
ChatGPT-Klon-Anwendung

Wenn du dir das Projekt genauer ansehen möchtest, kannst du auf sein GitHub-Repository zugreifen.

Alternativ kannst du mit dieser Vorlage für das Starterprojekt die Option Diese Vorlage verwenden > Neues Repository erstellen wählen – dadurch wird der Code des Starterprojekts in ein neues Repository kopiert. Dieses Starterprojekt enthält grundlegende Elemente wie Stile, einen Font Awesome CDN-Link, ein OpenAi-Paket und eine grundlegende Struktur, um dir den Einstieg zu erleichtern.

Anforderungen/Voraussetzungen

Dieses Tutorial ist so konzipiert, dass du ihn Schritt für Schritt mitmachen kannst. Daher wird empfohlen, dass du die folgenden Voraussetzungen mitbringst, um problemlos mitzucoden:

Was ist die OpenAI API?

Die OpenAI API ist eine cloudbasierte Plattform, die Entwicklern über eine API Zugang zu den Sprachmodellen von OpenAI, wie z. B. GPT-3, gewährt. Sie ermöglicht es Entwicklern, Funktionen zur Verarbeitung natürlicher Sprache wie Textvervollständigung, Stimmungsanalyse, Zusammenfassung und Übersetzung in ihre Anwendungen einzubauen, ohne ihre Modelle entwickeln und trainieren zu müssen.

Um die OpenAI-API zu nutzen, müssen Entwickler/innen ein Konto auf der OpenAI-Website anlegen und einen API-Schlüssel erhalten. Der API-Schlüssel wird verwendet, um API-Anfragen zu authentifizieren und die Nutzung zu verfolgen.

Sobald der API-Schlüssel vorliegt, können Entwickler die API nutzen, um Text an das Sprachmodell zu senden und Antworten zu erhalten.

Warum React?

React ist eine beliebte JavaScript-Bibliothek für die Erstellung von Benutzeroberflächen. Laut der Stack Overflow-Entwicklerumfrage von 2022 ist sie mit einem Marktanteil von 42,62 % die am zweithäufigsten verwendete Webtechnologie.

React ermöglicht es Entwicklern, deklarative Komponenten zu erstellen, die verschiedene Teile der Benutzeroberfläche darstellen. Diese Komponenten werden mit einer Syntax namens JSX definiert, die eine Kombination aus JavaScript und HTML ist.

Dank des großen Ökosystems an Komponentenbibliotheken und -kits können Entwickler/innen leicht mit APIs wie der OpenAI API arbeiten und diese integrieren, um komplexe Chat-Oberflächen zu erstellen, was React zu einer ausgezeichneten Wahl für den Aufbau einer ChatGPT-Klon-Anwendung macht.

Wie du deine React-Entwicklungsumgebung einrichtest

Der beste Weg, um React zu installieren oder ein React-Projekt zu erstellen, ist die Installation mit create-react-app. Eine Voraussetzung dafür ist, dass du Node.js auf deinem Rechner installiert hast. Um zu überprüfen, ob du Node installiert hast, führe den folgenden Befehl in deinem Terminal aus.

node -v

Wenn er eine Version anzeigt, ist sie vorhanden. Um npx verwenden zu können, musst du sicherstellen, dass deine Node-Version nicht kleiner als v14.0.0 und deine NPM-Version nicht kleiner als v5.6 ist; andernfalls müsstest du sie mit dem Befehl npm update -g aktualisieren. Wenn du dich mit npm vertraut gemacht hast, kannst du ein React-Projekt einrichten, indem du den folgenden Befehl ausführst:

npx create-react-app chatgpt-clone

Hinweis: „chatgpt-clone“ ist der Name der Anwendung, die wir erstellen, aber du kannst ihn in einen beliebigen Namen deiner Wahl ändern.

Der Installationsprozess kann ein paar Minuten dauern. Nach erfolgreicher Installation kannst du in das Verzeichnis navigieren und das Node.js OpenAI-Paket installieren, das einen bequemen Zugriff auf die OpenAI-API von Node.js aus ermöglicht, indem du den folgenden Befehl verwendest:

npm install openai

Du kannst nun npm start ausführen, um deine Anwendung live auf localhost:3000 zu sehen.

Wenn ein React-Projekt mit dem Befehl create-react-app erstellt wird, wird automatisch eine Ordnerstruktur angelegt. Der wichtigste Ordner, der dich betrifft, ist der Ordner src, in dem die Entwicklung stattfindet. Dieser Ordner enthält standardmäßig viele Dateien, aber du solltest dich nur mit den Dateien App.js, index.js und index.css beschäftigen.

  1. App.js: Die Datei App.js ist die wichtigste Komponente in einer React-Anwendung. Sie stellt normalerweise die oberste Komponente dar, die alle anderen Komponenten in der Anwendung rendert.
  2. index.js: Diese Datei ist der Einstiegspunkt in deine React-Anwendung. Sie ist die erste Datei, die geladen wird, wenn die Anwendung geöffnet wird, und ist dafür verantwortlich, dass die Komponente App.js im Browser dargestellt wird.
  3. index.css: Diese Datei ist für das allgemeine Styling und Layout deiner React-Anwendung verantwortlich.

Wie man einen ChatGPT-Klon mit React und OpenAI API erstellt

Die ChatGPT-Klonanwendung wird aus zwei Komponenten bestehen, damit die Anwendung leichter zu verstehen und zu warten ist. Diese beiden Komponenten sind:

  1. Formularbereich: Diese Komponente enthält ein Textfeld und eine Schaltfläche, über die die Nutzer mit dem Chatbot interagieren können.
  2. Antwortbereich: Die Fragen und die dazugehörigen Antworten werden in einem Array gespeichert und in diesem Abschnitt angezeigt. Das Array wird in einer Schleife chronologisch durchlaufen, wobei die neueste Antwort zuerst angezeigt wird.

Einrichten der ChatGPT-Klonanwendung

In diesem Tutorial bauen wir zunächst die Anwendungsschnittstelle auf. Anschließend kannst du Funktionen implementieren, damit deine Anwendung mit der OpenAI API interagieren kann. Beginne damit, die beiden Komponenten zu erstellen, die du in diesem Tutorial verwenden wirst. Zur besseren Organisation erstellst du einen Komponentenordner im Ordner src, in dem alle Komponenten gespeichert werden.

Die Komponente Form Section

Dies ist ein einfaches Formular, das aus einem textarea und einem submit button besteht.


// components/FormSection.jsx
const FormSection = () => {

    return (
        <div className="form-section">
            <textarea
                rows="5"
                className="form-control"
                placeholder="Ask me anything..."
            ></textarea>
            <button className="btn">
                Generate Response 🤖
            </button>
        </div>
    )
}

export default FormSection;

So soll das Formular aussehen, wenn du es in deine App.js Datei importierst:

Formularabschnitt Komponente für ChatGPT-Klon
Komponente Formularabschnitt

Die Komponente des Antwortbereichs

In diesem Bereich werden alle Fragen und Antworten angezeigt. So wird dieser Bereich aussehen, wenn du ihn in deine App.js-Datei importierst.

Komponente des Antwortbereichs des ChatGPT-Klons
Komponente Antwortbereich

Du wirst die Fragen und Antworten aus einem Array und einer Schleife holen, damit dein Code leichter zu lesen und zu pflegen ist.

// components/AnswerSection.jsx

const AnswerSection = () => {
    return (
        <>
            <hr className="hr-line" />
            <div className="answer-container">
                <div className="answer-section">
                    <p className="question">Who is the founder of OpenAi?</p>
                    <p className="answer">OpenAI was founded in December 2015 by Elon Musk, Sam Altman, Greg Brockman, Ilya Sutskever, Wojciech Zaremba, and John Schulman.</p>
                    <div className="copy-icon">
                        <i className="fa-solid fa-copy"></i>
                    </div>
                </div>
            </div>
        </>
    )
}

export default AnswerSection;

Die Startseite

Du hast jetzt beide Komponenten erstellt, aber es wird nichts angezeigt, wenn du deine Anwendung ausführst, weil du sie in deine App.js-Datei importieren musst. Für diese Anwendung wirst du kein Routing implementieren, d.h. die App.js-Datei wird als Startseite deiner Anwendung dienen.

Du kannst einige Inhalte wie den Titel und die Beschreibung deiner Anwendung hinzufügen, bevor du die Komponenten importierst.

// App.js

import FormSection from './components/FormSection';
import AnswerSection from './components/AnswerSection';

const App = () => {
    return (
        <div>
            <div className="header-section">
                <h1>ChatGPT CLONE 🤖</h1>
                <p>
                    I am an automated question and answer system, designed to assist you
                    in finding relevant information. You are welcome to ask me any queries
                    you may have, and I will do my utmost to offer you a reliable
                    response. Kindly keep in mind that I am a machine and operate solely
                    based on programmed algorithms.
                </p>
            </div>

            <FormSection />
            <AnswerSection />
        </div>
    );
};

export default App;

Im obigen Code werden die beiden Komponenten importiert und der Anwendung hinzugefügt. Wenn du deine Anwendung ausführst, wird sie so aussehen:

Vollständige ChatGPT-Klon-Anwendung
Vollständige ChatGPT-Klon-Anwendung

Funktionalitäten hinzufügen und OpenAI API integrieren

Du hast jetzt die Benutzeroberfläche deiner Anwendung. Der nächste Schritt besteht darin, die Anwendung funktional zu machen, damit sie mit der OpenAI API interagieren und Antworten erhalten kann. Zuerst musst du den Wert aus deinem Formular abrufen, wenn es abgeschickt wird, denn er wird für die Abfrage der OpenAI API verwendet.

Daten aus dem Formular abrufen

In React lassen sich Daten am besten mit Zuständen speichern und aktualisieren. In funktionalen Komponenten wird der useState() Hook verwendet, um mit Zuständen zu arbeiten. Du kannst einen Status erstellen, ihm den Wert aus deinem Formular zuweisen und ihn aktualisieren, sobald sich der Wert ändert. Beginnen wir damit, den useState() Hook in die Komponente FormSection.jsx zu importieren und dann einen Status zu erstellen, der newQuestions speichert und aktualisiert.

// components/FormSection.jsx

import { useState } from 'react';

const FormSection = ({ generateResponse }) => {
    const [newQuestion, setNewQuestion] = useState('');

    return (
        // Form to submit a new question
    )
}

export default FormSection;

Als Nächstes kannst du den Wert des Feldes textarea dem Status zuweisen und ein Ereignis onChange() erstellen, um den Status zu aktualisieren, sobald sich der Eingabewert ändert:

<textarea
    rows="5"
    className="form-control"
    placeholder="Ask me anything..."
    value={newQuestion}
    onChange={(e) => setNewQuestion(e.target.value)}
></textarea>

Schließlich kannst du ein onClick() Ereignis erstellen, um eine Funktion zu laden, wenn der Submit-Button angeklickt wird. Diese Methode wird in der Datei App.js erstellt und als Requisite an die Komponente FormSection.jsx mit den Werten newQuestion und setNewQuestion als Argumente übergeben.

<button className="btn" onClick={() => generateResponse(newQuestion, setNewQuestion)}>
    Generate Response 🤖
</button>

Du hast nun einen Status erstellt, um den Formularwert zu speichern und zu aktualisieren, eine Methode hinzugefügt, die als props von der App.js-Datei übergeben wird, und das Klick-Ereignis verarbeitet. So sieht der endgültige Code aus:

// components/FormSection.jsx

import { useState } from 'react';

const FormSection = ({ generateResponse }) => {
    const [newQuestion, setNewQuestion] = useState('');

    return (
        <div className="form-section">
            <textarea
                rows="5"
                className="form-control"
                placeholder="Ask me anything..."
                value={newQuestion}
                onChange={(e) => setNewQuestion(e.target.value)}
            ></textarea>
            <button className="btn" onClick={() => generateResponse(newQuestion, setNewQuestion)}>
                Generate Response 🤖
            </button>
        </div>
    )
}

export default FormSection;

Der nächste Schritt besteht darin, eine Methode in der App.js-Datei zu erstellen, die den gesamten Prozess der Interaktion mit der OpenAI-API steuert.

Interaktion mit der OpenAI API

Um mit OpenAI API zu interagieren und API-Schlüssel in einer React-Anwendung zu erhalten, musst du ein OpenAI API-Konto erstellen. Du kannst dich auf der OpenAI-Website mit deinem Google-Konto oder deiner E-Mail für ein Konto anmelden. Um einen API-Schlüssel zu generieren, klickst du oben rechts auf der Website auf Persönlich; es werden einige Optionen angezeigt; klick auf API-Schlüssel anzeigen.

Zugriff auf OpenAI API-Schlüssel
Zugriff auf OpenAI API-Schlüssel

Klicke auf die Schaltfläche Neuen geheimen Schlüssel erstellen und kopiere den Schlüssel an die Stelle, an der du ihn in dieser Anwendung für die Interaktion mit OpenAI verwenden würdest. Du kannst nun damit fortfahren, OpenAI zu initialisieren, indem du das openai-Paket (das du bereits installiert hast) zusammen mit der Konfigurationsmethode importierst. Erstelle dann eine Konfiguration mit deinem generierten Schlüssel und benutze sie, um OpenAI zu initialisieren.

// src/App.js

import { Configuration, OpenAIApi } from 'openai';

import FormSection from './components/FormSection';
import AnswerSection from './components/AnswerSection';

const App = () => {
    const configuration = new Configuration({
        apiKey: process.env.REACT_APP_OPENAI_API_KEY,
    });

    const openai = new OpenAIApi(configuration);

    return (
        // Render FormSection and AnswerSection
    );
};

export default App;

Im obigen Code wird der OpenAI API-Schlüssel als Umgebungsvariable in der .env-Datei gespeichert. Du kannst eine .env-Datei im Stammverzeichnis deiner Anwendung erstellen und den Schlüssel in der Variable REACT_APP_OPENAI_API_KEY speichern.

// .env
REACT_APP_OPENAI_API_KEY = sk-xxxxxxxxxx…

Nun kannst du die Methode generateResponse in der App.js-Datei erstellen und die beiden Parameter übergeben, die von dem Formular erwartet werden, das du bereits erstellt hast, um die Anfrage zu bearbeiten und die Antwort von der API zu erhalten.

// src/App.js

import FormSection from './components/FormSection';
import AnswerSection from './components/AnswerSection';

const App = () => {
    const generateResponse = (newQuestion, setNewQuestion) => {
        // Set up OpenAI API and handle response
    };

    return (
        // Render FormSection and AnswerSection
    );
};

export default App;

Jetzt kannst du eine Anfrage an die OpenAI API senden. Die OpenAI API kann viele Operationen durchführen, wie z. B. Frage und Antwort (Q&A), Grammatikkorrektur, Übersetzung und vieles mehr. Für jeden dieser Vorgänge gibt es unterschiedliche Optionen. Zum Beispiel ist der Motorwert für Q&A text-davinci-00, während es für SQL translate code-davinci-002 ist. In der OpenAI-Beispieldokumentation findest du die verschiedenen Beispiele und ihre Optionen.

In diesem Tutotrial arbeiten wir nur mit Q&A, und so sieht die Option aus:

{
  model: "text-davinci-003",
  prompt: "Who is Obama?",
  temperature: 0,
  max_tokens: 100,
  top_p: 1,
  frequency_penalty: 0.0,
  presence_penalty: 0.0,
  stop: [""],
}

Hinweis: Ich habe den Prompt-Wert geändert.

Der Prompt ist die Frage, die aus dem Formular gesendet wird. Das heißt, du musst sie von der Formulareingabe erhalten, die du als Parameter an die Methode generateResponse übergibst. Dazu definierst du die Optionen und verwendest dann den Spread-Operator, um eine vollständige Option zu erstellen, die die Eingabeaufforderung enthält:

// src/App.js

import { Configuration, OpenAIApi } from 'openai';
import FormSection from './components/FormSection';
import AnswerSection from './components/AnswerSection';

const App = () => {
    const configuration = new Configuration({
        apiKey: process.env.REACT_APP_OPENAI_API_KEY,
    });

    const openai = new OpenAIApi(configuration);

    const generateResponse = async (newQuestion, setNewQuestion) => {
        let options = {
            model: 'text-davinci-003',
            temperature: 0,
            max_tokens: 100,
            top_p: 1,
            frequency_penalty: 0.0,
            presence_penalty: 0.0,
            stop: ['/'],
        };

        let completeOptions = {
            ...options,
            prompt: newQuestion,
        };

    };

    return (
         // Render FormSection and AnswerSection
    );
};

export default App;

Jetzt musst du nur noch eine Anfrage über die Methode createCompletion an OpenAI senden, um eine Antwort zu erhalten.

// src/App.js

import { Configuration, OpenAIApi } from 'openai';
import FormSection from './components/FormSection';
import AnswerSection from './components/AnswerSection';

import { useState } from 'react';

const App = () => {
    const configuration = new Configuration({
        apiKey: process.env.REACT_APP_OPENAI_API_KEY,
    });

    const openai = new OpenAIApi(configuration);

    const [storedValues, setStoredValues] = useState([]);

    const generateResponse = async (newQuestion, setNewQuestion) => {
        let options = {
            model: 'text-davinci-003',
            temperature: 0,
            max_tokens: 100,
            top_p: 1,
            frequency_penalty: 0.0,
            presence_penalty: 0.0,
            stop: ['/'],
        };

        let completeOptions = {
            ...options,
            prompt: newQuestion,
        };

        const response = await openai.createCompletion(completeOptions);

        console.log(response.data.choices[0].text);
    };

    return (
        // Render FormSection and AnswerSection
    );
};

export default App;

Im obigen Code wird der Text der Antwort in deiner Konsole angezeigt. Du kannst deine Anwendung gerne testen, indem du eine beliebige Frage stellst. Der letzte Schritt besteht darin, einen Status zu erstellen, der das Array mit den Fragen und Antworten enthält, und dieses Array dann als Prop in die AnswerSection-Komponente zu senden. So sieht der endgültige Code von App.js aus:

// src/App.js
import { Configuration, OpenAIApi } from 'openai';

import FormSection from './components/FormSection';
import AnswerSection from './components/AnswerSection';

import { useState } from 'react';

const App = () => {
    const configuration = new Configuration({
        apiKey: process.env.REACT_APP_OPENAI_API_KEY,
    });

    const openai = new OpenAIApi(configuration);

    const [storedValues, setStoredValues] = useState([]);

    const generateResponse = async (newQuestion, setNewQuestion) => {
        let options = {
            model: 'text-davinci-003',
            temperature: 0,
            max_tokens: 100,
            top_p: 1,
            frequency_penalty: 0.0,
            presence_penalty: 0.0,
            stop: ['/'],
        };

        let completeOptions = {
            ...options,
            prompt: newQuestion,
        };

        const response = await openai.createCompletion(completeOptions);

        if (response.data.choices) {
            setStoredValues([
                {
                    question: newQuestion,
                    answer: response.data.choices[0].text,
                },
                ...storedValues,
            ]);
            setNewQuestion('');
        }
    };

    return (
        <div>
            <div className="header-section">
                <h1>ChatGPT CLONE 🤖</h1>
                    <p>
                        I am an automated question and answer system, designed to assist you
                        in finding relevant information. You are welcome to ask me any
                        queries you may have, and I will do my utmost to offer you a
                        reliable response. Kindly keep in mind that I am a machine and
                        operate solely based on programmed algorithms.
                    </p>
            </div>

            <FormSection generateResponse={generateResponse} />

            <AnswerSection storedValues={storedValues} />
        </div>
    );
};

export default App;

Du kannst nun die Komponente AnswerSection so bearbeiten, dass sie den Props-Wert von App.js erhält und die JavaScript-Methode Map() verwenden, um das Array storedValues zu durchsuchen:

// components/AnswerSection.jsx

const AnswerSection = ({ storedValues }) => {
    return (
        <>
            <hr className="hr-line" />
            <div className="answer-container">
                {storedValues.map((value, index) => {
                    return (
                        <div className="answer-section" key={index}>
                            <p className="question">{value.question}</p>
                            <p className="answer">{value.answer}</p>
                            <div className="copy-icon">
                                <i className="fa-solid fa-copy"></i>
                            </div>
                        </div>
                    );
                })}
            </div>
        </>
    )
}

export default AnswerSection;

Wenn du deine Anwendung ausführst und sie durch Fragen testest, wird die Antwort unten angezeigt. Du wirst aber feststellen, dass die Schaltfläche Kopieren nicht funktioniert. Du musst der Schaltfläche ein onClick() -Ereignis hinzufügen, damit sie eine Methode auslöst, die die Funktion ausführt. Du kannst die Methode navigator.clipboard.writeText() verwenden, um die Funktion zu steuern. So sieht die Komponente AnswerSection jetzt aus:

// components/AnswerSection.jsx

const AnswerSection = ({ storedValues }) => {
    const copyText = (text) => {
        navigator.clipboard.writeText(text);
    };

    return (
        <>
            <hr className="hr-line" />
            <div className="answer-container">
                {storedValues.map((value, index) => {
                    return (
                        <div className="answer-section" key={index}>
                            <p className="question">{value.question}</p>
                            <p className="answer">{value.answer}</p>
                            <div
                                className="copy-icon"
                                onClick={() => copyText(value.answer)}
                            >
                                <i className="fa-solid fa-copy"></i>
                            </div>
                        </div>
                    );
                })}
            </div>
        </>
    )
}

export default AnswerSection;

Wenn du deine Anwendung ausführst, wird deine ChatGPT-Klonanwendung perfekt funktionieren. Jetzt kannst du deine Anwendung bereitstellen, um online auf sie zuzugreifen und sie mit Freunden zu teilen.

Wie du deine React-Anwendung auf Kinsta bereitstellst

Es reicht nicht aus, diese Anwendung zu erstellen und sie auf deinen lokalen Computern zu lassen. Du willst sie auch online bereitstellen, damit andere darauf zugreifen können. Wir sehen uns an, wie du das mit GitHub und Kinsta machen kannst.

Pushe deinen Code auf GitHub

Um deinen Code auf GitHub zu veröffentlichen, kannst du Git-Befehle verwenden. Git ist eine zuverlässige und effiziente Methode, um Codeänderungen zu verwalten, an Projekten mitzuarbeiten und den Versionsverlauf zu pflegen.

Der erste Schritt, um deinen Code zu veröffentlichen, ist die Erstellung eines neuen Projektarchivs, indem du dich bei deinem GitHub-Konto anmeldest, auf die Schaltfläche „+“ in der oberen rechten Ecke des Bildschirms klickst und im Dropdown-Menü „Neues Projektarchiv“ auswählst.

Ein neues Projektarchiv auf GitHub erstellen
Ein neues Projektarchiv auf GitHub erstellen

Gib deinem Repository einen Namen, füge eine Beschreibung hinzu (optional) und wähle aus, ob es öffentlich oder privat sein soll. Klicke auf Repository erstellen, um es zu erstellen.

Sobald dein Projektarchiv erstellt ist, musst du dir die URL des Projektarchivs von der Hauptseite deines Projektarchivs besorgen, damit du deinen Code auf GitHub pushen kannst.

Zugriff auf die URL deines Repositorys
Zugriff auf die URL deines Repositorys

Öffne dein Terminal oder deine Eingabeaufforderung und navigiere zu dem Verzeichnis, in dem sich dein Projekt befindet. Führe die folgenden Befehle nacheinander aus, um deinen Code in dein GitHub-Repository zu übertragen:

git init
git add .
git commit -m "my first commit"
git remote add origin [repository URL]
git push -u origin master

git init initialisiert ein lokales Git-Repository, git add . fügt alle Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen zum neuen Git-Repository hinzu. git commit -m "my first commit" überträgt die Änderungen mit einer kurzen Nachricht an das Repository. git remote add origin [repository URL] legt die Repository-URL als Remote-Repository fest und git push -u origin master pusht den Code in das Remote-Repository (origin) im Master-Branch.

Bereitstellen deiner ChatGPT Clone React-Anwendung auf Kinsta

Befolge diese Schritte, um dein Repository auf Kinsta bereitzustellen:

  1. Logge dich in dein Kinsta-Konto ein oder erstelle es auf dem MyKinsta-Dashboard.
  2. Klicke in der linken Seitenleiste auf Anwendungen und dann auf Dienst hinzufügen.
  3. Wähle Anwendung aus dem Dropdown-Menü, um eine React-Anwendung in Kinsta bereitzustellen.
  4. Wähle das Repository, das du bereitstellen möchtest, aus dem erscheinenden Modal aus. Wenn du mehrere Zweige hast, kannst du denjenigen auswählen, den du bereitstellen möchtest, und der Anwendung einen Namen zuweisen. Wähle unter 25 einen Standort für das Rechenzentrum aus, und Kinsta wird automatisch einen Startbefehl erkennen.
  5. Schließlich ist es nicht sicher, API-Schlüssel an öffentliche Hosts wie GitHub weiterzugeben, daher wurde er lokal als Umgebungsvariable hinzugefügt. Beim Hosten kannst du ihn auch als Umgebungsvariable mit demselben Variablennamen und dem Schlüssel als Wert hinzufügen.
Bereitstellen des ChatGPT-Klons auf Kinsta
Bereitstellen des ChatGPT-Klons auf Kinsta

Deine Anwendung wird bereitgestellt und innerhalb weniger Minuten erhältst du einen Link, über den du auf die bereitgestellte Version deiner Anwendung zugreifen kannst. In diesem Fall ist das https://chatgpt-clone-g9q10.kinsta.app/

Note: Du kannst das automatische Deployment aktivieren, sodass Kinsta deine Anwendung immer dann neu bereitstellt, wenn du deine Codebasis änderst und sie auf GitHub veröffentlichst.

Zusammenfassung

Die OpenAI API kann für eine Vielzahl von Anwendungen genutzt werden, von der Kundenbetreuung über persönliche Assistenten bis hin zu Sprachübersetzung und Inhaltserstellung.

In diesem Tutorial hast du gelernt, wie du mit React und OpenAI eine ChatGPT-Klon-Anwendung erstellen kannst. Du kannst diese Anwendung/Funktion in andere Anwendungen integrieren, um Nutzern ein menschenähnliches Gesprächserlebnis zu bieten.

Es gibt noch mehr Möglichkeiten, die OpenAI API zu nutzen und diese Klonanwendung zu verbessern. Du kannst zum Beispiel eine lokale Speicherung implementieren, damit frühere Fragen und Antworten nicht verschwinden, auch wenn du deinen Browser aktualisierst.

Mit der kostenlosen Testversion und dem Hobby-Tier von Kinsta kannst du ganz einfach und ohne Kosten auf unserem Anwendungs-Hosting loslegen. Warum probierst du es also nicht aus und siehst, was du schaffen kannst?

Teile dein Projekt und deine Erfahrungen in den Kommentaren unten mit.

Joel Olawanle Kinsta

Joel ist Frontend-Entwickler und arbeitet bei Kinsta als Technical Editor. Er ist ein leidenschaftlicher Lehrer mit einer Vorliebe für Open Source und hat über 200 technische Artikel geschrieben, die sich hauptsächlich um JavaScript und seine Frameworks drehen.