SESSION 02

Python基礎
LangChain入門

研修で使うPython文法を6つに絞って体験し、ChatOpenAIでLLMを呼び出し、Prompt TemplatesとLCELでChainを組む。3つのトピックで「生成」側の基盤を作る。

9:50 - 10:45(55分)
実践 3トピック
HANDS-ON 01 / 25 MIN
Python基礎 ── 研修で使う6つの文法
ファイル: 01_python_basics.py
EXERCISE

Python基礎スクリプトを実行する

python 01_python_basics.py を実行

BLOCK 01

変数と文字列

name = "RAG研修" のように値を変数に入れて使い回す。LangChainではモデル名やプロンプトの格納に使う。

BLOCK 02

関数

def greet(name): のように処理をまとめる。LangGraphのNodeは関数として定義する。

BLOCK 03

辞書(dict)

{"question": "RAGとは?"} のキーと値のペア。LangGraphのStateは辞書で表現される。

BLOCK 04

リスト

["文書A", "文書B"] の形。RAGの検索結果はリストで返ってくる。

BLOCK 05

import文

from langchain_openai import ChatOpenAI のように外部ライブラリを読み込む。

BLOCK 06

f文字列

f"{product}のバージョンは{version}です" で変数を文字列に埋め込む。

Python文法研修での使用場面
変数モデル名、API設定値、プロンプトの格納
関数LangGraphのNode定義
辞書LangGraphのState
リストRAGの検索結果の格納・取り出し
importLangChain各コンポーネントの読み込み
f文字列Prompt templatesでの変数埋め込み
練習問題の進め方

各ブロックの後にコメントアウトされた練習問題がある。コメントを外して ___ を埋めて実行する形式。

HANDS-ON 02 / 30 MIN
Chat Models ── PythonからLLMを呼び出す
ファイル: 02_chat_models.py
EXERCISE

Chat Modelsスクリプトを実行する

python 02_chat_models.py を実行

Step 1 ── 最もシンプルなLLM呼び出し
# .envファイルからAPIキーを読み込む from dotenv import load_dotenv from langchain_openai import ChatOpenAI load_dotenv() model = ChatOpenAI(model="gpt-4o-mini") response = model.invoke("こんにちは") print(response.content)
この1行がLangChainの出発点

model.invoke("テキスト") がLLMへの質問窓口。この1行がLangChainの出発点になる。

Step 2 ── temperatureパラメータ
# temperature=0: 毎回同じ回答(確定的) model_stable = ChatOpenAI(model="gpt-4o-mini", temperature=0) # temperature=1: 毎回違う回答(創造的) model_creative = ChatOpenAI(model="gpt-4o-mini", temperature=1)
RAGではtemperature=0が基本

RAGでは正確性が求められるため temperature=0 を使う場面が多い。

  • temperature=0 : 最も確率の高いトークンを常に選択。FAQ応答やRAGに適する
  • temperature=0.3-0.5 : 安定しつつ少し揺らぎがある。要約やレポート生成向き
  • temperature=0.7-1.0 : 多様な表現が出る。ブレスト、クリエイティブ用途向き
HANDS-ON 03 / 25 MIN
Prompt Templates と LCEL ── Chain を組む
ファイル: 03_prompt_and_lcel.py

10分休憩の後、このセクションに入る。

EXERCISE

Prompt Templates スクリプトを実行する

python 03_prompt_and_lcel.py を実行

Step 1 ── ChatPromptTemplate
from langchain_core.prompts import ChatPromptTemplate prompt = ChatPromptTemplate.from_template( "{product}の特徴を{count}個教えてください。" ) message = prompt.invoke({"product": "iPhone", "count": 3})
Step 2 ── SystemMessage
prompt_with_system = ChatPromptTemplate.from_messages([ ("system", "あなたは親切な日本語アシスタントです。回答は3行以内にまとめてください。"), ("human", "{question}") ])
SystemMessageがRAGの要になる

RAGでは「以下の文書を参考に回答してください」というSystemMessageを設定し、AIの振る舞いを制御する。

Step 3 ── LCELでChainを組む
from langchain_core.output_parsers import StrOutputParser chain = prompt | model | StrOutputParser() result = chain.invoke({"product": "LangChain", "count": 3})
prompt
model
parser
研修で最も使われるパターン

この chain = prompt | model | parser が研修で最も使われるパターン。最終演習のgenerate_nodeでもこの形が登場する。

パイプ演算子 | はPythonの __or__ メソッドを利用している。LangChainのRunnableクラスがこれをオーバーライドし、左の出力を右の入力に渡すChainを構築する。

  • prompt.invoke() の出力 → model.invoke() の入力
  • model.invoke() の出力 → StrOutputParser().invoke() の入力
  • 最終的に文字列(str)が返る
参考リンク
LangChain Docs OpenAI API Reference