Closed13

LangChainのAgentについて

筧剛彰 / Takaaki Kakei筧剛彰 / Takaaki Kakei

Agentのおさらい

  • Agentはユーザーの質問にどのような手段を使って、どのような順番で回答するかを、LLMを使って自動的に回答してくれる機能

https://book.st-hakky.com/docs/agents-of-langchain/

筧剛彰 / Takaaki Kakei筧剛彰 / Takaaki Kakei

Agentの種類

  • zero-shot-react-description
    • ReAct フレームワークを使用
    • ツールの説明に基づいてどのツールを使用するか決定
  • react-docstore
  • self-ask-with-search
  • conversational-react-description
    • 会話に最適化
    • ReAct フレームワークを使用してどのツールを使用するかを決定
    • メモリを使用して以前の会話のやり取りを記憶

https://python.langchain.com/en/latest/modules/agents/agents.html

https://book.st-hakky.com/docs/agents-of-langchain/#エージェントの種類

いずれもinitialize_agentを使って構築していく
https://book.st-hakky.com/docs/agents-of-langchain/#エージェントの構築方法

筧剛彰 / Takaaki Kakei筧剛彰 / Takaaki Kakei

ツールだけを利用したい場合に適切なAgentは何か

筧剛彰 / Takaaki Kakei筧剛彰 / Takaaki Kakei

Slackなどのチャット上で利用する想定なので、会話に最適化されている conversational-react-descriptionを採用したい

conversational-react-descriptionを利用する上でどのようにすれば、目的のツール利用に誘導できるかが焦点になりそう

筧剛彰 / Takaaki Kakei筧剛彰 / Takaaki Kakei

descriptionを元にツールを選択するから、descriptionを具体的に書いたりしてマッチさせるのが重要という結論

tools = [
    Tool(
        name="LlamaIndex",
        func=lambda q: str(index.as_query_engine().query(q)),
        description="useful for when you need to answer questions",
        return_direct=True,
    ),
]
筧剛彰 / Takaaki Kakei筧剛彰 / Takaaki Kakei

英語で返答してしまうのを修正する方法はあるか

筧剛彰 / Takaaki Kakei筧剛彰 / Takaaki Kakei

解決案

  • ユーザーの入力の末尾に、「日本語で回答して。」を加えて質問を投げたら良さそう。簡単に実装できるしこれを採用
筧剛彰 / Takaaki Kakei筧剛彰 / Takaaki Kakei

When responding, please answer in Japanese.を質問に加えつつ、Tool内でverbose=Trueを指定しないようにした。

verbose=Trueを指定しないようにした理由は、Toolがうまく回答できない場合は英語で返すことが多いように見受けられたので、Toolから直接返さないようにした

このスクラップは2023/05/13にクローズされました