From 09644471ba60c97a6e6d0cad1d67c59e6c7f7017 Mon Sep 17 00:00:00 2001 From: shijinpjlab Date: Mon, 25 Aug 2025 15:11:23 +0800 Subject: [PATCH 1/3] feat: update clickstar gif --- README.md | 2 +- README_ja.md | 2 +- README_zh-CN.md | 2 +- docs/assets/clickstar_2.gif | Bin 0 -> 43313 bytes 4 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 docs/assets/clickstar_2.gif diff --git a/README.md b/README.md index 339279bb..47940920 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ If you like Dingo, please give us a ⭐ on GitHub!
- Click Star + Click Star

diff --git a/README_ja.md b/README_ja.md index 72421c97..29eab120 100644 --- a/README_ja.md +++ b/README_ja.md @@ -37,7 +37,7 @@ このプロジェクトが役に立ったら、GitHubで⭐を付けてください!
- Star をクリック + Star をクリック

diff --git a/README_zh-CN.md b/README_zh-CN.md index 0a9d30b8..484a24ab 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -33,7 +33,7 @@ 如果觉得有帮助,欢迎在 GitHub 上点个 ⭐ 支持!
- 点击 Star 支持 + 点击 Star 支持

diff --git a/docs/assets/clickstar_2.gif b/docs/assets/clickstar_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..a19daf8540b312b50d27f3d5590543481ed30abf GIT binary patch literal 43313 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 Date: Mon, 25 Aug 2025 15:12:58 +0800 Subject: [PATCH 2/3] feat: fix lint --- dingo/model/llm/llm_meta_rater_evaluation.py | 22 +++++------ dingo/model/prompt/prompt_meta_rater.py | 38 +++++++++---------- .../meta_rater/sdk_meta_rater_evaluation.py | 3 +- test/data/test_meta_rater.jsonl | 2 +- 4 files changed, 32 insertions(+), 33 deletions(-) diff --git a/dingo/model/llm/llm_meta_rater_evaluation.py b/dingo/model/llm/llm_meta_rater_evaluation.py index 82d1f318..bcca3148 100644 --- a/dingo/model/llm/llm_meta_rater_evaluation.py +++ b/dingo/model/llm/llm_meta_rater_evaluation.py @@ -22,26 +22,26 @@ class LLMMetaRaterEvaluation(BaseOpenAI): """ Unified LLM model for Meta-rater PRRC dimensions evaluation. - + This model provides a single interface for evaluating multiple aspects of text quality based on the Meta-rater paper's PRRC framework: - Professionalism: Degree of expertise required - - Readability: Clarity and coherence + - Readability: Clarity and coherence - Reasoning: Logical depth and complexity - Cleanliness: Formatting and content appropriateness - + The specific evaluation type is determined by the prompt used. """ - prompt = PromptMetaRaterProfessionalism # Default prompt + prompt = PromptMetaRaterProfessionalism # Default prompt @classmethod def build_messages(cls, input_data: Data) -> List: """ Build messages for the LLM API call. - + Args: input_data: Data object containing text content to evaluate - + Returns: List: Formatted messages for LLM API """ @@ -53,10 +53,10 @@ def build_messages(cls, input_data: Data) -> List: def process_response(cls, response: str) -> ModelRes: """ Process the LLM response for Meta-rater evaluation. - + Args: response: Raw response string from the LLM - + Returns: ModelRes: Processed evaluation results with score and reason """ @@ -70,7 +70,7 @@ def process_response(cls, response: str) -> ModelRes: cleaned_response = cleaned_response[3:] if cleaned_response.endswith('```'): cleaned_response = cleaned_response[:-3] - + try: response_json = json.loads(cleaned_response) except json.JSONDecodeError: @@ -79,9 +79,9 @@ def process_response(cls, response: str) -> ModelRes: # Extract score and reason from response score = response_json.get('score', 0) reason = response_json.get('reason', '') - + result = ModelRes() - + # Meta-rater uses 1-5 scoring, with higher scores being better; # We normalize this to binary classification for compatibility # Scores >= 3 are considered "good quality", < 3 are "low quality" diff --git a/dingo/model/prompt/prompt_meta_rater.py b/dingo/model/prompt/prompt_meta_rater.py index 87f52f10..da6a57e0 100644 --- a/dingo/model/prompt/prompt_meta_rater.py +++ b/dingo/model/prompt/prompt_meta_rater.py @@ -17,13 +17,13 @@ You are an expert evaluator. Below is an extract from a text source such as a web page, book, academic paper, Github, Wikipedia, or StackExchange. Evaluate the PROFESSIONALISM of the text, that is, the degree of expertise and prerequisite knowledge required to comprehend it, using the additive 5-point scoring system described below. Your evaluation should be based on the depth, accuracy, and accessibility of the content, without considering the writing style, grammar, spelling, or punctuation in your scoring. Points are accumulated based on the satisfaction of each criterion: -- Add 1 point if the text is relatively simple and requires minimal technical knowledge or expertise to understand. The text might include nursery rhymes, children's books, or other basic content that is accessible to a broad audience. The information provided is straightforward and does not delve into complex concepts or specialized topics. +- Add 1 point if the text is relatively simple and requires minimal technical knowledge or expertise to understand. The text might include nursery rhymes, children's books, or other basic content that is accessible to a broad audience. The information provided is straightforward and does not delve into complex concepts or specialized topics. - Add another point if the text is somewhat more complex and might require a basic level of specialized knowledge to comprehend fully. Examples could include popular books, popular science articles, or novels. The content delves a little deeper into the subject matter, but it remains accessible to a reasonably broad audience. - Award a third point if the text falls in the middle of the spectrum, requiring some degree of expertise to understand but not being overly complex or specialized. The content might encompass more advanced books, detailed articles, or introductions to complex topics. It provides a decent level of depth and detail, but it does not require an extensive background in the subject matter to understand. - Grant a fourth point if the text is complicated and requires a significant level of expertise and technical knowledge. Examples might include academic papers, advanced textbooks, or detailed technical reports. The content is detailed and accurate, but it could be inaccessible to those without a strong background in the subject matter. - Bestow a fifth point if the text is extremely high in professionalism, requiring a high degree of subject matter expertise and prerequisite knowledge. The text is likely limited to those with advanced understanding or experience in the field, such as advanced academic papers, complex technical manuals, or patents. The content is deep, accurate, and insightful, but largely inaccessible to those without a significant background in the topic. -Here are three aspects that should NOT influence your judgement: +Here are three aspects that should NOT influence your judgement: (1) The specific language the text is written in (2) The length of text (3) Usage of placeholders for data privacy or safety, e.g. @CAPS1, [EMAIL_ADDRESS], [PHONE_NUMBER], and so on. @@ -46,16 +46,16 @@ I am a data scientist interested in exploring data in the pre-training stage of large language models. # OBJECTIVE # -You are an expert evaluator. Below is an extract from a text source such as a web page, book, academic paper, Github, Wikipedia, or StackExchange. Evaluate whether the page has a high READABILITY using the additive 5-point scoring system described below. +You are an expert evaluator. Below is an extract from a text source such as a web page, book, academic paper, Github, Wikipedia, or StackExchange. Evaluate whether the page has a high READABILITY using the additive 5-point scoring system described below. -Points are accumulated based on the satisfaction of each criterion: +Points are accumulated based on the satisfaction of each criterion: - Add 1 point if the text is somewhat readable but contains significant issues with clarity or coherence. It might include complex vocabulary or sentence structures that require advanced reading skills, or it might have numerous grammar and spelling errors. - Add another point if the text is generally clear and coherent, but there are sections that are difficult to comprehend due to occasional grammar, spelling errors, or convoluted sentence structures. - Award a third point if the text is clear and coherent for the most part, using appropriate vocabulary and sentence structures that are easy to understand. Minor issues with grammar or spelling might still be present. - Grant a fourth point if the text is very clear and coherent, with very few or no errors in grammar and spelling. The text uses proper punctuation, vocabulary, and sentence structures that are easy to follow and understand. - Bestow a fifth point if the text is outstanding in its clarity and coherence. It uses language and sentence structures that are easy to comprehend, while also conveying ideas and nuances effectively. Minor errors in grammar, spelling, and punctuation are allowed, but they should not interfere with the overall understanding of the text. -Here are three aspects that should NOT influence your judgement: +Here are three aspects that should NOT influence your judgement: (1) The specific language the text is written in (2) The length of text (3) Usage of placeholders for data privacy or safety, e.g. @CAPS1, [EMAIL_ADDRESS], [PHONE_NUMBER], and so on. @@ -77,16 +77,16 @@ I am a data scientist interested in exploring data in the pre-training stage of large language models. # OBJECTIVE # -You are an expert evaluator. Below is an extract from a text source such as a web page, book, academic paper, Github, Wikipedia, or StackExchange. Evaluate whether the page has a high REASONING using the additive 5-point scoring system described below. +You are an expert evaluator. Below is an extract from a text source such as a web page, book, academic paper, Github, Wikipedia, or StackExchange. Evaluate whether the page has a high REASONING using the additive 5-point scoring system described below. -Points are accumulated based on the satisfaction of each criterion: +Points are accumulated based on the satisfaction of each criterion: Add 1 point if the content contains preliminary elements of reasoning, possibly involving a single causal relationship or simple logical judgments, but lacks in-depth analysis (e.g., presenting a viewpoint without supporting evidence or detailed explanations). Add another point if the content demonstrates basic reasoning ability, incorporating some logical relationships that require the reader to engage in a certain level of thought. This may involve simple argumentative structures or examples, but the analysis remains superficial (e.g., providing a problem and a straightforward solution with some examples but lacking depth). Award a third point if the content exhibits a good level of reasoning complexity, involving multiple reasoning steps that require more complex thought from the reader. The reader should be able to identify several interrelated arguments and may include some depth of analysis (e.g., analyzing how different factors influence an outcome or comparing various viewpoints). Grant a fourth point if the content has a high level of reasoning complexity, including multi-layered logical reasoning and in-depth analysis. The reader needs to engage in complex thinking and can identify multiple interconnected arguments while conducting a comprehensive evaluation (e.g., analyzing multiple variables or assessing the pros and cons of different solutions). Bestow a fifth point if the content excels in reasoning complexity, demanding deep analysis and innovative thinking from the reader. The reasoning process is complex and multidimensional, involving interdisciplinary knowledge, requiring the reader to integrate various pieces of information to make comprehensive judgments (e.g., discussing complex mathematical models, designing optimization algorithms, or engaging in high-level strategic thinking). -Here are three aspects that should NOT influence your judgement: +Here are three aspects that should NOT influence your judgement: (1) The specific language the text is written in (2) The length of text (3) Usage of placeholders for data privacy or safety, e.g. @CAPS1, [EMAIL_ADDRESS], [PHONE_NUMBER], and so on. @@ -97,7 +97,7 @@ professional, objective, formal, and clear. # AUDIENCE # Data scientists and other professionals interested in data for large language models. -# RESPONSE # +# RESPONSE # Return the results in JSON format: {{"score": x, "reason": "xxx"}}. Here is the text: @@ -108,9 +108,9 @@ I am a data scientist interested in exploring data in the pre-training stage of large language models. # OBJECTIVE # -You are an expert evaluator. Below is an extract from a text source such as a web page, book, academic paper, Github, Wikipedia, or StackExchange. Evaluate whether the page has a high CLEANLINESS using the additive 5-point scoring system described below. +You are an expert evaluator. Below is an extract from a text source such as a web page, book, academic paper, Github, Wikipedia, or StackExchange. Evaluate whether the page has a high CLEANLINESS using the additive 5-point scoring system described below. -Points are accumulated based on the satisfaction of each criterion: +Points are accumulated based on the satisfaction of each criterion: A score of 1 indicates serious issues that affect fluency. A score of 2 indicates the text has obvious problems that affect fluency. A score of 3 means that the text has some problems but does not seriously affect reading fluency. @@ -124,7 +124,7 @@ - Completeness Content: The body of the article consists of complete sentences written naturally by humans, rather than phrases and lists, containing opinions, facts or stories. However, if there is a $TRUNCATED$ symbol at the end, it should be considered as a manual article ending flag set by the author, and there is no need to consider completeness. -Here are three aspects that should NOT influence your judgement: +Here are three aspects that should NOT influence your judgement: (1) The specific language the text is written in (2) The length of text (3) Usage of placeholders for data privacy or safety, e.g. @CAPS1, [EMAIL_ADDRESS], [PHONE_NUMBER], and so on. @@ -146,8 +146,8 @@ class PromptMetaRaterProfessionalism(BasePrompt): """ Prompt class for Meta-rater Professionalism evaluation. - - Evaluates the degree of expertise and prerequisite knowledge required to + + Evaluates the degree of expertise and prerequisite knowledge required to comprehend text on a 5-point scale. """ @@ -169,8 +169,8 @@ class PromptMetaRaterProfessionalism(BasePrompt): class PromptMetaRaterReadability(BasePrompt): """ Prompt class for Meta-rater Readability evaluation. - - Evaluates the clarity and coherence of text using appropriate vocabulary + + Evaluates the clarity and coherence of text using appropriate vocabulary and sentence structures on a 5-point scale. """ @@ -192,7 +192,7 @@ class PromptMetaRaterReadability(BasePrompt): class PromptMetaRaterReasoning(BasePrompt): """ Prompt class for Meta-rater Reasoning evaluation. - + Evaluates the reasoning complexity and logical depth of text content, from simple logical judgments to complex multidimensional analysis on a 5-point scale. """ @@ -215,7 +215,7 @@ class PromptMetaRaterReasoning(BasePrompt): class PromptMetaRaterCleanliness(BasePrompt): """ Prompt class for Meta-rater Cleanliness evaluation. - + Evaluates text formatting, content appropriateness, and completeness, assessing whether text appears human-edited and free from noise on a 5-point scale. """ @@ -231,4 +231,4 @@ class PromptMetaRaterCleanliness(BasePrompt): "evaluation_results": "" } - content = META_RATER_CLEANLINESS_PROMPT \ No newline at end of file + content = META_RATER_CLEANLINESS_PROMPT diff --git a/examples/meta_rater/sdk_meta_rater_evaluation.py b/examples/meta_rater/sdk_meta_rater_evaluation.py index ff035c45..49b22eec 100644 --- a/examples/meta_rater/sdk_meta_rater_evaluation.py +++ b/examples/meta_rater/sdk_meta_rater_evaluation.py @@ -1,7 +1,6 @@ from dingo.config import InputArgs from dingo.exec import Executor - if __name__ == '__main__': input_data = { "input_path": "../../test/data/test_meta_rater.jsonl", @@ -13,7 +12,7 @@ } }, "executor": { - "prompt_list": ["PromptMetaRaterProfessionalism"], # options: "PromptMetaRaterReadability", "PromptMetaRaterReasoning", "PromptMetaRaterCleanliness" + "prompt_list": ["PromptMetaRaterProfessionalism"], # options: "PromptMetaRaterReadability", "PromptMetaRaterReasoning", "PromptMetaRaterCleanliness" "result_save": { "bad": True, "good": True diff --git a/test/data/test_meta_rater.jsonl b/test/data/test_meta_rater.jsonl index 5a826da2..b6db2bdc 100644 --- a/test/data/test_meta_rater.jsonl +++ b/test/data/test_meta_rater.jsonl @@ -4,4 +4,4 @@ {"id": "BkiUfybxK6wB9jjDilZ9", "content": "In and around Les Buttes-Chaumont\nLittle backstreets, colourful houses and greenery set the scene around Buttes-Chaumont\nA picturesque, steep park in the romantic style, charming steep-sided streets lined with coloured houses and courtyards full of flowers, a few unusual museums, a contemporary art venue representative of current artistic trends \u2026 Les Buttes-Chaumont is a popular and bucolic district and a great place for a pleasant stroll.\n1 Le quartier de la Mouza\u00efa\nBuilt around the rue Michel Hidalgo and rue de la Mouzaia, the La Mouza\u00efa district, with a so-called Algerian place name, is just the type of place you look for when visiting a city. The small houses were originally built for working class people and were built on the former gypsum quarries. It is full of plants and flowers.\n2 Parc des Buttes-Chaumont\nThe romantic garden par excellence. Created in 1864, the Parc des Buttes-Chaumont is the steepest of Paris's 426 parks and gardens. It is laid out like an Anglo-Chinese garden, whose irregular design was the opposite of so-called French-style gardens.\n3 Le Plateau - Exhibition centre\nImmaculate walls showcase contemporary art to the public with exhibitions and an experimental space that presents the works of artists in residence in Paris. 50 metres away (at 22, cours du 7th Art), the Antenne organizes educational events linked to contemporary creation.\n4 Mus\u00e9e des moulages de l'hopital Saint-Louis\nThis collection of medical waxworks \u2014 some 5,000 casts \u2014 bears witness to a way of learning about medicine and makes an important contribution to the history of dermatology from the 19th century.\nParis and its neighbourhoods\nParisian North-East\nDirection the north-east!\nIn and around La Villette\nBelleville and M\u00e9nilmontant\nThe P\u00e8re Lachaise cemetery and its surroundings\nOn the canals\nParis Eiffel Tower\nPlaces near to the Eiffel Tower\nOn and around the Champs-Elys\u00e9es\nTrocad\u00e9ro and Passy\nAlma and I\u00e9na\nIn and around Invalides\nBy the Eiffel Tower\nParis South-East\nLet 's head south-east !\nIn and around Bastille and Picpus\nBercy and the Cour-Saint-Emilion\nBois de Vincennes (wood)\nItalie, Tolbiac and the Chinese Quarter\nThe East of Paris\nParisian North-West\nGoing for a walk in the Parisian North-West\nClichy, Batignolles and Epinettes\nPlaine Monceau and Courcelles\nTernes and Champerret\nParis Passlib'\nMuseum & Exhibitions", "source": "commoncrawl", "readability": 5, "professionalism": 1, "cleanliness": 4, "reasoning": 1} {"id": "BkiUdRI5qdmC92mfkoma", "content": "(Host) Based on nearly complete campaign results, Secretary of State Deb Markowitz says Michael Badamo has almost certainly won the Progressive gubernatorial nomination. Badamo easily defeated Peter Diamondstone, and a write in effort to block Badamo was not successful.\n(Kinzel) Although the official election results will not be certified until next Monday, it's virtually certain that the Progressive Party will have a gubernatorial candidate on the ballot this fall.\nThere were two candidates running in the Party's primary for governor: Michael Badamo and Peter Diamondstone. But some Party leaders wanted to leave the office empty so that most of the Party's resources could be directed to Anthony Pollina's campaign for lieutenant governor.\nTo achieve that goal, they needed to mount an aggressive write-in campaign for a candidate who would then decline the Party's nomination. But in the end, that didn't happen.\nTurnout in the Progressive primary was very light \u2013 just over 1,000 people voted in their election. Badamo received roughly 70% of the vote; Diamondstone about 30%; and there were several hundred write-in votes, but not enough to affect the outcome of the race.\n(Kinzel) Markowitz says she is very pleased that no voter access complaints have been received by her office for the primary election.", "source": "c4", "readability": 5, "professionalism": 1, "cleanliness": 5, "reasoning": 2} {"id": "BkiUdmY4ubng4IUB1Uma", "content": "Support classroom and school libraries and build on NEA's signature literacy program, Read Across America.\nDiverse books are tools all children need to help form and shape their own narrative with a sun-will-come-out-tomorrow outlook. For educators interested in putting more diversity on shelves in schools Annie and SONY Pictures is working with the National Education Association to deliver Books for a Brighter Tomorrow, a national program to support classroom and school libraries and build on NEA's signature literacy program, Read Across America.\nAwards of $1,000 are available to public schools that serve economically disadvantaged students in order to enrich book collections with diverse children's literature and offer titles that give kids a chance to discover themselve and their life experiences in stories. The application review panel will base award selection on creativity, ability to make good use of good books and solid strategy for using literature to help students more conscious of their own culture and that of others. Evaluators may take geographical and demographic distribution into consideration when selecting award recipients.\nDeadline for completed application is January 31, 2015. Only award recipients will be notified in writing.\nHow to apply: Please complete all parts of the application, save the document, and submit it as an e-mail attachment to annieaward@nea.org. Remember to retain a copy for your files. Incomplete applications or those that include materials not specifically requested will not be reviewed. Only applications received electronically as specified will be considered. for questions related to this award, contact Anita Merina, amerina@nea.org.\nEligibility: Applicants must meet all of the criteria below. Approved awards will be made to the applicant's school. Only one eligible applicant per school may submit an application.\nThe applicant must agree to serve as the contact person for the award and all related pulic relations activities.\nDownload the application ( MS-WORD, 11.4 KB, 2 pg.) and email.", "source": "c4", "readability": 4, "professionalism": 1, "cleanliness": 4, "reasoning": 1} -{"id": "BkiUf1E5qhLB3L4qdOhH", "content": "In a bowl, combine all ingredients except dogs and buns. Cut a 1/2\u2033 deep lengthwise slit in each hot dog. Spoon 2 tablespoons of mixture into each hot dog. Broil in oven for 2 to 3 minutes or until cheese is melted. Serve on buns.", "source": "c4", "readability": 5, "professionalism": 1, "cleanliness": 4, "reasoning": 0} \ No newline at end of file +{"id": "BkiUf1E5qhLB3L4qdOhH", "content": "In a bowl, combine all ingredients except dogs and buns. Cut a 1/2\u2033 deep lengthwise slit in each hot dog. Spoon 2 tablespoons of mixture into each hot dog. Broil in oven for 2 to 3 minutes or until cheese is melted. Serve on buns.", "source": "c4", "readability": 5, "professionalism": 1, "cleanliness": 4, "reasoning": 0} From 915a704eced1bcb890b7740fc798e0a2f9bc3e7f Mon Sep 17 00:00:00 2001 From: shijinpjlab Date: Mon, 25 Aug 2025 16:04:08 +0800 Subject: [PATCH 3/3] feat: dynamic_config threshold --- dingo/model/rule/rule_image.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dingo/model/rule/rule_image.py b/dingo/model/rule/rule_image.py index 5cf05927..29d3957b 100644 --- a/dingo/model/rule/rule_image.py +++ b/dingo/model/rule/rule_image.py @@ -290,9 +290,9 @@ def eval(cls, input_data: Data) -> ModelRes: time.sleep(2) return ModelRes( - error_status=True if status_data['score_overall'] < 6 else False, + error_status=True if status_data['score_overall'] < cls.dynamic_config.threshold else False, type="Artimuse_Succeeded", - name="BadImage" if status_data['score_overall'] < 6 else "GoodImage", + name="BadImage" if status_data['score_overall'] < cls.dynamic_config.threshold else "GoodImage", reason=[json.dumps(status_data['aspects'], ensure_ascii=False)], ) except Exception as e: