You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:基于LangChain使用Tavily构建合规搜索引擎链的代码修改

解决LangChain中Tavily搜索结果转标准Document格式的问题

你的核心需求是将Tavily的搜索结果转换为LangChain标准的Document对象,不需要用PydanticOutputParser——因为Tavily返回的结果本身就是结构化的字典列表,直接遍历转换即可。以下是修改后的完整代码:

from langchain_core.documents.base import Document
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_core.runnables import RunnableLambda

# 初始化Tavily搜索工具,设置最多返回5条结果
search = TavilySearchResults(max_results=5)

# 定义转换函数:将Tavily的输出转为LangChain Document列表
def convert_to_documents(search_results):
    documents = []
    for result in search_results:
        # 每个结果创建一个Document实例,page_content存内容,metadata存URL
        doc = Document(
            page_content=result["content"],
            metadata={"url": result["url"]}
        )
        documents.append(doc)
    return documents

# 构建搜索链:搜索 → 转换为标准Document
search_engine_chain = search | RunnableLambda(convert_to_documents)

# 测试调用示例
if __name__ == "__main__":
    query = "LangChain最新版本特性"
    results = search_engine_chain.invoke(query)
    for idx, doc in enumerate(results):
        print(f"文档{idx+1}:")
        print(f"内容摘要: {doc.page_content[:200]}...")
        print(f"来源URL: {doc.metadata['url']}\n")

关键说明:

  • Tavily输出格式:TavilySearchResults.invoke()返回的是一个列表,每个元素是包含content(搜索结果内容)和url(来源链接)的字典,无需额外解析
  • 转换逻辑:遍历搜索结果列表,逐个创建Document对象,将content赋值给page_content,url存入metadata字典
  • 链的构建:用RunnableLambda将普通函数包装为LangChain可运行组件,和搜索工具串联成完整链条

内容的提问来源于stack exchange,提问作者Zahra Reyhanian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:31:01