问题验证
- 我已经在文档和Discord上寻找答案。
问题
我尝试使用StructuredPlannerAgent与FunctionCallingAgentWorker。代码如下。然而,每次运行时,我都会遇到一个错误,提示:
KeyError: 'multi_tool_use.parallel
代码:
from llama_index.core.tools import FunctionTool
get_client_comparison_tool = FunctionTool.from_defaults(fn=get_client_comparison)
get_compared_to_peer_group_tool = FunctionTool.from_defaults(fn=get_compared_to_peer_group)
from llama_index.core.agent import (
StructuredPlannerAgent,
FunctionCallingAgentWorker,
ReActAgentWorker,
)
# create the function calling worker for reasoning
worker = FunctionCallingAgentWorker.from_tools(
tools=[get_client_comparison_tool, get_compared_to_peer_group_tool],
verbose=True
)
# wrap the worker in the top-level planner
agent = StructuredPlannerAgent(
worker, tools=[get_client_comparison_tool, get_compared_to_peer_group_tool], verbose=True
)
import nest_asyncio
nest_asyncio.apply()
response = agent.chat(
f"You are now AI assistant for RBC Mobile Banking app for a given client to understand comparitive spending & budgeting suggestions. "
"Based on the insights below can you come up with a 'Budget Suggestion follow-up action' that helps the client to decide on how should he budget based on his peer group & his own transactions"
)
错误:
File ~/Documents/amplify/hermes/utilities/research_rag/venv/lib/python3.9/site-packages/llama_index/core/tools/calling.py:74, in call_tool_with_selection(tool_call, tools, verbose)
72 print("=== Calling Function ===")
73 print(f"Calling function: {name} with args: {arguments_str}")
---> 74 tool = tools_by_name[name]
75 output = call_tool(tool, tool_call.tool_kwargs)
77 if verbose:
KeyError: 'multi_tool_use.parallel'
# 代码示例
from llama_index.core.tools import FunctionTool
get_client_comparison_tool = FunctionTool.from_defaults(fn=get_client_comparison)
get_compared_to_peer_group_tool = FunctionTool.from_defaults(fn=get_compared_to_peer_group)
from llama_index.core.agent import (
StructuredPlannerAgent,
FunctionCallingAgentWorker,
ReActAgentWorker,
)
create the function calling worker for reasoning
worker = FunctionCallingAgentWorker.from_tools(
tools=[get_client_comparison_tool, get_compared_to_peer_group_tool],
verbose=True
)
wrap the worker in the top-level planner
agent = StructuredPlannerAgent(
worker, tools=[get_client_comparison_tool, get_compared_to_peer_group_tool], verbose=True
)
import nest_asyncio
nest_asyncio.apply()
response = agent.chat(
f"You are now AI assistant for RBC Mobile Banking app for a given client to understand comparitive spending & budgeting suggestions. "
"Based on the insights below can you come up with a 'Budget Suggestion follow-up action' that helps the client to decide on how should he budget based on his peer group & his own transactions"
)
7条答案
按热度按时间xa9qqrwz1#
要解决在使用
StructuredPlannerAgent
与FunctionCallingAgentWorker
时出现的KeyError: 'multi_tool_use.parallel'
问题,请确保正确设置allow_parallel_tool_calls
参数。FunctionCallingAgentWorker
类具有一个默认值为True
的allow_parallel_tool_calls
属性。以下是如何使用allow_parallel_tool_calls
参数初始化FunctionCallingAgentWorker
的示例:请根据需要设置
allow_parallel_tool_calls
参数,以避免出现KeyError
。此外,确保工具和 LLM 已正确初始化并传递给FunctionCallingAgentWorker
和StructuredPlannerAgent
。vql8enpb2#
我修改了我的代码如下:
再次出现错误。我也在这里添加了回溯信息。
qeeaahzv3#
KeyError: 'multi_tool_use.parallel'
表示在tools_by_name
字典中找不到工具名'multi_tool_use.parallel'
。此字典通过将工具名Map到其对应的工具对象来创建。要解决此问题,请确保您正在使用的工具已正确初始化,并且它们的名称与
tools_by_name
字典中的预期名称相匹配。以下是您的代码的更新版本,其中包含额外的检查和初始化:确保:
FunctionCallingAgentWorker
已正确配置allow_parallel_tool_calls
参数。FunctionCallingAgentWorker
和StructuredPlannerAgent
。如果问题仍然存在,请验证您在函数调用中使用的工具名称是否与
tools_by_name
字典中的名称相匹配(1(https://github.com/run-llama/llama_index/blob/main/llama-index-core/llama_index/core/tools/calling.py))。drnojrws4#
我仍然偶尔会遇到这个错误。问题是:
我正在尝试使用StructuredPlannerAgent与FunctionCallingAgentWorker。有时我会收到一个错误,提示KeyError: 'multi_tool_use.parallel'。这是我的代码:
错误:
2skhul335#
KeyError: 'multi_tool_use.parallel'
发生是因为工具名'multi_tool_use.parallel'
在tools_by_name
字典中找不到。如果函数调用期间生成的工具名与tools
列表中的任何工具名都不匹配,就会出现这个问题。要解决这个问题,可以在尝试访问它之前,确保
tool_call.tool_name
存在于tools_by_name
字典中。以下是带有此检查的call_tool_with_selection
函数的更新版本:这个检查确保,如果在字典中找不到工具名,就会返回一个适当的错误消息,而不是引发一个
KeyError
1(https://github.com/run-llama/llama_index/blob/main/llama-index-core/llama_index/core/tools/calling.py)。此外,确保
allow_parallel_tool_calls
参数正确设置,工具已正确初始化并传递给FunctionCallingAgentWorker
和StructuredPlannerAgent
。以下是考虑了这些因素的更新代码:这应该有助于通过确保正确检查和处理工具名来减轻
KeyError
的影响。zsbz8rwp6#
这给我带来了新的错误:
3gtaxfhh7#
要解决在使用
StructuredPlannerAgent
时出现的AttributeError: 'str' object has no attribute 'sub_tasks'
错误,请确保如果initial_plan_prompt
和plan_refine_prompt
作为字符串提供,它们被正确初始化为PromptTemplate
对象。这个错误很可能是因为在一个期望是Plan
对象的地方使用了字符串。以下是处理此错误的
StructuredPlannerAgent
初始化相关部分:确保如果
initial_plan_prompt
和plan_refine_prompt
作为字符串提供,它们被正确转换为PromptTemplate
对象。这应该解决AttributeError
问题。此外,确保
StructuredPlannerAgent
能够正确地将初始输入分解为子任务。每个子任务应由一个输入、预期结果以及任何应首先完成的依赖子任务表示。以下是如何创建和使用StructuredPlannerAgent
的示例:通过确保提示正确初始化并代理正确分解任务,您应该能够避免
AttributeError
1(https://github.com/run-llama/llama_index/blob/main/llama-index-core/llama_index/core/agent/runner/planner.py)2(https://github.com/run-llama/llama_index/blob/main/docs/docs/examples/agent/structured_planner.ipynb)3(https://github.com/run-llama/llama_index/blob/main/llama-index-core/tests/agent/runner/test_planner.py) 错误。