💨
LangChain v0.1 クイックスタートガイド
LangChainの主な用途
- 文書に関する質問応答
- チャットボット
- エージェント
テキスト生成モデルでの呼び出し
print(OpenAI(temperature=0.9).predict("コンピュータゲームを作る日本語の新会社名をを1つ提案してください。"))//戻り値はstr
チャットモデルでの呼び出し
messages = [HumanMessage(content="コンピュータゲームを作る日本語の新会社名をを1つ提案してください。")]
print(ChatOpenAI(temperature=0.9).predict_messages(messages)) //戻り値は [AIMessage]
逆に
OpenAIでpredict_messages
ChatOpenAIでpredictもできる(違いは謎)
Chain InterfaceとLCELの違い(Chain自体もLCELで使用できるらしい)
Chain Interface
クラスでチェーンを定義する従来の手法
prompt = PromptTemplate(
input_variables=["product"],
template=template,
output_parser=CommaSeparatedListOutputParser(),
)
chain = LLMChain(llm=chat_model, prompt=prompt)
LCEL
チェーンを簡単に記述するための表現言語で記述するための手法
chain = prompt | chat_model | CommaSeparatedListOutputParser()
Agent
ユーザーの要求に応じて、どの「Action」をどういう順番で実行するかを決定するモジュール
「Agent」が「Action」で実行する特定の機能のことを「Tool」と呼ぶ
・Agent : 実行するアクションと順番を決定
・Action : 次のアクションを実行 or ユーザーに応答
・Tool : アクションで実行される特定の機能
memory会話履歴も使える
(「Memory」を「LCEL」で記述する方法が見つからなかった)
Memoryの準備
memory = ConversationBufferMemory(memory_key="chat_history")
Chainの準備
conversation = LLMChain(
llm=chat_model,
prompt=prompt,
memory=memory,
verbose=True,
)
conversation({"question": "うちのネコの名前は白子です。"})
conversation({"question": "私のネコの名前を呼んでください。"})
Discussion