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

相关推荐
笨蛋不要掉眼泪8 分钟前
Mysql架构揭秘:update语句的执行流程
数据库·mysql·架构
万邦科技Lafite15 分钟前
京东item_get接口实战案例:实时商品价格监控全流程解析
java·开发语言·数据库·python·开放api·淘宝开放平台
秋91 小时前
ruoyi项目更换为mysql9.7.0数据库
数据库
Andya_net1 小时前
MySQL | MySQL 8.0 权限管理实践-精确赋予库、表只读等权限
android·数据库·mysql
筑梦之路2 小时前
harbor数据库报错权限异常如何处理——筑梦之路
数据库·harbor
czlczl200209253 小时前
理解 MySQL 行锁:两阶段锁协议与热点更新优化
数据库·mysql
AllData公司负责人3 小时前
通过Postgresql同步到Doris,全视角演示AllData数据中台核心功能效果,涵盖:数据入湖仓,数据同步,数据处理,数据服务,BI可视化驾驶舱
java·大数据·数据库·数据仓库·人工智能·python·postgresql
哆啦A梦15883 小时前
20, Springboot3+vue3实现前台轮播图和详情页的设计
javascript·数据库·spring boot·mybatis·vue3
渣渣盟4 小时前
Mysql入门到精通全集(SQL99)包含关系运算,软考数据库工程师复习首选
数据库·mysql·oracle
dishugj5 小时前
HANA 数据库的核心进程架构
数据库