如何申请文心一言&文心千帆大模型API调用资格、获取access_token,并使用SpringBoot接入文心一言API

如何申请文心一言&文心千帆大模型API调用资格、获取access_token,并使用SpringBoot接入文心一言API

    正在检查是否收录...

前段时间,百度文心一言&文心千帆大模型开放了API调用的测试,接下来,教大家申请测试资格并接入文心千帆大模型的API。

一、文心一言&文心千帆的测试资格申请

1. 确保拥有一个百度智能云的账号

右上角点击注册,内容如实填写并完成实名认证。

 注册与认证详细内容不再赘述。

2. 文心千帆大模型资格申请

进入文心一言&文心千帆大模型介绍页,点击申请体验

会进入填写问卷页,没有什么技巧,如实填写问卷信息即可,记得每一项要尽量详细,然后点击提交,接下来等待即可。

已经申请通过的会显示我这个页面。

 不出意外的话,接下来一天两天内你会收到如下短信

收到信息代表你申请通过,并且会赠送一张20的券,可根据文档自行使用。

3.(可选,非必要)文心千帆控制台

在这里你可以进行模型的体验与参数调节,具体功能请各位自行摸索。

二、获取文心千帆的access_token

众所都周知,百度的文心千帆大模型是通过access_key进行鉴权的,所以我们要调用API必须要申请一个access_key。

1.创建应用,获取API Key与Secret Key

 进入文心千帆大模型控制台,点击创建应用。

填写你要创建的应用信息,最下面还有个应用介绍,如实填写就好。

 创建成功后,左侧选择应用列表,里面可以看到刚刚创建的应用,里面包含了AppID、API Key、Secret Key(需点击显示),这些请务必不要泄露。

 我们需要API Key、Secret Key

2. 获取access_token

方法一:浏览器发送请求

复制这两个Key,并替换下面链接的 [API Key] 与 [Secret Key] 

https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]

例如:

https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=ad456sa4d5fhr5kfh&client_secret=df45d14g5xsdtsc

浏览器访问这个链接,你会得到一个json报文

我们需要关心的是这两个键值对, expires_in 与 access_token 

expires_in:Access Token的有效期(秒为单位,默认有效期30天)

access_token:要获取的Access Token;

方法二:百度在线调试工具

在线调试工具

左侧输入 API Key 与 Secret Key ,点击调试即可,参数与方法一一致。

方法三:编写发送请求

在线调试工具

这里面有每种语言的例程,可以直接复制修改。

三、接入文心一言API

官方文档

官方文档提供了四个模型,其中ErnieBot就是我们熟悉的文心一言,我们以这个为例,其他的与之类似或相同。

作为Java程序员,我就分别以一个 Java 程序和 SpringBoot 应用为例介绍怎么接入。

方法一:原生接入(不推荐)

按照官方文档,使用Hutool的HttpUtils工具类或者是其他的Http客户端接入,这样可以获得最大的自由度,但是即为麻烦,并且流式返回处理较为复杂,需使用Flux响应式来做,比较麻烦,我用一个原生Java程序演示一下:

public static void main(String[] args) { String url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions"; String accessToken = "你的access_token"; HashMap<String, String> msg = new HashMap<>(); msg.put("role", "user"); msg.put("content", "请介绍一下你自己"); ArrayList<HashMap> messages = new ArrayList<>(); messages.add(msg); HashMap<String, Object> requestBody = new HashMap<>(); requestBody.put("messages", messages); String response = HttpUtil.post(url + "?access_token=" + accessToken, JSONUtil.toJsonStr(requestBody)); System.out.println(response); }

输出内容:

{ "id": "as-mibg24yygj", "object": "chat.completion", "created": 1690270732, "result": "您好,我是文心一言,英文名是ERNIE Bot。我能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。", "is_truncated": false, "need_clear_history": false, "usage": { "prompt_tokens": 8, "completion_tokens": 49, "total_tokens": 57 } }

 方法二:使用现成的spring-boot-starter

项目开源地址:https://github.com/gemingjia/gear-wenxinworkshop-starter

1. 创建一个 SpringBoot 应用程序(建议选择JDK17)。 

2. 引入maven坐标:

<dependency> <groupId>io.github.gemingjia</groupId> <artifactId>gear-wenxinworkshop-starter</artifactId> <version>0.0.6</version> </dependency>

3. 新建一个Controller

@RestController public class ChatController { // 要调用的模型的客户端 @Resource private ErnieBotClient ernieBotClient; // 单次对话 @PostMapping("/chat") public BaseResponse<String> chatSingle(String msg) { ChatResponse response = ernieBotClient.chatSingle(msg); return BaseResponse.success(response.getResult()); } // 连续对话 @PostMapping("/chats") public BaseResponse<String> chatCont(String msg) { String chatUID = "test-user-1001"; ChatResponse response = ernieBotClient.chatCont(msg, chatUID); return BaseResponse.success(response.getResult()); } // 流式返回,单次对话 @PostMapping(value = "/stream/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public Flux<ChatResponse> chatSingleStream(String msg) { Flux<ChatResponse> chatResponseFlux = ernieBotClient.chatSingleOfStream(msg); return chatResponseFlux; } // 流式返回,连续对话 @PostMapping(value = "/stream/chats", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public Flux<ChatResponse> chatContStream(String msg, String msgUid) { Flux<ChatResponse> chatResponseFlux = ernieBotClient.chatContOfStream(msg, msgUid); return chatResponseFlux; } }
@Data public class BaseResponse<T> implements Serializable { private int code; private T data; private String message; public static <T> BaseResponse<T> success(T data) { BaseResponse<T> resp = new BaseResponse<>(); resp.setData(data); resp.setCode(HttpStatus.OK.value()); return resp; } public static <T> BaseResponse<T> error(int errorCode, String message) { BaseResponse<T> resp = new BaseResponse<>(); resp.setCode(errorCode); resp.setMessage(message); return resp; } }

4. 运行起来,发送请求试一下

这是ErnieBot模型的演示,此外starter还提供了ErnieBotClient、ErnieBotTurboClient、Bloomz7BClient 三中模型的客户端,可自行选择使用。

如果这个starter帮助您节省了一部分的时间,还请点个star哦~

 项目开源地址&文档:https://github.com/gemingjia/gear-wenxinworkshop-starter

chatcodetokenclibotapi大模型atsappivabaidugiturljavagithub客户端jsontpuguioauthspringboot连续对话浏览器stem对话互动回答问题程序员api调用响应式高效便捷prompt应用程序create模型控制百度智能百度文心
  • 本文作者:李琛
  • 本文链接: https://wapzz.net/post-382.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
本站部分内容来源于网络转载,仅供学习交流使用。如涉及版权问题,请及时联系我们,我们将第一时间处理。
文章很赞!支持一下吧 还没有人为TA充电
为TA充电
还没有人为TA充电
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
2.3W+
5
0
1
WAP站长官方

抖音即创app地址入口 即创公测版AI自动剪辑软件下载

上一篇

星巴克在中国成立创新科技公司:注册资本2.22亿 含AI软件开发

下一篇
  • 复制图片
按住ctrl可打开默认菜单