💨

LangChain v0.1 クイックスタートガイド

2024/02/17に公開

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