AI开发结构化输出

Ai结构化输出有三种实现方式:

  • 利用大模型的JSON schema
  • 利用Prompt+JSON Mode
  • 利用Prompt

默认使用的是Prompt模式,强制大模型按用户提示词下写的包含特定字段的JSON文本。下面测试一下结构化输出,不过我们无需关心上面的开发模式,只需要修改方法的返回值,框架就可以自动帮我们实现结构化输出。

1.AiCodeService

在AiCodeService中添加两个方法,其中一个方法输出结构化的信息,record方法相当于定义了一个Report对象,其中里面有两个属性。

java 复制代码
package com.example.aicode.ai;

import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.spring.AiService;

import java.util.List;

/**
 * @author zhou
 * @version 1.0
 * @description TODO
 * @date 2025/9/16 21:45
 */
public interface AiCodeService {
    @SystemMessage(fromResource = "system-prompt.txt")
    String chat(String userMessage);
    @SystemMessage(fromResource = "system-prompt.txt")
    Report chatForReport(String userMessage);
    //学习报告
    record Report(String name, List<String> suggestionList){}
}

2.测试

testChatForReport()方法将以Report对象形式输出生成的内容。

java 复制代码
package com.example.aicode.ai;

import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
class AiCodeServiceTest {
    @Resource
    private AiCodeService aiCodeService;
    @Test
    void chat() {
        String chat = aiCodeService.chat("你好,我是一名程序员");
        System.out.println(chat);
    }


    @Test
    void testChatForReport() {
        String userMessage = "你好,我是一名程序员,学习一年半,请帮我制定一个学习报告";
        AiCodeService.Report report = aiCodeService.chatForReport(userMessage);
        System.out.println(report);
    }
}

3.输出结果

相关推荐
AIgorithmGEEK8 小时前
MySQL 索引全解(下):建、查、删实战与知识速查表
数据库·mysql·b+树·索引
唠点键盘之外的10 小时前
26 向量数据库实战:从 0 搭一条能用的检索链路(pgvector + Spring AI)
数据库·人工智能·spring
云和恩墨10 小时前
数据库监控简史:监控不止于告警——从图表大爆发到健康管理闭环
数据库
ly768910 小时前
MongoDB 事务开销实测:快照隔离下的写冲突、重试与分片事务边界
数据库·mongodb·事务·分片集群·快照隔离·写冲突
豆角焖肉10 小时前
Spring AOP 自定义注解实现系统操作日志
数据库·自定义注解·springaop·操作日志·aop 切面
金伟API102412 小时前
不会写复杂SQL怎么办?
数据库·sql
执笔为剑12 小时前
2.1.2-1、V8R3迁移到V8R6-Oracle兼容特性
数据库
geovindu12 小时前
sql:Search-Optimized SQL Queries using mysql 9.0
android·数据库·sql·mysql·数据库开发·数据库架构
for_ever_love__13 小时前
MySQL SELECT 与 WHERE 优化实战:可搜索条件、联合索引与执行计划
数据库·mysql·oracle·select·where·条件优化·查询优化技巧
2501_9318037513 小时前
MySQL 锁机制详解
数据库·mysql