逐次チェーンとシンプルチェーン
タスクを順番に実行し、あるステップの出力を次のステップの入力として渡す基本的なチェーンを構築します。
「逐次チェーンとシンプルチェーン」はCoddyKit上の無料AI Agents with LangChain & Autonomous Workflowsレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents with LangChain & Autonomous Workflows学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agents with LangChain & Autonomous Workflowsコースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
Chains: Steps in Order
In LangChain, chains allow you to combine multiple Large Language Model (LLM) calls and other utilities into a single, coherent application.
Think of them as a series of steps where the output of one step becomes the input for the next. This creates a powerful, automated workflow.
Sequential Chains are a specific type designed for tasks that require a strict, ordered execution of steps.
Meet the LLMChain
Before we build complex sequential chains, let's look at the basic building block: the LLMChain.
An LLMChain combines an LLM (like GPT-4) with a PromptTemplate. It takes an input, formats it using the template, sends it to the LLM, and returns the LLM's response.
- LLM: The language model that generates text.
- PromptTemplate: Defines how user input is structured for the LLM.
Running a Single LLMChain
Here's how you can create and run a simple LLMChain. We'll ask it to suggest a catchy name for a new tech product.
Notice how the PromptTemplate defines what we expect the LLM to do, and the chain executes it.
import os
from langchain.chains import LLMChain
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
# IMPORTANT: Set your OpenAI API key as an environment variable
# os.environ["OPENAI_API_KEY"] = "YOUR_API_KEY_HERE"
# For local testing, ensure it's set before running.
def main():
# 1. Define the LLM
llm = ChatOpenAI(temperature=0.7)
# 2. Define the Prompt Template
prompt_template = PromptTemplate(
input_variables=["product_type"],
template="Suggest a catchy name for a new {product_type}."
)
# 3. Create the LLMChain
name_chain = LLMChain(llm=llm, prompt=prompt_template)
# 4. Run the chain
result = name_chain.invoke({"product_type": "AI assistant"})
print(f"Suggested Name: {result['text']}")
if __name__ == "__main__":
main()Introducing SimpleSequentialChain
What if you need to perform multiple steps, where each step builds on the previous one? That's where SimpleSequentialChain comes in.
It takes a list of chains and executes them in order. The single output from the first chain becomes the single input for the second chain, and so on.
It's ideal for straightforward, linear workflows.
Input-Output Flow
SimpleSequentialChain manages the flow automatically:
- You provide an initial input to the first chain.
- The first chain processes it and produces an output.
- This output automatically becomes the input for the second chain.
- This continues until the last chain, whose output is the final result of the
SimpleSequentialChain.
It's like an assembly line for AI tasks!
First Step: Name Generation
Let's build a two-step sequential chain. Our first step will be to generate a product name, similar to our previous LLMChain example.
We define an LLMChain for this purpose. We'll make sure its output is clearly defined using output_key for the next step.
import os
from langchain.chains import LLMChain
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
# IMPORTANT: Set your OpenAI API key as an environment variable
# os.environ["OPENAI_API_KEY"] = "YOUR_API_KEY_HERE"
def main():
llm = ChatOpenAI(temperature=0.7)
# Chain 1: Generate a product name
prompt_name = PromptTemplate(
input_variables=["product_type"],
template="Suggest a catchy, short name for a new {product_type}. Response should only be the name."
)
chain_name = LLMChain(llm=llm, prompt=prompt_name, output_key="product_name")
# This chain will output a dictionary like {'product_type': '...', 'product_name': '...'}
# The 'product_name' will be passed to the next chain.
result = chain_name.invoke({"product_type": "smartwatch"})
print(f"Input: {result['product_type']}")
print(f"Output (product_name): {result['product_name']}")
if __name__ == "__main__":
main()Second Step: Slogan Generation
Now, let's create the second LLMChain. This chain will take the product_name generated by the first chain and create a slogan for it.
Notice how its input_variables matches the output_key from the previous chain. This is how SimpleSequentialChain knows how to connect them.
import os
from langchain.chains import LLMChain
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
# IMPORTANT: Set your OpenAI API key as an environment variable
# os.environ["OPENAI_API_KEY"] = "YOUR_API_KEY_HERE"
def main():
llm = ChatOpenAI(temperature=0.7)
# Chain 2: Generate a slogan based on the product name
prompt_slogan = PromptTemplate(
input_variables=["product_name"],
template="Write a creative slogan for a product named {product_name}. Response should only be the slogan."
)
chain_slogan = LLMChain(llm=llm, prompt=prompt_slogan, output_key="slogan")
# Example of running this chain independently
result = chain_slogan.invoke({"product_name": "ChronoMind"})
print(f"Input: {result['product_name']}")
print(f"Output (slogan): {result['slogan']}")
if __name__ == "__main__":
main()Putting Chains Together
Finally, we combine our two LLMChains into a SimpleSequentialChain. We pass the initial input to the overall sequential chain, and it handles the rest!
We'll also set verbose=True to see the intermediate steps, which is great for debugging.
import os
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
# IMPORTANT: Set your OpenAI API key as an environment variable
# os.environ["OPENAI_API_KEY"] = "YOUR_API_KEY_HERE"
def main():
llm = ChatOpenAI(temperature=0.7)
# Chain 1: Generate a product name
prompt_name = PromptTemplate(
input_variables=["product_type"],
template="Suggest a catchy, short name for a new {product_type}. Response should only be the name."
)
chain_name = LLMChain(llm=llm, prompt=prompt_name, output_key="product_name")
# Chain 2: Generate a slogan
prompt_slogan = PromptTemplate(
input_variables=["product_name"],
template="Write a creative slogan for a product named {product_name}. Response should only be the slogan."
)
chain_slogan = LLMChain(llm=llm, prompt=prompt_slogan, output_key="slogan")
# Combine into a SimpleSequentialChain
overall_chain = SimpleSequentialChain(
chains=[chain_name, chain_slogan],
verbose=True # Set to True to see intermediate steps
)
# Run the overall chain with the initial input
final_result = overall_chain.invoke({"product_type": "AI-powered coffee maker"})
print("\n--- Final Result ---")
print(f"Product Slogan: {final_result['slogan']}")
if __name__ == "__main__":
main()Tracing Chain Execution
When verbose=True, LangChain prints out the steps taken by your chain. This is incredibly useful for:
- Understanding how inputs and outputs flow.
- Debugging unexpected results.
- Seeing which prompts are sent to the LLM.
It helps you visualize the 'assembly line' in action and ensures each step performs as expected.
Quick Chain Check
Consider a SimpleSequentialChain with three LLMChains: Chain A, Chain B, and Chain C, in that order.
Chain A has output_key='topic'.
Chain B has input_variables=['topic'] and output_key='outline'.
Chain C has input_variables=['outline'].
If the SimpleSequentialChain is invoked with {'initial_input': 'AI agents'}, which statement is true?
Recap: Simple Sequential Chains
Great job! In this lesson, you learned about:
- The basic
LLMChainas a building block. - How
SimpleSequentialChainlinks multiple chains together. - Passing outputs from one step as inputs to the next.
- Using
output_keyandinput_variablesfor flow. - Debugging chains with
verbose=True.
Next, you'll discover how to customize chain logic and integrate your own Python functions within LangChain workflows!
よくある質問
「逐次チェーンとシンプルチェーン」レッスンは無料ですか?
はい。「逐次チェーンとシンプルチェーン」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agents with LangChain & Autonomous Workflowsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agents with LangChain & Autonomous Workflowsコースには全4レッスンが含まれています。
「逐次チェーンとシンプルチェーン」で何を学びますか?
タスクを順番に実行し、あるステップの出力を次のステップの入力として渡す基本的なチェーンを構築します。 ブラウザで直接実行するハンズオンコードでAI Agents with LangChain & Autonomous Workflowsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AI Agents with LangChain & Autonomous Workflowsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAI Agents with LangChain & Autonomous Workflowsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「逐次チェーンとシンプルチェーン」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAI Agents with LangChain & Autonomous Workflowsレッスンでコードを書いて実行できますか?
はい。すべてのAI Agents with LangChain & Autonomous Workflowsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- LangChainチェーン入門
- 逐次チェーンとシンプルチェーン
- チェーンロジックのカスタマイズ
- ルーティングと条件分岐チェーン