
首先引入 langchain4j 依赖:
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>1.1.0</version>
</dependency>
然后创建一个编程助手 AI Service 服务,采用声明式开发方法,编写一个对话方法,然后可以直接通过 @SystemMessage 注解定义系统提示词。
/**
* AI 代码助手服务接口
*
* @author BNTang
*/
public interface AiCodeHelperService {
@SystemMessage("你是一位编程小助手")
String chat(String userMessage);
}
不过由于我们提示词较长,写到注解里很不优雅,所以单独在 resources 目录下新建文件 system-prompt.txt 来存储系统提示词。

@SystemMessage 注解支持从文件中读取系统提示词:
@SystemMessage(fromResource = "system-prompt.txt")
然后我们需要编写工厂类,用于创建 AI Service:
/**
* AI 代码助手服务工厂
*
* @author BNTang
*/
@Configuration
public class AiCodeHelperServiceFactory {
@Resource
private ChatModel qwenChatModel;
/**
* 创建 AI 代码助手服务实例
*
* @return AI 代码助手服务
*/
@Bean
public AiCodeHelperService aiCodeHelperService() {
// 创建并返回 AI 代码助手服务实例
return AiServices.create(AiCodeHelperService.class, qwenChatModel);
}
}调用 AiServices.create 方法就可以创建出 AI Service 的实现类了,背后的原理是利用 Java 反射机制创建了一个实现接口的代理对象,代理对象负责输入和输出的转换,比如把 String 类型的用户消息参数转为 UserMessage 类型并调用 ChatModel,再将 AI 返回的 AiMessage 类型转换为 String 类型作为返回值。
但我们不用关心这么多,直接写接口和注解来开发就好。
你喜欢这种开发方式么?
编写单元测试,调用我们开发的 AI Service:
@SpringBootTest
class AiCodeHelperServiceTest {
@Resource
private AiCodeHelperService aiCodeHelperService;
@Test
void chat() {
String result = aiCodeHelperService.chat("你好,我是程序员NEO");
System.out.println(result);
}
}
Debug 运行,发现生成了 AI Service 的代理类,并且系统提示词生效了。是不是比之前自己拼接系统消息要方便多了?

如果你觉得手动调用 create 方法来创建 Service 比较麻烦,在 Spring Boot 项目中可以引入依赖:
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-spring-boot-starter</artifactId>
<version>1.1.0-beta7</version>
</dependency>然后给 AI Service 加上 @AiService 注解,就能自动创建出服务实例了:
/**
* AI 代码助手服务接口
*
* @author BNTang
*/
@AiService
public interface AiCodeHelperService {
@SystemMessage(fromResource = "system-prompt.txt")
String chat(String userMessage);
}
记得注释掉之前工厂类的 @Configuration 注解,否则会出现 Bean 冲突

再次运行单元测试,也是可以正常对话的:

这种方式虽然更方便了,但是缺少了自主构建的灵活性(可以自由设置很多参数),所以我建议还是采用自主构建。之后的功能特性,我们也会基于这种 AI Service 开发模式来实现。
如果这篇文章帮到了你,不妨点个分享给同样需要的朋友吧! 你的每一次支持,都是我持续创作的动力!💪
往期推荐:
序号 | 文章标题 | 链接 |
|---|---|---|
1 | MCP协议爆火揭秘 | 查看详情 |
2 | 轻松配置Cursor玩转MCP | 查看详情 |
3 | Browser-Tool 前端开发神器 | 查看详情 |
4 | AI编码焕新:用Context7 | 查看详情 |
5 | NotebookLM:靠谱知识库 | 查看详情 |
6 | Spring AI 玩转多轮对话 | 查看详情 |
7 | Cursor生成UI,加一步封神 | 查看详情 |
8 | 神器!免费替代Postman | 查看详情 |