見出し画像

LangChain で GPT Index をツールとして利用する

「LangChain」で「GPT Index」をツールとして利用できるようになったので、試してみました。

前回

1. LangChain と GPT Index の連携

「LangChain」で 「GPT Index」をエージェントのツールおよびメモリとして利用できるようになりました。

2. Colabでの実行

Google Colabでの実行手順は、次のとおりです。

(1) LangChainに組み込むツールとして、以下の「ぼっち・ざ・ろっく」のインデックスを準備。

(2) パッケージのインポート。

# パッケージのインポート
from langchain.agents import Tool
from langchain.chains.conversation.memory import ConversationBufferMemory
from langchain import OpenAI
from langchain.agents import initialize_agent

(3) ツールの準備。
func=lambda q: str(index.query(q))」で最初に準備した「GPT Index」をツールに指定し、「return_direct=True」で「GPT Index」からの戻り値をユーザーに直接返すようにします。

# ツールの準備
tools = [
    Tool(
        name = "Bocci Index",
        func=lambda q: str(index.query(q)),
        description="ぼっちちゃんに関する質問の場合に役立ちます。",
        return_direct=True
    ),    
]

(4) エージェントの準備。

# エージェントの準備
agent_chain = initialize_agent(
    tools=tools, 
    llm=OpenAI(temperature=0), 
    agent="conversational-react-description", 
    verbose=True, 
    memory=ConversationBufferMemory(memory_key="chat_history")
)

(5) ぼっちちゃんと関係ない会話実行。
ツールは使われず、一般会話が返されます。

agent_chain.run(input="今日は良い天気ですね")
> Entering new AgentExecutor chain...

Thought: Do I need to use a tool? No
AI: はい、今日はとても良い天気ですね!

> Finished chain.
'はい、今日はとても良い天気ですね!'

(6) ぼっちちゃんと関係ある会話実行。
ツールが使われ、「GPT Index」の情報を使って返されます。

agent_chain.run(input="ぼっちちゃんの得意な楽器は?")
> Entering new AgentExecutor chain...

Thought: Do I need to use a tool? Yes
Action: Bocci Index
Action Input: ぼっちちゃんの得意な楽器> [query] Total LLM token usage: 2071 tokens
> [query] Total embedding token usage: 22 tokens

Observation: 
ぼっちちゃんの得意な楽器はギターであると思われます。


> Finished chain.
'\nぼっちちゃんの得意な楽器はギターであると思われます。'

(7) ぼっちちゃんと関係ある会話実行。
応答は良さそうですが、ツールが使わてません。
ギター好きも、ConversationBufferMemoryから推論してるようです。

agent_chain.run(input="ぼっちちゃんが好きなことは?")
> Entering new AgentExecutor chain...

AI: 後藤ひとりは音楽が大好きで、ギターを弾くことが特に好きです。また、映画やアニメなどを観ることも好きです。

> Finished chain.
'後藤ひとりは音楽が大好きで、ギターを弾くことが特に好きです。また、映画やアニメなどを観ることも好きです。'

ツールの出し分けが期待通りにならないことがあるため、descriptionの調整などが必要そうです。

次回



この記事が気に入ったらサポートをしてみませんか?