【千帆平台】使用AppBuilder零代码创建应用,然后通过OpenAPI方式调用应用

欢迎来到《小5讲堂》

这是《千帆平台》系列文章,每篇文章将以博主理解的角度展开讲解。

温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!

目录

前言

使用千帆平台的AppBuilder零代码构建应用非常简单,也提供界面进行体验和使用。

博主想把这个应用提供的API封装到自己后端,因此本篇文章就来聊聊如何调用API。

创建API密钥

使用说明

1.密钥为使用AppBuilder平台的重要凭证,因密钥长期有效,请勿放在浏览器或外部客户端代码中,请妥善管理分发。如意外泄露,在本页面删除密钥即可关闭对应访问入口。

2.删除密钥后,已删除密钥和旧地址将无法继续请求服务,并无法恢复,请谨慎操作。

调用文档

找到自己创建好的应用,点击发布详情,再点API调用,最后点O喷API的接口调用说明

接口调用说明地址:https://cloud.baidu.com/doc/AppBuilder/s/klv2eywua

调用说明

API服务域名

Region EndPoint Protocol
all qianfan.baidubce.com HTTPS

通信协议

API 调用遵循 HTTP 协议。

字符编码

可解析内容,所有 request/response body 内容目前均使用 UTF-8 编码。

公共请求头

以下列举部分

参数名称 描述 是否必填 示例
Authorization 请求签名(此签名为appbuilder平台密钥) 必须 Bearer bce-v3/ALTAK-LLfggwDKNJ3mZJFtIMYP8/0d******55cdb5e8b319f93b00fffc584cex8
Content-Type application/json;charset=utf-8 通用数据交互格式(默认) 必须 application/json;charset=utf-8
multipart/form-data;charset=utf-8 支持图片、文件等上传,以及语音二进制流传输 multipart/form-data;charset=utf-8
text/event-stream;charset=utf-8 支持服务端向客户端推送服务、事件和消息通知的数据格式 text/event-stream;charset=utf-8

HTTP协议的标准头域不在这里列出。公共头域将在下面的请求中出现。

新建会话

博主这里是使用C#代码进行调用

接口描述

该接口用于新增对话,对话的有效期为7天。超过之后可能无法使用,需要重新生成。

权限说明

Authorization需要填写密钥。

接口定义

完整地址:https://qianfan.baidubce.com/v2/app/conversation

URL /v2/app/conversation
Method POST
Content-Type application/json
Authorization 请求签名(此签名为应用工作台密钥)

请求结构

复制代码
POST /v2/app/conversation HTTP/1.1
HOST: qianfan.baidubce.com
Authorization: authorization string
Content-Type: application/json

{
    "app_id": "c5c7bfa8-97f6-48c0-97ac-689d1f6df6be"
}

请求头域

除公共头域外,无其它特殊头域。

请求参数

字段 类型 是否必须 说明
app_id string 指定需要创建对话的app_id,来源于个人空间-应用-应用ID

响应头域

除公共头域外,无其它特殊头域。

响应参数

字段 类型 是否必须 说明
request_id string request_id
conversation_id string 对话id,可以用于后续调用,有效期为7天。

请求curl 示例

复制代码
curl --location 'https://qianfan.baidubce.com/v2/app/conversation' \
--header 'Authorization: Bearer authorization string' \
--header 'Content-Type: application/json' \
--data '{
    "app_id": "85036d8f-239c-469c-b342-b62ca9d696f6"
}'

正确响应示例

复制代码
HTTP/1.1 200 OK
{
  "request_id": "355a4f4e-a6d8-4dec-b840-7075030c6d22",
  "conversation_id": "2370813b-5303-4a4f-b5cc-44f571121342"
}

错误响应示例

复制代码
HTTP/1.1 401
{
  "request_id": "ae2225f7-1c2e-427a-a1ad-5413b762957d",
  "code": "PermissionDeniedError",
  "message": "没有权限"
}

缺少授权参数

{"requestId":"8cfe4b0a-7abd-4b8d-ab6f-093d7f0f7bfc","code":216003,"message":"Authentication error: ( Authorization or X-Appbuilder-Authorization header is required )"}

缺少应用ID参数

{"code": "InvalidRequestArgumentError", "message": "request param app_id is required", "request_id": "65c6bf89-175f-4928-9dd1-9f4ad6a8656c"}

无答复

由于连接方在一段时间后没有正确答复或连接的主机没有反应,链接尝试失败。

原因:是博主自己网络问题,网络比较卡会出现这种情况

响应成功

{"request_id": "b60e8917-98c0-4ca9-adc3-9dxxx", "conversation_id": "95914e46-d616-45e0-b8xxx"}

大模型对话

接口描述

该接口用于在一轮对话中向大模型发送消息。

权限说明

Authorization需要填写密钥。

接口定义

完整地址:https://qianfan.baidubce.com/v2/app/conversation/runs

URL /v2/app/conversation/runs
Method POST
Content-Type application/json
Authorization 请求签名(此签名为应用工作台密钥)

请求结构

复制代码
POST /v2/app/conversation/runs HTTP/1.1
HOST: qianfan.baidubce.com
Authorization: authorization string
Content-Type: application/json

{
    "app_id": "85036d8f-239c-469c-b342-b62ca9d696f6",
    "query": "根据文件中的数据,统计这几所学校小学生有多少",
    "stream": true,
    "conversation_id": "355a4f4e-a6d8-4dec-b840-7075030c6d22",
    "file_ids": [
        "cdd1e194-cfb7-4173-a154-795fae8535d9"
    ]
}

请求头域

除公共头域外,无其它特殊头域。

请求参数

字段 类型 是否必须 说明
app_id string app_id,来源于个人空间-应用-应用ID。
query string 用户query文字, 长度限制2000字符。
stream bool 是否以流式接口的形式返回数据,默认false。
conversation_id string 对话id,可通过新建会话接口创建。
file_ids liststring 如果在对话中上传了文件,可以将文件id放入该字段,目前只处理第一个文件。

服务错误

{"code": "InternalServerError", "message": "The browser (or proxy) sent a request that this server could not understand.", "request_id": "6654ae9d-9ae8-4b40-95a9-cedb9xxx"}

权限错误

原因是stream参数设置成了true。

{"code": "PermissionDeniedError", "message": "Permission denied at app_id 5a48d77f-23a7-4d87-9b87-b80c8ba463ca, conversation_id 86fc0e4f-981c-4bd7-8e30-39axxx", "request_id": "e9481c30-21af-41dd-9e59-bb629xxx"}

原因:拿错参数了, conversation_id参数拿成了request_id参数值,所以一直都是无权限获取。另一个原因是是否以流式接口的形式返回数据,默认false。

响应成功

实现代码

复制代码
//令牌
string answer = string.Empty;
string conversation_id = string.Empty;
string app_id = "你的应用ID";
string Bearer = "API密钥";

// 新建会话 - 7天(建议保存起来,七天后再重新获取,省了每次去调用获取)
using (HttpClient client = new HttpClient())
{
    // 设置请求的URL  
    string url = "https://qianfan.baidubce.com/v2/app/conversation";

    var request = new HttpRequestMessage(HttpMethod.Post, url);
    request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Bearer);

    var content = new StringContent("{\"app_id\":\"" + app_id + "\"}", Encoding.UTF8, "application/json");
    request.Content = content;

    HttpResponseMessage response = await client.SendAsync(request);

    string responseBody = await response.Content.ReadAsStringAsync();

    JObject jsonObject = JObject.Parse(responseBody);
    dynamic dynamicObject = jsonObject;
    conversation_id = dynamicObject.conversation_id;
}

// 大模型对话
using (HttpClient client = new HttpClient())
{
    // 设置请求的URL  
    string url = "https://qianfan.baidubce.com/v2/app/conversation/runs";

    var request = new HttpRequestMessage(HttpMethod.Post, url);
    request.Headers.Add("Authorization", $"Bearer {Bearer}");

    var content = new StringContent("{\"app_id\":\"" + app_id + "\",\"query\":\"你输入的文本\",\"stream\":false,\"conversation_id\":\"" + conversation_id + "\",\"file_ids\":[]}", Encoding.UTF8, "application/json");
    request.Content = content;

    HttpResponseMessage response = await client.SendAsync(request);

    string responseBody = await response.Content.ReadAsStringAsync();

    JObject jsonObject = JObject.Parse(responseBody);
    dynamic dynamicObject = jsonObject;
    answer = dynamicObject.answer;
}

错误返回码说明

错误码 HTTP状态码 描述 说明
InvalidRequestArgumentError 400 Invalid request argument 请求参数错误
PermissionDeniedError 401 Permission denied 权限错误
NotFoundResource 404 Not Found Resource 账户、应用、模型、模版等无法找到
InternalServerError 500 InternalServerError 服务器内部错误
QuotaLimitExceeded 400 Quota limit exceeded 用户Quota超过限制
TemplateValuesError 400 The value of the template does not match the template scheme 模版参数校验错误
QuotaLimitExpired 400 Quota limit expired 用户Quota过期
QianfanPermissionDeniedError 400 Qianfan Permission Denied Error 千帆服务访问失败,一般是权限错误
QianfanApiExpired 400 Qianfan Api Expired 千帆服务过期
AppStatusInvalidError 400 应用体验地址已更新,请联系应用开发者获取最新地址 应用体验地址已更新,请联系应用开发者获取最新地址
TokenStatusInvalidError 400 鉴权失败,请联系应用开发者获取鉴权密钥 鉴权失败,请联系应用开发者获取鉴权密钥
QueryParamInvalidError 400 query字段异常,请检查 Query必填但未填值
AccountNotExistError 400 账户不存在 app对应的账户不存在
NoFileUploadedError 400 上传文件时文件为空 对话中上传文件时文件为空
TooManyFilesError 400 文件上传时超过一个 对话中文件上传时超过一个
FileTooLargeError 400 文件上传大小超过限制 对话中文件上传大小超过限制
UnsupportedFileTypeError 400 文件类型不支持 对话中文件类型不支持
InvalidFileError 400 文件无效 对话中文件参数无效
CreateAgentConversationError 500 创建对话失败 对话中创建对话失败
SdkTokenNotExistError 400 SDK 密钥不存在 SDK 密钥不存在
ChatError 500 获取流式消息发生异常 仅在流式请求应答中出现
RequestExpired 400 请求超时 仅在传参x-bce-date时出现,有效时间30分钟
InvalidHTTPRequestHeader 400 无效的公共请求头参数 公共请求头参数错误
216003 401 鉴权错误 nan

推荐文章

【千帆平台】使用AppBuilder零代码创建应用,然后通过OpenAPI方式调用应用

【千帆平台】使用AppBuilder零代码创建应用,Excel表格数据转为Markdown格式文本

【千帆平台】AppBuilder工作流编排新功能体验之创建自定义组件

【千帆平台】AppBuildert工作流编排新功能体验之创建自定义组件

【千帆平台】使用AppBuilder三步手搓应用创建精准多轮对话agent之K12互动式练习题

【千帆平台】百度智能云千帆AppBuilder应用探索益智游戏之猜物小游戏

【人工智能】百度智能云千帆AppBuilder,快速构建您的专属AI原生应用

【人工智能】千帆平台创建和使用我的数据集,为什么需要数据集,有什么作用

【千帆平台】使用千帆大模型平台创建自定义模型调用API,贺岁灵感模型,文本对话

相关推荐
手写码匠10 小时前
手写 AI 上下文压缩系统:从零实现 Prompt 压缩与选择性上下文管理
人工智能·深度学习·算法·aigc
掉鱼的猫11 小时前
Agent Harness 实战指南:构建生产级 AI Agent 的"马具"框架
java·llm·aigc
HjhIron14 小时前
用RAG + Node.js 手搓一个语义搜索引擎,真香!
aigc·ai编程
北鹤M15 小时前
ai模特画图高效实现换装,批量生图工具实测体验
人工智能·aigc
FogLetter17 小时前
从零到一打造RAG智能问答系统:当《蛊真人》遇上了AI
aigc·openai
AIGCmagic社区18 小时前
Unlimited OCR 论文精读:R-SWA 如何实现一次性长文档解析
人工智能·算法·aigc
dayuOK630719 小时前
可灵AI获近30亿美元融资,视频大模型赛道开启IPO竞赛
人工智能·ai作画·新媒体运营·aigc·ai写作
怕浪猫19 小时前
第10章 实战项目二:自动化研发运维Agent
aigc·openai·ai编程
西安老张(AIGC&ComfyUI)1 天前
第021章:ComfyUI文生音频Qwen3-TTS模型数字人音色设计(二)
aigc·音视频·comfyui
Code_Artist1 天前
Trae AI 创造力大赛创意作品:AI 数字克隆人——让你有无数个分身!
人工智能·llm·aigc