Mit den heutigen KI-Fortschritten ist es einfach, ein generatives KI-Modell auf Ihrem Computer einzurichten, um einen Chatbot zu erstellen.
In diesem Artikel erfahren Sie, wie Sie mithilfe von Ollama und Next.js einen Chatbot auf Ihrem System einrichten können.
Beginnen wir mit der Einrichtung von Ollama auf unserem System. Besuchen Sie ollama.com und laden Sie es für Ihr Betriebssystem herunter. Dadurch können wir den Befehl ollama im Terminal/in der Eingabeaufforderung verwenden.
Überprüfen Sie die Ollama-Version mit dem Befehl ollama -v
Schauen Sie sich die Liste der Modelle auf der Ollama-Bibliotheksseite an.
Um ein Modell herunterzuladen und auszuführen, führen Sie den Befehl ollama run
Beispiel: ollama run llama3.1 oder ollama run gemma2
Sie können direkt im Terminal mit dem Model chatten.
Es müssen nur wenige NPM-Pakete installiert werden, um Ollama zu verwenden.
Um diese Abhängigkeiten zu installieren, führen Sie npm i ai ollama ollama-ai-provider aus.
Unter app/src gibt es eine Datei mit dem Namen page.tsx.
Lassen Sie uns alles darin entfernen und mit der grundlegenden Funktionskomponente beginnen:
src/app/page.tsx
export default function Home() { return ({/* Code here... */} ); }
Beginnen wir mit dem Importieren des useChat-Hooks aus ai/react und React-Markdown
"use client"; import { useChat } from "ai/react"; import Markdown from "react-markdown";
Da wir einen Hook verwenden, müssen wir diese Seite in eine Client-Komponente konvertieren.
Tipp: Sie können eine separate Komponente für den Chat erstellen und diese in der page.tsx aufrufen, um die Nutzung der Client-Komponenten einzuschränken.
In der Komponente werden Nachrichten, Eingaben, handleInputChange und handleSubmit vom useChat-Hook abgerufen.
const { messages, input, handleInputChange, handleSubmit } = useChat();
Erstellen Sie in JSX ein Eingabeformular, um die Benutzereingaben zu erhalten und eine Konversation zu initiieren.
Das Gute daran ist, dass wir den Handler nicht korrigieren oder einen Status für den Eingabewert beibehalten müssen, der useChat-Hook stellt ihn uns zur Verfügung.
Wir können die Nachrichten anzeigen, indem wir das Nachrichtenarray durchlaufen.
messages.map((m, i) => ({m})
Die gestaltete Version basierend auf der Rolle des Absenders sieht folgendermaßen aus:
{messages.length ? ( messages.map((m, i) => { return m.role === "user" ? (You) : ({m.content} AI); }) ) : ({m.content} )}Local AI Chat
Sehen wir uns die gesamte Datei an
src/app/page.tsx
"use client"; import { useChat } from "ai/react"; import Markdown from "react-markdown"; export default function Home() { const { messages, input, handleInputChange, handleSubmit } = useChat(); return (); }
Damit ist der Frontend-Teil abgeschlossen. Kommen wir nun zur API.
Beginnen wir mit der Erstellung von route.ts in app/api/chat.
Basierend auf der Namenskonvention von Next.js können wir die Anfragen auf dem Endpunkt localhost:3000/api/chat verarbeiten.
src/app/api/chat/route.ts
import { createOllama } from "ollama-ai-provider"; import { streamText } from "ai"; const ollama = createOllama(); export async function POST(req: Request) { const { messages } = await req.json(); const result = await streamText({ model: ollama("llama3.1"), messages, }); return result.toDataStreamResponse(); }
Der obige Code verwendet grundsätzlich Ollama und Vercel AI, um die Daten als Antwort zurückzustreamen.
Führen Sie npm run dev aus, um den Server im Entwicklungsmodus zu starten.
Öffnen Sie den Browser und gehen Sie zu localhost:3000, um die Ergebnisse anzuzeigen.
Wenn alles richtig konfiguriert ist, können Sie mit Ihrem eigenen Chatbot sprechen.
Den Quellcode finden Sie hier: https://github.com/parasbansal/ai-chat
Lassen Sie mich wissen, wenn Sie in den Kommentaren Fragen haben, ich werde versuchen, diese zu beantworten.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3