スポンサーリンク

【LangChain】LCELを使用したChain実装

記事内に広告が含まれています。

LangChainを使ったプログラム作成をしておりますが、LCEL(LangChain Expression Language)を使っていなかったため、試しに実装してみました。

from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.schema.output_parser import StrOutputParser
from langchain.schema.runnable import RunnablePassthrough

prompt = ChatPromptTemplate.from_template("{ingredient}を使ったビールに合う料理を3つ教えて。")
model = ChatOpenAI(model="gpt-4")
output_parser = StrOutputParser()

chain = (
    {"ingredient": RunnablePassthrough()}
    | prompt
    | model
    | output_parser
)

result = chain.invoke("玉ねぎ")
print(result)

上記コードの実行結果が以下のとおりです。リクエストどおりの返答内容です。

食材を2つに変更してみます。

from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.schema.output_parser import StrOutputParser
from langchain.schema.runnable import RunnablePassthrough

prompt = ChatPromptTemplate.from_template("{ingredient1}と{ingredient2}を使ったビールに合う料理を3つ教えて。")
model = ChatOpenAI(model="gpt-4")
output_parser = StrOutputParser()

chain = (
    {"ingredient1": RunnablePassthrough(), "ingredient2": RunnablePassthrough()}
    | prompt
    | model
    | output_parser
)

result = chain.invoke({"ingredient1": "玉ねぎ", "ingredient2": "にんにく"})
print(result)

実行結果は以下のとおりです。

表記法はまだ慣れませんが、LCELを使わない場合よりもコードは短くなりますね。

LCELが標準ということになっているようですので、こちらを使っていこうと思います。

スポンサーリンク
スポンサーリンク
LangChainPython
著者SNS
タイトルとURLをコピーしました