LangChain工具集成报错求助:序列化失败与Arxiv工具绑定400错误
LangChain工具集成报错求助:序列化失败与Arxiv工具绑定400错误
大家好,我在做LangChain工具集成的时候碰到了两个棘手的问题,折腾了好久都没搞定,想请各位大佬帮忙看看!
遇到的错误情况
首先是用TavilySearchResults工具时,出现了Pydantic序列化失败的问题:
Failed to use model_dump to serialize <class 'langchain_community.tools.tavily_search.tool.TavilySearchResults'> to JSON: PydanticSerializationError(Unable to serialize unknown type: <class 'pydantic._internal._model_construction.ModelMetaclass'>)
后来换成ArxivQueryRun工具,又碰到了LLM绑定工具时的400请求错误:
BadRequestError: Error code: 400 - {'error': {'message': "'tools.0.type' : property 'type' is missing", 'type': 'invalid_request_error'}}
相关代码片段
Arxiv工具初始化代码
from langchain_community.utilities import ArxivAPIWrapper from langchain_community.tools import ArxivQueryRun # Initialize the Arxiv wrapper and tool arxiv_wrapper = ArxivAPIWrapper(top_k_results=1, doc_content_chars_max=300) arxiv_tool = ArxivQueryRun(api_wrapper=arxiv_wrapper) tools = [tavily_search] # 这里替换成arxiv_tool也会报错 llm_with_tools = llm.bind(tools=tools)
状态图Graph代码
arcus_builder = StateGraph(ARCUSState) arcus_builder.add_node("generate_co_info", generate_co_info) arcus_builder.add_node("search_web", search_web) arcus_builder.add_node("search_wiki", search_wiki) arcus_builder.add_node("save_result", save_result) arcus_builder.add_node("write_research", write_research) arcus_builder.add_node("use_case_generator", use_case_generator) arcus_builder.add_node("resource_collector", resource_collector) tool_node = ToolNode(tools=tools) arcus_builder.add_node("tools", tool_node) arcus_builder.add_node("write_report", write_report) arcus_builder.add_edge(START, "generate_co_info") arcus_builder.add_edge("generate_co_info", "search_web") arcus_builder.add_edge("generate_co_info", "search_wiki") arcus_builder.add_edge("search_web", "save_result") arcus_builder.add_edge("search_wiki", "save_result") arcus_builder.add_edge("save_result", "write_research") arcus_builder.add_edge("write_research", "use_case_generator") arcus_builder.add_edge("use_case_generator", "resource_collector") arcus_builder.add_conditional_edges( "resource_collector", tools_condition_custom, { "tools": "tools", "write_report": "write_report", } ) arcus_builder.add_edge("tools", "resource_collector") arcus_builder.add_edge("write_report", END) memory = MemorySaver() arcus_graph = arcus_builder.compile(checkpointer=memory) display(Image(arcus_graph.get_graph(xray=1).draw_mermaid_png()))
调用代码
company_name = "Tesla" messages = [HumanMessage(f" Company Name: {company_name}")] thread = {"configurable": {"thread_id": "1"}} research = arcus_graph.invoke({"messages": messages}, thread)
补充说明
目前不使用工具的时候,整个状态图流程是完全正常跑通的,但只要一加入工具(不管是Tavily还是Arxiv)就会出现对应的错误。我现在的需求是让绑定了工具的LLM能在状态图里正常工作,解决工具的序列化和绑定问题。
备注:内容来源于stack exchange,提问作者Vaibhav Prajapati
相关产品推荐
相关产品推荐

