当前位置: 首页 > article >正文

LangChain+博查搜索API轻松实现实时信息搜索

引言

在当今的许多应用中,能够实时获取搜索引擎结果对于研究、市场分析和内容创作等任务至关重要。本文将介绍如何使用LangChain框架结合博查搜索API来实时获取搜索引擎结果信息。通过本教程,您将学会如何配置博查搜索API并将其集成到LangChain代理中,以实现自动化的搜索查询处理。

博查搜索API支持近亿级网页内容的搜索,涵盖网页、图片、新闻、天气、医疗、万年历、火车、星座属相、贵金属、汇率、油价、手机、股票、汽车等多种内容源。这使其不仅适用于各类AI应用和检索增强生成(RAG)应用,还能为AI智能体的开发提供坚实的数据支持。此外,博查搜索API在数据安全、成本控制和内容合规性方面表现出色,解决了开发者在集成搜索功能时常见的诸多挑战。

博查AI开放平台 | Search API, Reranker API

实现步骤

为了在LangChain中成功集成博查搜索API,实现智能搜索功能,请按照以下步骤操作:

1. 获取API Key

前往 博查AI开放平台(https://open.bochaai.com) 注册并登录您的开发者账户,在控制台导航到“API KEY管理”页面,创建一个新的应用以获取您的专属API Key。请妥善保管此密钥,因为它将用于后续的API调用授权。

2. 定义博查搜索API为 LangChain 的 Tool

使用以下示例代码,将博查搜索API集成到LangChain中,定义为一个自定义的Tool。这将允许LangChain在处理请求时调用博查搜索API,实现实时的信息检索。

示例代码

详细代码:https://aq6ky2b8nql.feishu.cn/wiki/XXCsw2Dyjiny8OkJl0KcWjyOnDb

import requests
from langchain.agents import initialize_agent, Tool, AgentType
from langchain_openai import ChatOpenAI
from langchain.tools import tool

OPENAI_API_KEY = "YOUR-OPENAI-API-KEY"
BOCHA_API_KEY = "YOUR-BOCHA-API-KEY"

# 定义Bocha Web Search工具
@tool
def bocha_websearch_tool(query: str, count: int = 10) -> str:
    """
    使用Bocha Web Search API 进行网页搜索。

    参数:
    - query: 搜索关键词
    - count: 返回的搜索结果数量

    返回:
    - 搜索结果的详细信息,包括网页标题、网页URL、网页摘要、网站名称、网站Icon、网页发布时间等。
    """
    
    url = 'https://api.bochaai.com/v1/web-search'
    headers = {
        'Authorization': f'Bearer {BOCHA_API_KEY}',  # 请替换为你的API密钥
        'Content-Type': 'application/json'
    }
    data = {
        "query": query,
        "freshness": "noLimit", # 搜索的时间范围,例如 "oneDay", "oneWeek", "oneMonth", "oneYear", "noLimit"
        "summary": True, # 是否返回长文本摘要总结
        "count": count
    }

    response = requests.post(url, headers=headers, json=data)

    if response.status_code == 200:
        json_response = response.json()
        try:
            if json_response["code"] != 200 or not json_response["data"]:
                return f"搜索API请求失败,原因是: {response.msg or '未知错误'}"
            
            webpages = json_response["data"]["webPages"]["value"]
            if not webpages:
                return "未找到相关结果。"
            formatted_results = ""
            for idx, page in enumerate(webpages, start=1):
                formatted_results += (
                    f"引用: {idx}\n"
                    f"标题: {page['name']}\n"
                    f"URL: {page['url']}\n"
                    f"摘要: {page['summary']}\n"
                    f"网站名称: {page['siteName']}\n"
                    f"网站图标: {page['siteIcon']}\n"
                    f"发布时间: {page['dateLastCrawled']}\n\n"
                )
            return formatted_results.strip()
        except Exception as e:
            return f"搜索API请求失败,原因是:搜索结果解析失败 {str(e)}"
    else:
        return f"搜索API请求失败,状态码: {response.status_code}, 错误信息: {response.text}"

# 创建LangChain工具
bocha_tool = Tool(
    name="BochaWebSearch",
    func=bocha_websearch_tool,
    description="使用Bocha Web Search API 进行搜索互联网网页,输入应为搜索查询字符串,输出将返回搜索结果的详细信息,包括网页标题、网页URL、网页摘要、网页内容、网站名称、网站Icon、网页发布时间等。"
)

# 初始化OpenAI语言模型
llm = ChatOpenAI(
    model="gpt-4o-mini",
    temperature=0,
    openai_api_key=OPENAI_API_KEY
)

# 初始化代理,包含您的自定义工具
agent = initialize_agent(
    tools=[bocha_tool],
    llm=llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True
)

# 使用代理进行查询
user_question = "请告诉我阿里巴巴2024年ESG报告中的亮点"
response = agent.run(user_question)
print(response)

响应结果

阿里巴巴2024年ESG报告的亮点包括:1) 自身运营减排量达到232万吨,同比提升63.5%;2) 清洁电力使用比例提升至39%;3) 价值链排放强度下降7%至每百万元营收8.1吨;4) 阿里云数据中心电力使用效率保持亚洲领先,清洁电力使用比例达到56%;5) 通过“数智循环物流”方案,菜鸟网络在物流环节减排45.8万吨;6) 平台生态减排量达到3333.8万吨,同比增长45.5%。此外,阿里巴巴还在医疗、助老、助残等领域应用AI技术,推动社会责任和可持续发展。

完整思考链

> Entering new AgentExecutor chain...
我需要查找阿里巴巴2024年ESG报告的相关信息,以了解其中的亮点。  
Action: BochaWebSearch  
Action Input: "阿里巴巴 2024 ESG 报告 亮点"  
Observation:

此处省略10条详细引用信息···

> Finished chain.
阿里巴巴2024年ESG报告的亮点包括:1) 自身运营减排量达到232万吨,同比提升63.5%;2) 清洁电力使用比例提升至39%;3) 价值链排放强度下降7%至每百万元营收8.1吨;4) 阿里云数据中心电力使用效率保持亚洲领先,清洁电力使用比例达到56%;5) 通过“数智循环物流”方案,菜鸟网络在物流环节减排45.8万吨;6) 平台生态减排量达到3333.8万吨,同比增长45.5%。此外,阿里巴巴还在医疗、助老、助残等领域应用AI技术,推动社会责任和可持续发展。

http://www.kler.cn/a/467121.html

相关文章:

  • 重庆大学软件工程复试怎么准备?
  • AlphaPi相关硬件驱动提取
  • KAGGLE竞赛实战2-捷信金融违约预测竞赛-part1-数据探索及baseline建立
  • Spring boot接入xxl-job
  • 东京大学联合Adobe提出基于指令的图像编辑模型InstructMove,可通过观察视频中的动作来实现基于指令的图像编辑。
  • 使用 C++ 和函数式编程构建高效的 AI 模型
  • 【每日学点鸿蒙知识】ASON工具、自定义tabbar、musl、Text异常截断等
  • 【C语言】可移植性陷阱与缺陷(五): 移位运算符
  • 初学stm32 --- 存储器类型
  • 文献阅读 250104-Overconfidence in climate overshoot
  • 文件上传漏洞利用与绕过姿势总结
  • 【大模型】ChatGPT 数据分析与处理使用详解
  • SQL 基础教程 - SQL SELECT 语句
  • 部署项目添加工程名的步骤
  • 哈希算法详解及案例应用
  • Jurgen提出的Highway Networks:LSTM时间维方法应用到深度维
  • Java:缓存:LinkedHashMap实现Lru
  • 【C++】开源:Armadillo数值计算库配置与使用
  • 第28天:PHP应用Cookie脆弱Session固定Token唯一身份验证数据库通讯
  • 一文理解Vue.js 与 Vue Router:构建现代单页面应用
  • Maven 详细配置:Maven settings 配置文件的详细说明
  • vue3 css实现文字输出带光标显示,文字输出完毕,光标消失的效果
  • 145页PPT智慧矿山整体规划建设方案
  • cesium小知识:3D tiles 概述、特点、示例
  • 计算机网络复习(大题)
  • python对redis的增删查改