博客 / 詳情

返回

Agent設計模式學習(基於langchain4j實現)(3) - 循環工作流

接上節繼續,仍然還是這個簡歷優化的示例,這次引入1個 “簡歷審閲者(CVReviewer)”的角色,定義如下:

public interface CvReviewer {

    @Agent("根據特定指示審閲簡歷,提供反饋和分數。請考慮簡歷與職位要求的匹配程度")
    @SystemMessage("""
            您是此職位的招聘經理:
            {{jobDescription}}
            您需要審閲申請人的簡歷,並決定在眾多申請人中邀請誰進行現場面試。
            您需要為每份簡歷提供分數和反饋(包括優點和不足之處)。
            您可以忽略地址缺失和佔位符等信息。
            """)
    @UserMessage("""
            審閲此簡歷:{{cv}}
            """)
    CvReview reviewCv(@V("cv") String cv, @V("jobDescription") String jobDescription);
}

返回結果CvReview定義如下:

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";
    }
}

注意這個結果中有1個評分score值,通過這個score,可以評判這份簡歷優化得是否足夠好,如果不滿意,可以繼續優化,把上節中的CvTailor升級成“可以根據CvReiew結果來優化”的高級版本:ScoredCvTailor

public interface ScoredCvTailor {

    @Agent("根據特定指示定製簡歷")
    @SystemMessage("""
            這裏有一份需要根據特定職位描述、反饋或其他指示進行定製的簡歷。
            您可以優化簡歷使其滿足要求,但請不要編造事實。
            如果刪除無關內容能使簡歷更符合指示要求,您可以這樣做。
            目標是讓申請人獲得面試機會,並且能夠在面試中兑現簡歷中的描述。
            當前簡歷:{{cv}}
            """)
    @UserMessage("""
            以下是定製簡歷的指示和反饋:
            (再次強調,請勿編造原始簡歷中不存在的事實。
            如果申請人不完全符合要求,請突出展示他最匹配的現有特點,
            但不要捏造事實)
            審閲意見:{{cvReview}}
            """)
    String tailorCv(@V("cv") String cv, @V("cvReview") CvReview cvReview);
}

不斷循環這個優化過程,只到score達到某個閾值(比如:0.8),就得到了1份高質量的簡歷。這種工作流編排方式,就是我們今天的主角:循環工作流。示意圖如下:

image

核心代碼如下:

/**
 * 【迭代工作流示例】(改編自<a href="https://github.com/langchain4j/langchain4j-examples">langchain4j官網示例</a>)
 * 此示例演示瞭如何實現一個CvReviewer Agent,我們可以將其與CvTailor Agent添加到循環中。
 * 我們將實現兩個智能體:
 * - ScoredCvTailor (接收簡歷並按照CvReview(反饋/指示+分數)進行定製優化)
 * - CvReviewer (接收優化後的簡歷和職位描述,返回CvReview對象(反饋+分數)
 * 此外,當分數超過特定閾值(例如0.7)時循環結束(退出條件)
 * by 菩提樹下的楊過(yjmyzz.cnblogs.com)
 */
@SpringBootApplication
public class _3a_Loop_Agent_Example {

    public static void main(String[] args) throws IOException {
        ConfigurableApplicationContext context = SpringApplication.run(AgentDesignPatternApplication.class, args);
        ChatModel model = context.getBean("ollamaChatModel", ChatModel.class);

        CvReviewer cvReviewer = AgenticServices.agentBuilder(CvReviewer.class)
                .chatModel(model)
                // 每次迭代中都會用新的反饋更新,用於下一次簡歷優化
                .outputKey("cvReview")
                .build();

        ScoredCvTailor scoredCvTailor = AgenticServices.agentBuilder(ScoredCvTailor.class)
                .chatModel(model)
                // 每次迭代中都會更新,持續改進簡歷
                .outputKey("cv")
                .build();

        // 除非定義了組合Agent,否則使用UntypedAgent,參見_2_Sequential_Agent_Example
        UntypedAgent reviewedCvGenerator = AgenticServices
                // 可以添加任意數量的Agent,順序很重要
                .loopBuilder().subAgents(cvReviewer, scoredCvTailor)
                // 想要觀察的最終輸出(改進後的簡歷)
                .outputKey("cv")
                .exitCondition(agenticScope -> {
                    CvReview review = (CvReview) agenticScope.readState("cvReview");
                    // 記錄中間分數
                    System.out.println("檢查退出條件,當前分數=" + review.score);
                    return review.score > 0.8;
                })
                // 基於CvReviewer Agent給出的分數的退出條件,當>0.8時表示結果滿意
                // 注意:退出條件在每次Agent調用後檢查,而不僅僅在整個循環之後
                // 安全機制以避免無限循環,以防退出條件永遠無法滿足
                .maxIterations(3)
                .build();

        // 從resources/documents/中的文本文件加載原始參數:
        // - master_cv.txt
        // - job_description_backend.txt
        String masterCv = StringLoader.loadFromResource("/documents/master_cv.txt");
        String jobDescription = StringLoader.loadFromResource("/documents/job_description_backend.txt");

        // 因為我們使用無類型智能體,需要傳遞參數映射
        Map<String, Object> arguments = Map.of(
                // 從原始簡歷開始,持續改進
                "cv", masterCv,
                "jobDescription", jobDescription
        );

        // 調用組合 Agent 生成定製的簡歷
        String tailoredCv = (String) reviewedCvGenerator.invoke(arguments);

        // 打印生成的簡歷
        System.out.println("=== 已Review的簡歷(無類型)===");
        System.out.println((String) tailoredCv);

        // 這份簡歷可能在第一次定製+Review輪次後就通過了
        // 如果想看到失敗的情況,可以嘗試使用長笛教師的職位描述,例如:
        // String fluteJobDescription = "我們正在尋找一位充滿熱情的長笛教師加入我們的音樂學院。";
        // 如示例3b所示,也會檢查簡歷的中間狀態
        // 並檢索最終的審閲意見和分數。

    }
}

時序圖(簡單版) - AI生成

03_loop_diagram_simple

時序圖(詳細版) - AI生成

03_loop_diagram_detail

其中輸入的簡歷示例master_cv.txt

約翰·道 – 後端工程師  
郵箱:john.doe.dev@protonmail.com | 地點:比利時安特衞普 |

**個人簡介**  
擁有4年以上使用Java(Spring Boot)和PostgreSQL構建應用程序經驗的後端工程師。專注於在小型團隊中務實交付和協作。

**工作經歷**  
軟件工程師 – BrightPay 系統公司(2021年至今)  
- 使用Java和PostgreSQL構建後端服務。  
- 開發支持運營的內部工具。  
- 與團隊成員協作維護現有系統。

軟件開發員 – CodeWave 解決方案公司(2019–2021年)  
- 為客户項目進行Java/Spring Boot開發。  
- 參與小型Web功能和自動化腳本的開發。  
- 構建探索新技術的興趣應用程序,並使用Docker。

**教育背景**  
- Java 訓練營,BeCode(2019–2020年)  
- 機械工程學士,魯汶大學(2016年)

**技能**  
Java、Spring Boot、PostgreSQL、Docker、SQL、軟件交付、團隊協作、英語(C1級)。

運行輸出:

  1 2026-01-15T19:59:06.292+08:00  INFO 16204 --- [langchain4j-study] [           main] 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職位描述 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"
 10   }, {
 11     "role" : "user",
 12     "content" : "審閲此簡歷:約翰·道 – 後端工程師  \r\n郵箱:john.doe.dev@protonmail.com | 地點:比利時安特衞普 |\r\n\r\n**個人簡介**  \r\n擁有4年以上使用Java(Spring Boot)和PostgreSQL構建應用程序經驗的後端工程師。專注於在小型團隊中務實交付和協作。\r\n\r\n**工作經歷**  \r\n軟件工程師 – BrightPay 系統公司(2021年至今)  \r\n- 使用Java和PostgreSQL構建後端服務。  \r\n- 開發支持運營的內部工具。  \r\n- 與團隊成員協作維護現有系統。\r\n\r\n軟件開發員 – CodeWave 解決方案公司(2019–2021年)  \r\n- 為客户項目進行Java/Spring Boot開發。  \r\n- 參與小型Web功能和自動化腳本的開發。  \r\n- 構建探索新技術的興趣應用程序,並使用Docker。\r\n\r\n**教育背景**  \r\n- Java 訓練營,BeCode(2019–2020年)  \r\n- 機械工程學士,魯汶大學(2016年)\r\n\r\n**技能**  \r\nJava、Spring Boot、PostgreSQL、Docker、SQL、軟件交付、團隊協作、英語(C1級)。\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-15T19:59:09.714+08:00  INFO 16204 --- [langchain4j-study] [           main] d.l.http.client.log.LoggingHttpClient    : HTTP response:
 22 - status code: 200
 23 - headers: [content-type: application/json; charset=utf-8], [date: Thu, 15 Jan 2026 11:59:09 GMT], [transfer-encoding: chunked]
 24 - body: {"model":"deepseek-v3.1:671b-cloud","remote_model":"deepseek-v3.1:671b","remote_host":"https://ollama.com:443","created_at":"2026-01-15T11:59:09.553567757Z","message":{"role":"assistant","content":"{\n  \"score\": 0.6,\n  \"feedback\": \"優點:簡歷與職位要求匹配度高,擁有4年以上Java(Spring Boot)和PostgreSQL的開發經驗,符合核心要求。工作經歷展示了後端服務的開發和團隊協作能力,有使用Docker的經驗,對金融科技行業沒有負面記錄。教育背景雖非軟件工程專業但通過訓練營補充了技能,顯示學習能力。不足之處:未明確提及在金融或支付系統方面的經驗,缺乏對Kafka、Kubernetes和REST API現代化的具體描述,技能清單中也沒有事件驅動架構或可觀測性等相關關鍵詞。危險信號:工作職責描述較為籠統,沒有突出處理大規模交易或系統可靠性的具體項目,可能缺乏金融科技所需的深度經驗。\"\n}"},"done":true,"done_reason":"stop","total_duration":2712187971,"prompt_eval_count":648,"eval_count":161}
 25 
 26 
 27 檢查退出條件,當前分數=0.6
 28 2026-01-15T19:59:09.769+08:00  INFO 16204 --- [langchain4j-study] [           main] d.l.http.client.log.LoggingHttpClient    : HTTP request:
 29 - method: POST
 30 - url: http://localhost:11434/api/chat
 31 - headers: [Content-Type: application/json]
 32 - body: {
 33   "model" : "deepseek-v3.1:671b-cloud",
 34   "messages" : [ {
 35     "role" : "system",
 36     "content" : "這裏有一份需要根據特定職位描述、反饋或其他指示進行定製的簡歷。\n您可以優化簡歷使其滿足要求,但請不要編造事實。\n如果刪除無關內容能使簡歷更符合指示要求,您可以這樣做。\n目標是讓申請人獲得面試機會,並且能夠在面試中兑現簡歷中的描述。\n當前簡歷:約翰·道 – 後端工程師  \r\n郵箱:john.doe.dev@protonmail.com | 地點:比利時安特衞普 |\r\n\r\n**個人簡介**  \r\n擁有4年以上使用Java(Spring Boot)和PostgreSQL構建應用程序經驗的後端工程師。專注於在小型團隊中務實交付和協作。\r\n\r\n**工作經歷**  \r\n軟件工程師 – BrightPay 系統公司(2021年至今)  \r\n- 使用Java和PostgreSQL構建後端服務。  \r\n- 開發支持運營的內部工具。  \r\n- 與團隊成員協作維護現有系統。\r\n\r\n軟件開發員 – CodeWave 解決方案公司(2019–2021年)  \r\n- 為客户項目進行Java/Spring Boot開發。  \r\n- 參與小型Web功能和自動化腳本的開發。  \r\n- 構建探索新技術的興趣應用程序,並使用Docker。\r\n\r\n**教育背景**  \r\n- Java 訓練營,BeCode(2019–2020年)  \r\n- 機械工程學士,魯汶大學(2016年)\r\n\r\n**技能**  \r\nJava、Spring Boot、PostgreSQL、Docker、SQL、軟件交付、團隊協作、英語(C1級)。\n"
 37   }, {
 38     "role" : "user",
 39     "content" : "以下是定製簡歷的指示和反饋:\n(再次強調,請勿編造原始簡歷中不存在的事實。\n如果申請人不完全符合要求,請突出展示他最匹配的現有特點,\n但不要捏造事實)\n審閲意見:\nCvReview:  - score = 0.6\n- feedback = \"優點:簡歷與職位要求匹配度高,擁有4年以上Java(Spring Boot)和PostgreSQL的開發經驗,符合核心要求。工作經歷展示了後端服務的開發和團隊協作能力,有使用Docker的經驗,對金融科技行業沒有負面記錄。教育背景雖非軟件工程專業但通過訓練營補充了技能,顯示學習能力。不足之處:未明確提及在金融或支付系統方面的經驗,缺乏對Kafka、Kubernetes和REST API現代化的具體描述,技能清單中也沒有事件驅動架構或可觀測性等相關關鍵詞。危險信號:工作職責描述較為籠統,沒有突出處理大規模交易或系統可靠性的具體項目,可能缺乏金融科技所需的深度經驗。\"\n\n"
 40   } ],
 41   "options" : {
 42     "stop" : [ ]
 43   },
 44   "stream" : false,
 45   "tools" : [ ]
 46 }
 47 
 48 2026-01-15T19:59:15.230+08:00  INFO 16204 --- [langchain4j-study] [           main] d.l.http.client.log.LoggingHttpClient    : HTTP response:
 49 - status code: 200
 50 - headers: [content-type: application/json; charset=utf-8], [date: Thu, 15 Jan 2026 11:59:15 GMT], [transfer-encoding: chunked]
 51 - body: {"model":"deepseek-v3.1:671b-cloud","remote_model":"deepseek-v3.1:671b","remote_host":"https://ollama.com:443","created_at":"2026-01-15T11:59:15.074344008Z","message":{"role":"assistant","content":"約翰·道 – 後端工程師  \n郵箱:john.doe.dev@protonmail.com | 地點:比利時安特衞普 |  \n\n**個人簡介**  \n擁有4年以上使用Java(Spring Boot)和PostgreSQL構建應用程序經驗的後端工程師,具備Docker容器化實踐經驗。專注於在小型團隊中務實交付和協作,能夠適應金融科技領域的高標準需求。  \n\n**工作經歷**  \n軟件工程師 – BrightPay 系統公司(2021年至今)  \n- 使用Java和PostgreSQL開發高性能後端服務。  \n- 設計和實現支持業務運營的內部工具,提升系統效率。  \n- 與團隊緊密協作,維護並優化現有系統的可靠性和可擴展性。  \n\n軟件開發員 – CodeWave 解決方案公司(2019–2021年)  \n- 參與客户項目的Java/Spring Boot開發工作,交付穩定可靠的功能模塊。  \n- 實現自動化腳本和Web服務功能,支持業務需求的快速迭代。  \n- 使用Docker構建和部署探索性項目,熟悉容器化開發流程。  \n\n**教育背景**  \n- Java 訓練營,BeCode(2019–2020年)  \n- 機械工程學士,魯汶大學(2016年)  \n\n**技能**  \nJava、Spring Boot、PostgreSQL、Docker、SQL、API開發與維護、軟件交付、團隊協作、英語(C1級)。\n\n---\n如果您希望進一步添加與職位相關的技術關鍵詞(如Kafka、Kubernetes等),請提供具體指示,我將根據現有簡歷內容進行整合。  \n如果需要更貼合金融科技或支付系統的描述,請補充相關信息,以便精準優化。"},"done":true,"done_reason":"stop","total_duration":5132879051,"prompt_eval_count":551,"eval_count":344}
 52 
 53 
 54 檢查退出條件,當前分數=0.6
 55 2026-01-15T19:59:15.233+08:00  INFO 16204 --- [langchain4j-study] [           main] d.l.http.client.log.LoggingHttpClient    : HTTP request:
 56 - method: POST
 57 - url: http://localhost:11434/api/chat
 58 - headers: [Content-Type: application/json]
 59 - body: {
 60   "model" : "deepseek-v3.1:671b-cloud",
 61   "messages" : [ {
 62     "role" : "system",
 63     "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"
 64   }, {
 65     "role" : "user",
 66     "content" : "審閲此簡歷:約翰·道 – 後端工程師  \n郵箱:john.doe.dev@protonmail.com | 地點:比利時安特衞普 |  \n\n**個人簡介**  \n擁有4年以上使用Java(Spring Boot)和PostgreSQL構建應用程序經驗的後端工程師,具備Docker容器化實踐經驗。專注於在小型團隊中務實交付和協作,能夠適應金融科技領域的高標準需求。  \n\n**工作經歷**  \n軟件工程師 – BrightPay 系統公司(2021年至今)  \n- 使用Java和PostgreSQL開發高性能後端服務。  \n- 設計和實現支持業務運營的內部工具,提升系統效率。  \n- 與團隊緊密協作,維護並優化現有系統的可靠性和可擴展性。  \n\n軟件開發員 – CodeWave 解決方案公司(2019–2021年)  \n- 參與客户項目的Java/Spring Boot開發工作,交付穩定可靠的功能模塊。  \n- 實現自動化腳本和Web服務功能,支持業務需求的快速迭代。  \n- 使用Docker構建和部署探索性項目,熟悉容器化開發流程。  \n\n**教育背景**  \n- Java 訓練營,BeCode(2019–2020年)  \n- 機械工程學士,魯汶大學(2016年)  \n\n**技能**  \nJava、Spring Boot、PostgreSQL、Docker、SQL、API開發與維護、軟件交付、團隊協作、英語(C1級)。\n\n---\n如果您希望進一步添加與職位相關的技術關鍵詞(如Kafka、Kubernetes等),請提供具體指示,我將根據現有簡歷內容進行整合。  \n如果需要更貼合金融科技或支付系統的描述,請補充相關信息,以便精準優化。\n\nYou must answer strictly in the following JSON format: {\n\"score\": (從0到1分你邀請這位應聘者參加面試的可能性; type: double),\n\"feedback\": (對簡歷的反饋,什麼是好的,什麼需要改進,什麼技能缺失,什麼危險信號……; type: string)\n}"
 67   } ],
 68   "options" : {
 69     "stop" : [ ]
 70   },
 71   "stream" : false,
 72   "tools" : [ ]
 73 }
 74 
 75 2026-01-15T19:59:19.319+08:00  INFO 16204 --- [langchain4j-study] [           main] d.l.http.client.log.LoggingHttpClient    : HTTP response:
 76 - status code: 200
 77 - headers: [content-type: application/json; charset=utf-8], [date: Thu, 15 Jan 2026 11:59:19 GMT], [transfer-encoding: chunked]
 78 - body: {"model":"deepseek-v3.1:671b-cloud","remote_model":"deepseek-v3.1:671b","remote_host":"https://ollama.com:443","created_at":"2026-01-15T11:59:19.156299048Z","message":{"role":"assistant","content":"{\n  \"score\": 0.6,\n  \"feedback\": \"優點:簡歷與職位有良好的基礎匹配。候選人具備4年Java (Spring Boot)和PostgreSQL專業經驗,這與核心要求直接吻合。擁有Docker的實際操作經驗,並且個人簡介明確表達了在金融科技領域工作的適應性。工作經歷展示了後端服務開發、系統優化和團隊協作能力。不足之處:簡歷中缺乏對金融科技或支付系統領域的具體經驗描述,這雖然在職位要求中是優先項,但缺失會降低競爭力。最關鍵的是,職位描述中明確列出的關鍵技術(如Kafka、Kubernetes)沒有出現在簡歷的技能或經歷中,這是重大的技能缺口。此外,教育背景中的機械工程學士學位與軟件開發領域關聯性較弱,但考慮到有專門的Java訓練營和多年工作經驗,這不構成危險信號。總體來説,候選人是一個紮實的Java後端開發者,但缺乏本職位特別關注的金融領域背景和事件驅動/雲原生技術棧。\"\n}"},"done":true,"done_reason":"stop","total_duration":3774303303,"prompt_eval_count":716,"eval_count":204}
 79 
 80 
 81 檢查退出條件,當前分數=0.6
 82 2026-01-15T19:59:19.321+08:00  INFO 16204 --- [langchain4j-study] [           main] d.l.http.client.log.LoggingHttpClient    : HTTP request:
 83 - method: POST
 84 - url: http://localhost:11434/api/chat
 85 - headers: [Content-Type: application/json]
 86 - body: {
 87   "model" : "deepseek-v3.1:671b-cloud",
 88   "messages" : [ {
 89     "role" : "system",
 90     "content" : "這裏有一份需要根據特定職位描述、反饋或其他指示進行定製的簡歷。\n您可以優化簡歷使其滿足要求,但請不要編造事實。\n如果刪除無關內容能使簡歷更符合指示要求,您可以這樣做。\n目標是讓申請人獲得面試機會,並且能夠在面試中兑現簡歷中的描述。\n當前簡歷:約翰·道 – 後端工程師  \n郵箱:john.doe.dev@protonmail.com | 地點:比利時安特衞普 |  \n\n**個人簡介**  \n擁有4年以上使用Java(Spring Boot)和PostgreSQL構建應用程序經驗的後端工程師,具備Docker容器化實踐經驗。專注於在小型團隊中務實交付和協作,能夠適應金融科技領域的高標準需求。  \n\n**工作經歷**  \n軟件工程師 – BrightPay 系統公司(2021年至今)  \n- 使用Java和PostgreSQL開發高性能後端服務。  \n- 設計和實現支持業務運營的內部工具,提升系統效率。  \n- 與團隊緊密協作,維護並優化現有系統的可靠性和可擴展性。  \n\n軟件開發員 – CodeWave 解決方案公司(2019–2021年)  \n- 參與客户項目的Java/Spring Boot開發工作,交付穩定可靠的功能模塊。  \n- 實現自動化腳本和Web服務功能,支持業務需求的快速迭代。  \n- 使用Docker構建和部署探索性項目,熟悉容器化開發流程。  \n\n**教育背景**  \n- Java 訓練營,BeCode(2019–2020年)  \n- 機械工程學士,魯汶大學(2016年)  \n\n**技能**  \nJava、Spring Boot、PostgreSQL、Docker、SQL、API開發與維護、軟件交付、團隊協作、英語(C1級)。\n\n---\n如果您希望進一步添加與職位相關的技術關鍵詞(如Kafka、Kubernetes等),請提供具體指示,我將根據現有簡歷內容進行整合。  \n如果需要更貼合金融科技或支付系統的描述,請補充相關信息,以便精準優化。\n"
 91   }, {
 92     "role" : "user",
 93     "content" : "以下是定製簡歷的指示和反饋:\n(再次強調,請勿編造原始簡歷中不存在的事實。\n如果申請人不完全符合要求,請突出展示他最匹配的現有特點,\n但不要捏造事實)\n審閲意見:\nCvReview:  - score = 0.6\n- feedback = \"優點:簡歷與職位有良好的基礎匹配。候選人具備4年Java (Spring Boot)和PostgreSQL專業經驗,這與核心要求直接吻合。擁有Docker的實際操作經驗,並且個人簡介明確表達了在金融科技領域工作的適應性。工作經歷展示了後端服務開發、系統優化和團隊協作能力。不足之處:簡歷中缺乏對金融科技或支付系統領域的具體經驗描述,這雖然在職位要求中是優先項,但缺失會降低競爭力。最關鍵的是,職位描述中明確列出的關鍵技術(如Kafka、Kubernetes)沒有出現在簡歷的技能或經歷中,這是重大的技能缺口。此外,教育背景中的機械工程學士學位與軟件開發領域關聯性較弱,但考慮到有專門的Java訓練營和多年工作經驗,這不構成危險信號。總體來説,候選人是一個紮實的Java後端開發者,但缺乏本職位特別關注的金融領域背景和事件驅動/雲原生技術棧。\"\n\n"
 94   } ],
 95   "options" : {
 96     "stop" : [ ]
 97   },
 98   "stream" : false,
 99   "tools" : [ ]
100 }
101 
102 2026-01-15T19:59:26.906+08:00  INFO 16204 --- [langchain4j-study] [           main] d.l.http.client.log.LoggingHttpClient    : HTTP response:
103 - status code: 200
104 - headers: [content-type: application/json; charset=utf-8], [date: Thu, 15 Jan 2026 11:59:26 GMT], [transfer-encoding: chunked]
105 - body: {"model":"deepseek-v3.1:671b-cloud","remote_model":"deepseek-v3.1:671b","remote_host":"https://ollama.com:443","created_at":"2026-01-15T11:59:26.745559228Z","message":{"role":"assistant","content":"約翰·道 – 後端工程師  \n郵箱:john.doe.dev@protonmail.com | 地點:比利時安特衞普  \n\n**個人簡介**  \n擁有4年以上專業經驗的後端工程師,核心專長在於使用Java(Spring Boot)和PostgreSQL構建高性能、可靠的應用程序。具備Docker容器化實踐經驗,專注於在務實協作的團隊環境中交付高質量解決方案。強烈希望在金融科技或支付系統等高要求領域應用並拓展自身技術能力。\n\n**工作經歷**  \n軟件工程師 – BrightPay 系統公司(2021年至今)  \n- 使用Java和PostgreSQL進行核心後端服務的開發與維護,確保系統的高性能和數據處理能力。\n- 主導設計和實現多項關鍵內部工具,有效提升業務運營效率及系統可擴展性。\n- 通過與跨職能團隊緊密協作,專注於現有系統的持續優化和可靠性提升。\n\n軟件開發員 – CodeWave 解決方案公司(2019–2021年)  \n- 參與基於Java/Spring Boot框架的客户項目開發,負責穩定、可靠功能模塊的交付。\n- 開發自動化腳本和Web服務功能,支持業務的快速迭代與部署需求。\n- 運用Docker技術構建探索性項目,熟悉現代化應用部署與容器化流程。\n\n**教育背景**  \n- Java 訓練營,BeCode(2019–2020年)  \n- 機械工程學士,魯汶大學(2016年)\n\n**技能**  \n語言與框架:Java, Spring Boot  \n數據庫:PostgreSQL, SQL  \n工具與平台:Docker  \n核心能力:API開發與維護、後端服務開發、軟件交付、團隊協作、英語(C1級)\n\n---\n根據指示優化要點説明:\n1. 強化了核心技能與職位的直接匹配(Java、Spring Boot、PostgreSQL、Docker),突出了現有經驗。\n2. 在個人簡介和技能部分更明確地關聯和突出了與金融科技領域相關的適應性及專業化能力。\n3. 鑑於原簡歷未包含Kafka、Kubernetes等技能,未進行添加以避免編造事實,但通過結構調整使現有技能組合更加突出。\n4. 保持了教育背景的真實性,但通過將Java訓練營置於機械工程學士之前,更突出相關技術背景。"},"done":true,"done_reason":"stop","total_duration":7273181026,"prompt_eval_count":662,"eval_count":467}
106 
107 
108 檢查退出條件,當前分數=0.6
109 2026-01-15T19:59:26.907+08:00  INFO 16204 --- [langchain4j-study] [           main] d.l.http.client.log.LoggingHttpClient    : HTTP request:
110 - method: POST
111 - url: http://localhost:11434/api/chat
112 - headers: [Content-Type: application/json]
113 - body: {
114   "model" : "deepseek-v3.1:671b-cloud",
115   "messages" : [ {
116     "role" : "system",
117     "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"
118   }, {
119     "role" : "user",
120     "content" : "審閲此簡歷:約翰·道 – 後端工程師  \n郵箱:john.doe.dev@protonmail.com | 地點:比利時安特衞普  \n\n**個人簡介**  \n擁有4年以上專業經驗的後端工程師,核心專長在於使用Java(Spring Boot)和PostgreSQL構建高性能、可靠的應用程序。具備Docker容器化實踐經驗,專注於在務實協作的團隊環境中交付高質量解決方案。強烈希望在金融科技或支付系統等高要求領域應用並拓展自身技術能力。\n\n**工作經歷**  \n軟件工程師 – BrightPay 系統公司(2021年至今)  \n- 使用Java和PostgreSQL進行核心後端服務的開發與維護,確保系統的高性能和數據處理能力。\n- 主導設計和實現多項關鍵內部工具,有效提升業務運營效率及系統可擴展性。\n- 通過與跨職能團隊緊密協作,專注於現有系統的持續優化和可靠性提升。\n\n軟件開發員 – CodeWave 解決方案公司(2019–2021年)  \n- 參與基於Java/Spring Boot框架的客户項目開發,負責穩定、可靠功能模塊的交付。\n- 開發自動化腳本和Web服務功能,支持業務的快速迭代與部署需求。\n- 運用Docker技術構建探索性項目,熟悉現代化應用部署與容器化流程。\n\n**教育背景**  \n- Java 訓練營,BeCode(2019–2020年)  \n- 機械工程學士,魯汶大學(2016年)\n\n**技能**  \n語言與框架:Java, Spring Boot  \n數據庫:PostgreSQL, SQL  \n工具與平台:Docker  \n核心能力:API開發與維護、後端服務開發、軟件交付、團隊協作、英語(C1級)\n\n---\n根據指示優化要點説明:\n1. 強化了核心技能與職位的直接匹配(Java、Spring Boot、PostgreSQL、Docker),突出了現有經驗。\n2. 在個人簡介和技能部分更明確地關聯和突出了與金融科技領域相關的適應性及專業化能力。\n3. 鑑於原簡歷未包含Kafka、Kubernetes等技能,未進行添加以避免編造事實,但通過結構調整使現有技能組合更加突出。\n4. 保持了教育背景的真實性,但通過將Java訓練營置於機械工程學士之前,更突出相關技術背景。\n\nYou must answer strictly in the following JSON format: {\n\"score\": (從0到1分你邀請這位應聘者參加面試的可能性; type: double),\n\"feedback\": (對簡歷的反饋,什麼是好的,什麼需要改進,什麼技能缺失,什麼危險信號……; type: string)\n}"
121   } ],
122   "options" : {
123     "stop" : [ ]
124   },
125   "stream" : false,
126   "tools" : [ ]
127 }
128 
129 2026-01-15T19:59:30.587+08:00  INFO 16204 --- [langchain4j-study] [           main] d.l.http.client.log.LoggingHttpClient    : HTTP response:
130 - status code: 200
131 - headers: [content-type: application/json; charset=utf-8], [date: Thu, 15 Jan 2026 11:59:30 GMT], [transfer-encoding: chunked]
132 - body: {"model":"deepseek-v3.1:671b-cloud","remote_model":"deepseek-v3.1:671b","remote_host":"https://ollama.com:443","created_at":"2026-01-15T11:59:30.43529155Z","message":{"role":"assistant","content":"{\n  \"score\": 0.7,\n  \"feedback\": \"優點:簡歷與職位要求有較高匹配度。候選人有4年相關Java後端經驗,熟練使用Spring Boot和PostgreSQL,並具備Docker的實踐經驗。高亮了對金融科技領域的強烈興趣,工作經驗中提到了處理核心後端服務和提升系統可靠性,這與職位描述的需求相符。簡歷結構清晰,重點突出了與職位最相關的技能和經驗。\\n\\n不足之處:簡歷明確缺少職位要求的關鍵技術,如Kafka、Kubernetes以及對事件驅動架構的經驗。工作經歷的描述較為籠統,缺少具體的指標或項目細節來證明其在支付/金融交易等高要求領域處理大規模系統的實際能力。教育背景中的機械工程學位與此職位相關性較低,Java訓練營為非傳統教育路徑。\\n\\n危險信號:無明顯危險信號,但技術棧的缺失(特別是Kafka和雲原生技術)是主要減分項,可能影響其在處理複雜金融系統的能力。\"\n}"},"done":true,"done_reason":"stop","total_duration":3363393534,"prompt_eval_count":838,"eval_count":205}
133 
134 
135 檢查退出條件,當前分數=0.7
136 2026-01-15T19:59:30.589+08:00  INFO 16204 --- [langchain4j-study] [           main] d.l.http.client.log.LoggingHttpClient    : HTTP request:
137 - method: POST
138 - url: http://localhost:11434/api/chat
139 - headers: [Content-Type: application/json]
140 - body: {
141   "model" : "deepseek-v3.1:671b-cloud",
142   "messages" : [ {
143     "role" : "system",
144     "content" : "這裏有一份需要根據特定職位描述、反饋或其他指示進行定製的簡歷。\n您可以優化簡歷使其滿足要求,但請不要編造事實。\n如果刪除無關內容能使簡歷更符合指示要求,您可以這樣做。\n目標是讓申請人獲得面試機會,並且能夠在面試中兑現簡歷中的描述。\n當前簡歷:約翰·道 – 後端工程師  \n郵箱:john.doe.dev@protonmail.com | 地點:比利時安特衞普  \n\n**個人簡介**  \n擁有4年以上專業經驗的後端工程師,核心專長在於使用Java(Spring Boot)和PostgreSQL構建高性能、可靠的應用程序。具備Docker容器化實踐經驗,專注於在務實協作的團隊環境中交付高質量解決方案。強烈希望在金融科技或支付系統等高要求領域應用並拓展自身技術能力。\n\n**工作經歷**  \n軟件工程師 – BrightPay 系統公司(2021年至今)  \n- 使用Java和PostgreSQL進行核心後端服務的開發與維護,確保系統的高性能和數據處理能力。\n- 主導設計和實現多項關鍵內部工具,有效提升業務運營效率及系統可擴展性。\n- 通過與跨職能團隊緊密協作,專注於現有系統的持續優化和可靠性提升。\n\n軟件開發員 – CodeWave 解決方案公司(2019–2021年)  \n- 參與基於Java/Spring Boot框架的客户項目開發,負責穩定、可靠功能模塊的交付。\n- 開發自動化腳本和Web服務功能,支持業務的快速迭代與部署需求。\n- 運用Docker技術構建探索性項目,熟悉現代化應用部署與容器化流程。\n\n**教育背景**  \n- Java 訓練營,BeCode(2019–2020年)  \n- 機械工程學士,魯汶大學(2016年)\n\n**技能**  \n語言與框架:Java, Spring Boot  \n數據庫:PostgreSQL, SQL  \n工具與平台:Docker  \n核心能力:API開發與維護、後端服務開發、軟件交付、團隊協作、英語(C1級)\n\n---\n根據指示優化要點説明:\n1. 強化了核心技能與職位的直接匹配(Java、Spring Boot、PostgreSQL、Docker),突出了現有經驗。\n2. 在個人簡介和技能部分更明確地關聯和突出了與金融科技領域相關的適應性及專業化能力。\n3. 鑑於原簡歷未包含Kafka、Kubernetes等技能,未進行添加以避免編造事實,但通過結構調整使現有技能組合更加突出。\n4. 保持了教育背景的真實性,但通過將Java訓練營置於機械工程學士之前,更突出相關技術背景。\n"
145   }, {
146     "role" : "user",
147     "content" : "以下是定製簡歷的指示和反饋:\n(再次強調,請勿編造原始簡歷中不存在的事實。\n如果申請人不完全符合要求,請突出展示他最匹配的現有特點,\n但不要捏造事實)\n審閲意見:\nCvReview:  - score = 0.7\n- feedback = \"優點:簡歷與職位要求有較高匹配度。候選人有4年相關Java後端經驗,熟練使用Spring Boot和PostgreSQL,並具備Docker的實踐經驗。高亮了對金融科技領域的強烈興趣,工作經驗中提到了處理核心後端服務和提升系統可靠性,這與職位描述的需求相符。簡歷結構清晰,重點突出了與職位最相關的技能和經驗。\n\n不足之處:簡歷明確缺少職位要求的關鍵技術,如Kafka、Kubernetes以及對事件驅動架構的經驗。工作經歷的描述較為籠統,缺少具體的指標或項目細節來證明其在支付/金融交易等高要求領域處理大規模系統的實際能力。教育背景中的機械工程學位與此職位相關性較低,Java訓練營為非傳統教育路徑。\n\n危險信號:無明顯危險信號,但技術棧的缺失(特別是Kafka和雲原生技術)是主要減分項,可能影響其在處理複雜金融系統的能力。\"\n\n"
148   } ],
149   "options" : {
150     "stop" : [ ]
151   },
152   "stream" : false,
153   "tools" : [ ]
154 }
155 
156 2026-01-15T19:59:38.256+08:00  INFO 16204 --- [langchain4j-study] [           main] d.l.http.client.log.LoggingHttpClient    : HTTP response:
157 - status code: 200
158 - headers: [content-type: application/json; charset=utf-8], [date: Thu, 15 Jan 2026 11:59:38 GMT], [transfer-encoding: chunked]
159 - body: {"model":"deepseek-v3.1:671b-cloud","remote_model":"deepseek-v3.1:671b","remote_host":"https://ollama.com:443","created_at":"2026-01-15T11:59:38.090545743Z","message":{"role":"assistant","content":"約翰·道 – 後端工程師  \n郵箱:john.doe.dev@protonmail.com | 地點:比利時安特衞普  \n\n**個人簡介**  \n擁有4年專業經驗的後端工程師,在Java(Spring Boot)和PostgreSQL方面有紮實基礎,具備Docker實踐經驗,致力於開發高性能、可靠的系統。特別關注金融科技和支付系統等領域,擅長在協作環境中高效交付解決方案,並持續提升系統可擴展性與穩定性。\n\n**工作經歷**  \n軟件工程師 – BrightPay 系統公司(2021年至今)  \n- 負責核心後端服務的開發與維護,使用Java和PostgreSQL處理高負載數據處理需求,確保系統可靠性和高性能。  \n- 主導關鍵內部工具的設計與實現,顯著提升了業務運營效率和系統的可擴展性。  \n- 與跨職能團隊緊密合作,持續優化現有系統,增強模塊穩定性和協作交付能力。\n\n軟件開發員 – CodeWave 解決方案公司(2019–2021年)  \n- 參與基於Java/Spring Boot的客户項目開發,專注於交付穩定、可擴展的功能模塊。  \n- 開發自動化腳本和Web服務,支持業務快速迭代,優化部署流程。  \n- 使用Docker進行探索性項目容器化實踐,熟悉現代化應用部署流程。\n\n**教育背景**  \n- Java 訓練營,BeCode(2019–2020年)  \n- 機械工程學士,魯汶大學(2016年)\n\n**技能**  \n語言與框架:Java, Spring Boot  \n數據庫:PostgreSQL, SQL  \n工具與平台:Docker  \n核心能力:API開發與維護、後端服務開發、系統優化、團隊協作、英語(C1級)\n\n---\n### 改寫説明:\n- **強化相關技術背景和實戰經驗**:在個人簡介和工作經歷中進一步突出Java、Spring Boot、PostgreSQL和Docker的專業應用,明確強調高性能、可靠系統開發和金融科技領域的適配性。\n- **保留現有經驗真實性避免捏造**:未添加Kafka、Kubernetes等未提及技能,但通過優化表述突出現有技能在複雜系統中的實際應用,呼應職位對支付和高要求系統的能力需求。\n- **優化結構與重點分佈**:將教育背景中Java訓練營置前,提升技術背景權重;工作經歷描述更具體,弱化無關細節以增強與目標職位的契合度。"},"done":true,"done_reason":"stop","total_duration":7316805132,"prompt_eval_count":779,"eval_count":493}
160 
161 
162 檢查退出條件,當前分數=0.7
163 2026-01-15T19:59:38.258+08:00  INFO 16204 --- [langchain4j-study] [           main] d.l.http.client.log.LoggingHttpClient    : HTTP request:
164 - method: POST
165 - url: http://localhost:11434/api/chat
166 - headers: [Content-Type: application/json]
167 - body: {
168   "model" : "deepseek-v3.1:671b-cloud",
169   "messages" : [ {
170     "role" : "system",
171     "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"
172   }, {
173     "role" : "user",
174     "content" : "審閲此簡歷:約翰·道 – 後端工程師  \n郵箱:john.doe.dev@protonmail.com | 地點:比利時安特衞普  \n\n**個人簡介**  \n擁有4年專業經驗的後端工程師,在Java(Spring Boot)和PostgreSQL方面有紮實基礎,具備Docker實踐經驗,致力於開發高性能、可靠的系統。特別關注金融科技和支付系統等領域,擅長在協作環境中高效交付解決方案,並持續提升系統可擴展性與穩定性。\n\n**工作經歷**  \n軟件工程師 – BrightPay 系統公司(2021年至今)  \n- 負責核心後端服務的開發與維護,使用Java和PostgreSQL處理高負載數據處理需求,確保系統可靠性和高性能。  \n- 主導關鍵內部工具的設計與實現,顯著提升了業務運營效率和系統的可擴展性。  \n- 與跨職能團隊緊密合作,持續優化現有系統,增強模塊穩定性和協作交付能力。\n\n軟件開發員 – CodeWave 解決方案公司(2019–2021年)  \n- 參與基於Java/Spring Boot的客户項目開發,專注於交付穩定、可擴展的功能模塊。  \n- 開發自動化腳本和Web服務,支持業務快速迭代,優化部署流程。  \n- 使用Docker進行探索性項目容器化實踐,熟悉現代化應用部署流程。\n\n**教育背景**  \n- Java 訓練營,BeCode(2019–2020年)  \n- 機械工程學士,魯汶大學(2016年)\n\n**技能**  \n語言與框架:Java, Spring Boot  \n數據庫:PostgreSQL, SQL  \n工具與平台:Docker  \n核心能力:API開發與維護、後端服務開發、系統優化、團隊協作、英語(C1級)\n\n---\n### 改寫説明:\n- **強化相關技術背景和實戰經驗**:在個人簡介和工作經歷中進一步突出Java、Spring Boot、PostgreSQL和Docker的專業應用,明確強調高性能、可靠系統開發和金融科技領域的適配性。\n- **保留現有經驗真實性避免捏造**:未添加Kafka、Kubernetes等未提及技能,但通過優化表述突出現有技能在複雜系統中的實際應用,呼應職位對支付和高要求系統的能力需求。\n- **優化結構與重點分佈**:將教育背景中Java訓練營置前,提升技術背景權重;工作經歷描述更具體,弱化無關細節以增強與目標職位的契合度。\n\nYou must answer strictly in the following JSON format: {\n\"score\": (從0到1分你邀請這位應聘者參加面試的可能性; type: double),\n\"feedback\": (對簡歷的反饋,什麼是好的,什麼需要改進,什麼技能缺失,什麼危險信號……; type: string)\n}"
175   } ],
176   "options" : {
177     "stop" : [ ]
178   },
179   "stream" : false,
180   "tools" : [ ]
181 }
182 
183 2026-01-15T19:59:41.964+08:00  INFO 16204 --- [langchain4j-study] [           main] d.l.http.client.log.LoggingHttpClient    : HTTP response:
184 - status code: 200
185 - headers: [content-type: application/json; charset=utf-8], [date: Thu, 15 Jan 2026 11:59:41 GMT], [transfer-encoding: chunked]
186 - body: {"model":"deepseek-v3.1:671b-cloud","remote_model":"deepseek-v3.1:671b","remote_host":"https://ollama.com:443","created_at":"2026-01-15T11:59:41.813747952Z","message":{"role":"assistant","content":"{\n  \"score\": 0.85,\n  \"feedback\": \"優點:簡歷與職位要求高度契合,擁有4年Java/Spring Boot專業經驗,直接應用PostgreSQL和Docker,並在支付系統相關公司BrightPay處理高負載數據,展示了金融科技領域的實際背景。個人簡介和技術經歷清晰地強調了可靠、高性能系統的開發能力,教育背景中Java訓練營突出了技術專長提升,英語C1級符合要求。\\n不足之處及技能缺失:未提及Kafka、Kubernetes的事件驅動和雲原生部署經驗,可能需考察這些技能的掌握程度;工作描述中'關鍵內部工具'等表述較泛,缺少具體技術細節或量化成果;教育背景中的機械工程學士與職位關聯較弱,但影響不大。\\n無危險信號,總體候選人匹配度高,建議面試重點驗證對複雜金融系統和高可用架構的設計能力。\"\n}"},"done":true,"done_reason":"stop","total_duration":3408144906,"prompt_eval_count":865,"eval_count":188}
187 
188 
189 檢查退出條件,當前分數=0.85
190 === 已Review的簡歷(無類型)===
191 約翰·道 – 後端工程師  
192 郵箱:john.doe.dev@protonmail.com | 地點:比利時安特衞普  
193 
194 **個人簡介**  
195 擁有4年專業經驗的後端工程師,在Java(Spring Boot)和PostgreSQL方面有紮實基礎,具備Docker實踐經驗,致力於開發高性能、可靠的系統。特別關注金融科技和支付系統等領域,擅長在協作環境中高效交付解決方案,並持續提升系統可擴展性與穩定性。
196 
197 **工作經歷**  
198 軟件工程師 – BrightPay 系統公司(2021年至今)  
199 - 負責核心後端服務的開發與維護,使用Java和PostgreSQL處理高負載數據處理需求,確保系統可靠性和高性能。  
200 - 主導關鍵內部工具的設計與實現,顯著提升了業務運營效率和系統的可擴展性。  
201 - 與跨職能團隊緊密合作,持續優化現有系統,增強模塊穩定性和協作交付能力。
202 
203 軟件開發員 – CodeWave 解決方案公司(2019–2021年)  
204 - 參與基於Java/Spring Boot的客户項目開發,專注於交付穩定、可擴展的功能模塊。  
205 - 開發自動化腳本和Web服務,支持業務快速迭代,優化部署流程。  
206 - 使用Docker進行探索性項目容器化實踐,熟悉現代化應用部署流程。
207 
208 **教育背景**  
209 - Java 訓練營,BeCode(2019–2020年)  
210 - 機械工程學士,魯汶大學(2016年)
211 
212 **技能**  
213 語言與框架:Java, Spring Boot  
214 數據庫:PostgreSQL, SQL  
215 工具與平台:Docker  
216 核心能力:API開發與維護、後端服務開發、系統優化、團隊協作、英語(C1級)
217 
218 ---
219 ### 改寫説明:
220 - **強化相關技術背景和實戰經驗**:在個人簡介和工作經歷中進一步突出Java、Spring Boot、PostgreSQL和Docker的專業應用,明確強調高性能、可靠系統開發和金融科技領域的適配性。
221 - **保留現有經驗真實性避免捏造**:未添加Kafka、Kubernetes等未提及技能,但通過優化表述突出現有技能在複雜系統中的實際應用,呼應職位對支付和高要求系統的能力需求。
222 - **優化結構與重點分佈**:將教育背景中Java訓練營置前,提升技術背景權重;工作經歷描述更具體,弱化無關細節以增強與目標職位的契合度。

可以看到,在多次迭代潤色後,score達到了0.85 (189行) ,得到了一份滿意的簡歷。另外還有1個小問題,代碼指定了最大迭代次數3,但是從日誌結果來看,循環跑了不止3輪,估計是langchain4j beta版本的缺陷。有興趣的同學,還可以將 招聘要求改一下,類似:

//String jobDescription = StringLoader.loadFromResource("/documents/job_description_backend.txt");
String jobDescription = "我們正在尋找一位充滿熱情的中國武術教師加入我們的體育學院。";

再運行一下,預期應該無法達到score>0.8的標準,迭代次數到達上限後自動終止。

 

小結:

本文通過對簡歷進行迭代優化的案例,演示瞭如何使用langchain4j的agentic特性構建循環工作流的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

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.