chainの使い方は簡単そうでわからない。
準備
pythonとかいろいろ準備します。
私の環境(M1 Mac)でのインストール手順は、次のとおりです。pythonに関してはpyenvを使ってインストールした後に、venvで仮想環境にしています。
python のインストール
-- brew で pyenvをインストール --
brew install pyenv
-- pyenv で python をインストール
pyenv install 3.11.4
pyenv global 3.11.4
-- 作業用のフォルダでvenv
python -m venv ai-chat.venv
. ./ai-chat.venv/bin/activate
続いて、openaiとlangchainのインストールです。
pip install openai
pip install langchain
これでインストール完了です
今回は 材料〜レシピ までを繋げる
- ユーザーが材料を入力
- 料理名をAIが考える
- 料理の方法をAIが考える
というかんじで、2~3をAIにChainしてもらう。
実装
SimpleSequentialChainにLLMChainを2個繋げるソースコード
from langchain import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain, SimpleSequentialChain
# first initialize the large language model
llm = OpenAI(
model_name="gpt-3.5-turbo",
)
prompt_first = PromptTemplate(
input_variables=["food"],
template="{food}を使った料理名を一つ教えてください",
)
chain_first = LLMChain(llm=llm, prompt=prompt_first)
prompt_second = PromptTemplate(
input_variables=["dish"],
template="{dish}の作り方を教えてください。",
)
chain_second = LLMChain(llm=llm, prompt=prompt_second)
overall_chain = SimpleSequentialChain(chains=[chain_first, chain_second], verbose=True)
chatchphrase = prediction = overall_chain.run("トマト")
print(chatchphrase)
レスポンス
こんな感じで、chain_firstの回答「トマトソースパスタ」をchain_secondにうまいこと渡せてた。
Entering new chain…
トマトソースパスタ
トマトソースパスタの作り方を教えます。
材料:
- パスタ(お好みの種類)
- トマト缶(刻んだもの、またはピューレ状のもの)
- 玉ねぎ(1個)
- ニンニク(2〜3片)
- オリーブオイル
- 塩
- こしょう
- バジル(お好みで)
作り方:
- パスタを袋の指示に従って茹でます。茹で時間に注意し、アルデンテ(少し硬め)に仕上げるのがおすすめです。茹であがったら水で洗い、ざるにあけておきます。
- 玉ねぎとニンニクをみじん切りにします。バジルは葉を摘んでおきます。
- 中火でフライパンにオリーブオイルを熱し、玉ねぎとニンニクを炒めます。玉ねぎが透明になるまで炒め続けます。
- 炒めた玉ねぎとニンニクにトマト缶を加え、よく混ぜます。塩とこしょうで味を調えます。お好みでバジルを加えても良いです。
- 弱火にしてソースを15〜20分ほど煮込みます。ソースがトロミが出て、味が深まるまで煮込みます。
- 茹でたパスタをソースに加え、よく絡めます。
- 器に盛り付けて、仕上げにお好みでバジルをトッピングして完成です。
お好みでチーズや唐辛子を加えても美味しく頂けます。お楽しみください!