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

langchain 接入国内搜索api——百度AI搜索

为什么使用百度AI搜索

学习langchain的过程中,遇到使用search api的时候,发现langchain官方文档中支持的搜索工具大多是国外的,例如google search或bing search,收费不说,很多还连接不上(工具 | LangChain中文网)。

经过一番寻找,发现国内也有两家提供search api,一个是博查(博查AI开放平台 | Search API, Reranker API),另一个就是最近刚出的百度AI搜索(百度AI搜索 - 千帆AppBuilder-产品文档)。

博查是收费的,而百度AI搜索每天有100次的免费额度,更加适合个人学习使用。

使用方式

百度AI搜索支持post请求,OpenAI SDK,Cursor MCP组件等多种方式调用,今天主要讲一下在langchain中如何使用。

第一步首先需要申请一个API KEY

通过langchain-openai直接调用

from langchain_openai import ChatOpenAIclient = ChatOpenAI(model="deepseek-r1", api_key=API_KEY, #申请的百度API KEYbase_url="https://qianfan.baidubce.com/v2/ai_search"
)response = client.invoke("今天成都天气怎么样")print(response)

直接调用有许多参数不支持,如果希望能够自由设置例如最大返回数量,检索条件等参数,可以使用工具,具体参数可以查看百度AI搜索 - 千帆AppBuilder-产品文档

自定义langchain工具

import requests
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.tools import tool
from langchain_qwq import ChatQwQ@tool
def baidu_search_tool(query: str) -> str:"""使用Baidu Search API进行联网搜索,返回搜索结果的字符串。参数:- query: 搜索关键词返回:- 搜索结果的字符串形式"""url = 'https://qianfan.baidubce.com/v2/ai_search'headers = {'Authorization': f'Bearer {API_KEY}',  # 请替换为你的API密钥'Content-Type': 'application/json'}messages = [{"content": query,"role": "user"}]data = {"messages": messages,"search_source": "baidu_search_v2","search_recency_filter":"month" #可以自定义各种检索条件}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}")#打印工具名称,描述,参数等 名称正确、文档正确且类型提示正确的工具更易于模型使用
print(baidu_search_tool.name)
print(baidu_search_tool.description)
print(baidu_search_tool.args)#直接使用工具
print(baidu_search_tool.invoke("介绍下langchain"))tools = [baidu_search_tool]#通义千问大模型,可以替换为任何一个支持工具调用的大模型
tongyi_chat = ChatQwQ(model="qwen-plus",api_key=QWEN_KEY, #替换为对应大模型的KEYapi_base="https://dashscope.aliyuncs.com/compatible-mode/v1"
)#查看我们的输入是否会调用工具,注意,这里并不会真正调用工具
with_tool = tongyi_chat.bind_tools(tools)
result = with_tool.invoke("今天成都天气怎么样")
print(result.content)
print(result.tool_calls)#创建代理并调用工具
prompt = ChatPromptTemplate.from_template("今天{city}天气怎么样 {agent_scratchpad}")
agent = create_tool_calling_agent(tongyi_chat, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)
print(agent_executor.invoke({"city":"成都", "agent_scratchpad":"intermediate_steps"}))

http://www.xdnf.cn/news/5384.html

相关文章:

  • Qt 样式表:全面解析与应用指南
  • LeetCode 高频题实战:如何优雅地序列化和反序列化字符串数组?
  • 理解 Token 索引 vs 字符位置
  • C++23 新特性:深入解析 std::views::join_with(P2441R2)
  • 深入解析 Vision Transformer (ViT) 与其在计算机视觉中的应用
  • 效率办公新工具:PDF Reader Pro V5.0功能解析与使用体验
  • NHANES稀有指标推荐:MedHi
  • M. Moving Both Hands(反向图+Dijkstra)
  • 视频编解码学习10之成像技术原理
  • 华为配置篇-RSTP/MSTP实验
  • 股指期货的保证金交易和资金门槛是多少?
  • 《Go小技巧易错点100例》第三十三篇
  • Redis--常见数据类型List列表
  • 思维链框架:LLMChain,OpenAI,PromptTemplate
  • 游戏引擎学习第274天:基于弹簧的动态动画
  • 【MySQL】表空间结构 - 从何为表空间到段页详解
  • 【质量管理】什么是过程?
  • Qt 窗口部件(2)输入部件详解
  • 深入解析STM32中断机制:从原理到外部中断实战
  • 力扣70题解
  • 二叉搜索树讲解
  • [思维模式-25]:《本质思考力》-6- 马克思主义哲学的五对基本哲学范畴,以及在计算机领域的体现
  • 用c语言实现——一个交互式的中序线索二叉树系统,支持用户动态构建、线索化、遍历和查询功能
  • 理性地倾听与表达:检索算法的语言学改进
  • 《P1226 【模板】快速幂》
  • 开疆智能Profinet转canopen网关连接易福门(IFM)传感器配置案例
  • QB/T 1649-2024 聚苯乙烯泡沫塑料包装材料检测
  • 大模型MCP更高效的通信:StreamableHTTP协议
  • 欧拉计划 Project Euler 69(欧拉总计函数与最大值)题解
  • 炫酷粒子系统动画实战:Matplotlib实现银河漩涡效果