检查其他资源
- 为这个问题添加了一个非常描述性的标题。
- 使用集成搜索在LangChain文档中进行搜索。
- 使用GitHub搜索查找类似的问题,但没有找到。
- 我确信这是LangChain中的一个bug,而不是我的代码。
- 通过更新到LangChain的最新稳定版本(或特定集成包)无法解决此bug。
示例代码
代码来自LangChain文档
https://python.langchain.com/v0.2/docs/how_to/tools_chain/
from langchain import hub
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_core.tools import tool
model = # A mistral model
prompt = ChatPromptTemplate.from_messages(
[
("system", "You are a helpful assistant"),
("placeholder", "{chat_history}"),
("human", "{input}"),
("placeholder", "{agent_scratchpad}"),
]
)
@tool
def multiply(first_int: int, second_int: int) -> int:
"""Multiply two integers together."""
return first_int * second_int
@tool
def add(first_int: int, second_int: int) -> int:
"Add two integers."
return first_int + second_int
@tool
def exponentiate(base: int, exponent: int) -> int:
"Exponentiate the base to the exponent power."
return base**exponent
tools = [multiply, add, exponentiate]
# Construct the tool calling agent
agent = create_tool_calling_agent(model,tools, prompt)
# Create an agent executor by passing in the agent and tools
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
result = agent_executor.invoke(
{
"input": "Take 3 to the fifth power and multiply that by the sum of twelve and three, then square the whole result"
}
)
错误信息和堆栈跟踪(如果适用)
TypeError: StructuredTool对象不可序列化为JSON
描述
我正在尝试运行https://python.langchain.com/v0.2/docs/how_to/tools_chain/中的示例代码,以调用配备工具的代理。我发现了两个问题:
- 如果按照原样运行代码,它会生成错误:“StructuredTool对象不可序列化为JSON”。
- 如果使用空工具列表(即tools=[])创建代理(即tools = []),它会产生响应。然而,根据我的理解,这不是创建代理的正确方法。除了mistral7b模型的答案非常不准确之外。即使在上面提供的链接中的示例中,当检查langSmith run时,答案似乎与正确的答案不同且错误。
系统信息
langchain-core==0.1.52
langchain==0.1.16
2条答案
按热度按时间t2a7ltrp1#
如果我们在LangChain中使用
dumps
函数,问题似乎会得到解决:jgzswidk2#
我无法重现这个问题。你能提供完整的堆栈跟踪并分享你是如何示例化模型的吗?你也可以尝试升级到langchain和langchain-core >= 0.2吗?