玉溪市网站建设_网站建设公司_前端工程师_seo优化
2025/12/30 11:38:31 网站建设 项目流程

一.背景

1. 技术背景:LLM 应用从 “单次交互” 到 “闭环执行” 的升级

        随着大语言模型(LLM)在企业级场景落地深化,单纯的 “提问 - 回答” 式单次 LLM 调用已无法满足复杂业务需求 —— 金融科技、企业服务等领域需要的是「能自主完成多轮任务、持续迭代直至达成目标」的智能体(Agent),而非 “一次性工具”。

        循环工作流(Loop Workflow)是实现 Agent 闭环执行的核心机制:它让 Agent 按照预设逻辑反复执行 “感知 - 决策 - 执行 - 反馈” 的流程,直到满足终止条件(比如完成支付对账、完成老旧服务 API 迁移验证)。而 langchain4j 作为 Java/Kotlin 生态专属的 LLM 应用开发框架,填补了 Java 开发者构建这类循环工作流的技术空白 —— 相较于 Python 生态的 LangChain,langchain4j 天然适配 Spring Boot、PostgreSQL、Kafka 等金融科技后端主流技术栈,无需跨语言开发,可直接嵌入现有生产系统。

2. 业务痛点:无循环工作流的 Agent 无法落地复杂场景

        在金融科技(如支付对账、交易风控)、后端服务迭代(如 legacy 服务迁移)等 Java 核心业务场景中,无循环机制的 Agent 存在明显短板:

  • 任务无法闭环:单次 Agent 调用仅能完成 “查询支付数据” 这类单一动作,无法处理 “查询→核对异常→重新调取数据→生成对账报告” 的多轮依赖任务;
  • 异常无法兜底:金融交易要求 “幂等性” 和 “可观测性”,无循环的 Agent 遇到数据缺失、接口调用失败等问题时,无法自动重试、补充执行,需人工介入,不符合生产级要求;
  • Java 生态适配成本高:若基于 Python 框架构建循环工作流,需额外开发跨语言接口,与现有 Java 后端系统(如 Spring Boot 支付服务)耦合度低,维护成本高;
  • 流程不可控:无结构化循环逻辑的 Agent 易出现 “无限执行”“偏离任务目标” 等问题,无法满足金融场景对流程合规性、可追溯性的要求。

3. 核心价值:langchain4j 循环工作流的适配性与落地意义

        langchain4j 为 Java 开发者提供了轻量化、高适配的循环工作流构建能力,精准解决上述痛点:

  • 原生适配 Java 技术栈:循环工作流可直接调用现有 Java 业务接口(如 PostgreSQL 对账数据查询、Kafka 消息推送),无缝对接金融科技后端系统,无需重构核心代码;
  • 结构化循环管控:支持定义 “条件终止、次数限制、异常重试” 等循环规则,比如设置 “对账异常时循环重试 3 次,仍失败则触发告警”,保障流程可控、符合金融级可靠性要求;
  • 低代码快速编排:通过 langchain4j 提供的 LoopChain ConditionalLoopChain 等组件,无需从零编写循环逻辑,只需配置 “执行步骤、终止条件、异常处理策略”,即可快速搭建循环工作流;
  • 契合云原生与可观测性要求:循环工作流可集成 Docker/Kubernetes 部署流水线,同时支持记录每轮循环的执行日志、LLM 调用成本,满足金融科技场景对可观测性的要求。

4. 典型应用场景(贴合金融科技后端)

        基于 langchain4j 构建的循环工作流,可直接落地于:

  • 支付对账:Agent 循环执行 “拉取交易数据→核对金额→标记异常→生成差异报告”,直至对账完成;
  • legacy 服务迁移:循环验证 “旧 API 数据→新 REST API 数据” 一致性,直至迁移结果符合要求;
  • 交易风控:循环监控异常交易特征,直至风险等级降至阈值以下。

二.具体实现

1.构建java工程,引入依赖

<dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j</artifactId> <version>1.10.0</version> </dependency> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-open-ai</artifactId> <version>1.10.0</version> </dependency> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-agentic</artifactId> <version>1.10.0-beta18</version> </dependency> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-embeddings-bge-small-en-v15-q</artifactId> <version>1.10.0-beta18</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.5.12</version> </dependency>

2.创建简历评分类

package com.example; import dev.langchain4j.model.output.structured.Description; public class CvReview { @Description("请以 0-1 分的区间,评估你邀请该候选人参加面试的可能性") public double score; @Description("历反馈内容需包含:简历亮点、待改进之处、欠缺的技能、存在的风险隐患等。") public String feedback; public CvReview() {} public CvReview(double score, String feedback) { this.score = score; this.feedback = feedback; } @Override public String toString() { return "\nCvReview: " + " - score = " + score + "\n- feedback = \"" + feedback + "\"\n"; } }

3.创建简历评审agent接口

package com.example; import dev.langchain4j.agentic.Agent; import dev.langchain4j.service.SystemMessage; import dev.langchain4j.service.UserMessage; import dev.langchain4j.service.V; public interface CvReviewer { @Agent("根据具体要求评审简历,出具反馈意见与评分,评分需纳入简历与岗位的适配度考量。") @SystemMessage(""" 你将担任该岗位的招聘经理:{ {jobDescription}}你负责评审应聘者的简历,并从众多候选人中确定拟邀请参加线下面试的人选。需为每份简历打分并出具反馈意见,反馈内容需同时涵盖亮点与不足。简历中诸如缺失地址、存在占位符之类的细节问题,可忽略不计。 """) @UserMessage(""" 评审这份简历: { {cv}} """) CvReview reviewCv(@V("cv") String cv, @V("jobDescription") String jobDescription); }

4.创建简历优化agent接口

package com.example; import dev.langchain4j.agentic.Agent; import dev.langchain4j.service.SystemMessage; import dev.langchain4j.service.UserMessage; import dev.langchain4j.service.V; public interface ScoredCvTailor { @Agent("按具体要求量身优化简历") @SystemMessage(""" 现提供一份待优化简历,需根据具体的岗位描述、反馈意见或其他要求进行针对性调整。可对简历进行打磨优化以契合需求、提升呈现效果,但严禁编造任何信息。若删减无关内容能让简历更贴合要求,可酌情剔除。优化目标为助力求职者获得面试机会,且求职者的实际能力与资历需匹配简历所呈现的水平。当前简历:{ {cv}} """) @UserMessage(""" 以下为简历优化的具体要求及反馈意见:(再次强调:严禁编造原始简历中未提及的任何信息。若应聘者与岗位要求不符,请重点提炼其现有资质中与岗位最贴近的特质,切勿虚构任何内容)评审意见:{ {cvReview}} """) String tailorCv(@V("cv") String cv, @V("cvReview") CvReview cvReview); }

5.创建大模型工具类

package com.example; import dev.langchain4j.model.chat.ChatModel; import dev.langchain4j.model.openai.OpenAiChatModel; import static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI; public class ChatModelProvider { public static ChatModel createChatModel() { return OpenAiChatModel.builder() .baseUrl("xxx") .apiKey("xxx") .modelName("gpt-4.1-2025-04-14") .logRequests(true) .logResponses(true) .build(); } }

6.创建循环工作流

ChatModel CHAT_MODEL = ChatModelProvider.createChatModel(); // 设置系统默认编码为 UTF-8 System.setProperty("file.encoding", "UTF-8"); // 设置输出流编码为 UTF-8 System.setOut(new PrintStream(System.out, true, StandardCharsets.UTF_8)); CvReviewer cvReviewer = AgenticServices.agentBuilder(CvReviewer.class) .chatModel(CHAT_MODEL) .outputKey("cvReview") .build(); ScoredCvTailor scoredCvTailor = AgenticServices.agentBuilder(ScoredCvTailor.class) .chatModel(CHAT_MODEL) .outputKey("cv") .build(); UntypedAgent reviewedCvGenerator = AgenticServices .loopBuilder().subAgents(cvReviewer, scoredCvTailor) .outputKey("cv") .exitCondition(agenticScope -> { CvReview review = (CvReview) agenticScope.readState("cvReview"); System.out.println("Checking exit condition with score=" + review.score); return review.score > 0.8; }) .maxIterations(3) .build();

7.运行工作流

String masterCv = """ 约翰・多伊 – 后端工程师 邮箱:john.doe.dev@protonmail.com | 住址:比利时 安特卫普 个人概述 拥有 4 年以上使用 Java(Spring Boot)和 PostgreSQL 构建应用程序的经验,专注于务实的项目交付,擅长在小型团队中协同工作。 工作经历 软件工程师 – 布莱特佩支付系统公司(2021 年–至今) 使用 Java 和 PostgreSQL 构建后端服务; 开发支持运维工作的内部工具; 与团队成员协作维护现有系统。 软件开发工程师 – 科德维波解决方案公司(2019 年–2021 年) 负责客户项目的 Java/Spring Boot 开发工作; 参与小型网页功能及自动化脚本的开发; 开发兴趣项目以探索新技术,并运用 Docker 技术完成相关实践。 教育背景 编程训练营(Java 方向),必科编程学院(2019 年–2020 年) 机械工程学士,鲁汶大学(2016 年) 技能清单 Java、Spring Boot、PostgreSQL、Docker、SQL、软件交付、团队协作、英语(C1 水平) """; String jobDescription = """ 岗位编号:123A岗位名称:后端工程师(金融科技方向,比利时安特卫普) 我们现招聘后端工程师一名,负责参与支付与对账服务的搭建及迭代优化工作。入职后你将以 Java(Spring Boot) 技术栈为核心开展开发,并与产品、运维团队紧密协作,保障金融交易的高可靠性与高可扩展性。 岗位职责 设计、开发并维护可支撑海量业务的支付与对账后端服务; 在云原生技术环境中,熟练运用 PostgreSQL、Kafka、Docker 及 Kubernetes 相关技术开展工作; 聚焦高可靠性、幂等性系统的构建,确保系统具备完善的可观测性; 支持老旧业务服务向现代化 REST API 的迁移工作。 任职要求 具备 Java 与 Spring Boot 后端开发的从业经验; 精通关系型数据库原理,深刻理解事件驱动架构; 熟悉容器化技术及部署流水线相关操作; 拥有金融系统或定价系统相关工作经验者优先; 英语流利(硬性要求);掌握荷兰语者优先考虑。 """; Map<String, Object> arguments = Map.of( "cv", masterCv, "jobDescription", jobDescription ); String tailoredCv = (String)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询