ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptのLangchainの完全なガイド
langchainjs:AI駆動型のJavaScript言語モデルとエージェントを構築するための強力なフレームワーク
コアポイント:
前提条件: この記事を学習するには、新しいフォルダーを作成してLangchain NPMパッケージをインストールします。
新しいフォルダーを作成した後、
接尾辞を使用して、新しいJSモジュールファイルを作成します(たとえば、<code class="language-bash">npm install -S langchain</code>)。
.mjs
test1.mjs
エージェント:
Langchainでは、エージェントはテキストを理解して生成できるエンティティです。これらのエージェントは、特定の動作とデータソースを構成でき、さまざまな言語関連のタスクを実行するようにトレーニングされているため、さまざまなアプリケーション向けの多機能ツールになります。
langchainエージェントを作成:代理店は、「ツール」を使用して必要なデータを収集し、適切な応答を作成するように構成できます。以下の例をご覧ください。 SERP API(インターネット検索API)を使用して、質問または入力に関連する情報を検索して応答します。また、ツールを使用して数学操作を実行します。たとえば、単位を変換したり、2つの値間でパーセンテージの変更を見つけたりします。
Langchainには、LLM、チャットモデル、およびテキスト埋め込みモデルの3種類のモデルがあります。いくつかの例を使用して、各タイプのモデルを探索しましょう。
言語モデル:
Langchainは、JavaScriptで言語モデルを使用して、テキスト入力に基づいてテキスト出力を生成する方法を提供します。チャットモデルほど複雑ではなく、単純な入出力言語タスクに最適です。 Openaiを使用した例は次のとおりです
モデルを使用してすべての赤いベリーをリストします。この例では、LLMの事実上の精度を与えるために温度を0に設定します。
チャットモデル: より複雑な回答と会話が必要な場合は、チャットモデルを使用する必要があります。技術的には、チャットモデルは言語モデルとどのように違いますか? Langchainドキュメントの言葉で:
これにより、浮動小数点数の長いリストが返されます:
これは、埋め込みを使用して「最も重い動物とは何ですか?」
チャンク:
文字によるセグメント セグメント:
特定の長さの文字でテキストを厳密に分割したい場合は、 を使用できます。
ブロックサイズとオーバーラップ:
これらの例を見ると、パラメーターが何を意味するのか、パフォーマンスにどのように影響するかを疑問に思い始めたかもしれません。わかりました、2つのことを簡単に説明させてください。
チャンクサイズは、各チャンクの文字の数を決定します。チャンクサイズが大きいほど、チャンクのデータが多いほど、Langchainを処理して出力を生成するのに時間がかかります。逆も同様です。
章は、基本的に複数のLLM関数をリンクしてより複雑なタスクを実行します。そうしないと、単純なLLM入力&GTを使用することはできません。クールな例を見てみましょう:
Langchainのさまざまな機能の例としてOpenaiモデルを使用していたとしても、Openaiモデルに限定されません。他の多くのLLMおよびAIサービスでLangchainを使用できます。 LangchainとJavaScript統合LLMの完全なリストをドキュメントに見つけることができます。
たとえば、
JavaScriptでLangchainを実験して、幸せなコーディングと実験をお祈りします!この記事が気に入っている場合は、PythonでLangchainを使用することに関する記事を読むこともできます。 <code class="language-bash">npm install -S langchain</code>
modelName: "gpt-3.5-turbo"
およびtemperature: 0
を使用してモデル変数を作成した後、作成されたモデルと指定されたツール(SERPAPIおよび電卓)を組み合わせたエグゼキューターを作成します。入力では、LLMにインターネットを検索するように依頼し(Serpapiを使用)、2010年以来どのアーティスト(NASまたはBoldy James)がリリースされているかを調べ、違いを示す(計算機を使用)。 <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>
モデル(モデル):<code>// 输出将取决于互联网搜索结果</code>
output:gpt-3.5-turbo
<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>
これは単純な(非常に役に立たないが興味深い)JavaScriptチャットモデルスクリプト:
ご覧のとおり、コードは最初にシステムメッセージを送信し、チャットボットに常に韻で答える詩的なアシスタントになるように指示し、それからチャットボットに、より良いテニスプレーヤーを教えてくれるようにチャットボットに伝える人間のメッセージを送信します。 de Jokovic、Federer、またはNadal。このチャットボットモデルを実行すると、次のようなものが表示されます。
<code>// 输出将列出红色的浆果</code>
埋め込み:
<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>
埋め込みモデルは、テキスト内の単語と数字をベクトルに変換する方法を提供し、それを他の単語または数字に関連付けることができます。これは抽象的に聞こえるかもしれないので、例を見てみましょう:<code>// 输出将是一个用押韵回答的问题</code>
この埋め込みは、入力テキストを潜在的な回答、関連テキスト、名前などに関連付けるために使用できます。 <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>
<code class="language-bash">npm install -S langchain</code>
<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>
だけでなく、チャンキングセパレーターとして使用できます。 n
RecursiveCharacterTextSplitter
この例では、テキストは100文字ごとに分割され、チャンクは15文字に重なります。 <code>// 输出将取决于互联网搜索结果</code>
ブロックオーバーラップは、ブロック間で情報を共有して、コンテキストを共有するコンテンツです。チャンクのオーバーラップが高いほど、チャンクが低くなるほど、チャンク間で共有されるコンテキストが少なくなります。通常、良いチャンキングのオーバーラップは、チャンキングサイズの約10%〜20%ですが、目的のチャンキングオーバーラップはテキストタイプとユースケースによって異なります。
<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>
npm install cohere-ai
<code>// 输出将列出红色的浆果</code>
結論:
このガイドでは、JavaScriptでLangchainのさまざまな側面と機能を見てきました。 Langchainを使用してJavaScriptでAIを搭載したWebアプリケーションを簡単に開発し、LLMで実験できます。特定の機能の詳細については、必ずLangchainjsのドキュメントを参照してください。 <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>
以上がJavaScriptのLangchainの完全なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。