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

相关推荐
疯狂的挖掘机12 小时前
记一次基于QT的图片操作处理优化思路(包括在图上放大缩小,截图,画线,取值等)
开发语言·数据库·qt
奇树谦13 小时前
Qt | 利用map创建多个线程和定时器
网络·数据库·qt
用户479492835691513 小时前
性能提升 4000%!我是如何解决 运营看板 不能跨库&跨库查询慢这个难题的
数据库·后端·postgresql
电商API&Tina13 小时前
跨境电商 API 对接指南:亚马逊 + 速卖通接口调用全流程
大数据·服务器·数据库·python·算法·json·图搜索算法
robinson198813 小时前
验证崖山数据库标量子查询是否带有CACHE功能
数据库·oracle·cache·自定义函数·崖山·标量子查询
老华带你飞14 小时前
农产品销售管理|基于java + vue农产品销售管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
SelectDB14 小时前
5 倍性能提升,Apache Doris TopN 全局优化详解|Deep Dive
数据库·apache
JIngJaneIL15 小时前
基于springboot + vue房屋租赁管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
陈平安安15 小时前
设计一个秒杀功能
java·数据库·sql
isNotNullX15 小时前
数据处理的流程是什么?如何进行数据预处理?
数据库·数据资产管理·数据处理·企业数字化