首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >注解式AI服务实战

注解式AI服务实战

作者头像
程序员NEO
发布2026-04-29 19:28:07
发布2026-04-29 19:28:07
1250
举报
在介绍更多特性前,先给大家介绍一下 LangChain4j 最重要的开发模式 —— AI Service,AI Service 提供了很多高层抽象的、用起来更方便的 API⁢,把 AI 应用当做服务来开发。

LangChain4j 系列文章

  1. 1. LangChain4j - LangChain4j快速入门实战
  2. 2. LangChain4j - 多模态开发踩坑实录
  3. 3. LangChain4j - 系统提示词稳住AI

使用 AI Service

首先引入 langchain4j 依赖:

代码语言:javascript
复制
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j</artifactId>
    <version>1.1.0</version>
</dependency>

然后创建一个编程助手 AI Service 服务,采用声明式开发方法,编写一个对话方法,然后可以直接通过 @SystemMessage 注解定义系统提示词。

代码语言:javascript
复制
/**
 * AI 代码助手服务接口
 *
 * @author BNTang
 */
public interface AiCodeHelperService {
    @SystemMessage("你是一位编程小助手")
    String chat(String userMessage);
}

不过由于我们提示词较长,写到注解里很不优雅,所以单独在 resources 目录下新建文件 system-prompt.txt 来存储系统提示词。

@SystemMessage 注解支持从文件中读取系统提示词:

代码语言:javascript
复制
@SystemMessage(fromResource = "system-prompt.txt")

然后我们需要编写工厂类,用于创建 AI Service:

代码语言:javascript
复制
/**
 * 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:

代码语言:javascript
复制
@SpringBootTest
class AiCodeHelperServiceTest {

    @Resource
    private AiCodeHelperService aiCodeHelperService;

    @Test
    void chat() {
        String result = aiCodeHelperService.chat("你好,我是程序员NEO");
        System.out.println(result);
    }
}

Debug 运行,发现生成了 AI Service 的代理类,并且系统提示词生效了。是不是比之前自己⁢拼接系统消息要方便多了?

Spring Boot 项目中使用

如果你觉得手动调用 create 方法来创建 Service 比较麻烦,在 Spring Boot ⁢项目中可以引入依赖:

代码语言:javascript
复制
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-spring-boot-starter</artifactId>
    <version>1.1.0-beta7</version>
</dependency>

然后给 AI Service 加上 @AiService 注解,就能自动创建出服务实例了:

代码语言:javascript
复制
/**
 * AI 代码助手服务接口
 *
 * @author BNTang
 */
@AiService
public interface AiCodeHelperService {
    @SystemMessage(fromResource = "system-prompt.txt")
    String chat(String userMessage);
}

记得注释掉之前工厂类的 @Configuration 注解,否则会出现 Bean ⁢冲突

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

这种方式虽然更方便了,但是缺少了自主构建的灵活性(可以自由设置很多参数),所以我建议还是采用自主构建。之后的功能特性,我们也会基于这种 AI S⁢ervice 开发模式来实现。

如果这篇文章帮到了你,不妨点个分享给同样需要的朋友吧! 你的每一次支持,都是我持续创作的动力!💪

往期推荐:

序号

文章标题

链接

1

MCP协议爆火揭秘

查看详情

2

轻松配置Cursor玩转MCP

查看详情

3

Browser-Tool 前端开发神器

查看详情

4

AI编码焕新:用Context7

查看详情

5

NotebookLM:靠谱知识库

查看详情

6

Spring AI 玩转多轮对话

查看详情

7

Cursor生成UI,加一步封神

查看详情

8

神器!免费替代Postman

查看详情

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员NEO 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • LangChain4j 系列文章
  • 使用 AI Service
  • Spring Boot 项目中使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档