研修で使うPython文法を6つに絞って体験し、ChatOpenAIでLLMを呼び出し、Prompt TemplatesとLCELでChainを組む。3つのトピックで「生成」側の基盤を作る。
python 01_python_basics.py を実行
name = "RAG研修" のように値を変数に入れて使い回す。LangChainではモデル名やプロンプトの格納に使う。
def greet(name): のように処理をまとめる。LangGraphのNodeは関数として定義する。
{"question": "RAGとは?"} のキーと値のペア。LangGraphのStateは辞書で表現される。
["文書A", "文書B"] の形。RAGの検索結果はリストで返ってくる。
from langchain_openai import ChatOpenAI のように外部ライブラリを読み込む。
f"{product}のバージョンは{version}です" で変数を文字列に埋め込む。
| Python文法 | 研修での使用場面 |
|---|---|
| 変数 | モデル名、API設定値、プロンプトの格納 |
| 関数 | LangGraphのNode定義 |
| 辞書 | LangGraphのState |
| リスト | RAGの検索結果の格納・取り出し |
| import | LangChain各コンポーネントの読み込み |
| f文字列 | Prompt templatesでの変数埋め込み |
各ブロックの後にコメントアウトされた練習問題がある。コメントを外して ___ を埋めて実行する形式。
python 02_chat_models.py を実行
model.invoke("テキスト") がLLMへの質問窓口。この1行がLangChainの出発点になる。
RAGでは正確性が求められるため temperature=0 を使う場面が多い。
10分休憩の後、このセクションに入る。
python 03_prompt_and_lcel.py を実行
RAGでは「以下の文書を参考に回答してください」というSystemMessageを設定し、AIの振る舞いを制御する。
この chain = prompt | model | parser が研修で最も使われるパターン。最終演習のgenerate_nodeでもこの形が登場する。
パイプ演算子 | はPythonの __or__ メソッドを利用している。LangChainのRunnableクラスがこれをオーバーライドし、左の出力を右の入力に渡すChainを構築する。