Heim  >  Artikel  >  Backend-Entwicklung  >  So erstellen Sie einen KI-Chatbot mit einer API, um auf mehrere LLMs zuzugreifen

So erstellen Sie einen KI-Chatbot mit einer API, um auf mehrere LLMs zuzugreifen

王林
王林Original
2024-08-25 06:02:02752Durchsuche

Ursprünglich veröffentlicht auf dem Streamlit-Blog von Liz Acosta

Erinnern Sie sich, wie cool es war, zum ersten Mal mit einem KI-Bildgenerator zu spielen? Diese zwanzig Millionen Finger und alptraumhaften Spaghetti-Essen-Bilder waren mehr als nur amüsant, sie zeigten ganz nebenbei, dass Ups! KI-Modelle sind nur so schlau wie wir. Wie wir haben auch sie Schwierigkeiten, Hände zu zeichnen.

How to create an AI chatbot using one API to access multiple LLMs

KI-Modelle sind schnell ausgefeilter geworden, aber mittlerweile gibt es so viele davon. Und – wiederum – wie wir sind einige von ihnen bei bestimmten Aufgaben besser als andere. Nehmen wir zum Beispiel die Textgenerierung. Auch wenn Llama, Gemma und Mistral allesamt LLMs sind, sind einige von ihnen besser im Generieren von Code, während andere besser im Brainstorming, Codieren oder kreativen Schreiben sind. Sie bieten je nach Anforderung unterschiedliche Vorteile, daher kann es sinnvoll sein, mehr als ein Modell in Ihre KI-Anwendung einzubeziehen.

Aber wie integrieren Sie all diese Modelle in Ihre App, ohne Code zu duplizieren? Wie gestalten Sie Ihren Einsatz von KI modularer und damit einfacher zu warten und zu skalieren? Hier kann eine API einen standardisierten Satz von Anweisungen für die Kommunikation über verschiedene Technologien hinweg bereitstellen.

In diesem Blogbeitrag werfen wir einen Blick darauf, wie Sie Replicate mit Streamlit verwenden, um eine App zu erstellen, mit der Sie verschiedene LLMs mit einem einzigen API-Aufruf konfigurieren und aufrufen können. Und keine Sorge – wenn ich „App“ sage, meine ich nicht, dass Sie einen ganzen Flask-Server hochfahren oder Ihre Routen mühsam konfigurieren oder sich um CSS kümmern müssen. Streamlit hat das für Sie abgedeckt?

Lesen Sie weiter, um zu erfahren:

  • Was Replikat ist
  • Was Streamlit ist
  • So erstellen Sie eine Demo-Replikation der Chatbot-Streamlit-App
  • Und Best Practices für die Verwendung von Replicate

Keine Lust auf Lesen? Hier sind einige andere Möglichkeiten, diese Demo zu erkunden:

  • Den Code finden Sie hier im Streamlit Cookbook-Repo
  • Probieren Sie hier eine bereitgestellte Version der App aus
  • Sehen Sie sich hier eine Video-Komplettlösung von Replicate-Gründungsdesigner Zeke Sikelianos an

Was ist Replizieren?

Replicate ist eine Plattform, die es Entwicklern ermöglicht, Open-Source-KI-Modelle über eine CLI, API oder ein SDK bereitzustellen, zu optimieren und darauf zuzugreifen. Die Plattform erleichtert die programmgesteuerte Integration von KI-Funktionen in Softwareanwendungen.

Verfügbare Modelle auf Replicate

  • Text: Modelle wie Llama 3 können basierend auf Eingabeaufforderungen kohärenten und kontextrelevanten Text generieren.
  • Bild: Modelle wie Stable Diffusion können aus Textaufforderungen hochwertige Bilder generieren.
  • Sprache: Modelle wie Whisper können Sprache in Text umwandeln, während Modelle wie xtts-v2 natürlich klingende Sprache erzeugen können.
  • Video: Modelle wie animate-diff oder Varianten von Stable Diffusion wie Videocrafter können Videos aus Text- bzw. Bildaufforderungen generieren und/oder bearbeiten.

Bei gemeinsamer Verwendung ermöglicht Ihnen Replicate die Entwicklung multimodaler Apps, die Eingaben akzeptieren und Ausgaben in verschiedenen Formaten generieren können, sei es Text, Bild, Sprache oder Video.

Was ist Streamlit?

Streamlit ist ein Open-Source-Python-Framework zum Erstellen hochgradig interaktiver Apps – in nur wenigen Codezeilen. Streamlit lässt sich in die neuesten Tools der generativen KI integrieren, wie z. B. jedes LLM, jede Vektordatenbank oder verschiedene KI-Frameworks wie LangChain, LlamaIndex oder Weights & Biases. Die Chat-Elemente von Streamlit machen die Interaktion mit KI besonders einfach, sodass Sie Chatbots erstellen können, die „mit Ihren Daten sprechen“.

In Kombination mit einer Plattform wie Replicate ermöglicht Ihnen Streamlit die Erstellung generativer KI-Anwendungen ohne Aufwand für das App-Design.

? Um mehr darüber zu erfahren, wie Streamlit Sie zum Fortschritt vorantreibt, schauen Sie sich diesen Blogbeitrag an.

Um mehr über Streamlit zu erfahren, schauen Sie sich den 101-Leitfaden an.

Probieren Sie das App-Rezept aus: Replicate + Streamlit

Aber glauben Sie nicht meinem Wort. Probieren Sie die App selbst aus oder schauen Sie sich ein Video an und sehen Sie, was Sie denken.

In dieser Demo starten Sie eine Streamlit-Chatbot-App mit Replicate. Die App nutzt eine einzige API, um auf drei verschiedene LLMs zuzugreifen und Parameter wie Temperatur und Top-P anzupassen. Diese Parameter beeinflussen die Zufälligkeit und Vielfalt des KI-generierten Textes sowie die Methode, mit der Token ausgewählt werden.

? Was ist die Modelltemperatur? Die Temperatur steuert, wie das Modell Token auswählt. Eine niedrigere Temperatur macht das Modell konservativer und bevorzugt gebräuchliche und „sichere“ Wörter. Umgekehrt ermutigt eine höhere Temperatur das Modell, mehr Risiken einzugehen, indem es weniger wahrscheinliche Token auswählt, was zu kreativeren Ergebnissen führt.

? What is top-p? Also known as “nucleus sampling” — is another method for adjusting randomness. It works by considering a broader set of tokens as the top-p value increases. A higher top-p value leads to a more diverse range of tokens being sampled, producing more varied outputs.

Prerequisites

  • Python version >=3.8, !=3.9.7
  • A Replicate API key (Please note that a payment method is required to access features beyond the free trial limits.)

? To learn more about API keys, check out the blog post here.

Environment setup

Local setup

  1. Clone the Cookbook repo: git clone https://github.com/streamlit/cookbook.git
  2. From the Cookbook root directory, change directory into the Replicate recipe: cd recipes/replicate
  3. Add your Replicate API key to the .streamlit/secrets_template.toml file
  4. Update the filename from secrets_template.toml to secrets.toml: mv .streamlit/secrets_template.toml .streamlit/secrets.toml (To learn more about secrets handling in Streamlit, refer to the documentation here.)
  5. Create a virtual environment: python -m venv replicatevenv
  6. Activate the virtual environment: source replicatevenv/bin/activate
  7. Install the dependencies: pip install -r requirements.txt

GitHub Codespaces setup

  1. From the Cookbook repo on GitHub, create a new codespace by selecting the Codespaces option from the Code button

    How to create an AI chatbot using one API to access multiple LLMs

  2. Once the codespace has been generated, add your Replicate API key to the recipes/replicate/.streamlit/secrets_template.toml file

  3. Update the filename from secrets_template.toml to secrets.toml
    (To learn more about secrets handling in Streamlit, refer to the documentation here.)

  4. From the Cookbook root directory, change directory into the Replicate recipe: cd recipes/replicate

  5. Install the dependencies: pip install -r requirements.txt

Run a text generation model with Replicate

  1. Create a file in the recipes/replicate directory called replicate_hello_world.py
  2. Add the following code to the file:

    import replicate   
    
    import toml
    
    import os
    
    # Read the secrets from the secrets.toml file
    with open(".streamlit/secrets.toml", "r") as f:
        secrets = toml.load(f)
    
    # Create an environment variable for the Replicate API token 
    os.environ['REPLICATE_API_TOKEN'] = secrets["REPLICATE_API_TOKEN"]
    
    # Run a model
    for event in replicate.stream("meta/meta-llama-3-8b",
                                 input={"prompt": "What is Streamlit?"},):
        print(str(event), end="")
    
  3. Run the script: python replicate_hello_world.py

You should see a print out of the text generated by the model.

To learn more about Replicate models and how they work, you can refer to their documentation here. At its core, a Replicate “model” refers to a trained, packaged, and published software program that accepts inputs and returns outputs.

In this particular case, the model is meta/meta-llama-3-8b and the input is "prompt": "What is Streamlit?". When you run the script, a call is made to the Replicate endpoint and the printed text is the output returned from the model via Replicate.

Run the demo Replicate Streamlit chatbot app

To run the demo app, use the Streamlit CLI: streamlit run streamlit_app.py.

Running this command deploys the app to a port on localhost. When you access this location, you should see a Streamlit app running.

How to create an AI chatbot using one API to access multiple LLMs

You can use this app to prompt different LLMs via Replicate and produce generative text according to the configurations you provide.

A common API for multiple LLM models

Using Replicate means you can prompt multiple open source LLMs with one API which helps simplify AI integration into modern software flows.

This is accomplished in the following block of code:

for event in replicate.stream(model, 
                             input={"prompt": prompt_str,
                             "prompt_template": r"{prompt}", 
                             "temperature": temperature,
                             "top_p": top_p,}):
    yield str(event)

The model, temperature, and top p configurations are provided by the user via Streamlit’s input widgets. Streamlit’s chat elements make it easy to integrate chatbot features in your app. The best part is you don’t need to know JavaScript or CSS to implement and style these components – Streamlit provides all of that right out of the box.

Replicate best practices

Use the best model for the prompt

Replicate provides an API endpoint to search for public models. You can also explore featured models and use cases on their website. This makes it easy to find the right model for your specific needs.

Different models have different performance characteristics. Use the appropriate model based on your needs for accuracy and speed.

Verbessern Sie die Leistung mit Webhooks, Streaming und Bild-URLs

Die Ausgabedaten des Replikats sind nur eine Stunde lang verfügbar. Verwenden Sie Webhooks, um die Daten in Ihrem eigenen Speicher zu speichern. Sie können auch Webhooks einrichten, um asynchrone Antworten von Modellen zu verarbeiten. Dies ist entscheidend für die Erstellung skalierbarer Anwendungen.

Nutzen Sie nach Möglichkeit Streaming. Einige Modelle unterstützen Streaming, sodass Sie Teilergebnisse bereits während der Generierung erhalten. Dies ist ideal für Echtzeitanwendungen.

Die Verwendung von Bild-URLs bietet eine verbesserte Leistung im Vergleich zur Verwendung hochgeladener Bilder, die mit Base 64 kodiert sind.

Erschließen Sie das Potenzial der KI mit Streamlit

Mit Streamlit werden monatelange App-Designarbeiten rationalisiert auf nur wenige Zeilen Python. Es ist der perfekte Rahmen, um Ihre neuesten KI-Erfindungen zu präsentieren.

Machen Sie sich schnell an die Arbeit mit anderen KI-Rezepten im Streamlit-Kochbuch. (Und vergessen Sie nicht, uns im Forum zu zeigen, was Sie bauen!)

Viel Spaß beim Streamliten! ?

Das obige ist der detaillierte Inhalt vonSo erstellen Sie einen KI-Chatbot mit einer API, um auf mehrere LLMs zuzugreifen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn