百度AI搜索
更新时间:2024-12-12
组件描述
百度AI搜索组件为百度领先的搜索能力结合大模型技术,提供结合全网实时信息进行智能回复的问答功能,可支撑各行业丰富的场景应用。支持丰富标准化能力,如:自定义人设、模型选择、问题改写(包括时效和多轮两种方式,以增强搜索效果)、搜索范围配置(可选择搜索的模态、站点范围和发布时间)、自定义参考链接条数等等,此外,该API拥有优秀的性能表现和高可用性,以及全面的内容安全审核,保证处于合规红线之上。
前1000次调用限时免费,默认限流1qps,申请更多资源请提交表单,工作人员将主动联系您进行开通。计费方式详见计费说明。
接口描述
该接口参考百度搜索结果,并使用大模型进行智能总结回答。
在线调试
百度智能云千帆提供了 API在线调试平台-示例代码 ,用于帮助开发者调试接口,平台集成快速检索、查看开发文档、查看在线调用的请求内容和返回结果、复制和下载示例代码等功能,简单易用。
权限说明
Authorization需要填写密钥。
接口定义
URL | /rpc/2.0/cloud_hub/v1/ai_engine/copilot_engine/service/v1/baidu_search_rag/general |
---|---|
Method | POST |
请求结构
POST /rpc/2.0/cloud_hub/v1/ai_engine/copilot_engine/service/v1/baidu_search_rag/general HTTP/1.1
HOST: appbuilder.baidu.com
X-Appbuilder-Authorization: <token>
Content-Type: application/json
{
"message": [
{
"role": "user",
"content": "今天热点新闻"
}
],
"instruction": "你是新闻小助手啊",
"stream": true,
"model": "ERNIE-3.5-8K"
}
请求头域
除公共头域外,无其它特殊头域,可前往通用说明查看
请求参数
字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
messages | array[message] | 否 | 对话历史。注意: * array的长度需要是奇数 * role必须是user-assistant-user交替,以user开始以user结束例子:[{"role": "user", "content":"你觉得xx的发布会上把xx的100pro手机的芯片搞错了需要道歉吗"},{"role": "assistant", "content": "是的,如果xx在发布会上错误地标注了xx100 Pro的芯片信息,那么向xx和用户道歉是合适的。这种错误可能会对xx品牌和用户造成困扰和误解,因此公开道歉并纠正错误是一个负责任的行为。同时,这也展示了xx对于准确性和专业性的重视,有助于维护品牌形象和信誉。"},{"role": "user", "content": "今天xx有道歉吗"}] |
message | array[message] | 否 | 作用同messages字段,message/messages不能同时为空,后续计划下掉此message字段。如果同时传递message/messages字段,优先使用messages字段 |
stream | bool | 否 | 是否为流式请求。值含义:true:使用HTTP SSE流式响应 false:以非流式结果返回默认值为false; |
model | string | 是 | 使用的模型名。注意:从千帆MB官网查看账户开通的模型,MB账号欠费会导致调用失败。例如: ERNIE-3.5-8KERNIE-4.0-8K |
instruction | string | 否 | 人设指令,用于限制输出风格等默认值:""注意:字符长度需要小于等于1400 |
temperature | float | 否 | 模型采样参数。较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定值范围:(0, 1]默认值:1e-10注意:该值越大,模型输出越多样,也越不稳定 |
top_p | float | 否 | 模型采样参数。影响输出文本的多样性,取值越大,生成文本的多样性越强值范围:(0, 1]默认值:1e-10注意:该值越大,模型输出越多样,也越不稳定 |
hide_corner_markers | bool | 否 | 是否隐藏引用角标,用于是否标记输出内容出处的链接。值含义:true:隐藏false:不隐藏默认值:false |
enable_timely_query_rewrite | bool | 否 | 是否开启时效性改写模块,用于常用口语时间(今天、今年等)转换为具体时间值含义:true:开启false:关闭默认值:false注意:该参数为true时,会多调用一次大模型,使用传入的model,会增大接口耗时,秒级触发时效性例子:今天、明天、今年、明年等 |
enable_historical_query_rewriting | bool | 否 | 是否基于历史对话对query进行改写,用于改写不明确主语的query,使大模型更明确用户query。值含义:true:改写false:不改写默认值:false |
enable_instruction_enhance | bool | 否 | 是否对人设指令(instruction)增强,用于增强人设指令遵从的效果,但是可能会造成指令泄露。值含义:true:增强false:不增强默认值:false |
search_resource_types | array[search_resource_type] | 否 | 多模态检索参数,每种模态最大检索个数不超过10例子:[{"count": 4, "type": "web"}, {"count": 4, "type": "image_content"}, {"count": 4, "type": "video"}] |
search_rearrange | bool | 否 | 默认为true,搜索结果按照网页top1、图像内容top1、视频内容top1、网页top2、图像内容top2、视频内容top2...进行排序,反之,顺序不固定 |
search_timeliness | string | 否 | 网页时效性范围限制,包含枚举值: week:7天month:30天 semiyear:180天year:365天 |
search_top_k | int | 否 | 默认为4,代表返回4个网页检索结果,最大不超过10个;如果同时传入search_resource_types参数时,以search_resource_types为准 |
search_site | string | 否 | 指定内容检索站点 比如: baidu.com |
customize_knowledge | array<knowledge> | 否 | 调用方提供的定制化知识内容集合,与公开的联网搜索结果构成合集,注入到模型中进行问答总结。知识注入的条数和长度, 与模型有关,限制最大10条 |
message对象
字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
role | string | 是 | 角色标识符。枚举值:user:用户assistant:模型 |
content | string | 是 | 对应角色的对话内容。注意:当role为user时,content字符长度需要小于等于2000,超出则会截断 |
search_resource_type对象
字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
count | int | 是 | 检索个数 |
type | string | 是 | 模态类型,枚举值web:网页image_content:图像内容video:视频内容 |
knowledge对象
字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
priority | int | 否 | 优先级的范围【-20,20】,搜索结果默认是0;优先级的定义:数字值越小,优先级越高,例如-20是优先级最高,如果与百度搜索结果优先级相同,优先使用定制化知识点,默认值为0 |
data_type | str | 否 | 数据类型 |
id | int | 否 | 默认按照传入数组顺序进行编号,依次编号为1、2...n,如果对应知识点被模型引用到,会按照ref_编号的方式进行标记,比如:ref_1、ref_2...ref_n;如果传入编号,编号必须递增,且最大值不超过50 |
data | object | 是 | 详细知识内容 |
knowledge.data对象
字段 | 类型 | 必填 | 说明 |
---|---|---|---|
content | str | 是 | 知识点内容 |
title | str | 否 | 知识点标题 |
url | str | 否 | 知识点url地址 |
release_date | str | 否 | 发布日期 |
响应头域
除公共头域外,无其它特殊头域,可前往通用说明查看。
响应参数
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
code | int | 是 | 错误码。0为成功,否则为错误。 |
message | string | 是 | 错误信息。 |
result | object | 是 | 搜索与模型总结结果 |
result对象
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
session_id | string | 是 | id(该字段即将下线) |
is_completion | bool | 否 | 流式响应中表示请求是否结束 |
answer_message | object | 是 | 百度AI搜索返回结果 |
result.answer_message对象
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
extra | array[reference] | 是 | 检索结果。流式返回中,首条是检索结果,后面是大模型回复。为了不重复传检索结果,仅首条有extra |
token_usage | object | 是 | 该次请求消耗的token数。注意:流式请求时需要看最后一个事件的token_usage |
content | string | 是 | 模型的回答 |
rewriten_query | string | 是 | 改写query |
request_id | string | 是 | 请求ID requestId |
is_safe | bool | 是 | 是否触发安全策略 |
search_times | int | 是 | 搜索次数,一般模态越多、引用次数越多搜索次数也相应增加,精确的次数与query内容有关 |
result.answer_message.reference对象
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
icon | string | 是 | icon地址,如果没有的话为null |
ref_num | string | 是 | 引用索引 |
title | string | 是 | 网页标题 |
url | string | 是 | 网页地址 |
given_to_llm | bool | 是 | 是否给模型 |
web_anchor | string | 是 | 网站锚文本,如果没有的话使用网站标题 |
content | string | 是 | 网站内容,当前仅返回20字。 |
resource_type | string | 否 | 检索资源类型:web:网页image_content:图像内容video:视频内容 |
image_detail | object | 否 | 图片详情 |
vedio_detail | object | 否 | 视频详情 |
result.answer_message.reference.image_detail对象
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
url | string | 否 | 图片链接 |
height | string | 否 | 图片高度 |
width | string | 否 | 图片宽度 |
result.answer_message.reference.video_detail对象
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
url | string | 否 | 视频链接 |
height | string | 否 | 视频高度 |
width | string | 否 | 视频宽度 |
size | string | 否 | 视频大小,单位Bytes |
duration | string | 否 | 视频长度,单位秒 |
result.answer_message.token_usage对象
字段 | 类型 | 必然存在 | 说明 |
---|---|---|---|
prompt_tokens | int | 否 | prompt(输入)token数 |
completion_tokens | int | 否 | completion(输出)token数 |
total_tokens | int | 否 | 总token数 |
请求curl示例
curl --location 'https://appbuilder.baidu.com/rpc/2.0/cloud_hub/v1/ai_engine/copilot_engine/service/v1/baidu_search_rag/general' \
--header 'Content-Type: application/json' \
--header 'X-Appbuilder-Authorization: Bearer <密钥>' \
--data '{
"messages": [
{
"content": "介绍下珠穆朗玛峰",
"role": "user"
}
],
"instruction": "你是一个旅游助手",
"stream": true,
"model": "ERNIE-3.5-8K",
"enable_instruction_enhance": true,
"enable_historical_query_rewriting": true,
"customize_knowledge": [
{"priority":0, "data": {"content":"珠穆朗玛峰(Qomolangma)简称珠峰,又意译作圣母峰,尼泊尔称为萨加马塔峰,藏语的“珠穆朗玛”意为“第三女神”。该峰位于中华人民共和国和尼泊尔交界的喜马拉雅山脉之上,终年积雪。常年低温。珠穆朗玛峰是喜马拉雅山脉的主峰。"}}
]
}'
正确返回示例
data: {"code": 0, "message": "", "result": {"is_completion": false, "answer_message": {"extra": [{"url": "https://baike.baidu.com/item/%E7%8F%A0%E7%A9%86%E6%9C%97%E7%8E%9B%E5%B3%B0/3058?fr=ge_ala", "ref_num": "2", "title": "珠穆朗玛峰", "date": null, "content": "珠穆朗玛峰(英语:Mount Qomol...", "icon": "https://appbuilder.bj.bcebos.com/baidu-search-rag-pro/icon/logo-baike.svg", "web_anchor": "百度百科", "resource_type": "web", "image_detail": {"url": null, "height": null, "width": null}, "vedio_detail": {"url": null, "height": null, "width": null, "size": null, "duration": null}, "given_to_llm": true}, {"url": "http://weibo.com/tv/show/1034:5077361029480494", "ref_num": "3", "title": "3分半钟卫星视角带你看完珠穆朗玛峰!", "date": "2024-12-05", "content": "3分半钟卫星视角带你看完珠穆朗玛峰! \\...", "icon": "https://appbuilder.bj.bcebos.com/baidu-search-rag-pro/icon/sina weibo.svg.png", "web_anchor": "微博", "resource_type": "web", "image_detail": {"url": null, "height": null, "width": null}, "vedio_detail": {"url": null, "height": null, "width": null, "size": null, "duration": null}, "given_to_llm": true}, {"url": "http://www.bilibili.com/video/BV1obvreZEoZ", "ref_num": "4", "title": "世界之巅—珠穆朗玛峰", "date": "2024-12-02", "content": "世界之巅—珠穆朗玛峰 林德艾润AROOX...", "icon": "https://appbuilder.bj.bcebos.com/baidu-search-rag-pro/icon/bilibili.ico", "web_anchor": "哔哩哔哩", "resource_type": "web", "image_detail": {"url": null, "height": null, "width": null}, "vedio_detail": {"url": null, "height": null, "width": null, "size": null, "duration": null}, "given_to_llm": true}, {"url": "https://haokan.baidu.com/v?pd=wisenatural&vid=12981671510033443617", "ref_num": "5", "title": "世界之巅——珠穆朗玛峰", "date": "2024-12-02", "content": "世界之巅——珠穆朗玛峰 珠穆朗玛峰 中国...", "icon": "https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=76251347,1123177279&fm=195&app=88&f=PNG?w=200&h=200", "web_anchor": "好看视频", "resource_type": "web", "image_detail": {"url": null, "height": null, "width": null}, "vedio_detail": {"url": null, "height": null, "width": null, "size": null, "duration": null}, "given_to_llm": true}], "token_usage": {}, "content": "", "rewriten_query": "介绍下珠穆朗玛峰", "request_id": "7afb088f-314f-4f26-b255-a41a05abd49f", "is_safe": true, "search_times": 1}}}
data: {"code": 0, "message": "", "result": {"is_completion": false, "answer_message": {"extra": [], "token_usage": {"prompt_tokens": 1220, "completion_tokens": 0, "total_tokens": 1220}, "content": "珠穆朗", "rewriten_query": "介绍下珠穆朗玛峰", "request_id": "7afb088f-314f-4f26-b255-a41a05abd49f", "is_safe": true, "need_clear_history": false, "search_times": 1}}}
data: {"code": 0, "message": "", "result": {"is_completion": false, "answer_message": {"extra": [], "token_usage": {"prompt_tokens": 1220, "completion_tokens": 0, "total_tokens": 1220}, "content": "玛峰", "rewriten_query": "介绍下珠穆朗玛峰", "request_id": "7afb088f-314f-4f26-b255-a41a05abd49f", "is_safe": true, "need_clear_history": false, "search_times": 1}}}
data: {"code": 0, "message": "", "result": {"is_completion": false, "answer_message": {"extra": [], "token_usage": {"prompt_tokens": 1220, "completion_tokens": 0, "total_tokens": 1220}, "content": "(Q", "rewriten_query": "介绍下珠穆朗玛峰", "request_id": "7afb088f-314f-4f26-b255-a41a05abd49f", "is_safe": true, "need_clear_history": false, "search_times": 1}}}
...
错误码
错误码 | 描述 |
---|---|
400 | 客户端请求参数错误 |
500 | 服务端执行错误 |
501 | 调用模型服务超时 |
502 | 模型流式输出超时 |
其它 | 详见模型返回错误码https://cloud.baidu.com/doc/WENXINWORKSHOP/s/tlmyncueh |