PromptTemplateの作成
PromptTemplateとは
PromptTemplateはユーザー入力を言語モデルに渡す準備ができたデータ(プロンプト)に変換するLangChainの概念です。
図解
PromptTemplateの動作
- ユーザー入力の受け取り: PromptTemplateは、ユーザーから生のテキスト入力を受け取ります。
- データ変換: PromptTemplateは、受け取ったユーザー入力を、言語モデルが理解できる形式のプロンプトに変換します。この変換には、システムメッセージの追加や、ユーザー入力を使用したテンプレートのフォーマットなどが含まれます。
- プロンプトの出力: 変換されたプロンプトは、言語モデルに入力として渡されます。
PromptTemplateの利点
- 再利用性: 一度作成したPromptTemplateは、異なるユーザー入力に対して繰り返し使用できます。
- 柔軟性: PromptTemplateは、ユーザー入力に基づいてプロンプトを動的に生成できます。
- 保守性: プロンプトの構造がコードとして定義されているため、変更や管理が容易になります。
PromptTemplateの作成
それでは、PromptTemplateを作成します。
PromptTemplateには、次の2つのユーザー変数を受け取ります。
- language:テキストの翻訳先言語
- text:翻訳するテキスト
まず、システムメッセージとしてフォーマットする文字列を作成します。
const systemTemplate = "次の文章を英語から{language}に翻訳してください。";次に、systemTemplateとテキストの配置場所を指定するより単純なテンプレートを組み合わせて、PromptTemplateを作成します。
まずは、@langchain/core/promptsからChatPromptTemplateをインポートします。
import { ChatPromptTemplate } from "@langchain/core/prompts";次に、定数promptTemplateを用意します。
ChatPromptTemplateからfromMessagesメソッドを呼び出します。
fromMessagesメソッドの引数には、配列の中に2つの配列を用意します。
1つ目には、キーをsystemで、値をsystemTemplateとします。
2つ目には、キーをuserで、値を{text}とします。
const promptTemplate = ChatPromptTemplate.fromMessages([ ["system", systemTemplate], ["user", "{text}"],]);PromptTemplateの使用
定数promptTemplateから、invokeメソッドを呼び出します。
invokeメソッドの引数には、languageプロパティとtextプロパティのオブジェクトを渡します。
promptTemplate単独でどのような動作をするのかを確認するために、以下のように試すことができます。
const res = await promptTemplate.invoke({ language: "japanese", text: "hi" });