チャットモデル

チャットモデルは言語モデルの一種です。チャットモデルは基本的には言語モデル(LLM)を基礎レベルで使用していますが、その公開インターフェースはやや異なります。"入力テキスト、出力テキスト" のためのAPIを公開する代わりに、チャットメッセージを入力として受け取り、出力として返します。チャットモデルの全体的なインタラクションプロセスは、チャットメッセージのやり取りと同様です。

チャットモデルのはじめ方

このチャプターはOpenAIモデルに基づいています。

設定

デフォルトでは、LangChainにはモデルの依存関係がインストールされていません。まず、OpenAI Pythonパッケージをインストールしてください:

pip install langchain-openai

APIへのアクセスにはAPIキーが必要で、環境変数を介して設定することができます。以下の例は、Linux環境でその設定方法を示しています:

export OPENAI_API_KEY="..."

環境変数を設定したくない場合は、OpenAI LLMクラスの初期化時に openai_api_key という名前のパラメータを使って直接キーを渡すこともできます:

from langchain_openai import ChatOpenAI

chat = ChatOpenAI(openai_api_key="...")

また、パラメータを使用せずに直接初期化することもできます:

from langchain_openai import ChatOpenAI
chat = ChatOpenAI()

メッセージ

チャットモデルのインターフェースは、生のテキストではなくメッセージに基づいています。LangChainが現在サポートしているメッセージタイプには AIMessageHumanMessageSystemMessageFunctionMessageChatMessage がありますが、ほとんどの場合、HumanMessageAIMessageSystemMessage のみを扱うことになります。

LCEL

チャットモデルは Runnableインタフェース を実装しており、invokeainvokestreamastreambatchabatchastream_log などのメソッドをサポートしています。そのため、チャットモデルは LangChain Expression Language (LCEL) 式にも使用することができます。

チャットモデルは、List[BaseMessage] を入力として受け取るか、str(HumanMessageに変換される)やPromptValueなどのメッセージに変換できるオブジェクトを受け取ることができます。

from langchain_core.messages import HumanMessage, SystemMessage

messages = [
    SystemMessage(content="あなたは助けになるアシスタントです"),
    HumanMessage(content="モデル正規化の目的は何ですか?"),
]

メッセージの配列でモデルを呼び出す例:

chat.invoke(messages)

返されたメッセージの例:

AIMessage(content="AIの応答内容...詳細は割愛...")

AIの応答をストリーミングする例:

for chunk in chat.stream(messages):
    print(chunk.content, end="", flush=True)