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

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

在这里插入图片描述

前言

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

创建API密钥

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

调用文档

找到自己创建好的应用,点击发布详情,再点API调用,最后点OpenAPI的接口调用说明
接口调用说明地址: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,贺岁灵感模型,文本对话

  • 131
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 83
    评论
OWIN(Open Web Interface for .NET)是一种规范,它定义了.NET应用程序和Web服务器之间的接口。OWIN允许开发人员使用不同的Web服务器(例如IIS或自托管的Web服务器)来运行.NET应用程序。在使用OWIN时,应用程序不再依赖于特定的Web服务器,这使得应用程序更加灵活和可移植。 要使用OWIN处理API,您需要执行以下步骤: 1. 安装Microsoft.Owin NuGet包。此包包含了OWIN接口和中间件。 2. 添加一个OWIN启动类,该类实现了OwinStartup接口,并包含了一个Configuration方法,用于配置应用程序的中间件。例如: ``` using Microsoft.Owin; using Owin; [assembly: OwinStartup(typeof(MyWebApi.Startup))] namespace MyWebApi { public class Startup { public void Configuration(IAppBuilder appBuilder) { // 配置Web API HttpConfiguration config = new HttpConfiguration(); WebApiConfig.Register(config); appBuilder.UseWebApi(config); // 其他中间件配置 } } } ``` 3. 在Global.asax.cs文件中,删除Application_Start方法,并添加以下代码: ``` protected void Application_Start() { // 禁用Web API的默认路由 GlobalConfiguration.Configuration.MapHttpAttributeRoutes(); // 启用OWIN GlobalConfiguration.Configure(WebApiConfig.Register); } ``` 4. 在WebApiConfig.cs文件中,注册Web API路由: ``` public static void Register(HttpConfiguration config) { // Web API 路由 config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } ``` 5. 运行应用程序,并使用Web API客户端测试API。 这是一个基本的示例,您可以根据您的需要添加其他中间件和配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 83
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈小5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值