赞
踩
前段时间,百度文心一言&文心千帆大模型开放了API调用的测试,接下来,教大家申请测试资格并接入文心千帆大模型的API。
右上角点击注册,内容如实填写并完成实名认证。
注册与认证详细内容不再赘述。
进入文心一言&文心千帆大模型介绍页,点击申请体验
会进入填写问卷页,没有什么技巧,如实填写问卷信息即可,记得每一项要尽量详细,然后点击提交,接下来等待即可。
已经申请通过的会显示我这个页面。
不出意外的话,接下来一天两天内你会收到如下短信
收到信息代表你申请通过,并且会赠送一张20的券,可根据文档自行使用。
在这里你可以进行模型的体验与参数调节,具体功能请各位自行摸索。
众所都周知,百度的文心千帆大模型是通过access_key进行鉴权的,所以我们要调用API必须要申请一个access_key。
进入文心千帆大模型控制台,点击创建应用。
填写你要创建的应用信息,最下面还有个应用介绍,如实填写就好。
创建成功后,左侧选择应用列表,里面可以看到刚刚创建的应用,里面包含了AppID、API Key、Secret Key(需点击显示),这些请务必不要泄露。
我们需要API Key、Secret Key
复制这两个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 ,点击调试即可,参数与方法一一致。
这里面有每种语言的例程,可以直接复制修改。
官方文档提供了四个模型,其中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
-
}
-
}
项目开源地址: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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。