Obwohl die Verbindung von GPT mit der Gradio-Schnittstelle eine triviale Aufgabe zu sein scheint, haben einige Anfänger Schwierigkeiten. Deshalb haben wir den gesamten Prozess der Erstellung eines einfachen Chatbots so detailliert wie möglich beschrieben.

Gradio ist eine Open-Source-Bibliothek. Der Vorteil besteht darin, dass Sie schnell eigene Webanwendungen für ML-Modelle schreiben und APIs generieren können. Daher benötigen Sie keine Kenntnisse im Umgang mit Java Script oder CSS – wir schreiben alles in Python.

Gradio ist ein ganzes Ökosystem aus Python- und JavaScript-Bibliotheken… Innerhalb der Bibliothek können Sie mit JS arbeiten und beispielsweise namentlich auf die heruntergeladene Anwendung auf Hugging Face verweisen.

Gradio wird häufiger für Demonstrationsmodelle verwendet, um ein Neuron mit einer geeigneten Schnittstelle zu testen. Das Dienstprogramm ist jedoch nicht auf zwei Fenster mit Antworten und Anfragen beschränkt. Die Bibliothek verfügt auch über Klassen zur flexiblen Anpassung des Erscheinungsbilds: mithilfe der Klasse „gr.Blöcke“ Sie können mit der Verarbeitung komplexer Datenströme und der Steuerung der Anzeige von Komponenten experimentieren.

Doch heute beschränken wir uns auf einfache Funktionalität.

Die Aufgabe ist einfach: Erstellen Sie einen Chatbot, der mit dem beliebtesten LLM – GPT – verknüpft ist

Wir werden mit der Klasse arbeiten gr.ChatInterface(predict).launch()wodurch die grundlegende Schnittstelle für die Funktion des Neurons erstellt wird.

Vorhersagen – eine Vorhersagefunktion, die für die Eingabedaten verantwortlich ist, die OpenAI empfängt und zur Generierung unserer Antwort verwendet. Hier platzieren wir den Verlauf aller Nachrichten für den Kontext und die Benutzeranfrage selbst.

Zuerst importieren wir Gradio und das Dienstprogramm für die Arbeit mit der OpenAI-API, nachdem wir zuvor das erforderliche Dienstprogramm über pip installiert haben.

!pip install openai gradio

Wir laden zusätzlich getpass zum Arbeiten mit Passwörtern.

from openai import OpenAI # для работы с API OpenAI
import gradio as gr
import getpass 

Wir verwenden die Funktion getpass.getpass(), um den OpenAI-API-Schlüssel sicher einzugeben. Wir verbinden den Kunden sofort.

# Запрос ввода ключа от OpenAI
api_key = getpass.getpass("Введите OpenAI API Key:") 

# Создание клиента к API OpenAI
client = OpenAI(api_key=api_key)

Der Schlüssel kann nach der Registrierung auf der Website des Unternehmens aus Ihrem Profil entnommen werden. Wir erinnern Sie daran, dass OpenAI die Verwendung russischer Nummern verboten hat. Um einen Schlüssel zu erhalten, müssen Sie ein Konto kaufen oder sich mit einer ausländischen Nummer verifizieren lassen.

Siehe auch  Apple hat endlich eine Möglichkeit, ChatGPT zu besiegen
0D50B2Df06C0D92983D756F6Ea237E6F

Alles ist bereit, um unseren Chatbot zu erstellen. Jetzt müssen wir eine Vorhersagefunktion definieren, die Eingabedaten akzeptiert.

Damit unser GPT nicht nur Benutzernachrichten berücksichtigt, müssen wir einen Nachrichtenverlauf hinzufügen. Daher generiert GPT Antworten unter Berücksichtigung des Kontexts.

Dementsprechend die Funktion vorhersagen wird zwei Parameter annehmen: Nachricht (aktuelle Nachricht des Benutzers) und Geschichte (Verlauf früherer Chatnachrichten).

def predict(message, history):

Versuchen wir, die zurückgegebenen Daten in das History-Argument zu schreiben und die Logik zum Auffüllen des LLM-„Kontexts“ zu schreiben.

Damit unsere „Geschichte“ funktioniert, müssen wir sie zunächst für das OpenAI-Ökosystem formatieren. Dazu erstellen wir innerhalb der Funktion eine leere Liste Verlauf_OpenAI_Formatwohin Nachrichten in verarbeiteter Form gehen.

history_openai_format = [] # список сообщений в формате пригодном для OpenAI

Als nächstes müssen wir die Daten zwischen Benutzeranfragen und GPT-Antworten aufteilen. Inhalt – Nachrichten von einem Neuron oder einer Person.

Benutzer – Benutzeranfragen,

Assistent – Chatbot-Antworten.

Danke Zyklus für Das Programm zeichnet nacheinander alle Benutzeranfragen und GPT-Antworten im Nachrichtenverlauf auf und füllt unsere leere formatierte Liste.

 for human, assistant in history: # перебираем все сообщения
        # Указываем для каждого сообщения роль
        history_openai_format.append({"role": "user", "content": human }) # наши запросы
        history_openai_format.append({"role": "assistant", "content": assistant}) # ответы чат-бота 

Wichtig. Das Neuron muss nicht nur den vergangenen Verlauf berücksichtigen, sondern auch die aktuelle Anfrage, die wir gerade eingegeben haben … Daher fügen wir dem Kontext/Verlauf von Nachrichten ein Argument hinzu Nachricht.

# Наше последнее сообщение для чат-бота
    history_openai_format.append({"role": "user", "content": message})

Im wirklichen Leben wird es ungefähr so ​​aussehen. Nehmen wir an, wir haben eine Rohliste:

history = [
    ("Hello, who are you?", "I am a virtual assistant."),
    ("Can you help me with my homework?", "Of course, what do you need help with?")
]

Mit gültiger Nachricht Nachricht = „Ich brauche Hilfe bei meiner Mathe-Aufgabe.“

Dann wird die formatierte Geschichte nach Rollen geschrieben:

  history_openai_format = [
    {"role": "user", "content": "Hello, who are you?"},
    {"role": "assistant", "content": "I am a virtual assistant."},
    {"role": "user", "content": "Can you help me with my homework?"},
    {"role": "assistant", "content": "Of course, what do you need help with?"},
    {"role": "user", "content": "I need help with my math assignment."}
]

Jetzt erstellen wir eine Anfrage an den Chatbot über Antwort mit einem Aufruf des gesamten Korrespondenzverlaufs unter Angabe der Richtigkeit der Antworten und des gewählten Modells.

 #  Формируем запрос к чат-боту со всей историей переписки
    response = client.chat.completions.create(
        model="gpt-4o",                   # используемая модель
        messages= history_openai_format,  # список форматированных сообщений с ролями
        temperature=1.0                   # точность ответов модели
                                              

Wir geben das Ergebnis der Vorhersage zurück.

 return response.choices[0].message.content 

Und wir starten die Schnittstelle.

# Запуск интерфейса чат-бота с функцией предсказания
gr.ChatInterface(predict).launch()

Der gesamte Code sieht so aus:

from openai import OpenAI # для работы с API OpenAI
import gradio as gr
import getpass # для работы с паролями

# Запрос ввода ключа от OpenAI
api_key = getpass.getpass("Введите OpenAI API Key:")

# Создание клиента к API OpenAI
client = OpenAI(api_key=api_key)

# Функция предсказания с двумя параметрами
#  message - текущее сообщение
#  history - история сообщений с чат-ботом
def predict(message, history):
    history_openai_format = [] # список сообщений в формате пригодном для OpenAI
    for human, assistant in history: # перебираем все сообщения
        # Указываем для каждого сообщения роль
        history_openai_format.append({"role": "user", "content": human }) # наши запросы
        history_openai_format.append({"role": "assistant", "content": assistant}) # ответы чат-бота
    # Наше последнее сообщение для чат-бота
    history_openai_format.append({"role": "user", "content": message})

    #  Формируем запрос к чат-боту со всей историей переписки
    response = client.chat.completions.create(
        model="gpt-4o",                   # используемая модель
        messages= history_openai_format,  # список форматированных сообщений с ролями
        temperature=1.0                   # точность ответов модели
                                              )

    return response.choices[0].message.content # возвращаем результат предсказания

# Запуск интерфейса чат-бота с функцией предсказания
gr.ChatInterface(predict).launch()

Wir glauben, dass sogar ein Schulkind herausfinden kann, wie man GPT verbindet. Diese Option ist das Minimum für die Implementierung eines Chatbots. Im nächsten Beitrag verraten wir Ihnen, wie Sie Ihren eigenen einfachen HR-Abteilungsmanager erstellen.

Siehe auch  Boston Dynamics Robot Dog spricht mit ChatGPT von OpenAI
Anzeige

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein