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

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

一、百度智能云

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

注册成功后,下载百度智能云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、引入依赖

XML 复制代码
<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() 执行请求并接收响应。

java 复制代码
@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;
    }
}

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

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

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

3、业务层

以下代码仅供参考

前端请求示例:

{

"input":"你好"

}

响应示例:

{

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

}

controller层

java 复制代码
@RestController
@RequestMapping("/chat")
public class ChatController {
    @Autowired
    private ChatService chatService;

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

service层

java 复制代码
@Service
public interface ChatService {
    ChatVo getChatMessage(Chat chat);
}
java 复制代码
@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;
    }
}
相关推荐
诸神缄默不语5 分钟前
Java SE 与 Java EE 简介
java·数据库·java-ee·java se
Yicsr12 分钟前
在Visual Studio中编译.c文件和.cpp文件主要有哪些不同
java·c语言·visual studio
开心呆哥21 分钟前
【python翻译软件V1.0】
java·服务器·python
TANGLONG2221 小时前
【C++】揭开C++类与对象的神秘面纱(首卷)(类的基础操作详解、实例化艺术及this指针的深究)
java·开发语言·数据结构·c++·python·考研·面试
GGBondlctrl1 小时前
【SpringAOP】Spring AOP 底层逻辑:切点表达式与原理简明阐述
java·后端·代理模式·spring aop·切点表达式
学习中的程序媛~1 小时前
利用AI大模型和Mermaid生成流程图
java·python
喜欢猪猪1 小时前
大厂架构之极致缓存策略实战与原理剖析
java·后端·spring
胤胤爸1 小时前
Android ndk-jni语法—— 4
android·java·前端
程序员buddha2 小时前
2025年华为OD上机考试真题(Java)——数组连续和
java·开发语言·华为od