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

news2024/11/25 13:26:24

欢迎来到《小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,贺岁灵感模型,文本对话

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业短信群发被拦截的原因

企业短信群发作为一种高效的营销手段,被越来越多的企业所采用。也经常会面临被拦截的问题,这给企业带来了沉重的损失。本文将探讨企业群发被拦截的原因,并寻找解决办法。 频率过高 频率过高是导致企业群发被拦截的常见原因之一。当企业的频率…

淘宝扭蛋机小程序开发:探索未知,扭出惊喜

一、引领潮流,创新体验 在淘宝这片购物海洋中,我们总是寻求为您带来不一样的惊喜和乐趣。今天,我们正式推出淘宝扭蛋机小程序,将传统扭蛋的趣味与电商购物的便捷完美结合,为您带来前所未有的购物新体验。 二、扭蛋机…

摩菲Murphy显示器显示表 总线编程器维修PV780B

Murphy仪器维修包括:摩菲数字显示器;摩菲监视仪表;摩菲CAN总线控制器等维修 维修故障包括:黑屏、指示灯无显示,触摸屏上电无反应, 上电蓝屏、白屏,通电几分钟后屏幕变为蓝屏,主板故…

vue2后台管理项目

一:项目准备 1)拉取模板代码 远程仓库复制到本地仓库. 2)安装后的项目 路径 code 文件夹 会打开vscode的文件夹. 3)安装vetur和eslint插件可以保存时自动修改不规范的地方. 4)App内有一级路由,路由组件导入如果是layout架子,会导入的是文件夹下的index.js没有则导入index.v…

副业兼职没那么难,视频号带货,1天稳定500,适合新手操作

向大家推荐一个项目:视频号书单号带货玩法。我已经实践了一段时间,并成功售出了1200多单,赚取了2万多元。这个项目表现相当出色,强烈推荐给大家! 周周近财:让网络小白少花冤枉钱,赚取第一桶金 …

使用Three.js开发一个3D案例Demo

使用Three.js开发一个3D案例 最近在找工作,发现好多招聘要求都需要会Three.js,以前接触比较多的是2D开发,也就是平面开发,用到的做多的技术就是d3.js,现在3D开发已经成为了大势所趋,所以就学习下Three.js。…

我国结肠镜市场规模逐渐扩大 国产化率有所增长

我国结肠镜市场规模逐渐扩大 国产化率有所增长 结肠镜是专用于检查结肠内部的医疗器械,属于内窥镜的细分品类之一。结肠镜具有特殊的设计,可以检查结肠壁的状态、寻找肠道中的异常病变和息肉等,在筛查结肠癌、检测炎症性肠病等方面发挥着十分…

【深度学习Labelme】使用Segment Anything Model (SAM)快速打标,labelme多边形转yolo txt框看看对不对

文章目录 windows安装环境打开labelme自动保存勾选上,保存图片数据不要勾选选SAM精准模型,然后打开图片路径,然后点击创建AI多边形:鼠标点击确认物体控制点,确认完成后,双击鼠标完成选取,并给上…

各种数据获取stream流的方式

1.单列集合&#xff08;直接调用&#xff09; ArrayList<Integer> list new ArrayList<>();list.stream(); 2.双列集合 HashMap<String, Integer> map new HashMap<>();map.put("aaa",111);map.put("bbb",222);map.put("c…

101_Linux文件挂载系统相关

一、文件系统简介 传统的磁盘与文件系统应用中,一个分区就只能够被格式化成为一个文件系统,所以我们可以说一个文件系统就是一个硬盘分区。 随着新技术的出现如LMM与软件磁盘阵列software raid),这些技术可以将一个分区格式化为多个文件系统(例如LWM),也能够将多个分区合成一…

[图解]分层架构是DDD提出的吗

1 00:00:00,040 --> 00:00:02,640 今天我们来说一下分层架构 2 00:00:04,310 --> 00:00:06,730 我经常看到一些文章 3 00:00:06,740 --> 00:00:10,390 或者是在开发团队里面看到 4 00:00:10,400 --> 00:00:12,940 有开发人员说&#xff0c;分层架构 5 00:00:12…

centos7下fastdfs分布式部署

需要先在159及120服务器上安装fastdfs服务 可参考&#xff1a;centos7部署FastDFS服务_centos fastdfs 增加到服务中-CSDN博客 1、整体架构&#xff0c;使用3个服务器节点&#xff0c;其中两台为跟踪器节点及存储节点&#xff0c;一台服务器搭建nginx做统一入口进行负载均衡 …

机器学习算法应用——朴素贝叶斯分类器

朴素贝叶斯分类器 朴素贝叶斯分类器&#xff08;Naive Bayes Classifier&#xff09;是一种基于贝叶斯定理和特征条件独立假设的分类方法。它适用于分类任务&#xff0c;特别是文本分类、垃圾邮件识别等领域。 原理 朴素贝叶斯分类器基于以下两个主要假设&#xff1a; 特征条…

【Python】selenium爬虫常见用法和配置,以及常见错误和解决方法

欢迎来到《小5讲堂》 这是《Python》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言无执行文件代码报错信息错误路径手动下载自动下载 选项配置Ch…

CubeMX重写配置生成代码后注释出现乱码的解决方式

1.搜索环境变量 2.就是这里&#xff0c;每个版本Windows可能不太一样 3.新建 4.系统变量下面新建 变量&#xff1a;JAVA_TOOL_OPTIONS 值&#xff1a;-Dfile.encodingUTF-8 如果还不行&#xff0c;那我也没辙&#xff0c;哈哈。

python自动化生成ppt

使用Python和python-pptx创建PPT 在这篇博客中&#xff0c;我们将探讨如何使用Python库python-pptx来创建一个简单的PowerPoint演示文稿&#xff08;PPT&#xff09;。这个库允许我们以编程方式创建幻灯片、添加文本、图片、表格和自定义形状。 安装python-pptx 首先&#x…

springboot -多数据源管理方案

多数据源的配置有多种方式 方式一 、依赖dataSource的配置 1.建立多数据源配置 spring:# 数据源配置datasource:pdm:driver-class-name: oracle.jdbc.driver.OracleDriverjdbc-url: jdbc:oracle:thin:10.216.xxx.xxx:3000:orclusername: cfpdmpassword: capecapp:driver-cla…

kali卸载openjdk并安装 jdk1.8

一、卸载自带的openjdk 1.1、kali自带的 java 是 openjdk&#xff0c;如果需要开发安卓或者其他应用程序&#xff0c;则需要将 openjdk 换成 jdk1.8。 1.2、查看kali自带的openjdk版本 ┌──(root㉿kali)-[~] └─# java -version openjdk version "17.0.10" 2024…

Wireshark下载安装和使用教程

Wireshark下载安装和使用教程 Wireshark&#xff08;前身 Ethereal&#xff09;是一个网络包分析工具。该工具主要是用来捕获网络数据包&#xff0c;并自动解析数据包&#xff0c;为用户显示数据包的详细信息&#xff0c;供用户对数据包进行分析。 它可以运行在 Windows 和 L…

淘宝扭蛋机小程序:扭动未来,乐享购物新纪元

一、引言 在数字化浪潮中&#xff0c;淘宝始终走在创新的前沿&#xff0c;不断探索与尝试新的购物方式。今天&#xff0c;我们骄傲地推出淘宝扭蛋机小程序&#xff0c;以全新的视角和体验&#xff0c;让您在购物的同时感受到无尽的乐趣与惊喜。 二、探索未知的购物乐趣 淘宝…