はじめに
こんにちは、慶應義塾大学理工学部機械工学科3年の金賢佑です!
私は東大発AIベンチャーの株式会社2WINSの元でインターンをしています!
これからの記事では自分がインターンを通して最強のAIエンジニアを目指していきます!
第五回はPromptTemplate
の基礎を記録しました!
PromptTemplateとは
その名の通り、プロンプトをテンプレート化するためのコンポーネントです!
プロンプトとはLLMに送る指示文のこと!
例えば以下を実行してみてください!
from langchain_core.prompts import PromptTemplate
prompt = PromptTemplate.from_template("""以下の料理のレシピを教えてください
料理名: {dish}""")
prompt_value = prompt.invoke({'dish': 'カレー'})
prompt_value2 = prompt.invoke({'dish': 'ハンバーグ'})
print(prompt_value.text)
print(prompt_value2.text)
上の例では、prompt
を作成した後にinvoke
で変数dish
にカレー
を代入していますね!
実行結果は以下のようになります。
以下の料理のレシピを教えてください
料理名: カレー
以下の料理のレシピを教えてください
料理名: ハンバーグ
人によって教えてほしいレシピは違うものなので、料理名だけが後付けできるのはとても便利ですね!
ChatPromptTemplate
先程のPromptTemplate
をChat APIに応用させたものがChatPromptTemplate
になります!
例えばあなたがGPTに料理のレシピを聞くことが多いとします。
毎回文章を書くのは少し面倒ですよね....
なので料理名だけ後付けできるテンプレを作成してみましょう!
以下のコードを打ってみてください!
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate(
[
('system', 'ユーザーが入力した料理のレシピを教えてください。'),
('human', '{dish}'),
]
)
これでテンプレの完成です!
もしカレーのレシピを聞く文章を作成したいときは以下のようにinvoke()
で呼び出してあげればいいだけです!
prompt_value = prompt.invoke({'dish': 'カレー'})
print(prompt_value)
後はこのテンプレをLLMに渡してあげましょう!
from langchain_openai import ChatOpenAI
model = ChatOpenAI(model='gpt-4o', temperature=0)
response = model.invoke(prompt_value)
print(response.content)
実行結果は以下のようになり、ちゃんと知りたいレシピが返ってきましたね!
### 材料
- 鶏もも肉: 300g(一口大に切る)
- 玉ねぎ: 1個(みじん切り)
- にんにく: 2片(みじん切り)
- 生姜: 1片(みじん切り)
- トマト: 1個(角切り)
- カレーパウダー: 大さじ2
- クミンシード: 小さじ1
- コリアンダーパウダー: 小さじ1
- ターメリックパウダー: 小さじ1/2
- ガラムマサラ: 小さじ1
- 塩: 適量
- コショウ: 適量
- サラダ油: 大さじ2
- 水: 200ml
- ヨーグルト: 大さじ2(お好みで)
### 作り方
1. フライパンにサラダ油を熱し、クミンシードを入れて香りが立つまで炒めます。
2. 玉ねぎを加え、透明になるまで炒めます。
3. にんにくと生姜を加え、さらに炒めます。
4. 鶏肉を加え、表面が白くなるまで炒めます。
5. トマトを加え、柔らかくなるまで炒めます。
6. カレーパウダー、コリアンダーパウダー、ターメリックパウダー、ガラムマサラを加え、全体に絡めます。
7. 水を加え、沸騰したら弱火にして蓋をし、15〜20分煮込みます。
8. 塩とコショウで味を調えます。
9. お好みでヨーグルトを加え、さらに数分煮込みます。
10. ご飯やナンと一緒にお召し上がりください。
このレシピは基本的なものなので、野菜や豆類を加えてアレンジすることもできます。お好みのスパイスを追加して、自分だけのカレーを作ってみてください。
まとめ
今回はPromptTemplate
を使ってテンプレートの作成を行いました!
次回はOutput parser
を使ってみたいと思います!
お疲れ様でした!
参考文献
LangChainとLangGraphによるRAG・AIエージェント〈実践〉入門/西見公宏/吉田真吾/大嶋勇樹