博主介绍: 大家好,我是想成为Super的Yuperman,互联网宇宙厂经验,17年医疗健康行业的码拉松奔跑者,曾担任技术专家、架构师、研发总监负责和主导多个应用架构。
技术范围: 目前专注java体系,有多年java、golang、.Net、DDD、软件架构、redis、nginx、tomcat、mysql、oracle等经验
业务范围: 对传统业务应用技术转型,从数字医院到区域医疗,从院内业务系统到互联网医院及健康服务,从公立医院到私立医院都有一些经历及理解
*** 为大家分享一些技术积累,欢迎交流合作 持续关注Yuperman ***
如何接入文心一言AI模型
完整介绍文心一言如何接入到业务系统中,帮助业务系统增加模型具有的智能功能、对话功能、机器人功能。
本文应用场景,文心一言分析体检报告异常项目并给出建议。
文章目录
前言
要如何接入文心一言呢,百度的文心一言是可以免费接入的,下面接介绍如何接入文心一言的模型,并提供接口给业务系统使用。文心一言企业服务由千帆大模型平台提供,包括推理服务及大模型微调等一系列开发和应用工具链。。
一、接入流程
- 注册百度账户,登录百度智能云千帆控制台
- 创建千帆应用
- 获取AppID、API Key、Secret Key
- 选择提供服务的模型
- 接入token接口
- 接入问答接口
- 开发接口提供给业务系统
二、获取文心一言AppID、API Key、Secret Key
1. 创建千帆应用
登录百度智能云:https://cloud.baidu.com/
2. 创建千帆应用
创建应用后,会生成API Key、Secret Key
3. 选择模型
选择文心一言中提供的李开复零一万物Yi-34B-Chat。
根据2023年底发布的《SuperCLUE中文大模型基准评测报告 2023》,11月下旬首度发布的 Yi-34B
Chat,迅速晋升到和诸多国产优秀大模型齐平的 “卓越领导者” 象限,在多项基准评测中的 “SuperCLUE 大模型对战胜率”
这项关键指标上,Yi-34B-Chat 取得31.82%的胜率,仅次于GPT4-Turbo。
三、接入模型接口
1. 生成token
请求该地址填入相应的key即可获取token
https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【API Key】&client_secret=【Secret Key】
/**
* 从用户的AK,SK生成鉴权签名(Access Token)
*
* @author Yuperman
*/
public String getAccessToken(){
String API_KEY = "O4d4mNSIt0GsAIe7E0JQ6rmY";
String SECRET_KEY = "5gVOrkYkR2y4XMa22PeyrH9caHUYvGnF";
String url = "https://aip.baidubce.com/oauth/2.0/token";
String param= "grant_type=client_credentials&client_id=" + API_KEY
+ "&client_secret=" + SECRET_KEY;
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody requestBody = RequestBody.create(mediaType,param);
Request request = new Request.Builder().url(url).addHeader("Content-Type", "application/x-www-form-urlencoded").post(requestBody).build();
String result = execute(request);
JSONObject data = JSONObject.parseObject(result);
return data.get("access_token").toString();
}
http请求类
private String execute(Request request) {
OkHttpClient okHttpClient =
new OkHttpClient()
.newBuilder()
.writeTimeout(100,TimeUnit.SECONDS)
.connectTimeout(100,TimeUnit.SECONDS)
.readTimeout(100, TimeUnit.SECONDS)
.build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
if (response.isSuccessful()) {
return response.body().string();
}
} catch (Exception e) {
System.out.println(e.toString());
} finally {
if (response != null) {
response.close();
}
}
return "";
}
2. 传入问题,返回模型结果
public String AiAnswer(String msg) throws IOException {
String url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/yi_34b_chat?access_token=" + getAccessToken();
msg = msg+"\n给出这份体检报告的异常项解读和健康建议";
JSONObject message = new JSONObject();
message.put("role", "user");
message.put("content", msg);
JSONArray messages = new JSONArray();
messages.add(message);
JSONObject requestBody = new JSONObject();
requestBody.put("messages", messages);
requestBody.put("disable_search", false);
requestBody.put("enable_citation", false);
System.out.println(requestBody.toString());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(org.springframework.http.MediaType.APPLICATION_JSON);
HttpEntity<String> requestEntity = new HttpEntity<>(requestBody.toString(), headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
String responseBody = responseEntity.getBody();
JSONObject data = JSONObject.parseObject(responseBody);
String result = data.get("result").toString();
System.out.println(result);
return result;
}
三、接入业务系统
1、按业务系统要求传入问题,获取模型分析结果
本文模拟使用入职体检的用户体检报告数据,通过模型分析异常项及健康建议。
四、结语
- 根据需要,可选择不同的模型,本文选择Yi-34B-Chat
- token的有效期是30天,生产环境需要提前更换
- 根据业务系统不同的需求接入文心一言模型