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

embedded/2025/1/11 8:16:31/

本篇文章在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() 执行请求并接收响应。

java">@Component
@Slf4j
public class AIModelInvoker {@Autowiredprivate 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 {@Autowiredprivate 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 {@Autowiredprivate AIModelInvoker aiModelInvoker;@Overridepublic ChatVo getChatMessage(Chat chat) {String result = aiModelInvoker.qianfanInvoker(chat.getInput());ChatVo chatVo = new ChatVo();chatVo.setMessage(result);return chatVo;}
}


http://www.ppmy.cn/embedded/152954.html

相关文章

手机租赁平台开发全解析 让租赁变得更简单便捷

内容概要 手机租赁市场近年来发展迅猛&#xff0c;越来越多的人开始依赖租赁服务来满足他们对智能设备的需求。要知道&#xff0c;这可不仅仅是为了省钱&#xff0c;还是为了体验最新科技的便捷方式。 让我们一起探索这个扬帆起航的市场吧&#xff01; 在开发一个高效的手机租…

Http请求响应——请求

Http概述 Http协议&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;&#xff0c;是一种用于传输网页数据的协议&#xff0c;规定了浏览器和服务器之间进行数据传输的规则&#xff0c;简单说来就是客户端与服务器端数据交互的数据格式。 客户端…

GoLand 如何集成 Netty?

目录 1.回答问题&#xff1a; 2.以下是实现类似 Netty 功能的步骤&#xff1a; 2.1 实现基本的网络通信功能&#xff1a; 3. 使用 Go 的第三方库实现 Netty 功能 4.实现类似 Netty 的事件循环&#xff1a; 5. 运用场景&#xff1a; 1.回答问题&#xff1a; 要在 GoLand 中…

我在广州学 Mysql 系列——存储过程与存储函数详解

ℹ️大家好&#xff0c;我是练小杰&#xff0c;今天周五了&#xff0c;一周就这样从手上溜走了&#xff0c;还有两星期过年&#xff01;&#xff01; 本文将学习MYSQL中存储过程与存储函数的概念~~ 回顾&#xff1a;&#x1f449;【索引详解】【索引相关练习】 数据库专栏&…

数据结构——栈的实现

今天&#xff0c;我们来写一下关于栈的博文。 1.首先我们先了解一下什么是栈&#xff1f; 一&#xff1a;概念&#xff1a; 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端称为栈顶&#xff0c;另…

英伟达多维进击汽车业务:自动驾驶时代已至

英伟达此次发布的第四代Thor智驾计算平台&#xff0c;算力是上一代Orin平台的20倍。借助Thor&#xff0c;英伟达为车载计算机提供了强大的实时计算能力&#xff0c;支持多传感器融合&#xff0c;实现自动驾驶L4甚至L5级别的能力。2026财年&#xff0c;英伟达还将推出世界基础模…

doris:模型注意事项

建表时列类型建议​ Key 列必须在所有 Value 列之前。 尽量选择整型类型。因为整型类型的计算和查找效率远高于字符串。 对于不同长度的整型类型的选择原则&#xff0c;遵循够用即可。 对于 VARCHAR 和 STRING 类型的长度&#xff0c;遵循够用即可。 聚合模型的局限性​ …

如何修复三方库bug:marked.js 15.0.6 bug修复经过

marked一个非常流行的markdown格式解析器。 它在npmjs上的周下载量达500万之巨。 在其最新的version 15.0.6版本&#xff08;2025年1月8日使用&#xff09;&#xff0c;有处小bug&#xff1a;当在窄屏显示状态下&#xff0c;如手机端。代码会超出所在div&#xff0c;超出部分内…