🦜️🔗LangChain : モジュール : チェイン (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 09/05/2023
* 本ページは、LangChain の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Web: www.classcat.com ; ClassCatJP
🦜️🔗 LangChain : モジュール : チェイン
LLM の分離した使用は単純なアプリケーションについては素晴らしいですが、複雑なアプリケーションは LLM の互いの、あるいは他のコンポーネントとのチェイン (連鎖) を必要とします。
LangChain はそのような「連鎖された (chained)」アプリケーションのための Chain インターフェイスを提供します。Chain をコンポーネントへの呼び出しのシークエンスとして非常に一般的に定義します、これは他のチェインも含めることができます。基本的なインターフェイスは単純です :
class Chain(BaseModel, ABC):
"""Base interface that all chains should implement."""
memory: BaseMemory
callbacks: Callbacks
def __call__(
self,
inputs: Any,
return_only_outputs: bool = False,
callbacks: Callbacks = None,
) -> Dict[str, Any]:
...
コンポーネントをチェインで一緒に組み合わせるこのアイデアは単純ですが強力です。それは複雑なアプリケーションの実装を劇的に単純化してよりモジュール化し、その結果アプリケーションのデバッグ、保守と改良を遥かに簡単にします。
より多くの詳細・仕様については、以下を確認してください :
- 様々なチェインの機能のウォークスルーについての How-to
- 中核のビルディングブロックのチェインを知るための 基礎
- ドキュメントをチェインに組み込む方法を学習するための ドキュメント
- 最も一般的なユースケースのための ポピュラーな (訳注: リンク切れ) チェイン
- そのまま利用できる高度なチェインと統合の幾つかを見るための 追加 (訳注: リンク切れ) (リソース)
Why do we need chains?
チェインは、単一の一貫したアプリケーションを作成するため、複数のコンポーネントを一緒に組み合わせることを可能にします。例えば、ユーザ入力を受け取り、それを PromptTemplate で整形し、そして整形されたレスポンスを LLM に渡すチェインを作成することができます。複数のチェインを一つに組み合わせたり、チェインを他のコンポーネントと組み合わせることでより複雑なチェインを構築できます。
Get started
LLMChain の使用
LLMChain は最も基本的なビルディングブロック・チェインです。それはプロンプトテンプレートを受け取り、それをユーザ入力で整形して LLM からのレスポンスを返します。
LLMChain を使用するには、最初にプロンプトテンプレートを作成します。
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
llm = OpenAI(temperature=0.9)
prompt = PromptTemplate(
input_variables=["product"],
template="What is a good name for a company that makes {product}?",
)
そしてユーザ入力を受け取り、プロンプトをそれで整形してからそれを LLM に送信する、非常に単純なチェインを作成できます。
from langchain.chains import LLMChain
chain = LLMChain(llm=llm, prompt=prompt)
# Run the chain only specifying the input variable.
print(chain.run("colorful socks"))
Colorful Toes Co.
複数の変数があれば、辞書を使用してそれら全部を一度に入力できます。
prompt = PromptTemplate(
input_variables=["company", "product"],
template="What is a good name for {company} that makes {product}?",
)
chain = LLMChain(llm=llm, prompt=prompt)
print(chain.run({
'company': "ABC Startup",
'product': "colorful socks"
}))
Socktopia Colourful Creations.
LLMChain でチャットモデルを使用することもできます :
from langchain.chat_models import ChatOpenAI
from langchain.prompts.chat import (
ChatPromptTemplate,
HumanMessagePromptTemplate,
)
human_message_prompt = HumanMessagePromptTemplate(
prompt=PromptTemplate(
template="What is a good name for a company that makes {product}?",
input_variables=["product"],
)
)
chat_prompt_template = ChatPromptTemplate.from_messages([human_message_prompt])
chat = ChatOpenAI(temperature=0.9)
chain = LLMChain(llm=chat, prompt=chat_prompt_template)
print(chain.run("colorful socks"))
Rainbow Socks Co.
以上