LangChain v0.2 で 単純なLLMアプリケーションを構築
「LangChain v0.2」で 単純なLLMアプリケーションを構築してみます。
1. LangChainのセットアップ
(1) パッケージのインストール。
# パッケージのインストール
!pip install langchain
!pip install langchain-openai
(2) 環境変数の準備。
左端の鍵アイコンで「OPENAI_API_KEY」を設定してからセルを実行してください。
import os
from google.colab import userdata
# 環境変数の準備 (左端の鍵アイコンでOPENAI_API_KEYを設定)
os.environ["OPENAI_API_KEY"] = userdata.get("OPENAI_API_KEY")
2. LLM
「LangChain」の最も基本的な機能は、LLMを呼び出すことです。言語モデルによる推論を実行します。
(1) LLMの準備。
from langchain_openai import ChatOpenAI
# LLMの準備
llm = ChatOpenAI(model="gpt-4o")
(2) メッセージリストの準備とLLM呼び出し
from langchain_core.messages import HumanMessage, SystemMessage
# メッセージリストの準備
messages = [
SystemMessage(content="日本語から英語に翻訳してください"),
HumanMessage(content="こんにちは!"),
]
# LLM呼び出し
llm.invoke(messages)
AIMessage(content='Hello!', response_metadata={'token_usage': {'completion_tokens': 2, 'prompt_tokens': 22, 'total_tokens': 24}, 'model_name': 'gpt-4o', 'system_fingerprint': 'fp_729ea513f7', 'finish_reason': 'stop', 'logprobs': None}, id='run-a3b14ad7-1a68-48f5-a8b7-8ea780e54095-0')
3. 出力パーサー
「出力パーサー」 は、LLMの出力を用途にあわせて変換するモジュールです。
(1) 出力パーサーの準備。
「StrOutputParser」は、文字列として出力するパーサーです。
from langchain_core.output_parsers import StrOutputParser
# 出力パーサーの準備
parser = StrOutputParser()
(2) LLMと出力パーサーを個別に実行。
# LLMと出力パーサーを個別に実行
result = llm.invoke(messages)
parser.invoke(result)
Hello!
(3) LLMと出力パーサーをチェーンでつなげて実行。
# LLMと出力パーサーをチェーンでつなげて実行
chain = llm | parser
chain.invoke(messages)
Hello!
4. プロンプトテンプレート
「プロンプトテンプレート」は、ユーザー入力からプロンプトを生成するためのテンプレートです。
(1) プロンプトテンプレートの準備。
from langchain_core.prompts import ChatPromptTemplate
# プロンプトテンプレートの準備
prompt_template = ChatPromptTemplate.from_messages(
[
("system", "日本語から{language}に翻訳してください"),
("user", "{text}")
]
)
(2) プロンプトテンプレートを個別に実行。
# プロンプトテンプレートを個別に実行
result = prompt_template.invoke({"language": "イタリア語", "text": "こんにちは"})
result
ChatPromptValue(messages=[SystemMessage(content='日本語からイタリア語に翻訳してください'), HumanMessage(content='こんにちは')])
(3) ChatPromptValueをメッセージリストに変換。
ChatPromptValueはLLMの入力値として使えるデータ型です。
# ChatPromptValueをメッセージリストに変換
result.to_messages()
[SystemMessage(content='日本語からイタリア語に翻訳してください'), HumanMessage(content='こんにちは')]
(4) プロンプトテンプレートとLLMと出力パーサーをチェーンでつなげて実行。
# プロンプトテンプレートとLLMと出力パーサーをチェーンでつなげて実行
chain = prompt_template | llm | parser
chain.invoke({"language": "イタリア語", "text": "こんにちは"})
Ciao
次回
この記事が気に入ったらサポートをしてみませんか?