如何让LangChain Agent的输出同时包含检索模块获取的相关文档信息?
如何让LangChain Agent的输出同时包含检索模块获取的相关文档信息?
其实这个需求很好实现,核心就是调整你的extract_QA函数返回值,把检索到的相关文档内容和最终答案一起返回就行,具体可以这么做:
第一步:修改extract_QA函数,返回包含答案和相关文档的结构
你现在的函数只返回了result["answer"],可以改成返回一个字典(或者字符串形式的结构化内容),把检索到的summaries(也就是你提到的最相关文档)也包含进去:
def extract_QA(docsearch: Pinecone, message:str, company: str, language: str = "spanish", info: str = ""): result = docsearch(inputs={"message": message, "question": message, "company": company, "language": language}) related_docs = result.get("summaries", "") final_answer = result["answer"] # 返回结构化的字典结果,方便后续解析 return { "answer": final_answer, "related_documents": related_docs } # 如果希望直接返回可读的字符串,也可以这么写: # return f"问题答案:{final_answer}\n\n参考的相关文档:{related_docs}"
第二步:适配Agent的输出逻辑
因为你的QA工具设置了return_direct=True,Agent会直接把工具的输出作为最终结果返回。如果返回的是字典,你后续可以直接解析这个字典拿到答案和相关文档;如果是拼接好的字符串,用户能直接看到两者的内容。
要是你不想改动工具的返回格式,也可以通过自定义回调或者扩展memory来捕获检索到的文档信息,但这种方式会复杂不少。相比之下,直接修改extract_QA的返回值是最直接高效的方案。
另外要注意,你用的是AgentType.OPENAI_FUNCTIONS,OpenAI的函数调用本身就支持返回结构化数据,所以返回字典完全没问题,不会出现格式兼容的问题。
备注:内容来源于stack exchange,提问作者Carlo
相关产品推荐
相关产品推荐

