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

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"}))

相关文章:

  • Python-86:奇妙货币交易问题
  • 基于SpringBoot的在线教育管理系统
  • Qt 界面优化(绘图)
  • 计算机网络--2
  • 黑名单中的随机数-leetcode710
  • PostgreSQL 的 pg_column_size 函数
  • 用一张网记住局域网核心概念:从拓扑结构到传输介质的具象化理解
  • 【计算机网络01】 网络组成与三种交换方式
  • 万字了解什么是微前端???
  • Redis爆肝总结
  • CacheBackEmbedding 组件的运行流程和使用注意事项
  • Python-MCPAgent开发-DeepSeek版本
  • iOS实名认证模块的具体实现过程(swift)
  • 【C++】16.继承
  • 【东枫科技】使用LabVIEW进行深度学习开发
  • SaaS场快订首页的前端搭建【持续更新】
  • 【每日一题 | 2025年5.5 ~ 5.11】搜索相关题
  • JavaWeb, Spring, Spring Boot
  • 《Go小技巧易错点100例》第三十一篇
  • 画立方体软件开发笔记 js-pytorch xlsx 导出 excel pnpm安装
  • 俄官员说将适时宣布与乌克兰谈判代表
  • 熊出没!我驻日本札幌总领馆提示中国公民注意人身安全
  • 欧元区财长会讨论国际形势及应对美国关税政策
  • 英国首相斯塔默一处房产发生火灾
  • 百利天恒董事长向复旦捐赠三千万元,用于支持创新药物靶点发现等师资建设需要
  • 干部任职公示:陕西宁强、镇安两县县长拟进一步使用