LangChainのアーキテクチャとLCEL
LangChainのコンポーネント、LCELのパイプ構文、チェーン、runnableインターフェース、ストリーミングチェーンについて学習します。
「LangChainのアーキテクチャとLCEL」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
LangChainとは
LangChainは、プロンプト、モデル、パーサー、リトリーバー、メモリなどの再利用可能な要素を組み合わせてLLMアプリケーションを構築するためのフレームワークです。API呼び出しを一つひとつ手動で接続する代わりに、あるコンポーネントから次のコンポーネントへデータを渡すチェーンを構築します。
pip install langchain langchain-openai中核となる構成要素
ほぼすべてのチェーンには、次の3つのコンポーネントが登場します。入力をプロンプト形式に整えるPromptTemplate、LLMであるチャットモデル、そして結果を整える出力パーサーです。LangChainはこれらをパイプラインとして接続します。
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParserプロンプトテンプレートの構築
プロンプトテンプレートには、実行時に値が埋め込まれるプレースホルダーを記述します。{variable}構文を使用します。辞書を渡してチェーンを呼び出すと、そのキーに対応する値が置き換えられます。
prompt = ChatPromptTemplate.from_template(
"Explain {topic} to a {audience} in two sentences."
)LCEL:パイプ構文
LCEL(LangChain Expression Language)では、パイプ演算子|を使ってコンポーネントを組み合わせます。各ステップの出力が次のステップへ渡されるため、Unixパイプラインのように左から右へ読み進められます。
model = ChatOpenAI(model="gpt-4o")
chain = prompt | model | StrOutputParser()StrOutputParserを使う理由
チャットモデルが返すのは単純な文字列ではなく、メッセージオブジェクトです。StrOutputParser()は.contentのテキストを取り出し、チェーンの出力を扱いやすい文字列にします。これを使わない場合は、構造化されたメッセージが返されます。
チェーンの呼び出し
テンプレート変数を埋める辞書を渡して、chain.invoke()でチェーンを実行します。結果としてパース済みの文字列が返されます。
result = chain.invoke({"topic": "vectors", "audience": "beginner"})
print(result)チェーンのストリーミング
リアルタイムで出力するには、invokeの代わりにchain.stream()を呼び出します。これは、モデルが出力を生成するたびにチャンクを返すジェネレーターで、低レベルAPIのストリーミングと同じように動作します。
for chunk in chain.stream({"topic": "RAG", "audience": "engineer"}):
print(chunk, end="", flush=True)複数入力のバッチ処理
chain.batch()を使うと、多数の入力を効率よく処理できます。入力辞書のリストを渡すと、LangChainがそれらを並行して実行し、同じ順序で結果のリストを返します。
inputs = [
{"topic": "loops", "audience": "kid"},
{"topic": "recursion", "audience": "kid"}
]
results = chain.batch(inputs)RunnablePassthrough
RunnablePassthroughは入力を変更せずにそのまま転送します。変換後の値と元の入力をチェーン内で一緒に保持する必要がある場合に不可欠です。たとえばRAGでは、質問と取得したコンテキストの両方を渡すために使います。
from langchain_core.runnables import RunnablePassthrough
chain = (
{"context": retriever, "question": RunnablePassthrough()}
| prompt | model | StrOutputParser()
)辞書による組み合わせ
あるステップが辞書の場合、各値が並行して実行され、その結果が次のステップへの入力になります。各キーをRunnableまたはpassthroughに対応付けることで、検索パイプラインの基盤となる複数入力のプロンプトを構築できます。
parallel = {
"context": retriever,
"question": RunnablePassthrough()
}
# parallel feeds {"context": ..., "question": ...} downstreamLCELが重要な理由
LCELのチェーンでは、ストリーミング、バッチ処理、非同期処理を追加設定なしで利用でき、読みやすく、レゴのように簡単に組み合わせられます。同じパイプ構文を、1行のプロンプトから完全なRAGシステムまで拡張できます。
理解度チェック
LCELの理解度を確認しましょう。
振り返り:アーキテクチャとLCEL
パイプ演算子を使って、LangChainのコンポーネントをprompt | model | StrOutputParser()のように組み合わせました。invokeでチェーンを実行し、streamでストリーミングし、batchで多数の入力を処理しました。RunnablePassthroughと辞書の組み合わせによって、RAG向けの複数入力パイプラインを構築できます。
よくある質問
「LangChainのアーキテクチャとLCEL」レッスンは無料ですか?
はい。「LangChainのアーキテクチャとLCEL」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「LangChainのアーキテクチャとLCEL」で何を学びますか?
LangChainのコンポーネント、LCELのパイプ構文、チェーン、runnableインターフェース、ストリーミングチェーンについて学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「LangChainのアーキテクチャとLCEL」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- LangChainのアーキテクチャとLCEL
- ドキュメントの読み込み、分割、埋め込み
- ベクトルストア:ChromaとFAISS
- RAG Q&Aシステムをエンドツーエンドで構築する