找回密码
 注册

Sign in with Twitter

It's what's happening?

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 243|回复: 0

注解式AI服务实战

[复制链接]
发表于 2025-10-22 12:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

×
作者:微信文章

w1.jpg

在介绍更多特性前,先给大家介绍一下 LangChain4j 最重要的开发模式 —— AI Service,AI Service 提供了很多高层抽象的、用起来更方便的 API⁢,把 AI 应用当做服务来开发。
LangChain4j 系列文章

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

首先引入 langchain4j 依赖:
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j</artifactId>
    <version>1.1.0</version>
</dependency>
w2.jpg

然后创建一个编程助手 AI Service 服务,采用声明式开发方法,编写一个对话方法,然后可以直接通过 @SystemMessage 注解定义系统提示词。
/**
* AI 代码助手服务接口
*
* @author BNTang
*/
public interface AiCodeHelperService {
    @SystemMessage("你是一位编程小助手")
    String chat(String userMessage);
}
w3.jpg

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

w4.jpg

@SystemMessage 注解支持从文件中读取系统提示词:
@SystemMessage(fromResource = "system-prompt.txt")
w5.jpg

然后我们需要编写工厂类,用于创建 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);
    }
}
w6.jpg

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

w7.jpg
Spring Boot 项目中使用

如果你觉得手动调用 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);
}
w8.jpg

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

w9.jpg

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

w10.jpg

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

w11.jpg

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

往期推荐:
序号文章标题链接
1MCP协议爆火揭秘查看详情
2轻松配置Cursor玩转MCP查看详情
3Browser-Tool 前端开发神器查看详情
4AI编码焕新:用Context7查看详情
5NotebookLM:靠谱知识库查看详情
6Spring AI 玩转多轮对话查看详情
7Cursor生成UI,加一步封神查看详情
8神器!免费替代Postman查看详情
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

Archiver|手机版|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+1, 2025-10-30 16:03 , Processed in 0.150468 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表