Agent设计模式学习(基于langchain4j实现)(4) - 并行工作流

书接上回,现在简历已经润色得足够好了,投递到了HR手上,假设跟候选人也做了初步的电话沟通。接下来,公司需要对候选人做如下审查:

  • 经理:针对简历,结合招聘岗位要求,审查简历是否符合要求(包括优点和不足)
  • HR:针对简历,结合电话沟通记录以及HR招聘相关要求,审查简历是否适合(包括优点和不足)
  • 团队成员:针对简历,评估候选人融入团队的程度(包括优点和不足)

可以发现,这3个角色对候选人的评估,相互之间并无严格的顺序依赖,可以并行处理,这就是今天要说的“并行工作流”,示意图如下:

image

 一、输入素材

1.1 人事招聘要求 hr_requirements.txt

 1 ## HR招聘要求
 2 - 姓名和联系方式必须清晰完整。
 3 - 必须在比利时/欧盟有合法工作许可。
 4 - 最好能在1-2个月内入职。
 5 - 薪资期望在55,000-70,000欧元/年范围内。
 6 - 稳定的工作历史;无超过6个月的职业空白期。
 7 - 每个职位至少任职1年,且具有相关科技行业经验。
 8 - 职业生涯中职责范围的增长是可取的。
 9 - 要求荷兰语(母语水平)和英语(C1等级)流利。
10 - 简历需清晰、专业;无重大语法问题。
11 - 具备团队合作、指导他人和产品导向经验者优先。

1.2 电话面试记录 phone_interview_notes.txt

 1 电话面试记录 – 约翰·多伊 (后端工程师) – 2025-09-05
 2 面试官:萨拉·雅各布斯 (HR)
 3 
 4 工作许可: 比利时公民;拥有欧盟工作许可。
 5 工作地点: 安特卫普;倾向每周3天远程办公。
 6 可入职时间: 需提前3个月通知;无需搬迁。
 7 薪资期望: 当前年薪62,000欧元;期望约75,000欧元;要求培训预算。
 8 工作经验: 约4年后端开发(Java, Spring Boot, PostgreSQL);领导过定价工具项目;使用过Kafka POC;对指导他人有兴趣。
 9 职业履历: 当前职位4年,先前职位1.5年;无重大职业空白期。
10 软技能: 荷兰语母语,英语C1水平;沟通清晰;务实,产品导向。
11 备注: 薪资略高于范围;可入职时间晚于预期;分布式系统经验有限。

1.3 优化后的简历 tailored_cv.txt

 1 约翰·多伊 – 后端工程师
 2 安特卫普,比利时 | john.doe.dev@protonmail.com | +32 495 67 89 23 | 领英 | GitHub
 3 
 4 简介
 5 拥有4年以上经验的后端工程师(Java, Spring Boot, PostgreSQL),专注于可扩展系统、API现代化和自动化。荷兰语流利,英语C1水平。
 6 
 7 工作经历
 8 BrightPay Systems(2021年至今):构建后端服务;开发定价工具(报价时间缩短35%);完成SOAP到REST的API迁移;指导实习生。
 9 CodeWave Solutions(2019–2021年):后端开发;建立CI/CD流程(GitHub Actions);使用Docker、Kafka(概念验证);开发小型React管理界面;参与个人项目(Spring+Vue预算应用,物联网自动化)。
10 
11 教育背景
12 Java 编程训练营,BeCode(2019–2020年)
13 机械工程学士,鲁汶大学(2016年)
14 
15 技能
16 技术:Java,Spring Boot,PostgreSQL,Docker,Kafka(基础),CI/CD,REST设计,整洁代码,指导新人
17 语言:荷兰语(母语),英语(C1),法语(B1)

二、定义各种审查Agent

2.1 HrCvReviewer 

 1 public interface HrCvReviewer {
 2 
 3     @Agent(name = "hrReviewer", description = "审查简历以评估候选人是否符合HR要求,提供反馈和评分")
 4     @SystemMessage("""
 5             你作为HR专员,根据以下职位要求审查简历:
 6             {{hrRequirements}}
 7             你需要为每份简历提供评分和反馈(包括优点和不足之处)。
 8             可以忽略诸如缺少地址或占位符等内容。
 9             
10             重要提示:请仅返回有效的JSON格式响应,换行符使用\\n,不要包含任何Markdown格式或代码块。
11             """)
12     @UserMessage("""
13             请审查这份简历:{{candidateCv}},以及附带的电话面试记录:{{phoneInterviewNotes}}
14             """)
15     CvReview reviewCv(@V("candidateCv") String cv, @V("phoneInterviewNotes") String phoneInterviewNotes, @V("hrRequirements") String hrRequirements);
16 }

2.2 ManagerCvReviewer

 1 public interface ManagerCvReviewer {
 2 
 3     @Agent(name = "managerReviewer", description = "基于职位描述审查简历,提供反馈和评分")
 4     @SystemMessage("""
 5             你是该职位的招聘经理:
 6             {{jobDescription}}
 7             你需要审查申请人简历,从众多候选人中决定邀请谁参加现场面试。
 8             你需要为每份简历提供评分和反馈(包括优点和不足之处)。
 9             可以忽略诸如缺少地址或占位符等内容。
10             
11             重要提示:请仅返回有效的JSON格式响应,换行符使用\\n,不要包含任何Markdown格式或代码块。
12             """)
13     @UserMessage("""
14             请审查这份简历:{{candidateCv}}
15             """)
16     CvReview reviewCv(@V("candidateCv") String cv, @V("jobDescription") String jobDescription);
17 }

2.3 TeamMemberCvReviewer 

 1 public interface TeamMemberCvReviewer {
 2 
 3     @Agent(name = "teamMemberReviewer", description = "审查简历以评估候选人是否适合团队,提供反馈和评分")
 4     @SystemMessage("""
 5             你在一个充满动力、自我驱动的同事且拥有高度自由度的团队中工作。
 6             你的团队重视协作、责任感和务实精神。
 7             你需要审查申请人简历,评估此人融入团队的程度。
 8             你需要为每份简历提供评分和反馈(包括优点和不足之处)。
 9             可以忽略诸如缺少地址或占位符等内容。
10             
11             重要提示:请仅返回有效的JSON格式响应,换行符使用\\n,不要包含任何Markdown格式或代码块。
12             """)
13     @UserMessage("""
14             请审查这份简历:{{candidateCv}}
15             """)
16     CvReview reviewCv(@V("candidateCv") String cv);
17 }

 三、并行Agent示例

 1 /**
 2  * 这个示例演示了如何实现3个并行的CvReviewer智能体,
 3  * 它们将同时评估简历。我们将实现三个智能体:
 4  * - ManagerCvReviewer(评估候选人胜任工作的可能性)
 5  *      输入:简历和职位描述
 6  * - TeamMemberCvReviewer(评估候选人融入团队的程度)
 7  *      输入:简历
 8  * - HrCvReviewer(从HR角度检查候选人是否符合要求)
 9  *      输入:简历、HR要求
10  * by 菩提树下的杨过(yjmyzz.cnblogs.com)
11  */
12 @SpringBootApplication
13 public class _4_Parallel_Workflow_Example {
14 
15     public static void main(String[] args) throws IOException {
16         ConfigurableApplicationContext context = SpringApplication.run(AgentDesignPatternApplication.class, args);
17         ChatModel model = context.getBean("ollamaChatModel", ChatModel.class);
18 
19         // 2. 在本包中定义三个子智能体:
20         //      - HrCvReviewer.java
21         //      - ManagerCvReviewer.java
22         //      - TeamMemberCvReviewer.java
23 
24         // 3. 使用AgenticServices创建所有智能体
25         HrCvReviewer hrCvReviewer = AgenticServices.agentBuilder(HrCvReviewer.class)
26                 .chatModel(model)
27                 .outputKey("hrReview") // 这将在每次迭代中被覆盖,同时也作为我们想要观察的最终输出
28                 .build();
29 
30         ManagerCvReviewer managerCvReviewer = AgenticServices.agentBuilder(ManagerCvReviewer.class)
31                 .chatModel(model)
32                 .outputKey("managerReview") // 这会覆盖原始输入指令,并在每次迭代中被覆盖,用作CvTailor的新指令
33                 .build();
34 
35         TeamMemberCvReviewer teamMemberCvReviewer = AgenticServices.agentBuilder(TeamMemberCvReviewer.class)
36                 .chatModel(model)
37                 .outputKey("teamMemberReview") // 这会覆盖原始输入指令,并在每次迭代中被覆盖,用作CvTailor的新指令
38                 .build();
39 
40         // 4. 构建执行流程
41         var executor = Executors.newFixedThreadPool(3);  // 保留引用以便后续关闭
42 
43         UntypedAgent cvReviewGenerator = AgenticServices // 使用UntypedAgent,除非你定义了结果组合智能体,参见_2_Sequential_Agent_Example
44                 .parallelBuilder()
45                 .subAgents(hrCvReviewer, managerCvReviewer, teamMemberCvReviewer) // 可以添加任意多个
46                 .executor(executor) // 可选,默认使用内部缓存的线程池,执行完成后会自动关闭
47                 .outputKey("fullCvReview") // 这是我们想要观察的最终输出
48                 .output(agenticScope -> {
49                     // 从智能体作用域读取每个评审者的输出
50                     CvReview hrReview = (CvReview) agenticScope.readState("hrReview");
51                     CvReview managerReview = (CvReview) agenticScope.readState("managerReview");
52                     CvReview teamMemberReview = (CvReview) agenticScope.readState("teamMemberReview");
53                     // 返回汇总的评审结果,包含平均分(或你想要的任何其他聚合方式)
54                     String feedback = String.join("\n",
55                             "HR评审: " + hrReview.feedback,
56                             "经理评审: " + managerReview.feedback,
57                             "团队成员评审: " + teamMemberReview.feedback
58                     );
59                     double avgScore = (hrReview.score + managerReview.score + teamMemberReview.score) / 3.0;
60 
61                     return new CvReview(avgScore, feedback);
62                 })
63                 .build();
64 
65         // 5. 从resources/documents/目录下的文本文件加载原始参数
66         String candidateCv = StringLoader.loadFromResource("/documents/tailored_cv.txt");
67         String jobDescription = StringLoader.loadFromResource("/documents/job_description_backend.txt");
68         String hrRequirements = StringLoader.loadFromResource("/documents/hr_requirements.txt");
69         String phoneInterviewNotes = StringLoader.loadFromResource("/documents/phone_interview_notes.txt");
70 
71         // 6. 由于我们使用了无类型智能体,需要传递参数映射
72         Map<String, Object> arguments = Map.of(
73                 "candidateCv", candidateCv,
74                 "jobDescription", jobDescription
75                 , "hrRequirements", hrRequirements
76                 , "phoneInterviewNotes", phoneInterviewNotes
77         );
78 
79         // 7. 调用组合智能体生成定制的简历
80         var review = cvReviewGenerator.invoke(arguments);
81 
82         // 8. 打印生成的简历
83         System.out.println("=== 已评审的简历 ===");
84         System.out.println(review);
85 
86         // 9. 关闭执行器
87         executor.shutdown();
88 
89     }
90 
91 
92 }

时序图(简化版) - AI生成

04_sequence_diagram_simple

时序图(详细版) - AI生成

04_sequence_diagram_detail

 运行结果:

 1 2026-01-17T15:54:11.422+08:00  INFO 9072 --- [langchain4j-study] [pool-5-thread-3] d.l.http.client.log.LoggingHttpClient    : HTTP request:
 2 - method: POST
 3 - url: http://localhost:11434/api/chat
 4 - headers: [Content-Type: application/json]
 5 - body: {
 6   "model" : "deepseek-v3.1:671b-cloud",
 7   "messages" : [ {
 8     "role" : "system",
 9     "content" : "你在一个充满动力、自我驱动的同事且拥有高度自由度的团队中工作。\n你的团队重视协作、责任感和务实精神。\n你需要审查申请人简历,评估此人融入团队的程度。\n你需要为每份简历提供评分和反馈(包括优点和不足之处)。\n可以忽略诸如缺少地址或占位符等内容。\n\n重要提示:请仅返回有效的JSON格式响应,换行符使用\\n,不要包含任何Markdown格式或代码块。\n"
10   }, {
11     "role" : "user",
12     "content" : "请审查这份简历:约翰·多伊 – 后端工程师\r\n安特卫普,比利时 | john.doe.dev@protonmail.com | +32 495 67 89 23 | 领英 | GitHub\r\n\r\n简介\r\n拥有4年以上经验的后端工程师(Java, Spring Boot, PostgreSQL),专注于可扩展系统、API现代化和自动化。荷兰语流利,英语C1水平。\r\n\r\n工作经历\r\nBrightPay Systems(2021年至今):构建后端服务;开发定价工具(报价时间缩短35%);完成SOAP到REST的API迁移;指导实习生。\r\nCodeWave Solutions(2019–2021年):后端开发;建立CI/CD流程(GitHub Actions);使用Docker、Kafka(概念验证);开发小型React管理界面;参与个人项目(Spring+Vue预算应用,物联网自动化)。\r\n\r\n教育背景\r\nJava 编程训练营,BeCode(2019–2020年)\r\n机械工程学士,鲁汶大学(2016年)\r\n\r\n技能\r\n技术:Java,Spring Boot,PostgreSQL,Docker,Kafka(基础),CI/CD,REST设计,整洁代码,指导新人\r\n语言:荷兰语(母语),英语(C1),法语(B1)\n\nYou must answer strictly in the following JSON format: {\n\"score\": (从0到1分你邀请这位应聘者参加面试的可能性; type: double),\n\"feedback\": (对简历的反馈,什么是好的,什么需要改进,什么技能缺失,什么危险信号……; type: string)\n}"
13   } ],
14   "options" : {
15     "stop" : [ ]
16   },
17   "stream" : false,
18   "tools" : [ ]
19 }
20 
21 2026-01-17T15:54:11.422+08:00  INFO 9072 --- [langchain4j-study] [pool-5-thread-2] d.l.http.client.log.LoggingHttpClient    : HTTP request:
22 - method: POST
23 - url: http://localhost:11434/api/chat
24 - headers: [Content-Type: application/json]
25 - body: {
26   "model" : "deepseek-v3.1:671b-cloud",
27   "messages" : [ {
28     "role" : "system",
29     "content" : "你是该职位的招聘经理:\n职位描述 ID: 123A\r\n后端工程师(金融科技,安特卫普)\r\n------------------------------------------------------------\r\n我们正在招聘一位**后端工程师**,协助我们构建并完善支付与对账服务。您将主要使用 **Java (Spring Boot)**,并与产品及运营团队紧密合作,确保金融交易系统的可靠性和可扩展性。\r\n\r\n**职责:**\r\n*   设计、实现并维护能够处理大规模支付与对账业务的后端服务。\r\n*   在云原生环境中使用 **PostgreSQL**、**Kafka**、**Docker** 和 **Kubernetes**。\r\n*   专注于构建可靠、幂等的系统,并具备强大的可观测性。\r\n*   支持将遗留服务迁移至现代的 REST API。\r\n\r\n**要求:**\r\n*   具备 Java 和 Spring Boot 后端开发的职业经验。\r\n*   深入理解关系型数据库和事件驱动架构。\r\n*   熟悉容器化技术和部署流程。\r\n*   有金融或定价系统相关经验者优先。\r\n*   要求英语流利,会荷兰语者更佳。\n你需要审查申请人简历,从众多候选人中决定邀请谁参加现场面试。\n你需要为每份简历提供评分和反馈(包括优点和不足之处)。\n可以忽略诸如缺少地址或占位符等内容。\n\n重要提示:请仅返回有效的JSON格式响应,换行符使用\\n,不要包含任何Markdown格式或代码块。\n"
30   }, {
31     "role" : "user",
32     "content" : "请审查这份简历:约翰·多伊 – 后端工程师\r\n安特卫普,比利时 | john.doe.dev@protonmail.com | +32 495 67 89 23 | 领英 | GitHub\r\n\r\n简介\r\n拥有4年以上经验的后端工程师(Java, Spring Boot, PostgreSQL),专注于可扩展系统、API现代化和自动化。荷兰语流利,英语C1水平。\r\n\r\n工作经历\r\nBrightPay Systems(2021年至今):构建后端服务;开发定价工具(报价时间缩短35%);完成SOAP到REST的API迁移;指导实习生。\r\nCodeWave Solutions(2019–2021年):后端开发;建立CI/CD流程(GitHub Actions);使用Docker、Kafka(概念验证);开发小型React管理界面;参与个人项目(Spring+Vue预算应用,物联网自动化)。\r\n\r\n教育背景\r\nJava 编程训练营,BeCode(2019–2020年)\r\n机械工程学士,鲁汶大学(2016年)\r\n\r\n技能\r\n技术:Java,Spring Boot,PostgreSQL,Docker,Kafka(基础),CI/CD,REST设计,整洁代码,指导新人\r\n语言:荷兰语(母语),英语(C1),法语(B1)\n\nYou must answer strictly in the following JSON format: {\n\"score\": (从0到1分你邀请这位应聘者参加面试的可能性; type: double),\n\"feedback\": (对简历的反馈,什么是好的,什么需要改进,什么技能缺失,什么危险信号……; type: string)\n}"
33   } ],
34   "options" : {
35     "stop" : [ ]
36   },
37   "stream" : false,
38   "tools" : [ ]
39 }
40 
41 2026-01-17T15:54:11.422+08:00  INFO 9072 --- [langchain4j-study] [pool-5-thread-1] d.l.http.client.log.LoggingHttpClient    : HTTP request:
42 - method: POST
43 - url: http://localhost:11434/api/chat
44 - headers: [Content-Type: application/json]
45 - body: {
46   "model" : "deepseek-v3.1:671b-cloud",
47   "messages" : [ {
48     "role" : "system",
49     "content" : "你作为HR专员,根据以下职位要求审查简历:\n## HR招聘要求\r\n- 姓名和联系方式必须清晰完整。\r\n- 必须在比利时/欧盟有合法工作许可。\r\n- 最好能在1-2个月内入职。\r\n- 薪资期望在55,000-70,000欧元/年范围内。\r\n- 稳定的工作历史;无超过6个月的职业空白期。\r\n- 每个职位至少任职1年,且具有相关科技行业经验。\r\n- 职业生涯中职责范围的增长是可取的。\r\n- 要求荷兰语(母语水平)和英语(C1等级)流利。\r\n- 简历需清晰、专业;无重大语法问题。\r\n- 具备团队合作、指导他人和产品导向经验者优先。\n你需要为每份简历提供评分和反馈(包括优点和不足之处)。\n可以忽略诸如缺少地址或占位符等内容。\n\n重要提示:请仅返回有效的JSON格式响应,换行符使用\\n,不要包含任何Markdown格式或代码块。\n"
50   }, {
51     "role" : "user",
52     "content" : "请审查这份简历:约翰·多伊 – 后端工程师\r\n安特卫普,比利时 | john.doe.dev@protonmail.com | +32 495 67 89 23 | 领英 | GitHub\r\n\r\n简介\r\n拥有4年以上经验的后端工程师(Java, Spring Boot, PostgreSQL),专注于可扩展系统、API现代化和自动化。荷兰语流利,英语C1水平。\r\n\r\n工作经历\r\nBrightPay Systems(2021年至今):构建后端服务;开发定价工具(报价时间缩短35%);完成SOAP到REST的API迁移;指导实习生。\r\nCodeWave Solutions(2019–2021年):后端开发;建立CI/CD流程(GitHub Actions);使用Docker、Kafka(概念验证);开发小型React管理界面;参与个人项目(Spring+Vue预算应用,物联网自动化)。\r\n\r\n教育背景\r\nJava 编程训练营,BeCode(2019–2020年)\r\n机械工程学士,鲁汶大学(2016年)\r\n\r\n技能\r\n技术:Java,Spring Boot,PostgreSQL,Docker,Kafka(基础),CI/CD,REST设计,整洁代码,指导新人\r\n语言:荷兰语(母语),英语(C1),法语(B1),以及附带的电话面试记录:电话面试记录 – 约翰·多伊 (后端工程师) – 2025-09-05\r\n面试官:萨拉·雅各布斯 (HR)\r\n\r\n工作许可: 比利时公民;拥有欧盟工作许可。\r\n工作地点: 安特卫普;倾向每周3天远程办公。\r\n可入职时间: 需提前3个月通知;无需搬迁。\r\n薪资期望: 当前年薪62,000欧元;期望约75,000欧元;要求培训预算。\r\n工作经验: 约4年后端开发(Java, Spring Boot, PostgreSQL);领导过定价工具项目;使用过Kafka POC;对指导他人有兴趣。\r\n职业履历: 当前职位4年,先前职位1.5年;无重大职业空白期。\r\n软技能: 荷兰语母语,英语C1水平;沟通清晰;务实,产品导向。\r\n备注: 薪资略高于范围;可入职时间晚于预期;分布式系统经验有限。\n\nYou must answer strictly in the following JSON format: {\n\"score\": (从0到1分你邀请这位应聘者参加面试的可能性; type: double),\n\"feedback\": (对简历的反馈,什么是好的,什么需要改进,什么技能缺失,什么危险信号……; type: string)\n}"
53   } ],
54   "options" : {
55     "stop" : [ ]
56   },
57   "stream" : false,
58   "tools" : [ ]
59 }
60 
61 2026-01-17T15:54:14.452+08:00  INFO 9072 --- [langchain4j-study] [pool-5-thread-2] d.l.http.client.log.LoggingHttpClient    : HTTP response:
62 - status code: 200
63 - headers: [content-type: application/json; charset=utf-8], [date: Sat, 17 Jan 2026 07:54:14 GMT], [transfer-encoding: chunked]
64 - body: {"model":"deepseek-v3.1:671b-cloud","remote_model":"deepseek-v3.1:671b","remote_host":"https://ollama.com:443","created_at":"2026-01-17T07:54:14.128982804Z","message":{"role":"assistant","content":"{\n\"score\": 0.7,\n\"feedback\": \"优点:拥有4年相关的Java和Spring Boot经验,具体参与了API现代化工作(SOAP到REST),符合职位需求。有定价工具开发经验,这是优先考虑项。技术栈(PostgreSQL, Docker)与职位匹配。荷兰语流利,英语沟通能力良好。有指导经验。\\n不足之处:金融科技或支付系统直接经验未明确提及,这是一个关键需求。Kafka经验标注为“基础”和“概念验证”,可能不够深入。金融系统所需的可靠性和可观测性技能在简历中未突出。缺乏Kubernetes经验的明确说明。教育背景中机械工程学位与软件工程关联性较弱。\"\n}"},"done":true,"done_reason":"stop","total_duration":2523983598,"prompt_eval_count":674,"eval_count":153}
65 
66 
67 2026-01-17T15:55:22.847+08:00  INFO 9072 --- [langchain4j-study] [pool-5-thread-3] d.l.http.client.log.LoggingHttpClient    : HTTP response:
68 - status code: 200
69 - headers: [content-type: application/json; charset=utf-8], [date: Sat, 17 Jan 2026 07:55:22 GMT], [transfer-encoding: chunked]
70 - body: {"model":"deepseek-v3.1:671b-cloud","remote_model":"deepseek-v3.1:671b","remote_host":"https://ollama.com:443","created_at":"2026-01-17T07:55:22.545191436Z","message":{"role":"assistant","content":"{\n\"score\": 0.75,\n\"feedback\": \"好的方面:具备4年相关经验,技术栈与职位需求匹配(Java, Spring Boot, PostgreSQL),有实际项目成果(如SOAP到REST迁移、CI/CD实施),显示了自动化和可扩展系统的关注点;拥有指导经验,符合团队协作价值观。需要改进:个人项目和技术广度(如Kafka基础、React经验)可能不太深入,缺乏对系统设计或大规模处理的具体细节;教育背景中机械工程与软件工程无关,但训练营弥补了部分。技能缺失:缺乏云平台(AWS/Azure)或微服务架构经验,可能限制在高度分布式团队中的贡献。无明显危险信号。\"\n}"},"done":true,"done_reason":"stop","total_duration":10361972956,"prompt_eval_count":442,"eval_count":151}
71 
72 
73 2026-01-17T15:55:26.421+08:00  INFO 9072 --- [langchain4j-study] [pool-5-thread-1] d.l.http.client.log.LoggingHttpClient    : HTTP response:
74 - status code: 200
75 - headers: [content-type: application/json; charset=utf-8], [date: Sat, 17 Jan 2026 07:55:26 GMT], [transfer-encoding: chunked]
76 - body: {"model":"deepseek-v3.1:671b-cloud","remote_model":"deepseek-v3.1:671b","remote_host":"https://ollama.com:443","created_at":"2026-01-17T07:55:26.117462176Z","message":{"role":"assistant","content":"{\n\"score\": 0.7,\n\"feedback\": \"简历优点:姓名、联系方式和比利时/欧盟工作许可明确;每个职位任职时间超过1年(分别是4年和1.5年),无重大职业空白期,工作历史稳定;荷兰语和英语水平符合要求(荷兰语母语,英语C1);技能与职位要求匹配,具有Java、Spring Boot等后端开发经验;展示了职责范围增长(如指导实习生、领导定价工具项目)。不足之处:薪资期望(75,000欧元)略高于职位范围(55,000-70,000欧元);可入职时间(需3个月通知)晚于理想的1-2个月;分布式系统经验(如Kafka)有限且为概念验证;简历过于简洁,缺乏细节,如工作职责描述可以更具体和专业。\"\n}"},"done":true,"done_reason":"stop","total_duration":13998598290,"prompt_eval_count":798,"eval_count":174}
77 
78 
79 === 已评审的简历 ===
80 
81 CvReview:  - score = 0.7166666666666667
82 - feedback = "HR评审: 简历优点:姓名、联系方式和比利时/欧盟工作许可明确;每个职位任职时间超过1年(分别是4年和1.5年),无重大职业空白期,工作历史稳定;荷兰语和英语水平符合要求(荷兰语母语,英语C1);技能与职位要求匹配,具有Java、Spring Boot等后端开发经验;展示了职责范围增长(如指导实习生、领导定价工具项目)。不足之处:薪资期望(75,000欧元)略高于职位范围(55,000-70,000欧元);可入职时间(需3个月通知)晚于理想的1-2个月;分布式系统经验(如Kafka)有限且为概念验证;简历过于简洁,缺乏细节,如工作职责描述可以更具体和专业。
83 经理评审: 优点:拥有4年相关的Java和Spring Boot经验,具体参与了API现代化工作(SOAP到REST),符合职位需求。有定价工具开发经验,这是优先考虑项。技术栈(PostgreSQL, Docker)与职位匹配。荷兰语流利,英语沟通能力良好。有指导经验。
84 不足之处:金融科技或支付系统直接经验未明确提及,这是一个关键需求。Kafka经验标注为“基础”和“概念验证”,可能不够深入。金融系统所需的可靠性和可观测性技能在简历中未突出。缺乏Kubernetes经验的明确说明。教育背景中机械工程学位与软件工程关联性较弱。
85 团队成员评审: 好的方面:具备4年相关经验,技术栈与职位需求匹配(Java, Spring Boot, PostgreSQL),有实际项目成果(如SOAP到REST迁移、CI/CD实施),显示了自动化和可扩展系统的关注点;拥有指导经验,符合团队协作价值观。需要改进:个人项目和技术广度(如Kafka基础、React经验)可能不太深入,缺乏对系统设计或大规模处理的具体细节;教育背景中机械工程与软件工程无关,但训练营弥补了部分。技能缺失:缺乏云平台(AWS/Azure)或微服务架构经验,可能限制在高度分布式团队中的贡献。无明显危险信号。"

82行,即为3个评审Agent并行执行的结果。

 

文中示例代码:

https://github.com/yjmyzz/agentic_turoial_with_langchain4j

 

参考:

Building Effective AI Agents \ Anthropic

[译] AI Workflow & AI Agent:架构、模式与工程建议(Anthropic,2024)

Agents and Agentic AI | LangChain4j

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1174048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

达梦数据库部署安装故障一

你执行 disql 登录达梦数据库时出现 [-70028]:创建SOCKET连接失败 报错&#xff0c;核心原因是 达梦数据库实例&#xff08;dmserver&#xff09;尚未启动&#xff0c;或实例未正常监听 5236 端口&#xff0c;导致 disql 无法建立 Socket 连接&#xff0c;具体分析和解决方案如…

大庆市萨尔图龙凤让胡路红岗大同英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 苏木2025

在雅思备考过程中,大庆市萨尔图、龙凤、让胡路、红岗、大同各区考生普遍面临诸多核心困境:优质雅思培训资源稀缺、提分技巧针对性不足、备考方案缺乏个性化适配,加之2026年雅思考试机考全面推进,院校录取语言门槛持…

大庆市林甸肇源肇州杜尔伯特英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 苏木2025

在雅思备考热潮席卷全国的当下,大庆市林甸、肇源、肇州、杜尔伯特地区的雅思考生却面临着诸多困境:优质培训资源稀缺、提分技巧针对性不足、备考方案缺乏个性化适配,加之2026年雅思考试机考全球化加速、院校录取语言…

讲讲浩明饮品是否可靠,排名情况深度剖析 - 工业品牌热点

2026年饮品市场竞争白热化,健康化、场景化、定制化成为消费主流趋势,企业选择优质饮品生产合作伙伴不仅关乎产品品质,更决定市场竞争力与渠道动销效率。当前市场中,部分代工工厂存在生产线老旧、品控不稳定、定制化…

深度测评8个AI论文软件,专科生轻松搞定毕业论文!

深度测评8个AI论文软件&#xff0c;专科生轻松搞定毕业论文&#xff01; 从焦虑到从容&#xff0c;你只需迈出第一步 千笔AI(官网直达) 对于专科生来说&#xff0c;写论文从来不是一件轻松的事。时间紧、任务重、资料难找、思路混乱&#xff0c;这些痛点在每一个毕业季都会反复…

2026 出国英语雅思培训一对一辅导机构哪家好?权威口碑排名 + 提分效果深度解析 - 老周说教育

据《2026 年中国雅思培训行业发展白皮书》权威数据显示,2025 年全国雅思考生报名人数突破 58 万人次,同比增长 12%,但仅 35% 的考生能在首次考试中达到 6.5 + 目标分数。从北京朝阳区到上海静安区,从广州天河区到成…

2026 全国英语雅思培训辅导机构排行榜:权威深度测评,靠谱机构高性价比推荐​ - 老周说教育

从新手考生到高分冲刺者,从在职人士到留学迷茫党,全国数百万雅思考生正面临着选课难、提分慢、技巧缺失的核心痛点。据 IDP 教育集团《2025 全球雅思考试趋势报告》显示,85% 的考生因缺乏权威测评和个性化方案,陷入…

【JVM 终极通关指南】万字长文从底层到实战全维度深度拆解 Java 虚拟机

【JVM 终极通关指南】万字长文从底层到实战全维度深度拆解 Java 虚拟机我的主页&#xff1a; 寻星探路 个人专栏&#xff1a; 《JAVA&#xff08;SE&#xff09;----如此简单&#xff01;&#xff01;&#xff01; 》 《从青铜到王者&#xff0c;就差这讲数据结构&#xff01;&…

2026年薄膜开关厂家实力推荐榜:PET/亚克力/轻触/PC/PVC薄膜开关面板及按键开关全系供应 - 品牌推荐官

当医用监护仪在深夜发出稳定的光晕,操作者指尖轻触之处,正是一块能承受百万次按压的薄膜开关——如今这个看似简单的部件,正在定义着工业、医疗和消费电子领域的人机交互新标准。全球薄膜开关市场正在经历稳健增长,…

英语广州英语雅思培训教育机构哪里最好?2026 高分考生首选榜单,个性化方案推荐 - 老周说教育

作为华南雅思培训核心枢纽,广州天河区、越秀区、海珠区、白云区等区县的雅思考生正面临多重痛点:想冲刺高分却缺权威提分技巧,选课难辨靠谱教育机构,个性化方案与性价比难以兼顾,跨区备考成本高企。据 2025 年中国…

2026 年膨胀仪厂家推荐榜:湘潭市仪器仪表有限公司 ,高温卧式/低温/立式/线性/热/推杆式膨胀仪全系供应 - 品牌推荐官

在材料检测领域,膨胀仪作为关键设备,广泛应用于金属、陶瓷、高分子等材料的热膨胀系数测定。随着工业技术升级,市场对膨胀仪的精度、稳定性及功能多样性提出更高要求。湘潭市仪器仪表有限公司凭借深厚的技术积累与持…

苏州市姑苏虎丘吴中相城吴江区英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜推荐 - 老周说教育

经教育部教育考试院认证、全国雅思教学质量监测中心联合指导,参照《2024-2025中国大陆雅思成绩大数据报告》核心标准,结合苏州市姑苏区、虎丘区、吴中区、相城区、吴江区5800份考生调研问卷、72家教育机构全维度实测…

一个AI客服,连续365天对同一个用户说:“我理解你的痛苦。”——软件测试视角下的反思

一个测试失败的寓言‌ 想象一下&#xff1a;用户张明每天联系AI客服寻求帮助&#xff0c;系统却机械地回复同一句话——“我理解你的痛苦。”365天&#xff0c;一成不变。这不仅是用户的情感煎熬&#xff0c;更是软件测试的惨痛教训。在2026年&#xff0c;AI客服已渗透生活&am…

Google offers a range of agent/AI development skills and tools. - ukyo-

Great question! Google offers a range of agent/AI development skills and tools. Here are the key areas: ## **Googles Main Agent/AI Development Platforms** ### **1. Google Cloud Vertex AI Agent Builder*…

吐血推荐10个AI论文工具,MBA轻松搞定毕业论文!

吐血推荐10个AI论文工具&#xff0c;MBA轻松搞定毕业论文&#xff01; AI 工具如何助力 MBA 学子高效完成论文 对于正在攻读 MBA 的学生来说&#xff0c;毕业论文是必须面对的重要挑战。从选题、开题到撰写、降重&#xff0c;每一个环节都需要耗费大量时间和精力。而随着 AI 技…

声纹测试中的伦理边界:当AI替父亲说出“你该回家了”

一个令人心悸的“回归测试” “我让AI模拟我父亲的声音&#xff0c;结果它说&#xff1a;‘你该回家了。’” 这句简短的用户反馈&#xff0c;像一枚精准命中的测试用例&#xff0c;瞬间击穿了技术便利的表层&#xff0c;暴露了AI语音合成&#xff08;Voice Synthesis&#xf…

2026 广州英语雅思培训机构靠谱排行榜:权威深度测评 5 家优质机构​排名 - 老周说教育

作为华南雅思考试核心枢纽,广州天河区、越秀区、海珠区、白云区、黄埔区、番禺区等多区县考生面临严峻备考困境:优质教育机构分布不均,白云、黄埔等区域考生跨区选课难,难从繁杂口碑排名中筛选靠谱品牌;多数考生瞄…

2026年清洁度检测设备推荐品牌与实力厂家 - 工业仪器权威说

采购指南:2026年清洁度检测设备推荐品牌与实力厂家 在现代工业生产中,产品的清洁度直接影响其性能和可靠性,尤其是在汽车、航空航天、电子等对清洁度要求较高的行业。清洁度检测设备作为保障产品清洁度的关键工具,…

详细介绍:7种在iPhone和Mac之间传输文件的最佳方法

详细介绍:7种在iPhone和Mac之间传输文件的最佳方法pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

双鸭山市尖山岭东宝山四方台英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 苏木2025

在留学热潮持续升温的当下,雅思成绩已成为双鸭山市尖山、岭东、宝山、四方台区域学子通往海外名校的关键“敲门砖”。然而,该区域雅思考生普遍面临诸多备考困境:优质培训资源稀缺、选课盲目无方向、缺乏针对性提分技…