Heim >Web-Frontend >js-Tutorial >Eine vollständige Anleitung zu Langchain in JavaScript
Langchainjs: Ein leistungsstarker Rahmen für den Aufbau von AI-gesteuerten JavaScript-Sprachmodellen und -agenten
Kernpunkte:
Dieser Leitfaden taucht in die Schlüsselkomponenten von Langchain ein und zeigt, wie sie ihre Leistung in JavaScript nutzen können. Langchainjs ist ein gemeinsames JavaScript -Framework, mit dem Entwickler und Forscher Sprachmodelle und -agenten erstellen, experimentieren und analysieren können. Es bietet Enthusiasten für natürliche Sprachverarbeitung (NLP) mit einer Fülle von Fähigkeiten, vom Erstellen benutzerdefinierter Modelle bis hin zum effizienten Manipulieren von Textdaten. Als JavaScript -Framework können Entwickler ihre KI -Anwendungen einfach in Webanwendungen integrieren.
Voraussetzungen:
Um diesen Artikel zu erfahren, erstellen Sie einen neuen Ordner und installieren Sie das Langchain NPM -Paket:
<code class="language-bash">npm install -S langchain</code>
Verwenden Sie nach dem Erstellen eines neuen Ordners das Suffix .mjs
, um eine neue JS -Moduldatei zu erstellen (z. B. test1.mjs
).
Agenten:
In Langchain ist ein Agent eine Entität, die Text verstehen und generieren kann. Diese Agenten können bestimmte Verhaltensweisen und Datenquellen konfigurieren und sind geschult, um verschiedene sprachbezogene Aufgaben auszuführen, wodurch sie zu einem multifunktionalen Tool für eine Vielzahl von Anwendungen sind.
Erstellen Sie Langchain -Agent:
Agenturen können so konfiguriert werden, dass "Tools" verwendet werden, um die erforderlichen Daten zu sammeln und eine gute Antwort zu entwickeln. Bitte beachten Sie das Beispiel unten. Es verwendet die SERP -API (eine Internet -Such -API), um nach Informationen zu suchen, die sich auf eine Frage oder Eingabe beziehen und darauf reagieren. Es verwendet auch das llm-math
-Tool, um mathematische Operationen auszuführen - zum Beispiel um Konvertieren von Einheiten oder das Finden einer prozentualen Änderung zwischen zwei Werten:
<code class="language-bash">npm install -S langchain</code>
Nach dem Erstellen von Modellvariablen mit modelName: "gpt-3.5-turbo"
und temperature: 0
erstellen wir einen Executor, der das erstellte Modell mit den angegebenen Tools (SerpAPI und Taschenrechner) kombiniert. In der Eingabe habe ich LLM gebeten, das Internet (unter Verwendung von Serpapi) zu durchsuchen und herauszufinden, welcher Künstler seit 2010 mehr Alben veröffentlicht hat - NAS oder Boldy James - und den prozentualen Unterschied (unter Verwendung von Taschenrechner) zeigen.
In diesem Beispiel muss ich LLM explizit sagen, dass es "über die Suche nach dem Internet ..." dazu gebracht wird, das Internet bis heute Daten zu erhalten, anstatt nur OpenAI -Standard für 2021 zu verwenden.
Die Ausgabe ist wie folgt:
<code class="language-javascript">import { initializeAgentExecutorWithOptions } from "langchain/agents"; import { ChatOpenAI } from "langchain/chat_models/openai"; import { SerpAPI } from "langchain/tools"; import { Calculator } from "langchain/tools/calculator"; process.env["OPENAI_API_KEY"] = "YOUR_OPENAI_KEY" process.env["SERPAPI_API_KEY"] = "YOUR_SERPAPI_KEY" const tools = [new Calculator(), new SerpAPI()]; const model = new ChatOpenAI({ modelName: "gpt-3.5-turbo", temperature: 0 }); const executor = await initializeAgentExecutorWithOptions(tools, model, { agentType: "openai-functions", verbose: false, }); const result = await executor.run("通过搜索互联网,查找Boldy James自2010年以来发行了多少张专辑,以及Nas自2010年以来发行了多少张专辑?找出谁发行了更多专辑,并显示百分比差异。"); console.log(result);</code>
Modelle (Modelle):
Es gibt drei Arten von Modellen in Langchain: LLM, Chat -Modell und Texteinbettungsmodell. Erforschen wir jeden Modelltyp mit einigen Beispielen.
Sprachmodell:
Langchain bietet eine Möglichkeit, Sprachmodelle in JavaScript zu verwenden, um die Textausgabe basierend auf der Texteingabe zu generieren. Es ist nicht so komplex wie das Chat-Modell und eignet sich am besten für einfache Sprachaufgaben in Eingabe-Output. Hier ist ein Beispiel mit OpenAI:
<code>// 输出将取决于互联网搜索结果</code>
Wie Sie sehen können, wird das Modell gpt-3.5-turbo
Modell verwendet, um alle roten Beeren aufzulisten. In diesem Beispiel habe ich die Temperatur auf 0 gesetzt, um die LLM de facto -Genauigkeit zu geben.
Ausgabe:
<code class="language-javascript">import { OpenAI } from "langchain/llms/openai"; const llm = new OpenAI({ openAIApiKey: "YOUR_OPENAI_KEY", model: "gpt-3.5-turbo", temperature: 0 }); const res = await llm.call("列出所有红色的浆果"); console.log(res);</code>
Chat -Modell:
Wenn Sie komplexere Antworten und Gespräche wünschen, müssen Sie das Chat -Modell verwenden. Wie unterscheidet sich das Chat -Modell technisch von einem Sprachmodell? In den Worten der Langchain -Dokumentation:
Chat -Modell ist eine Variante des Sprachmodells. Obwohl Chat -Modelle Sprachmodelle im Hintergrund verwenden, verwenden sie leicht unterschiedliche Schnittstellen. Anstatt die API "Texteingabe, Textausgabe" zu verwenden, verwenden sie die "Chat -Nachricht" als Schnittstelle für Eingabe und Ausgabe.
Dies ist ein einfaches (ziemlich nutzloses, aber interessantes) JavaScript -Chat -Modellskript:
<code>// 输出将列出红色的浆果</code>
Wie Sie sehen, sendet der Code zunächst eine Systemnachricht und fordert den Chatbot an, ein poetischer Assistent zu werden, der immer mit Reimen antwortet, und dann sendet er eine menschliche Nachricht, die dem Chatbot sagt, dass er mir mitteilt, wer der bessere Tennisspieler ist: De Jokovic, Federer oder Nadal. Wenn Sie dieses Chatbot -Modell ausführen, sehen Sie so etwas:
<code class="language-javascript">import { ChatOpenAI } from "langchain/chat_models/openai"; import { PromptTemplate } from "langchain/prompts"; const chat = new ChatOpenAI({ openAIApiKey: "YOUR_OPENAI_KEY", model: "gpt-3.5-turbo", temperature: 0 }); const prompt = PromptTemplate.fromTemplate(`你是一个诗意的助手,总是用押韵来回答:{question}`); const runnable = prompt.pipe(chat); const response = await runnable.invoke({ question: "谁更好,德约科维奇、费德勒还是纳达尔?" }); console.log(response);</code>
Einbettungen:
Einbingmodell bietet eine Möglichkeit, Wörter und Zahlen in Text in Vektoren umzuwandeln, die dann mit anderen Wörtern oder Zahlen zugeordnet werden können. Dies mag abstrakt klingen. Schauen wir uns also ein Beispiel an:
<code>// 输出将是一个用押韵回答的问题</code>
Dies gibt eine lange Liste von schwimmenden Punktnummern zurück:
<code class="language-javascript">import { OpenAIEmbeddings } from "langchain/embeddings/openai"; process.env["OPENAI_API_KEY"] = "YOUR_OPENAI_KEY" const embeddings = new OpenAIEmbeddings(); const res = await embeddings.embedQuery("谁创造了万维网?"); console.log(res)</code>
So sieht ein Einbettung aus. Es gibt so viele schwimmende Punktzahlen in nur sechs Wörtern!
Diese Einbettung kann dann verwendet werden, um den Eingabetxt mit potenziellen Antworten, zugehörigen Text, Namen usw. zu assoziieren.
Schauen wir uns jetzt einen Anwendungsfall für eingebettete Modelle an ...
Dies ist ein Skript, das Einbettungen verwendet, um die Frage "Was ist das schwerste Tier?"
<code class="language-bash">npm install -S langchain</code>
Stücke:
Langchain -Modelle können keine großen Texte verarbeiten und sie verwenden, um Antworten zu generieren. Hier kommen die Segmentierung von Chunking und Text ins Spiel. Lassen Sie mich Ihnen zwei einfache Möglichkeiten zeigen, um Textdaten in Stücke aufzuteilen, bevor Sie sie an Langchain füttern.
Segment nach Zeichen:
Um plötzliche Unterbrechungen beim Knacken zu vermeiden, können Sie den Text per Absatz aufteilen, indem Sie jedes Auftreten eines neuen Zeilenzeichens teilen:
<code class="language-javascript">import { initializeAgentExecutorWithOptions } from "langchain/agents"; import { ChatOpenAI } from "langchain/chat_models/openai"; import { SerpAPI } from "langchain/tools"; import { Calculator } from "langchain/tools/calculator"; process.env["OPENAI_API_KEY"] = "YOUR_OPENAI_KEY" process.env["SERPAPI_API_KEY"] = "YOUR_SERPAPI_KEY" const tools = [new Calculator(), new SerpAPI()]; const model = new ChatOpenAI({ modelName: "gpt-3.5-turbo", temperature: 0 }); const executor = await initializeAgentExecutorWithOptions(tools, model, { agentType: "openai-functions", verbose: false, }); const result = await executor.run("通过搜索互联网,查找Boldy James自2010年以来发行了多少张专辑,以及Nas自2010年以来发行了多少张专辑?找出谁发行了更多专辑,并显示百分比差异。"); console.log(result);</code>Dies ist eine nützliche Möglichkeit, Text zu teilen. Sie können jedoch einen beliebigen Charakter als Chunking -Separator verwenden, nicht nur
. n
rekursives Segmenting -Chunking:
Wenn Sie den Text durch Zeichen einer bestimmten Länge streng teilen möchten, können Sie: RecursiveCharacterTextSplitter
verwenden
<code>// 输出将取决于互联网搜索结果</code>In diesem Beispiel wird der Text alle 100 Zeichen geteilt und die Stücke überlappen sich auf 15 Zeichen.
Blockgröße und Überlappung:
Wenn Sie sich diese Beispiele ansehen, haben Sie sich möglicherweise gefragt, was die Größe und die überlappenden Parameter bedeuten und wie sie die Leistung beeinflussen. Ok, lassen Sie mich kurz zwei Dinge erklären.
Ketten:
Kapitel sind im Grunde mehrfache LLM-Funktionen, die zusammengefügt werden, um komplexere Aufgaben auszuführen, da es ansonsten nicht durch einfache LLM-Eingabe- und GT-Ausgabe erfolgen kann. Schauen wir uns ein cooles Beispiel an:
<code class="language-javascript">import { OpenAI } from "langchain/llms/openai"; const llm = new OpenAI({ openAIApiKey: "YOUR_OPENAI_KEY", model: "gpt-3.5-turbo", temperature: 0 }); const res = await llm.call("列出所有红色的浆果"); console.log(res);</code>
Beyond OpenAI:
Auch wenn ich das OpenAI -Modell als Beispiel für verschiedene Funktionen von Langchain verwendet habe, ist es nicht auf das OpenAI -Modell beschränkt. Sie können Langchain mit zahlreichen anderen LLM- und KI -Diensten verwenden. In ihrer Dokumentation finden Sie eine vollständige Liste von Langchain- und JavaScript -integrierten LLMs.Zum Beispiel können Sie Cohere mit Langchain verwenden. Nach der Installation von Cohere und mit
können Sie mithilfe von Langchain und Cohere einen einfachen Q & A -Code erstellen, wie unten gezeigt: npm install cohere-ai
<code>// 输出将列出红色的浆果</code>Ausgabe:
<code class="language-javascript">import { ChatOpenAI } from "langchain/chat_models/openai"; import { PromptTemplate } from "langchain/prompts"; const chat = new ChatOpenAI({ openAIApiKey: "YOUR_OPENAI_KEY", model: "gpt-3.5-turbo", temperature: 0 }); const prompt = PromptTemplate.fromTemplate(`你是一个诗意的助手,总是用押韵来回答:{question}`); const runnable = prompt.pipe(chat); const response = await runnable.invoke({ question: "谁更好,德约科维奇、费德勒还是纳达尔?" }); console.log(response);</code>
Schlussfolgerung:
In diesem Leitfaden haben Sie in JavaScript verschiedene Aspekte und Funktionen von Langchain gesehen. Mit Langchain und Experiment mit LLM können Sie problemlos KI-betriebene Webanwendungen in JavaScript entwickeln. Weitere Informationen zu bestimmten Funktionen finden Sie in der Langchainjs -Dokumentation.Ich wünsche Ihnen ein frohes Codieren und Experimentieren mit Langchain in JavaScript! Wenn Ihnen dieser Artikel gefällt, möchten Sie möglicherweise auch Artikel über die Verwendung von Langchain mit Python lesen.
Das obige ist der detaillierte Inhalt vonEine vollständige Anleitung zu Langchain in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!