SimpleSequentialChain と SequentialChain

LangChainにおける「SimpleSequentialChain」と「SequentialChain」は、複数のLLM呼び出しや処理を順番に接続して実行するためのチェーン(Chain)構成要素です。これらは、ステップバイステップの自然言語処理パイプラインを構築する際に非常に有用です。


SimpleSequentialChainとは

概要

SimpleSequentialChainは、複数のLLMChainを直列に接続し、前の出力を次の入力に自動的に渡す単純な構成のチェーンです。

  • 各ステップの出力は、次のステップの唯一の入力として扱われます。

  • 入力と出力が一対一対応するため、設計がシンプルです。

特徴

  • 実装が簡単。

  • データの流れが一本道で明快。

  • 各ステップは1つの文字列を受け取り、1つの文字列を返す。

使用例

python
from langchain.prompts import PromptTemplate from langchain.chains import LLMChain, SimpleSequentialChain from langchain.chat_models import ChatOpenAI # 各ステップのプロンプト prompt1 = PromptTemplate(input_variables=["input"], template="以下のテーマについてアイデアを出してください: {input}") prompt2 = PromptTemplate(input_variables=["input"], template="以下のアイデアをもとに短い文章を書いてください: {input}") # LLMChainの定義 llm = ChatOpenAI(temperature=0) chain1 = LLMChain(llm=llm, prompt=prompt1) chain2 = LLMChain(llm=llm, prompt=prompt2) # SimpleSequentialChainの作成 simple_chain = SimpleSequentialChain(chains=[chain1, chain2], verbose=True) # 実行 simple_chain.run("AIを使った教育支援")

SequentialChainとは

概要

SequentialChainは、より柔軟で複雑なフローを構成できるチェーンです。各ステップにおいて、複数の入力変数や出力変数を使うことができます。

  • 中間変数の受け渡しが可能で、データの流れを明示的に制御できます。

  • 各ステップでの入力・出力名を指定可能。

特徴

  • 柔軟性が高く、複雑な処理に対応。

  • データの変数名を明示的に管理できる。

  • 複数の出力を次のステップで利用できる。

使用例

python
from langchain.chains import SequentialChain # プロンプトの定義 prompt1 = PromptTemplate(input_variables=["product"], template="商品の名前は: {product}。そのキャッチコピーを考えてください。") prompt2 = PromptTemplate(input_variables=["catchphrase"], template="キャッチコピー「{catchphrase}」に基づいてSNS投稿文を作成してください。") # 各チェーンの定義 chain1 = LLMChain(llm=llm, prompt=prompt1, output_key="catchphrase") chain2 = LLMChain(llm=llm, prompt=prompt2, output_key="sns_post") # SequentialChainの作成 seq_chain = SequentialChain( chains=[chain1, chain2], input_variables=["product"], output_variables=["catchphrase", "sns_post"], verbose=True ) # 実行 seq_chain.run({"product": "スマート水筒"})

両者の比較まとめ

項目 SimpleSequentialChain SequentialChain
構造 単純な直列構成 柔軟な直列構成
入出力 各ステップに1入力1出力 複数入力・出力を定義可
データの受け渡し 自動 明示的(変数名指定)
向いている用途 単純なテキスト処理パイプライン 高度な処理フローや条件分岐がある場合

まとめ

LangChainにおけるSimpleSequentialChainとSequentialChainは、複数のLLM呼び出しを組み合わせて段階的な処理を実現するための基本的な道具です。シンプルなパイプラインを素早く構築したい場合はSimpleSequentialChain、より複雑な処理や柔軟性が求められる場合はSequentialChainを用いると効果的です。

ChatGPT4o 生成日:2025/06/12