🦜️🔗LangChain : モジュール : モデル I/O – 言語モデル : チャットモデル (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 08/29/2023
* 本ページは、LangChain の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Web: www.classcat.com ; ClassCatJP
🦜️🔗 LangChain : モジュール : モデル I/O – 言語モデル : チャットモデル
INFO : Head to Integrations for documentation on built-in integrations with chat model providers.
チャットモデルは言語モデルのバリエーションです。チャットモデルが内部的に言語モデルを使用する一方で、公開するインターフェイスは少し異なります。「テキスト入力、テキスト出力」(“text in, text out”) API を公開するのではなく、「チャットメッセージ」が入力と出力であるインターフェイスを公開します。
チャットモデル API は非常に新しいので、私たちは依然として正しい抽象化を模索しています。
Get started
セットアップ
始めるために OpenAI Python パッケージをインストールする必要があります :
pip install openai
API へのアクセスは API キーを必要とします、これはアカウントを作成して ここ にアクセスすることで取得できます。キーを持ったら、以下を実行してそれを環境変数として設定したいです :
export OPENAI_API_KEY="..."
環境変数を設定することを好まない場合は OpenAI LLM クラスを初期化するとき openai_api_key 名前付きパラメータ経由でキーを直接渡すことができます :
from langchain.chat_models import ChatOpenAI
chat = ChatOpenAI(openai_api_key="...")
そうでないならパラメータなしで初期化できます :
from langchain.chat_models import ChatOpenAI
chat = ChatOpenAI()
メッセージ
チャットモデル・インターフェイスは raw テキストではなくメッセージに基づいています。LangChain で現在サポートされるメッセージの種類は AIMessage, HumanMessage, SystemMessage と ChatMessage です — ChatMessage は任意のロールパラメータを受け取ります。大抵の場合、HumanMessage, AIMessage と SystemMessage を扱うだけです。
__call__
Messages in -> message out
一つまたはそれ以上のメッセージをチャットモデルに渡すことによりチャット補完を取得できます。レスポンスはメッセージです。
from langchain.schema import (
AIMessage,
HumanMessage,
SystemMessage
)
chat([HumanMessage(content="Translate this sentence from English to French: I love programming.")])
AIMessage(content="J'aime programmer.", additional_kwargs={})
OpenAI のチャットモデルは入力として複数のメッセージをサポートします。詳細は ここ をご覧ください。ここに、システムとユーザメッセージをチャットモデルに送る例があります :
messages = [
SystemMessage(content="You are a helpful assistant that translates English to French."),
HumanMessage(content="I love programming.")
]
chat(messages)
AIMessage(content="J'aime programmer.", additional_kwargs={})
generate
Batch calls, richer outputs
更に一歩進んで generate を使用してメッセージの複数のセットに対して補完を生成することができます。これは追加のメッセージパラメータを持つ LLMResult を返します。
batch_messages = [
[
SystemMessage(content="You are a helpful assistant that translates English to French."),
HumanMessage(content="I love programming.")
],
[
SystemMessage(content="You are a helpful assistant that translates English to French."),
HumanMessage(content="I love artificial intelligence.")
],
]
result = chat.generate(batch_messages)
result
LLMResult(generations=[[ChatGeneration(text="J'aime programmer.", generation_info=None, message=AIMessage(content="J'aime programmer.", additional_kwargs={}))], [ChatGeneration(text="J'aime l'intelligence artificielle.", generation_info=None, message=AIMessage(content="J'aime l'intelligence artificielle.", additional_kwargs={}))]], llm_output={'token_usage': {'prompt_tokens': 57, 'completion_tokens': 20, 'total_tokens': 77}})
You can recover things like token usage from this LLMResult
result.llm_output
{'token_usage': {'prompt_tokens': 57, 'completion_tokens': 20, 'total_tokens': 77}}
以上