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

これでインストール完了です

今回は 材料〜レシピ までを繋げる

  1. ユーザーが材料を入力
  2. 料理名をAIが考える
  3. 料理の方法を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片)
  • オリーブオイル
  • こしょう
  • バジル(お好みで)

作り方:

  1. パスタを袋の指示に従って茹でます。茹で時間に注意し、アルデンテ(少し硬め)に仕上げるのがおすすめです。茹であがったら水で洗い、ざるにあけておきます。
  2. 玉ねぎとニンニクをみじん切りにします。バジルは葉を摘んでおきます。
  3. 中火でフライパンにオリーブオイルを熱し、玉ねぎとニンニクを炒めます。玉ねぎが透明になるまで炒め続けます。
  4. 炒めた玉ねぎとニンニクにトマト缶を加え、よく混ぜます。塩とこしょうで味を調えます。お好みでバジルを加えても良いです。
  5. 弱火にしてソースを15〜20分ほど煮込みます。ソースがトロミが出て、味が深まるまで煮込みます。
  6. 茹でたパスタをソースに加え、よく絡めます。
  7. 器に盛り付けて、仕上げにお好みでバジルをトッピングして完成です。

お好みでチーズや唐辛子を加えても美味しく頂けます。お楽しみください!