百度千帆AI大模型的认识

177 阅读7分钟

首先大模型是什么?

“大模型”(Foundation Model)是指基于海量数据训练出来的通用人工智能模型。它们是拥有庞大的参数规模,通常达到百亿、千亿级别,具备强大的泛化能力,能够适应多种任务,并支持微调以满足特定应用需求。

一句话

百度千帆AI大模型平台是企业级人工智能解决方案,其核心定位是"AI生产的基础设施"。

百度千帆AI大模型

结合分析流程

image.png Ai大模型3.

百度智能云

  1. 大模型API说明

messagesList[dict]对话信息,messages": [ {"role": "user","content": "你好"}]message中的content总长度和system字段总内容不能超过20000个字符,且不能超过5120 tokens
modelstring模型名称,用于指定平台支持预置服务的模型,说明:该字段为固定值ERNIE-4.0-8K-Preview(必须开通付费)
temperaturefloat大模型的采样参数,(1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定(2)默认0.8,范围 (0, 1.0],不能为0
max_output_tokensint指定模型最大输出token数,说明:(1)如果设置此参数,范围[2, 2048](2)如果不设置此参数,最大输出token数为1024
response_formatstring指定响应内容的格式,说明:(1)可选值:· json_object:以json格式返回,可能出现不满足效果情况· text:以文本格式返回(2)如果不填写参数response_format值,默认为text

java怎样集成ai大模型

官网

SDK安装及使用 - ModelBuilder

1.引入依赖

<dependency>
    <groupId>com.baidubce</groupId>
    <artifactId>qianfan</artifactId>
    <version>0.1.1</version>
</dependency>

然后2. 参考官方示例(cloud.baidu.com/doc/WENXINW…

选择所需的模型如下

package com.zzyl.test;

import com.baidubce.qianfan.Qianfan;
import com.baidubce.qianfan.core.auth.Auth;
import com.baidubce.qianfan.model.chat.ChatResponse;

public class AIModelTest {

    private static final String prompt = "你能帮我分析一份完整的体检报告吗?";

    public static void main(String[] args) {
        /**
* 第一个参数:认证类型,固定选择 Auth.TYPE_OAUTH
* 第二个参数:accessKeyId,从百度云控制台创建的应用里可以找到
* 第三个参数:accessKeySecret,从百度云控制台创建的应用里可以找到
*/
Qianfan qianfan = new Qianfan(Auth.TYPE_OAUTH, "xEO9h4cswlghfdfdUiYpkNt", "T68lkk7XuyfgfdgfdWtCQcFCVkd2HnZuKH");
        ChatResponse response = qianfan.chatCompletion()
                .model("ERNIE-4.0-8K-Preview") // 模型名称,要选择自己开通付费的模型
                .addMessage("user", prompt) //(必填) 聊天内容,可以设置多个,每个消息包含role(角色,user表示用户,assistant表示模型),content(消息内容)
//                .temperature(0.7) // 采样参数,取值范围(0,1]
//                .maxOutputTokens(2000) // 模型输出最大长度,取值范围[2, 2048]
//                .responseFormat("json_object")  // 模型输出格式,取值范围:text(文本)、json_object(JSON对象)
                  .execute();
        String result = response.getResult();
        System.out.println(result);
    }
}

设计提示词 Prompt的构成部分:

  • 角色:给 AI 定义一个最匹配任务的角色,比如:「你是一位软件工程师」「你是一位小学老师」
  • 指示:对任务进行描述
  • 上下文:给出与任务相关的其它背景信息(尤其在多轮交互中)
  • 例子:必要时给出举例,[实践证明例子对输出正确性有帮助]
  • 输入:任务的输入信息;在提示词中明确的标识出输入
  • 输出:输出的格式描述,以便后继模块自动解析模型的输出结果,比如(JSON、Java)

- 例子

请以一个专业医生的视角来分析这份体检报告,报告中包含了一些异常数据,我需要您对这些数据进行解读,并给出相应的健康建议。 体检内容如下:

内容略....

要求: 1. 提取体检报告中的“总检日期”;

  1. 通过临床医学、疾病风险评估模型和数据智能分析,给该用户的风险等级和健康指数给出结果。风险等级分为:健康、提示、风险、危险、严重危险。健康指数范围为0至100分;
  2. 根据用户身体各项指标数据,详细说明该用户各项风险等级的占比是多少,最多保留两位小数。结论格式:该用户健康占比20.00%,提示占比20.00%,风险占比20%,危险占比20%,严重危险占比20%;
  3. 对于体检报告中的异常数据,请列出(异常数据的结论、体检项目名称、检查结果、参考值、单位、异常解读、建议)这7字段。解读异常数据,解决这些数据可能代表的健康问题或风险。分析可能的原因,包括但不限于生活习惯、饮食习惯、遗传因素等。基于这些异常数据和可能的原因,请给出具体的健康建议,包括饮食调整、运动建议、生活方式改变以及是否需要进一步检查或治疗等。 结论格式:异常数据的结论:肥胖,体检项目名称:体重指数BMI,检查结果:29.2,参考值>24,单位:-。异常解读:体重超标包括超重与肥胖。体重指数(BMI)=体重(kg)/身⾼(m)的平⽅,BMI≥24为超重,BMI≥28为肥胖;男性腰围≥90cm和⼥性腰围≥85cm为腹型肥胖。体重超标是⼀种由多因素(如遗传、进⻝油脂较多、运动少、疾病等)引起的慢性代谢性疾病,尤其是肥胖,已经被世界卫⽣组织列为导致疾病负担的⼗⼤危险因素之⼀。AI建议:采取综合措施预防和控制体重,积极改变⽣活⽅式,宜低脂、低糖、⾼纤维素膳⻝,多⻝果蔬及菌藻类⻝物,增加有氧运动。若有相关疾病(如⾎脂异常、⾼⾎压、糖尿病等)应积极治疗。 5. 根据这个体检报告的内容,分别给人体的8大系统打分,每项满分为100分,8大系统分别为:呼吸系统、消化系统、内分泌系统、免疫系统、循环系统、泌尿系统、运动系统、感官系统 6. 给体检报告做一个总结,总结格式:体检报告中尿蛋⽩、癌胚抗原、⾎沉、空腹⾎糖、总胆固醇、⽢油三酯、低密度脂蛋⽩胆固醇、⾎清载脂蛋⽩B、动脉硬化指数、⽩细胞、平均红细胞体积、平均⾎红蛋⽩共12项指标提示异常,尿液常规共1项指标处于临界值,⾎脂、⾎液常规、尿液常规、糖类抗原、⾎清酶类等共43项指标提示正常,综合这些临床指标和数据分析:肾脏、肝胆、⼼脑⾎管存在隐患,其中⼼脑⾎管有“⾼危”⻛险;肾脏部位有“中危”⻛险;肝胆部位有“低危”⻛险。 输出要求: 最后,将以上结果输出为JSON格式,不要包含其他的文字说明,所有的返回结果都是json,详细格式如下:
{ "totalCheckDate": "YYYY-MM-DD", "healthAssessment": 
{ "riskLevel":
"healthy/caution/risk/danger/severeDanger", "healthIndex": XX.XX }
, "riskDistribution": 
{ "healthy": XX.XX, 
"caution": XX.XX, 
"risk": XX.XX, 
"danger": XX.XX,
"severeDanger": XX.XX }, 
"abnormalData": [
{ "conclusion": "异常数据的结论",
"examinationItem": "体检项目名称",
"result": "检查结果", 
"referenceValue": "参考值", "unit": "单位", 
"interpret":"对于异常的结论进一步详细的说明", 
"advice":"针对于这一项的异常,给出一些健康的建议" }
],
"systemScore": {
"breathingSystem": XX, 
"digestiveSystem": XX, 
"endocrineSystem": XX, 
"immuneSystem": XX, 
"circulatorySystem": XX, 
"urinarySystem": XX, 
"motionSystem": XX, "senseSystem": XX 
}, 
"summarize": "体检报告的总结" }

2. #### 抽取大模型调用工具

由于上述逻辑中,我们需要使用千帆大模型来分析体检报告,所以,我们提前来准备一下代码的封装

  1. 一些可变的参数,在application.yml文件中定义,在application.yml文件中定义内容,如下:
  2. 可以在配置文件中配置
# 百度千帆大模型配置
baidu:
 accessKey: xEO9h4csw9zWlUiYpkNt(换成你自己的哦)
 secretKey: T67Xuyx9JoCQcFCVkd2HnZuKH(换成你自己的哦)
 qianfanModel: ERNIE-4.0-8K-Preview

定义properties类来方便读取配置

package com.zzyl.common.ai;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Data
@Configuration
@ConfigurationProperties(prefix = "baidu")
public class BaiduAIProperties {

    private String accessKey;
    private String secretKey;
    private String qianfanModel;

}

参考之前集成千帆大模型的方式,在项目模块下新增一个类选自己想要的模型

package com.zzyl.common.ai;

import com.baidubce.qianfan.Qianfan;
import com.baidubce.qianfan.core.auth.Auth;
import com.baidubce.qianfan.model.chat.ChatResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class AIModelInvoker {

    @Autowired
    private BaiduAIProperties baiduAIProperties;

    public String qianfanInvoker(String prompt) {
        System.out.println(prompt);
        Qianfan qianfan = new Qianfan(Auth.TYPE_OAUTH, baiduAIProperties.getAccessKey(), baiduAIProperties.getSecretKey());
        ChatResponse response = qianfan.chatCompletion()
                .model(baiduAIProperties.getQianfanModel())
                .addMessage("user", prompt)
                .temperature(0.7)
                .maxOutputTokens(2000)
                .responseFormat("json_object")
                .execute();
        String result = response.getResult();

        return result;
    }

}