[PR #2065] [MERGED] feat(dingo): v0.4.5 - Add LLM retry logic and optimize prompts for st… #2238

Closed
opened 2026-02-16 11:16:26 -05:00 by yindo · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/langgenius/dify-official-plugins/pull/2065
Author: @Kylie-dot-s
Created: 11/14/2025
Status: Merged
Merged: 11/17/2025
Merged by: @crazywoola

Base: mainHead: feat/dingo-v0.4.5-llm-retry-and-prompt-optimization


📝 Commits (1)

  • 955627b feat(dingo): v0.4.5 - Add LLM retry logic and optimize prompts for structured output

📊 Changes

4 files changed (+429 additions, -86 deletions)

View changed files

📝 tools/dingo/manifest.yaml (+1 -1)
📝 tools/dingo/tools/keyword_extraction.py (+81 -23)
📝 tools/dingo/tools/keyword_matcher.py (+221 -46)
📝 tools/dingo/tools/resume_optimizer.py (+126 -16)

📄 Description

…ructured output

What's New

1. LLM Retry Logic (v0.4.1)

  • Add exponential backoff retry mechanism to all LLM invocations
  • Max 3 retries with 1s, 2s, 4s intervals
  • Handle empty responses, JSON parsing errors, and API timeouts
  • Detailed logging for debugging
  • Fallback strategies for graceful degradation

Affected files:

  • keyword_extraction.py: 1 LLM call with retry
  • keyword_matcher.py: 3 LLM calls with retry (extraction, recommendations, JD generation)

Impact: Improves success rate from ~70% to 95%+ during DeepSeek API rate limiting

2. Resume Optimizer Prompt Optimization (v0.4.2-v0.4.4)

  • Restructured output format: Before/After comparison for each resume section
  • Auto-detect resume sections instead of fixed 6 modules
  • Remove unnecessary introductions and analysis
  • Direct, actionable suggestions with copy-paste ready content
  • Add optimization rationale for each suggestion

Output format:
`

📋 [Section Name]

改前:
[Original text]

改后:
[Optimized text]

优化理由: [Brief explanation]
`

3. Keyword Matcher Prompt Optimization (v0.4.5)

  • Apply same Before/After format to ATS optimization suggestions
  • Categorize suggestions: High Priority / Medium Priority / Matched Keywords
  • Remove verbose introductions
  • Focus on ATS score improvement with specific keyword integration

Technical Details

Retry Strategy:

  • Handles: Empty LLM responses, JSON parsing failures, API errors
  • Exponential backoff: 1s 2s 4s
  • Graceful fallback: Rule-based recommendations when LLM fails

Prompt Engineering:

  • Explicit instruction: No self-introduction, no problem analysis
  • Structured output format with code blocks
  • Clear optimization focus: Keywords, quantification, action verbs, STAR method

Testing

  • Tested retry logic with DeepSeek API rate limiting
  • Verified structured output format for resume optimizer
  • Validated ATS optimization suggestions format
  • Confirmed backward compatibility with existing workflows

Version

0.4.0 0.4.5

Related Issues or Context

This PR contains Changes to Non-Plugin

  • Documentation
  • Other

This PR contains Changes to Non-LLM Models Plugin

  • I have Run Comprehensive Tests Relevant to My Changes

This PR contains Changes to LLM Models Plugin

  • My Changes Affect Message Flow Handling (System Messages and User→Assistant Turn-Taking)
  • My Changes Affect Tool Interaction Flow (Multi-Round Usage and Output Handling, for both Agent App and Agent Node)
  • My Changes Affect Multimodal Input Handling (Images, PDFs, Audio, Video, etc.)
  • My Changes Affect Multimodal Output Generation (Images, Audio, Video, etc.)
  • My Changes Affect Structured Output Format (JSON, XML, etc.)
  • My Changes Affect Token Consumption Metrics
  • My Changes Affect Other LLM Functionalities (Reasoning Process, Grounding, Prompt Caching, etc.)
  • Other Changes (Add New Models, Fix Model Parameters etc.)

Version Control (Any Changes to the Plugin Will Require Bumping the Version)

  • I have Bumped Up the Version in Manifest.yaml (Top-Level Version Field, Not in Meta Section)

Dify Plugin SDK Version

  • I have Ensured dify_plugin>=0.3.0,<0.6.0 is in requirements.txt (SDK docs)

Environment Verification (If Any Code Changes)

Local Deployment Environment

  • Dify Version is: , I have Tested My Changes on Local Deployment Dify with a Clean Environment That Matches the Production Configuration.

SaaS Environment

  • I have Tested My Changes on cloud.dify.ai with a Clean Environment That Matches the Production Configuration
7b4cbb6abe6194044426cf978ed0d54f

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/langgenius/dify-official-plugins/pull/2065 **Author:** [@Kylie-dot-s](https://github.com/Kylie-dot-s) **Created:** 11/14/2025 **Status:** ✅ Merged **Merged:** 11/17/2025 **Merged by:** [@crazywoola](https://github.com/crazywoola) **Base:** `main` ← **Head:** `feat/dingo-v0.4.5-llm-retry-and-prompt-optimization` --- ### 📝 Commits (1) - [`955627b`](https://github.com/langgenius/dify-official-plugins/commit/955627b864f9d69814a56b19b5782ef66ca8fa56) feat(dingo): v0.4.5 - Add LLM retry logic and optimize prompts for structured output ### 📊 Changes **4 files changed** (+429 additions, -86 deletions) <details> <summary>View changed files</summary> 📝 `tools/dingo/manifest.yaml` (+1 -1) 📝 `tools/dingo/tools/keyword_extraction.py` (+81 -23) 📝 `tools/dingo/tools/keyword_matcher.py` (+221 -46) 📝 `tools/dingo/tools/resume_optimizer.py` (+126 -16) </details> ### 📄 Description …ructured output ## What's New ### 1. LLM Retry Logic (v0.4.1) - Add exponential backoff retry mechanism to all LLM invocations - Max 3 retries with 1s, 2s, 4s intervals - Handle empty responses, JSON parsing errors, and API timeouts - Detailed logging for debugging - Fallback strategies for graceful degradation **Affected files:** - keyword_extraction.py: 1 LLM call with retry - keyword_matcher.py: 3 LLM calls with retry (extraction, recommendations, JD generation) **Impact:** Improves success rate from ~70% to 95%+ during DeepSeek API rate limiting ### 2. Resume Optimizer Prompt Optimization (v0.4.2-v0.4.4) - Restructured output format: Before/After comparison for each resume section - Auto-detect resume sections instead of fixed 6 modules - Remove unnecessary introductions and analysis - Direct, actionable suggestions with copy-paste ready content - Add optimization rationale for each suggestion **Output format:** ` ### 📋 [Section Name] **改前**: [Original text] **改后**: [Optimized text] **优化理由**: [Brief explanation] ` ### 3. Keyword Matcher Prompt Optimization (v0.4.5) - Apply same Before/After format to ATS optimization suggestions - Categorize suggestions: High Priority / Medium Priority / Matched Keywords - Remove verbose introductions - Focus on ATS score improvement with specific keyword integration ## Technical Details **Retry Strategy:** - Handles: Empty LLM responses, JSON parsing failures, API errors - Exponential backoff: 1s 2s 4s - Graceful fallback: Rule-based recommendations when LLM fails **Prompt Engineering:** - Explicit instruction: No self-introduction, no problem analysis - Structured output format with code blocks - Clear optimization focus: Keywords, quantification, action verbs, STAR method ## Testing - ✅ Tested retry logic with DeepSeek API rate limiting - ✅ Verified structured output format for resume optimizer - ✅ Validated ATS optimization suggestions format - ✅ Confirmed backward compatibility with existing workflows ## Version 0.4.0 0.4.5 ## Related Issues or Context <!-- ⚠️ NOTE: This repository is for Dify Official Plugins only. For community contributions, please submit to https://github.com/langgenius/dify-plugins instead. - Link Related Issues if Applicable: #issue_number - Or Provide Context about Why this Change is Needed --> ## This PR contains Changes to *Non-Plugin* <!-- Put an `x` in all the boxes that apply by replacing [ ] with [x] For example: - [x] Documentation --> - [ ] Documentation - [ ] Other ## This PR contains Changes to *Non-LLM Models Plugin* - [ ] I have Run Comprehensive Tests Relevant to My Changes <!-- 📷 Include Screenshots/Videos Demonstrating the Fix, New Feature, or the Behavior Before/After Breaking Changes. --> ## This PR contains Changes to *LLM Models Plugin* <!-- LLM Models Test Example: --> <!-- https://github.com/langgenius/dify-official-plugins/blob/main/.assets/test-examples/llm-plugin-tests/llm_test_example.md --> - [ ] My Changes Affect Message Flow Handling (System Messages and User→Assistant Turn-Taking) <!-- 📷 Include Screenshots/Videos Demonstrating the Fix, New Feature, or the Behavior Before/After Breaking Changes. --> - [ ] My Changes Affect Tool Interaction Flow (Multi-Round Usage and Output Handling, for both Agent App and Agent Node) <!-- 📷 Include Screenshots/Videos Demonstrating the Fix, New Feature, or the Behavior Before/After Breaking Changes. --> - [ ] My Changes Affect Multimodal Input Handling (Images, PDFs, Audio, Video, etc.) <!-- 📷 Include Screenshots/Videos Demonstrating the Fix, New Feature, or the Behavior Before/After Breaking Changes. --> - [ ] My Changes Affect Multimodal Output Generation (Images, Audio, Video, etc.) <!-- 📷 Include Screenshots/Videos Demonstrating the Fix, New Feature, or the Behavior Before/After Breaking Changes. --> - [ ] My Changes Affect Structured Output Format (JSON, XML, etc.) <!-- 📷 Include Screenshots/Videos Demonstrating the Fix, New Feature, or the Behavior Before/After Breaking Changes. --> - [ ] My Changes Affect Token Consumption Metrics <!-- 📷 Include Screenshots/Videos Demonstrating the Fix, New Feature, or the Behavior Before/After Breaking Changes. --> - [ ] My Changes Affect Other LLM Functionalities (Reasoning Process, Grounding, Prompt Caching, etc.) <!-- 📷 Include Screenshots/Videos Demonstrating the Fix, New Feature, or the Behavior Before/After Breaking Changes. --> - [ ] Other Changes (Add New Models, Fix Model Parameters etc.) <!-- 📷 Include Screenshots/Videos Demonstrating the Fix, New Feature, or the Behavior Before/After Breaking Changes. --> ## Version Control (Any Changes to the Plugin Will Require Bumping the Version) - [ ] I have Bumped Up the Version in Manifest.yaml (Top-Level `Version` Field, Not in Meta Section) <!-- ⚠️ NOTE: Version Format: MAJOR.MINOR.PATCH - MAJOR (0.x.x): Reserved for Significant architectural changes or incompatible API modifications - MINOR (x.0.x): For New feature additions while maintaining backward compatibility - PATCH (x.x.0): For Backward-compatible bug fixes and minor improvements - Note: Each Version Component (MAJOR, MINOR, PATCH) Can Be 2 Digits, e.g., 10.11.22 --> ## Dify Plugin SDK Version - [ ] I have Ensured `dify_plugin>=0.3.0,<0.6.0` is in requirements.txt ([SDK docs](https://github.com/langgenius/dify-plugin-sdks/blob/main/python/README.md)) ## Environment Verification (If Any Code Changes) <!-- ⚠️ NOTE: At Least One Environment Must Be Tested. --> ### Local Deployment Environment - [ ] Dify Version is: <!-- Specify Your Version (e.g., 1.2.0) -->, I have Tested My Changes on Local Deployment Dify with a Clean Environment That Matches the Production Configuration. <!-- - Python Virtual Env Matching Manifest.yaml & requirements.txt - No Breaking Changes in Dify That May Affect the Testing Result --> ### SaaS Environment - [ ] I have Tested My Changes on cloud.dify.ai with a Clean Environment That Matches the Production Configuration <!-- - Python Virtual Env Matching Manifest.yaml & requirements.txt --> <img width="2489" height="1367" alt="7b4cbb6abe6194044426cf978ed0d54f" src="https://github.com/user-attachments/assets/4d4cff16-27e7-4414-a6f5-6fc34cbf4e98" /> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
yindo added the pull-request label 2026-02-16 11:16:26 -05:00
yindo closed this issue 2026-02-16 11:16:26 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify-official-plugins#2238