当前位置: 首页 > news >正文

第9章:LangChain结构化输出-示例5(基于大模型如何精确匹配POJO的字段)

如何使用LangChain4j框架创建和使用多种AI服务。它通过定义接口和注解,将自然语言处理任务(如情感分析、数字提取、日期提取、POJO提取等)封装为服务,并通过LangChain4j的AiServices动态生成这些服务的实现。

本章主要讲述基于LangChain调用大模型如何进行结构化输出的真实示例,一一列举,本章主要从自然语言中如何通过大模型精确匹配POJO的字段示例

整体代码结果说明

带描述的POJO提取服务(POJOExtractor with Descriptions)是LangChain4j框架中一个高级功能,它不仅从文本中提取并构造POJO对象,还通过@Description注解为POJO的字段提供详细的描述。这些描述帮助语言模型更好地理解每个字段的含义和要求,从而提高提取的准确性和可靠性

代码定义了多个静态内部类,每个类都展示了LangChain4j中不同类型的AI服务示例。这些服务通过接口和注解定义,并通过AiServices.create()方法动态生成实现。每个类都包含一个main方法,用于演示如何调用这些服务。

带描述的POJO提取服务(POJOExtractor with Descriptions)

1. 技术实现

1.1 接口定义

定义了一个接口RecipeExtractor,用于封装从文本中提取并构造Recipe对象的功能。接口中包含一个方法,用于从文本中提取Recipe对象。

interface RecipeExtractor {
   
    @UserMessage("Extract information about a recipe from {
   {it}}")
    Recipe extractRecipeFrom(String text);
}

解析
方法定义:extractRecipeFrom(String text)方法用于从文本中提取Recipe对象。
注解使用:@UserMessage注解定义了用户消息模板,{ {it}}会被替换为方法参数(即要提取信息的文本)。这使得AI能够理解用户的意图,并生成相应的响应。

1.2 POJO类定义

定义了一个Recipe类,用于表示提取的POJO对象。Recipe类包含title、description、steps和preparationTimeMinutes字段,并使用@Description注解为每个字段提供详细的描述。

static class Recipe {
   
    @Description("Short title, 3 words maximum")
    private String title;

    @Description("Short description, 2 sentences maximum")
    private String description;

    @Description("Each step should be described in 4 words, steps should rhyme")
    private List<String> steps;

    private Integer preparationTimeMinutes;

    @Override
    public String toString() {
   
        return "Recipe {" +
                " title = \"" + title + "\"" +
                ", description = \"" + description + "\"" +
                ", steps = " + steps +
                

相关文章:

  • Spring Security功能概述和相关介绍
  • IP------PPP协议
  • 利用 Vue 3 + Vite + Element UI Plus 结合 Service Worker 实现版本管理
  • pandas读取数据
  • 高并发微服务日志管理:ELK、Loki、Fluentd 终极对决与实战指南
  • 矩阵的 正定(Positive Definite)与负定(Negative Definite):从Fisher信息矩阵看“曲率”的秘密
  • Java所有运算符理解
  • SOME/IP-SD -- 协议英文原文讲解5
  • 线代[8]|北大丘维声教授《怎样学习线性代数?》(红色字体为博主本人注释)
  • Chrome 浏览器(版本号49之后)‌解决跨域问题
  • Hi3516CV610开发板ISP调试之——图像ISP在线调试 环境搭建教程
  • 《白帽子讲Web安全》学习:深入解析Cookie与会话安全
  • 银河麒麟高级服务器操作系统在线调整/pro/{PID}/limits文件中nofile的软限制和硬限制参数值操作方法
  • 设计模式-结构性模式
  • QARepVGG--含demo实现
  • 手写系列——MoE网络
  • 【算法系列】归并排序详解
  • Spring Boot集成RocketMQ:真实项目应用场景
  • VMware虚拟机安装win10系统详细图文安装教程(附安装包) 2025最新版详细图文安装教程
  • C++day6
  • 韶关一企业将消防安装工程肢解发包,广东住建厅:罚款逾五万
  • 侵害孩子者,必严惩不贷!3名性侵害未成年人罪犯被执行死刑
  • 侵害孩子者,必严惩不贷!3名性侵害未成年人罪犯今日执行死刑
  • 上海“城市文明开放麦”全城总动员,樊振东担任首位上海城市文明大使
  • 端午假期购票日历发布,今日可购买5月29日火车票
  • 第1现场 | 美国称将取消制裁,对叙利亚意味着什么