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.输出结果

相关推荐
zcmodeltech7 小时前
风力发电沙盘模型控制系统设计与灯光联动实现方案——基于STM32与Modbus RTU,服务范围覆盖全国的多场景风力发电沙盘模型定制
网络·数据库·stm32·单片机·嵌入式硬件·能源
程序员黎剑7 小时前
MySQL-JOIN优化-NLJ与BNL的区别与实战
数据库·mysql
Java小白笔记7 小时前
MyBatis XML Mapper 标签与 CRUD 原理实战
xml·数据库·mybatis
JavaPub-rodert8 小时前
一个后台系统如何同时支持 MySQL、PostgreSQL、SQLite、SQL Server?从 ShiyuAdmin 的 GORM 多数据库适配说起
数据库·mysql·postgresql
小翰生信8 小时前
转录组下游分析全流程:DESeq2 差异分析、GO/KEGG 富集与 GSEA 实战
数据库·矩阵·golang
2603_966437268 小时前
拷贝中断文件丢失,电脑资料抢救实操方案
数据库·电脑
harmony&8 小时前
MySQL 数据库从入门到实战:原理、安装与 SQL 详解
数据库·sql·mysql
艺杯羹8 小时前
全栈信创落地实录:基于银河麒麟V10与达梦数据库DM8的SpringBoot工业级适配指南
java·数据库·spring boot·后端·spring
坚定信念,勇往无前13 小时前
mongodb的日志分割
数据库·mongodb
oradh17 小时前
Oracle TX 锁 Mode 4(Share)问题排查总结
数据库·oracle·tx 锁 mode 4·oracle tx 锁