快速上手 LangChain4j 智能体工作流编排4 种模式串起一条简历筛选流水线【免费下载链接】langchain4j-examples项目地址: https://gitcode.com/GitHub_Trending/la/langchain4j-examplesLangChain4j-examples 是 LangChain4j 框架的 Java 示例项目其中 agentic-tutorial 模块用一条简历筛选业务完整演示了顺序、并行、循环、条件四种智能体工作流编排模式。对没做过智能体编排的 Java 开发者来说这是比较贴近真实业务的入门路径每种模式都对应筛选流程里的一个具体痛点示例的 main 方法都很短变量命名清楚照着改就能跑起来。四种模式各管流水线的哪一段整条业务线是拿到候选人背景 → 生成并定制简历 → 多方评审打分 → 不达标就改 → 按分数决定去留。四种编排模式正好一一对应顺序一个智能体产出交给下一个负责生成 master 简历 → 按目标岗位改写并行HR、用人经理、团队成员三路评审同时跑省掉排队等待循环评审分数不达标时自动修改—再评审直到过关条件根据评审结果动态路由——进下一轮、发拒绝邮件还是补材料。数据传递依赖两个结构化领域类Cv.java 承载简历本体CvReview.java 承载评审结果只有score0 到 1和feedback两个字段却是四种模式之间流通的货币。所有中间结果都存放在 AgenticScope框架提供的执行状态容器可以理解为一次运行中的共享变量表里随时可用readState()按 key 取回这也是观察、调试一次编排运行的主要入口。 顺序模式把两个智能体接成流水线第一棒解决多步任务怎么串。CvGenerator从个人经历生成 master 简历CvTailor再按岗位描述改写两者用一行链式调用接起来UntypedAgent agent AgenticServices .sequenceBuilder() .subAgents(cvGenerator, cvTailor) // 顺序即执行顺序 .outputKey(tailoredCv) // 组合体最终输出 .build();数据交接的关键在outputKey第一个智能体的结果以 masterCv 为 key 写入共享状态第二个智能体接口里只要声明同名的入参框架就会自动取来喂给它。有个容易踩的坑如果第二个智能体也声明outputKey(masterCv)原始 master 简历会被直接覆盖。_2a_Sequential_Agent_Example.java 的注释里专门提醒了这一点命名前想清楚这个 key 该不该被复用。⚡ 并行模式三路评审同时跑结果聚合成一个总分评审如果串行等于等三次模型调用。并行模式下HrCvReviewer、ManagerCvReviewer、TeamMemberCvReviewer三个智能体用parallelBuilder()同时启动各有两个要点线程池示例用Executors.newFixedThreadPool(3)建池通过.executor(...)显式传入。注意 main 方法最后有executor.shutdown()这一步——自己建的池要自己关否则示例进程会挂住不退出不传 executor 时框架用内置缓存线程池跑完自动关闭结果聚合.output(scope - {...})里按 key 读回三份评审拼接 feedback、把三个分数求平均打包成一个新CvReview作为最终输出。完整的并发加聚合写法见 _4_Parallel_Workflow_Example.java。 循环模式分数不达标就自动改但必须带保险丝评审之后分数低怎么办不人工介入让智能体自己修改—再评审地迭代。循环体还是两个智能体CvReviewer打分ScoredCvTailor依据 feedback 修改简历控制逻辑只有两行.exitCondition(scope - { CvReview review (CvReview) scope.readState(cvReview); return review.score 0.8; }) .maxIterations(3)细节一退出条件在每个智能体调用之后都会检查不是等整圈跑完才判断所以条件函数里少做点重活有利于尽早收敛。细节二maxIterations属于必选项源码注释直接称之为防止无限循环的保险丝——大模型的打分并不稳定阈值永远达不到时你必须有明确的下限。_3a_Loop_Agent_Example.java 之外同目录的 3b 还演示了如何取出每一轮的中间状态用于监控。⚖️ 条件模式按分数路由还可以异步最后一棒是路由根据 HR 评审结果决定候选人的走向。conditionalBuilder()注册多组条件 智能体条件就是一个返回 boolean 的 lambdascore 0.8→ 交给ManagerCvReviewer做经理评审score 0.8→EmailAssistant发出拒绝邮件feedback含 missing information: →InfoRequester发邮件向候选人补材料。注意这几组条件并不互斥示例里 HR 给了 0.85 分feedback 里同时写着信息缺失于是经理评审和补材料邮件会同时发生。这正是示例给每个智能体都加.async(true)的原因——独立分支互不阻塞墙钟耗时接近最长分支而非各分支之和。最后的.output按 key 取各分支结果未写入的 key 用带默认值的重载兜底拼成最终输出。完整实现见 _5b_Conditional_Workflow_Example_Async.java。读完这四篇之后建议从 _2a 的 main 方法按编号顺序读起每个模式一个入口四篇代码加起来不到 400 行模块根目录的 README.md 列了全部示例的索引包括组合工作流、监督者调度和人工介入human-in-the-loop等进阶内容落地到自己的业务时顺序 条件组合风险最低可以先上并行评审记得管好线程池循环优化务必带上maxIterations这两处是示例里反复强调的防线。【免费下载链接】langchain4j-examples项目地址: https://gitcode.com/GitHub_Trending/la/langchain4j-examples创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考