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

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

在这里插入图片描述

目录

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

前言

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

创建API密钥

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

调用文档

找到自己创建好的应用,点击发布详情,再点API调用,最后点O喷API的接口调用说明
接口调用说明地址:https://cloud.baidu.com/doc/AppBuilder/s/klv2eywua
在这里插入图片描述

调用说明

API服务域名

RegionEndPointProtocol
allqianfan.baidubce.comHTTPS

通信协议

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.com/v2/app/conversation

URL/v2/app/conversation
MethodPOST
Content-Typeapplication/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_idstring指定需要创建对话的app_id,来源于个人空间-应用-应用ID

响应头域

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

响应参数

字段类型是否必须说明
request_idstringrequest_id
conversation_idstring对话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
MethodPOST
Content-Typeapplication/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_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.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状态码描述说明
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,贺岁灵感模型,文本对话

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/610328.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

视频号小店保证金,服务费,手续费是多少?货款结算周期多长?

大家好,我是电商糖果 随着视频号小店越来越火,很多商家都想入驻小店。 入驻之前大家对视频号的收费问题都比较好奇。 糖果2022年就开始做店的了,对小店的保证金,服务费的,手续费,货款结算周期都非常了解…

Windows使用Miniconda3安装python、环境配置以及conda常用命令

Windows使用Miniconda3安装python以及conda常用命令 这是学习使用python的第一篇文章,这将是一个关于python学习和使用的一个系列文章的开始,有兴趣的可以给个关注持续获取更新内容。 Miniconda3是什么? Miniconda3是一个轻量级的Anaconda发…

【双曲几何-05 庞加莱模型】庞加来上半平面模型的几何属性

文章目录 一、说明二、双曲几何的上半平面模型三、距离问题四、弧长微分五、面积问题六、python实现 一、说明 我们知道,双曲几何的著名模型有四种:微分解析模型、庞加莱盘、庞加莱半平面、克莱因盘。庞加莱圆盘模型是表示双曲几何的一种方法&#xff0c…

【Linux】Centos7配置JDK

1.启动虚拟机、Xshell、Xftp 2.在Xshell中新建一个会话,用于连接到虚拟机中 3.因为虚拟机里自带有JDK,所以需要先卸载自带的JDK 3.1.查询已安装的 jdk 列表 rpm -qa | grep jdk3.2.将查询到的全部删除 yum -y remove XXX(上面查询到的 j…

【机器学习300问】82、RMSprop梯度下降优化算法的原理是什么?

RMSprop,全称Root Mean Square Propagation,中文名称“均方根传播”算法。让我来举个例子给大家介绍一下它的原理! 一、通过举例来感性认识 建议你第一次看下面的例子时忽略小括号里的内容,在看完本文当你对RMSprop有了一定理解时…

豆芽机置入语音芯片WTN6040-8S:开启智能生活新篇章,让豆芽制作更便捷有趣

豆芽机的开发背景: 豆芽作为一种营养丰富、味道鲜美的食品,深受广大消费者的喜爱。然而,传统的豆芽生产过程繁琐,需要耗费大量的时间和人力,且存在生产效率低、质量不稳定等问题。随着人们生活节奏的加快和对健康饮食的…

K8s源码分析(一)-K8s调度框架及调度器初始化介绍

本文首发在个人博客上,欢迎来踩! 文章目录 调度框架介绍K8s scheduler 介绍K8s scheduler的初始化Cobra介绍K8s scheduler中初始化的源代码解析 调度框架介绍 这是官方对于v1.27调度框架的介绍文档:https://v1-27.docs.kubernetes.io/docs/…

地球行星UE5和UE4

地球行星,包含多种地球风格,可蓝图控制自转和停止,可材质自转. 支持版本4.21-5.4版本 下载位置:https://mbd.pub/o/bread/ZpWZm5lv b站工坊:https://gf.bilibili.com/item/detail/1105582041 _______________________…

Java学习【类与对象】

类和对象 开始我们就不讲那些把大象放冰箱需要几步来引入面向对象的例子了,直接上干货。 在Java中,类是对现实世界中某一类事物的抽象描述。它包含了该类事物的属性和方法。属性用于描述事物的状态,而方法则用于描述事物可以做的事情。对象也…

批量无人值守设备运维如何轻松搞定,设备授权和分组很关键

如今数字化时代,很多企业的一线业务依托无人值守的智能终端设备展开,这类设备的广泛使用可以帮助企业以较小的成本铺开大规模的业务,比如现在随处可见的智能售货机,商场的各类智能互动终端等等。 这类设备整体上可以降低业务开展…

注册测绘师历年真题及答案解析

点赞、留言、关注“地知通”公众号,免费获取注册测绘师历年真题及答案解析学习材料。 声明:转载此文不为商业用途。文字和图片版权归原作者所有,若有来源标注错误或侵犯了您的合法权益,请与我们联系,我们将及时处理&am…

RegExp魔法阵与Cookie记忆宫殿:JavaScript 中的秘密宝藏

个人主页:学习前端的小z 个人专栏:JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 🔆RegExp 🎲 1 什么是正则表达式 🎲2 创建…

Android11 InputDispatcher 分发事件流程分析

在 Android11 InputReader分析 一文中分析到,InputReader将数据放入iq队列后,唤醒InputDispatcher线程,执行InputDispatcher的dispatchOnce方法 //frameworks\native\services\inputflinger\dispatcher\InputDispatcher.cpp void InputDispa…

【MQTT】MQTT协议和相关概念介绍

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

转行网络安全的重要建议,助你顺利入门

目录 为什么写这篇文章 为什么我更合适回答这个问题 先问自己3个问题 1.一定要明确自己是否是真喜欢,还是一时好奇。 2.自学的习惯 3.选择网安、攻防这行的目标是什么? 确认无误后,那如何进入这个行业? 1.选择渗透测试集中…

Boost库的使用

1 下载与安装 1.1 下载 网址:Boost C Libraries 进入后选择自己需要的版本安装即可 1.2 安装 1.2.1 解压 1.2.2 编译安装 双击bootstrap.bat 这一步完成后会生成一个b2.exe文件 双击b2.exe文件运行(此步需要花费较长的时间) 之后再stag…

新增分类——后端

实现功能: 代码开发逻辑: 页面发送ajax请求,将新增分类窗口输入的数据以json形式提交到服务端服务端Controller接收页面提交的数据并调用Service将数据进行保存Service调用Mapper操作数据库,保存数据 代码实现: Con…

遇到如此反复的外贸客户,你可以这样做~

来源:宜选网,侵删 当你们遇到爽快的买家的时候,你是否有把握一定能把她拿下呢? 还是说即使客户很爽快,你也会耐心认真的沟通呢? 今天要和大家分享的这个买家,我本以为他是一个很爽快的买家&am…

前端使用Compressor.js实现图片压缩上传

前端使用Compressor.js实现图片压缩上传 Compressor.js官方文档 安装 npm install compressorjs使用 在使用ElementUI或者其他UI框架的上传组件时,都会有上传之前的钩子函数,在这个函数中可以拿到原始file,这里我用VantUI的上传做演示 a…

基于TRIZ理论的锂电池生产工艺优化思路

在能源科技迅猛发展的今天,锂电池作为重要的储能元件,其生产工艺的优化与革新显得尤为关键。本文将基于TRIZ理论,探讨锂电池生产工艺的优化路径,以期提升能源产业的效率与环保性。 TRIZ,即发明问题解决理论&#xff0…