👌

# LangChainを使ってシンプルなプロンプトチェーンを作る

2025/02/02に公開

はじめに

LangChainは、大規模言語モデル(LLM)を活用したアプリケーション開発をサポートするフレームワークです。本記事では、LangChainを利用してシンプルなプロンプトチェーンを作成し、OpenAIのGPTモデルを使って特定のプロンプトに対して回答を生成する方法を紹介します。


1. 環境構築

必要なライブラリのインストール

以下のコマンドを実行して、必要なライブラリをインストールします。

pip install langchain langchain-community openai

OpenAI APIキーの設定

このコードでは、OpenAIのGPTモデルを使用するため、APIキーを環境変数として設定する必要があります。以下のコマンドを実行してください。

macOS/Linux:

export OPENAI_API_KEY="your_openai_api_key"

Windows:

set OPENAI_API_KEY="your_openai_api_key"

これで準備完了です。


2. コード

from langchain_community.chat_models import ChatOpenAI
from langchain.prompts import PromptTemplate

# OpenAIのチャットモデルを初期化
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7)

# プロンプトテンプレートの定義
prompt = PromptTemplate(
    input_variables=["product"],
    template="「{product}」を製造する会社のユニークな名前を提案してください。",
)

# チェーンの実行
product_name = "革新的なスマートウォッチ"
company_name = (prompt | llm).invoke({"product": product_name})

print(f"提案された会社名: {company_name}")

3. コードの解説

インポート

from langchain_community.chat_models import ChatOpenAI
from langchain.prompts import PromptTemplate
  • ChatOpenAI は、OpenAIのGPTモデルを利用するためのクラスです。
  • PromptTemplate は、プロンプトをテンプレートとして定義するためのクラスです。

ChatOpenAIの初期化

llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7)
  • model="gpt-3.5-turbo":GPT-3.5モデルを指定。
  • temperature=0.7:ランダム性の度合いを設定(値が高いほど出力の多様性が増す)。

プロンプトテンプレートの作成

prompt = PromptTemplate(
    input_variables=["product"],
    template="「{product}」を製造する会社のユニークな名前を提案してください。",
)
  • input_variables=["product"]:プロンプト内で変数として扱う部分を指定。
  • template:プロンプトのフォーマット。

プロンプトチェーンの実行

product_name = "革新的なスマートウォッチ"
company_name = (prompt | llm).invoke({"product": product_name})
  • prompt | llm:プロンプトとLLMをパイプ演算子で結合。
  • .invoke({"product": product_name}):テンプレートの product に値を渡して、LLMに処理させる。

結果の出力

print(f"提案された会社名: {company_name}")

生成された会社名を出力します。


4. 実行結果の例

提案された会社名: FutureTech Innovations

GPTの特性上、毎回異なる結果が得られる可能性があります。


まとめ

  • LangChainを使用すると、プロンプトテンプレートを柔軟に管理できる。
  • ChatOpenAI を利用してGPTモデルと簡単に連携可能。
  • | 演算子を用いることで、シンプルなコードでプロンプトチェーンを構築できる。

Discussion