当前位置: 首页 > article >正文

【JavaEE】—— SpringBoot项目集成百度千帆AI大模型(对话Chat V2)

本篇文章在SpringBoot项目中集成百度千帆提供的大模型接口实现Chat问答效果:

一、百度智能云

百度千帆大模型平台是百度智能云推出的一个企业级一站式大模型与AI原生应用开发及服务平台。

  • 注册地址:https://qianfan.cloud.baidu.com/

注册成功后,下载百度智能云APP进行实名认证

实名认证成功之后,进入到管理平台

进入管理平台后,找到应用接入,我们需要创建新的应用,只有创建了应用,后面才能让大模型来绑定应用并使用

输入应用必要的信息(应用名称、应用描述)

创建成功后,保存好APIkey和Secret Key

二、大模型API

大模型API官方文档:API列表 - ModelBuilder

我们本次采用ERNIE-4.0-8K-Preview

ERNIE 4.0是百度自研的旗舰级超大规模⼤语⾔模型,相较ERNIE 3.5实现了模型能力全面升级,广泛适用于各领域复杂任务场景;支持自动对接百度搜索插件,保障问答信息时效,支持5K tokens输入+2K tokens输出。

文档:https://github.com/baidubce/bce-qianfan-sdk/tree/main/java

部分关键参数:

名称

类型

必填

描述

messages

List[dict]

对话信息,messages": [ {"role": "user","content": "你好"}]

message中的content总长度和system字段总内容不能超过20000个字符,且不能超过5120 tokens

model

string

模型名称,用于指定平台支持预置服务的模型,说明:该字段为固定值ERNIE-4.0-8K-Preview(必须开通付费)

temperature

float

大模型的采样参数,

(1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定

(2)默认0.8,范围 (0, 1.0],不能为0

max_output_tokens

int

指定模型最大输出token数,说明:

(1)如果设置此参数,范围[2, 2048]

(2)如果不设置此参数,最大输出token数为1024

response_format

string

指定响应内容的格式,说明:

(1)可选值:

· json_object:以json格式返回,可能出现不满足效果情况

· text:以文本格式返回

(2)如果不填写参数response_format值,默认为text

三、具体使用

1、引入依赖

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

2、封装工具类(核心)

封装一个调用API的工具类。

  • .chatCompletion() 开始构建一个聊天完成请求。

  •  .model(baiduAIProperties.getQianfanModel()) 设置了要使用的模型名称,这个名称通常是预先在百度AI平台配置好的模型。

  •  .addMessage("user", prompt) 添加了一条消息到对话中,角色为 "user",内容是传入的 prompt 参数。

  •  .temperature(0.7) 设置了采样随机性,数值越大意味着输出越随机,数值越小则输出越确定。这里设置为0.7

  •  .maxOutputTokens(2000) 指定了生成的最大token数,即最大输出长度。这里设置为2000个token。

  •  .execute() 执行请求并接收响应。

@Component
@Slf4j
public class AIModelInvoker {
    @Autowired
    private BaiduAIProperties baiduAIProperties;

    public String qianfanInvoker(String 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)
                .execute();
        String result = response.getResult();

        return result;
    }
}

为了便于维护,将配置写在配置文件中

@Data
@Configuration
@ConfigurationProperties(prefix = "baidu")
public class BaiduAIProperties {
    private String accessKey;
    private String secretKey;
    private String qianfanModel;
}

application.yml文件:注意把key换成自己的

3、业务层

以下代码仅供参考

前端请求示例:

{

"input":"你好"

}

响应示例:

{

"message":"你好,如果你有任何问题或需要帮助,请随时告诉我,我会尽力回答你的问题。"

}

controller层

@RestController
@RequestMapping("/chat")
public class ChatController {
    @Autowired
    private ChatService chatService;

    @PostMapping("/list")
    public ChatVo getChatMessage(@RequestBody Chat chat){
        return chatService.getChatMessage(chat);
    }
}

service层

@Service
public interface ChatService {
    ChatVo getChatMessage(Chat chat);
}
@Service
public class ChatServiceImpl implements ChatService {
    @Autowired
    private AIModelInvoker aiModelInvoker;
    @Override
    public ChatVo getChatMessage(Chat chat) {
        String result = aiModelInvoker.qianfanInvoker(chat.getInput());
        ChatVo chatVo = new ChatVo();
        chatVo.setMessage(result);
        return chatVo;
    }
}


http://www.kler.cn/a/487901.html

相关文章:

  • Ubuntu 20.04安装gcc
  • imageio 图片转mp4 保存mp4
  • java mail 535 Login Fail. Please enter your authorization code to login
  • DAY15 神经网络的参数和变量
  • 测试ip端口-telnet开启与使用
  • 如何在 Ubuntu 22.04 上安装 Cassandra NoSQL 数据库教程
  • SpringCloud系列教程:微服务的未来(十一)服务注册、服务发现、OpenFeign快速入门
  • Web基础之什么是HTTP协议
  • JavaSE——网络编程
  • Python基于YOLOv8和OpenCV实现车道线和车辆检测
  • 有机物谱图信息的速查技巧有哪些?
  • 【2025最新计算机毕业设计】基于SpringBoot+Vue奶茶点单系统(高质量源码,提供文档,免费部署到本地)
  • vue3+element-plus暗黑模式切换动画圆弧过渡
  • linux nginx 安装后,发现SSL模块未安装,如何处理?
  • Mumu模拟器和Frida
  • 【读点论文】DepGraph: Towards Any Structural Pruning通用的结构化剪枝框架,处理结构化剪枝的图依赖问题
  • 20250109使用M6000显卡在Ubuntu20.04.6下跑whisper来识别中英文字幕
  • Vue 2 提取可复用 Footer 组件
  • L1G5000 XTuner 微调个人小助手认知
  • 【Vue.js 组件化】高效组件管理与自动化实践指南
  • vs2022开发.net窗体应用开发环境安装配置以及程序发布详细教程
  • STM32 : PWM 基本结构
  • [network]回顾:集线器(Hub)
  • poi-tl+kkviewfile实现生成pdf业务报告
  • 深入Android架构(从线程到AIDL)_21 IPC的Proxy-Stub设计模式03
  • 【C++】C++11(二)