🦜️🔗LangChain : モジュール : モデル I/O – 言語モデル : チャットモデル : LLMChain / プロンプト / ストリーミング (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 08/30/2023
* 本ページは、LangChain の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
- Modules : Model I/O – Language models : Chat models : LLMChain
- Modules : Model I/O – Language models : Chat models : Prompts
- Modules : Model I/O – Language models : Chat models : Streaming
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Web: www.classcat.com ; ClassCatJP
🦜️🔗 LangChain : モジュール : モデル I/O – 言語モデル : チャットモデル : LLMChain
以前と非常に類似した方法で既存の LLMChain を使用できます – プロンプトとモデルを提供します。
chain = LLMChain(llm=chat, prompt=chat_prompt)
chain.run(input_language="English", output_language="French", text="I love programming.")
"J'adore la programmation."
🦜️🔗 LangChain : モジュール : モデル I/O – 言語モデル : チャットモデル : プロンプト
チャットモデル用のプロンプトは単なるプレーンテキストではなくメッセージを中心に構築されています。
MessagePromptTemplate を使用してテンプレート化を利用できます。一つまたはそれ以上の MessagePromptTemplates から ChatPromptTemplate を構築できます。ChatPromptTemplate の format_prompt を使用できます — これは PromptValue を返します、これは llm やチャットモデルへの入力として整形された値を使用したいかに依存して文字列や Message オブジェクトに変換できます。
便宜上、テンプレートで from_template メソッドが公開されています。このテンプレートを使用すれば、これがそれがどのようなものかです :
from langchain import PromptTemplate
from langchain.prompts.chat import (
ChatPromptTemplate,
SystemMessagePromptTemplate,
AIMessagePromptTemplate,
HumanMessagePromptTemplate,
)
template="You are a helpful assistant that translates {input_language} to {output_language}."
system_message_prompt = SystemMessagePromptTemplate.from_template(template)
human_template="{text}"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)
chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])
# get a chat completion from the formatted messages
chat(chat_prompt.format_prompt(input_language="English", output_language="French", text="I love programming.").to_messages())
AIMessage(content="J'adore la programmation.", additional_kwargs={})
MessagePromptTemplate をより直接的に構築したい場合には、PromptTemplate を外側で作成してからそれを渡すことができるでしょう、例えば :
prompt=PromptTemplate(
template="You are a helpful assistant that translates {input_language} to {output_language}.",
input_variables=["input_language", "output_language"],
)
system_message_prompt = SystemMessagePromptTemplate(prompt=prompt)
🦜️🔗 LangChain : モジュール : モデル I/O – 言語モデル : チャットモデル : ストリーミング
一部のチャットモデルはストリーミング・レスポンスを提供します。これは返されるレスポンス全体を待つ代わりに、レスポンスが利用可能になればすぐにそれを処理し始めることができることを意味します。これはレスポンスが生成されながらそれをユーザに表示したい場合や、生成されながらレスポンスを処理したい場合に有用です。
from langchain.chat_models import ChatOpenAI
from langchain.schema import (
HumanMessage,
)
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
chat = ChatOpenAI(streaming=True, callbacks=[StreamingStdOutCallbackHandler()], temperature=0)
resp = chat([HumanMessage(content="Write me a song about sparkling water.")])
Verse 1: Bubbles rising to the top A refreshing drink that never stops Clear and crisp, it's pure delight A taste that's sure to excite Chorus: Sparkling water, oh so fine A drink that's always on my mind With every sip, I feel alive Sparkling water, you're my vibe Verse 2: No sugar, no calories, just pure bliss A drink that's hard to resist It's the perfect way to quench my thirst A drink that always comes first Chorus: Sparkling water, oh so fine A drink that's always on my mind With every sip, I feel alive Sparkling water, you're my vibe Bridge: From the mountains to the sea Sparkling water, you're the key To a healthy life, a happy soul A drink that makes me feel whole Chorus: Sparkling water, oh so fine A drink that's always on my mind With every sip, I feel alive Sparkling water, you're my vibe Outro: Sparkling water, you're the one A drink that's always so much fun I'll never let you go, my friend Sparkling
以上