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の調整などが必要そうです。
次回
この記事が気に入ったらサポートをしてみませんか?