首页 > 其他分享 >Bocha Web Search API:使用Langchain的Agent模式通过Tool Use调用博查 Search API实现LLMs联网搜索

Bocha Web Search API:使用Langchain的Agent模式通过Tool Use调用博查 Search API实现LLMs联网搜索

时间:2024-10-16 12:52:41浏览次数:7  
标签:Web Search agent API 搜索 KEY

上篇文章介绍了国内可用的博查 Web Search API,详见:使用博查Web Search API获取搜索引擎的网页链接和文本摘要,给AI/RAG应用增加联网搜索功能
本篇讲述一下如何通过 LangChain 的 Function Call 方式使用它。

1. 安装 LangChain

pip install langchain openai

2. 获取博查 Web Search 的 API KEY

前往 https://open.bochaai.com,微信扫码登陆后,在首页点击右上角的 “AP KEY管理”,创建API KEY,复制出来即可。
获取博查 Web Search 的 API KEY

3.示例代码

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_web_search_tool(query: str, count: int = 8) -> str:
    """
    使用Bocha Web Search API进行联网搜索,返回搜索结果的字符串。
    
    参数:
    - query: 搜索关键词
    - count: 返回的搜索结果数量

    返回:
    - 搜索结果的字符串形式
    """
    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:
        # 返回给大模型的格式化的搜索结果文本
        # 可以自己对博查的搜索结果进行自定义处理
        return str(response.json())
    else:
        raise Exception(f"API请求失败,状态码: {response.status_code}, 错误信息: {response.text}")


# 创建LangChain工具
bocha_tool = Tool(
    name="BochaWebSearch",
    func=bocha_web_search_tool,
    description="使用Bocha Web Search API进行网络搜索"
)

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

# 初始化代理,设置Agent自动决定何时调用工具
tools = [bocha_tool]  # 包含你定义的Bocha Web Search工具

agent = initialize_agent(
    tools=tools,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    llm=llm,
    verbose=False
)

# 测试用例
query = "阿里巴巴2024年的ESG报告主要讲了哪些内容?"
response = agent.run(f"请帮我搜索以下内容:{query}")
print(response)

回答结果

阿里巴巴2024年ESG报告主要讲述了以下内容:在环境保护方面,阿里巴巴实现了自身运营碳排放和价值链碳排放强度的“双降”目标,自身运营减排量达到232.0万吨,清洁电力使用比例达到39.0%。报告强调了科技创新在推动绿色低碳高质量发展中的作用,并提到阿里巴巴在社会责任方面的努力,包括支持中小微企业、促进包容性就业和推动乡村振兴。此外,阿里巴巴还深化了ESG治理架构,确保决策透明性和风险管理。整体而言,报告展示了阿里巴巴在ESG领域的领导地位及其为建设可持续未来所做的努力。

详细 Trace

将 Agent 调用时的 verbose 参数设置为 True,可以看到详细的思考过程:

agent = initialize_agent(
    tools=tools,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    llm=llm,
    verbose=True # 这里设置为 True
)
思考链

在这里插入图片描述

标签:Web,Search,agent,API,搜索,KEY
From: https://blog.csdn.net/cxk19980802/article/details/142978730

相关文章

  • 使用博查Web Search API获取搜索引擎的网页链接和文本摘要,给AI/RAG应用增加联网搜索功
    为什么需要WebSearchAPI?各类AINative应用、RAG应用、AIAgent智能体在开发过程都会遇到联网获取互联网网页信息的需求,此时需要得到原始网页链接以及文本摘要,以用于给pipeline中的大模型作为上下文总结使用。但目前仅国外的搜索引擎例如Bing、Google提供此类WebSearch......
  • DevEco Studio:支持使用预览器的API清单
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(MaoistLearning)➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/......
  • Elasticsearch
    ElasticsearchES是一个可以实现复杂搜索的全文检索服务器一、安装1.安装Elasticsearch指定分配521m内存,可以改为256m,安装完成访问9200端口测试dockerrun-d\--namees\-e"ES_JAVA_OPTS=-Xms512m-Xmx512m"\-e"discovery.type=single-node"\-ves-data:/us......
  • Web组态数据联动
    1.通过get/post获取设备列表信息2.websocket连接mqtt服务器,接收json报文信息3.通过Alpine进行数据联动4.封装svg对象,更新属性值 index.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewpo......
  • exchange2016,关闭用户mapi后如何使用anywhere连接
    exchange2016,关闭用户mapi后如何使用anywhere连接问题:在管理控制台关闭了某个用户的mapi,1、如何让用户的outlook使用anywhere连接?2、exchange2016默认情况下,mapi/http优先级总是高于rpc/http?是否可以更改优先级?答案:在这里有两个概念  MAPI  mapioverHTTP    ......
  • 凯中故障6:Outlook无法连接到Exchange Server(MAPI模式)
    凯中故障6:Outlook无法连接到ExchangeServer(MAPI模式)问题现象:组织中有一个邮箱账户无法连接至exchange(MAPI)模式,其他邮箱账户正常。尝试在outlook”发送/接收“菜单点击”更新文件夹“出现下图报错:我做了一些尝试:1.使用Foxmail的exchange模式连接exchangeserver一切正常2.......
  • elasticsearch之倒排索引
    倒排索引elasticsearch有如此高的搜索性能,无异于使用了倒排索引。倒排索引中有两个重要的概念:文档(Document):用来搜索的数据,其中的每一条数据就是一个文档。例如一个网页、一个商品信息词条(Term):对文档数据或用户搜索数据,利用某种算法分词,得到的具备含义的词语就是词条。例如:我......
  • 一个基于若依的超级漂亮的博客系统,可用于所有Web应用(带私活源码)
     今天分享的开源项目是:RuoYiBlog-一个基于若依的超级漂亮的博客系统 。一、项目介绍     如果你一直想做一个博客平台,看过许多优秀的开源项目,但没有找到合适的,那么今天可以参考这个项目。作者利用业余时间把若依后台管理和pb-cms结合起来,在自己的参考中开发了一......
  • 【web服务】耗时任务基于API与worker模式
    场景:当我们爬虫或者获取数据需要很长的时间计算或者等待,这种情况情况下基于API与worker模式完成交付1.API端:用flask框架importjsonimportuuidimportredisfromflaskimportFlask,request,jsonifyapp=Flask(__name__)pool=redis.ConnectionPool(host='127.0.0......
  • Elasticsearch(一)
    ES相关概念对比MySQLElasticsearch(ES):用于数据存储、计算和搜索安装ES:ES是部署在Linux操作系统下的,可以通过Docker去部署:首先引入ES的镜像,可以官网下载或者用dockerpull拉取镜像可以执行该命令,注意es版本dockerrun-d\--namees\-e"ES_JAVA_OPTS=-Xms512m-Xmx512......