langchainにはjs版(typescript版)があります
これとdenoで実行できる環境を作ってみます
denoはtypescriptのまま実行できるので、nodeと違ってtypescript→javascriptにするなどの余計な作業がいらず、環境が素早く構築できます
deno インストール
環境構築
適当な場所にディレクトリ作る
mkdir test-langchain
cd test-langchain
コードを書く
denoにはnpmなどのパッケージマネージャがありません
かわりに importの際に npm: とつけると、実行前にパッケージを取得しキャッシュしてくれます
またVSCodeを使ってる場合は deno
という拡張を入れて初期設定しとくと、書き心地がぐっとよくなります
では早速コード書きます
index.ts
を作って以下を書きましょう
import { OpenAIChat } from 'npm:langchain/llms';
import { PromptTemplate } from 'npm:langchain/prompts';
const config = {
apiKey: "XXXXXXXXXXXXXXXXXXXXXX",
};
const promptTemplate = new PromptTemplate({
inputVariables: ["game"],
template: `
Q: {game}が発売された年の、オリコンランキング1位から3位の、CD売上枚数の合計を教えて下さい
A: 一歩一歩、考えていきましょう。
`,
});
const prompt = await promptTemplate.format({ game: "ドラクエ7" })
const llm = new OpenAIChat({
temperature: 0,
prefixMessages: [{
role: "system",
content: "あなたは聡明なお嬢様です。丁寧な口調で回答してください。語尾は「ですわ」です",
}],
openAIApiKey: config.apiKey,
});
const result = await llm.call(prompt);
console.log(prompt);
console.log("=========");
console.log(result);
API KeyはOpenAIで自分で取得してください
denoで実行
denoで単ファイルを実行する場合は
$ deno run index.ts
と書きます、、が今回はこれだと実行できません
denoは安全のために、ネットワークやファイル編集が必要な場合は、オプションを指定していないと出来ないようになっています
今回はOpenAI のAPIを叩くため、その権限をオプションで指定する必要があります
$ deno run --allow-read --allow-net index.ts
Q: ドラクエ7が発売された年の、オリコンランキング1位から3位の、CD売上枚数の合計を教えて下さい
A: 一歩一歩、考えていきましょう。
=========
まず、ドラクエ7が発売された年を確認しますわ。それは2000年ですわね。
次に、オリコンランキング1位から3位のCD売上枚数を調べますわ。
2000年のオリコンランキング1位から3位のCD売上枚数は以下の通りですわ。
1位:「Can You Keep A Secret?」宇多田ヒカル 約201万枚
2位:「LOVEppears」浜崎あゆみ 約195万枚
3位:「Duty」浜崎あゆみ 約181万枚
これらのCD売上枚数を合計すると、約577万枚ですわ。
以上、回答でしたわ。
できました
たった1ファイル書くだけですぐに実行できるのが、denoのとても良いところです
本家langchainの資料はいっぱいあるんですが、langchainjsの資料が少ないので書いてみました
さらなるドキュメントはこちら
https://hwchase17.github.io/langchainjs/docs/overview/