如何快速在项目中集成AI功能:AI信箱工具使用
- 其他
- 2025-08-31 10:27:02

AI的使用目前已经非常普遍了,那么作为程序员的我们,改如何在自己的项目中集成AI相关的功能呢?
1. 获取apikey和baseurl想要完成一次AI的api调用,我们必须要在官网中获取身份认证信息apikey和请求的url,这里更推荐阿里云百炼平台,不仅包含阿里自己研发的通义千问大模型,还包括很多其他模型的调用。尤其是在deepseek官网api目前不够稳定的情况下,阿里云百炼还能稳定的提供deepseek相关的模型调用接口。最重要的是新人开通免费给大量的使用token,非常适合新人学习或尝鲜。
1.1 首先进入阿里云官网( .aliyun /),登录账号,完成个人认证。 1.2 在产品中选择百炼,进入百炼平台点击管理控制台进入
1.3 开通阿里云百炼新人右下角应该有开通提示,或者其他地方有提示,记不清了,反正只要完成个人认证,就能进行开通,获取大量的试用token
1.4 获取baseurl在模型广场中有api调用示例,可以在其中获取baseurl
1.5 获取apikey点击右上角用户图标,进入apikey界面
选择创建我的apikey,即可获取
2. 使用AI信箱工具,完成AI调用在获取了请求地址和apikey之后,就可以开始调用AI接口了,不过AI接口调用的请求体和请求头的组装,以及AI信息的管理,都非常繁琐,这里我推荐使用AI信箱工具来完成这一过程。
AI信箱致力于封装复杂,但逻辑基本重复的AI调用功能以及对于AI交互信息的管理功能,让程序开发者能够像AI使用者一样,只需要向API发送一句话,即可以得到根据上下文信息推演的AI回答。AI信箱主要向调用者提供两个功能:
对多AI的访问接口维护,只需要通过简单的配置和方法调用,即可完成对多种AI接口的一次完整调用。是对用户和AI交互信息的维护。 2.1 调用前准备 在pom文件中添加如下依赖 <dependency> <groupId>io.gitee.du-xiuhuan</groupId> <artifactId>ai-mailbox</artifactId> <version>1.0.1</version> </dependency> 在springboot主类上引入启动类 //通过import注解引入MailBoxStarter启动类 @Import(MailBoxStarter.class) @SpringBootApplication(scanBasePackages = "com.mailbox") public class BaichuanAiServerApplication { public static void main(String[] args) { SpringApplication.run(BaichuanAiServerApplication.class, args); } } 添加相关配置 # datasource spring.datasource.url=jdbc:postgresql://127.0.0.1:/mailbox spring.datasource.username= spring.datasource.password= spring.datasource.driver-class-name=org.postgresql.Driver #apikeyList记录了所有模型请求时所对应的apikey,需要自行从官网,获取。AI信箱获取apikey的逻辑是;分割多个对应关系,:分割对应关系的左右两侧。所有队对于某些提供了多AI接口调用的平台(如阿里云百炼),可以将多个AI写入:左侧,然后只提供一个apikey即可。 mailbox.apikeyList=deepseek-r1,deepseek-v3,qwen-plus,qwen-max,qwen-turbo,qwen-long:sk-447fdcdhasacuaewnicwcaooica3fbbb87b; #原理同上,记录了对应模型需要请求的url mailbox.urlList=deepseek-r1,deepseek-v3,qwen-plus,qwen-max,qwen-turbo,qwen-long: dashscope.aliyuncs /compatible-mode/v1/chat/completions; #不同的接口提供防,虽然提供的请求体参数类似,但是请求体中消息的排列顺序却有不同。默认以阿里云百炼提供的为准,也就是时间正序排列,新发的消息在下面,对于一些相反的平台(如deepseek官网),可以将这个参数设置为true,反转消息顺序。 mailbox.build-request-body.is-reserver=false 2.2 使用AI信箱发起AI调用AI信箱对AI的接口调用逻辑进行了封装,这使得开发者只需要调用简单的方法调用即可完成一次Ai接口调用,实例如下:
import io.gitee.duxiuhuan.mailbox.outter.TalkWithAIUtils; import io.gitee.duxiuhuan.mailbox.service.entries.QuestionResult; import io.gitee.duxiuhuan.mailbox.utils.IdUtils; import io.gitee.duxiuhuan.mailbox.service.entries.QuestionResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody; @Service public class QuestionServiceimpl implements QuestionService { //引入AI信箱的AI对话工具类 @Autowired TalkWithAIUtils talkWithAIUtils; @Override public QuestionResult question(String message, Long userId, Long sessionId, String model) { if (sessionId == null ){ sessionId = IdUtils.generateId(); } //直接调用question方法,传入用户说的话,用户id,当前用户对话所在的会话id,想要交流的模型,以及表id(对于AI的信息管理需要分表,实例中是基于用户分表,具体分表后面会说) Long tableId = userId; return talkWithAIUtils.question(message, userId, sessionId, model, tableId); } @Override public StreamingResponseBody questionStream(String message, Long userId, Long sessionId, String model) { if (sessionId == null ){ sessionId = IdUtils.generateId(); } //调用questionStream方法可以调用AI对话的流式接口,该方法返回了一个StreamingResponseBody类型实例,这是Springmvc提供的流式接口方案,直接将返回的StreamingResponseBody类型实例响应给客户端,即可实现逐字返回给客户端,当然你也可以对其进行封装,具体需要了解springmvc的相关知识。 Long tableId = userId; return talkWithAIUtils.questionStream(message, userId, sessionId, model, tableId); } }通常AI接口调用需要将上下文信息全部传入,维护,查询,使用这些信息都相当麻烦。AI信箱内部对这些信息进行了管理,并且在调用时自动查询相关上下文,组成请求体,这使得开发者只需要传入最新的对话,既可以得到关联上下文的AI推演结果。一条完整的信息结构如下:
public class MessageInfo { //信息id(唯一) private Long id; //当前信息的所属用户id(AI调用时不发挥作用) private Long userId; //会话id(可以自定义概念,比如说你想要在聊天室中加入AI,可以一个聊天室作为一个sessionId) private Long sessionId; //判断当前信息是用户还是AI发出的 private Integer userOrSystem; //是哪个模型的回答 private String model; //具体信息内容 private String content; //创建时间 private Date createTime; }除此之外,对于大量的信息,不能单单只靠一张数据库表来进行处理,不同情况下,需要不同的分表来提供更良好的查询性能,开发者需要自行管理分表逻辑,并给每个逻辑单元对应一条表ID(就是AI交互功能是传入的最后一个参数)。AI信息会基于这个ID去创建对应的表。(注意,分表的最小单元是sessionId,也就是相同的sessionId不能被分到不同的表中);
AI信箱提供统一工具类来让开发者可以灵活的使用这些信息,实例如下:
import io.gitee.duxiuhuan.mailbox.database.entries.MessageInfo; import io.gitee.duxiuhuan.mailbox.outter.MessageManagerUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; @Service public class SessionServiceimpl { //引入消息管理工具类 @Autowired MessageManagerUtils messageManagerUtils; public List<MessageInfo> getContent(Long userId, Long sessionId) { //组成messageInfo实例,用来进行查询 MessageInfo messageInfo = new MessageInfo(); messageInfo.setSessionId(sessionId); //调用selectMessage方法,传入表名和messageInfo实例 Long tableId = userId; List<MessageInfo> messageInfos = messageManagerUtils.selectMessage(tableId, messageInfo); return messageInfos; } }除此之外,还提供对信息的增删功能,都是MessageManagerUtils工具类的方法,示例如下:
package com.mailbox.server.service.impl; import io.gitee.duxiuhuan.mailbox.database.entries.MessageInfo; import io.gitee.duxiuhuan.mailbox.outter.MessageManagerUtils; import com.mailbox.server.database.SessionMapper; import com.mailbox.server.database.entries.Session; import com.mailbox.server.service.SessionService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; @Service public class SessionServiceimpl extends ServiceImpl<SessionMapper, Session> implements SessionService { @Autowired MessageManagerUtils messageManagerUtils; @Override public List<MessageInfo> getContent(Long userId, Long sessionId) { //根据会话id查询会话表内容 MessageInfo messageInfo = new MessageInfo(); messageInfo.setSessionId(sessionId); Long tableId = userId; //传入表ID,以及按照MessageInfo类的属性组成查询信息,即可获取对应的消息列表 List<MessageInfo> messageInfos = messageManagerUtils.selectMessage(tableId, messageInfo); return messageInfos; } }AI信息也提供QueryTableUtils工具类,用来对表的增删改查,推荐开发者在表逻辑单元创建时调用对应方法生成表,不过即使你不这样做,AI信箱也会在发现表不存在时尝试创建它。
3. 结语AI信箱gitee地址: gitee /du-xiuhuan/ai-mailbox
如果感觉好用,麻烦点一个star;
如果在使用中遇到什么问题,可以在当前帖子进行评论,或在gitee中提出issue,问题会尽量在一周内解决;
如何快速在项目中集成AI功能:AI信箱工具使用由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“如何快速在项目中集成AI功能:AI信箱工具使用”