
横浜国立大学理工学部建築都市環境系学科卒
一級鉄筋技能士
唎酒師
狂人のごとく特定の分野、中小企業を理解し、国の補助金を獲得します。最近は中小企業のM&Aにも挑戦中
鉄筋工でもLangchainを理解できるんですよ。
舐めないでください(‘ω’)
この記事では、職人でもわかるLCEL(chainの概念)について解説します。
え?まだchainの概念がわからないって?( ゚Д゚)そんな方はこちらの講座をどうぞ!
目次
LECL(chain)って何なの?
LCEL(Language Chain Execution Logic)は、LLM(大規模言語モデル)を活用する際に、入力(プロンプト)から出力までの処理をチェーン化(連鎖)して行う手法のことを指します。
これだけだとわからないので詳しく見ていきましょう。
「|」これがchain
「|」がchainだと言われてもさっぱりわかりませんね。
前回の記事では、大規模言語モデルを動かす際に、Langchainを使用した場合と使用しない場合の比較をしてみました。
LangChainでは、SystemMessage、HumanMessage、AIMessage の3種類のメッセージタイプを使用し、より自然に会話の流れを管理することができます。
そして、OutputParsersで出力して得られる回答をdict型とは違う形で取得することができます。
さらに、PromptTemplateを使用すれば、プロンプトをフォーマット化し、変数を埋め込んで動的に変更できるようになるので、便利という事も確認しました。
chainを使わない場合
上記の一連の流れをまとめると次のようになります。
1 2 3 4 5 6 7 |
# PromptTemplateでPromptを作成 prompt = prompt_template.invoke({"language": "italian", "text": "こんにちは"}) # modelにPromptを渡して結果を取得 response = model.invoke(prompt) # 結果を文字列に変換 result = parser.invoke(response) print(result) |
この一連の流れを、より簡略したコードで実行できるのがchainです。
chainを使う場合
では、上記の一連の流れをchainを使った形で書き換えてみましょう。
1 2 3 4 5 |
# |を使って、PromptTemplate, ChatOpenAI, StrOutputParserをつなげる chain = prompt_template | model | parser # あとは、chainを使って、結果を取得 chain.invoke({"language": "italian", "text": "こんにちは"}) |
おわり(‘ω’)
Azureで作るOpenAIチャットシステム開発講座大好評!
他の記事では小難しく解説されているchainも本講座では簡潔に分かりやすく解説しています!
ぜひご活用ください!!