admin管理员组

文章数量:1532013

欢迎来到《小5讲堂》
这是《千帆平台》系列文章,每篇文章将以博主理解的角度展开讲解。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!


目录

  • 前言
  • 创建API密钥
  • 调用文档
  • 调用说明
    • API服务域名
    • 通信协议
    • 字符编码
    • 公共请求头
  • 新建会话
    • 接口描述
    • 权限说明
    • 接口定义
    • 请求结构
    • 请求头域
    • 请求参数
    • 响应头域
    • 响应参数
    • 请求curl 示例
    • 正确响应示例
    • 错误响应示例
    • 缺少授权参数
    • 缺少应用ID参数
    • 无答复
    • 响应成功
  • 大模型对话
    • 接口描述
    • 权限说明
    • 接口定义
    • 请求结构
    • 请求头域
    • 请求参数
    • 服务错误
    • 权限错误
    • 响应成功
    • 实现代码
  • 错误返回码说明
  • 推荐文章

前言

使用千帆平台的AppBuilder零代码构建应用非常简单,也提供界面进行体验和使用。
博主想把这个应用提供的API封装到自己后端,因此本篇文章就来聊聊如何调用API。

创建API密钥

使用说明
1.密钥为使用AppBuilder平台的重要凭证,因密钥长期有效,请勿放在浏览器或外部客户端代码中,请妥善管理分发。如意外泄露,在本页面删除密钥即可关闭对应访问入口。
2.删除密钥后,已删除密钥和旧地址将无法继续请求服务,并无法恢复,请谨慎操作。

调用文档

找到自己创建好的应用,点击发布详情,再点API调用,最后点OpenAPI的接口调用说明
接口调用说明地址:https://cloud.baidu/doc/AppBuilder/s/klv2eywua

调用说明

API服务域名

RegionEndPointProtocol
allqianfan.baidubceHTTPS

通信协议

API 调用遵循 HTTP 协议。

字符编码

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

公共请求头

以下列举部分

参数名称描述是否必填示例
Authorization请求签名(此签名为appbuilder平台密钥)必须Bearer bce-v3/ALTAK-LLfggwDKNJ3mZJFtIMYP8/0d******55cdb5e8b319f93b00fffc584cex8
Content-Typeapplication/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/v2/app/conversation

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

请求结构

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

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

请求头域

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

请求参数

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

响应头域

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

响应参数

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

请求curl 示例

curl --location 'https://qianfan.baidubce/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/v2/app/conversation/runs

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

请求结构

POST /v2/app/conversation/runs HTTP/1.1
HOST: qianfan.baidubce
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_idstringapp_id,来源于个人空间-应用-应用ID。
querystring用户query文字, 长度限制2000字符。
streambool是否以流式接口的形式返回数据,默认false。
conversation_idstring对话id,可通过新建会话接口创建。
file_idslist[string]如果在对话中上传了文件,可以将文件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/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/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状态码描述说明
InvalidRequestArgumentError400Invalid request argument请求参数错误
PermissionDeniedError401Permission denied权限错误
NotFoundResource404Not Found Resource账户、应用、模型、模版等无法找到
InternalServerError500InternalServerError服务器内部错误
QuotaLimitExceeded400Quota limit exceeded用户Quota超过限制
TemplateValuesError400The value of the template does not match the template scheme模版参数校验错误
QuotaLimitExpired400Quota limit expired用户Quota过期
QianfanPermissionDeniedError400Qianfan Permission Denied Error千帆服务访问失败,一般是权限错误
QianfanApiExpired400Qianfan Api Expired千帆服务过期
AppStatusInvalidError400应用体验地址已更新,请联系应用开发者获取最新地址应用体验地址已更新,请联系应用开发者获取最新地址
TokenStatusInvalidError400鉴权失败,请联系应用开发者获取鉴权密钥鉴权失败,请联系应用开发者获取鉴权密钥
QueryParamInvalidError400query字段异常,请检查Query必填但未填值
AccountNotExistError400账户不存在app对应的账户不存在
NoFileUploadedError400上传文件时文件为空对话中上传文件时文件为空
TooManyFilesError400文件上传时超过一个对话中文件上传时超过一个
FileTooLargeError400文件上传大小超过限制对话中文件上传大小超过限制
UnsupportedFileTypeError400文件类型不支持对话中文件类型不支持
InvalidFileError400文件无效对话中文件参数无效
CreateAgentConversationError500创建对话失败对话中创建对话失败
SdkTokenNotExistError400SDK 密钥不存在SDK 密钥不存在
ChatError500获取流式消息发生异常仅在流式请求应答中出现
RequestExpired400请求超时仅在传参x-bce-date时出现,有效时间30分钟
InvalidHTTPRequestHeader400无效的公共请求头参数公共请求头参数错误
216003401鉴权错误nan

推荐文章

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

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

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

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

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

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

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

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

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

本文标签: 代码方式平台AppBuilderOpenAPI