見出し画像

LangChain v0.2 で 単純なLLMアプリケーションを構築

「LangChain v0.2」で 単純なLLMアプリケーションを構築してみます。

Build a Simple LLM Application

・LangChain v0.2.0


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

次回



この記事が気に入ったらサポートをしてみませんか?