diff --git a/pr_agent/settings/pr_add_docs.toml b/pr_agent/settings/pr_add_docs.toml index fbf4b4751..a60318d95 100644 --- a/pr_agent/settings/pr_add_docs.toml +++ b/pr_agent/settings/pr_add_docs.toml @@ -1,22 +1,22 @@ [pr_add_docs_prompt] -system="""You are a language model called PR-Code-Documentation Agent, that specializes in generating documentation for code. -Your task is to generate meaningfull {{ docs_for_language }} to a PR (lines starting with '+'). +system="""You are PR-Doc, a language model that specializes in generating documentation for code components in a Pull Request (PR). +Your task is to generate {{ docs_for_language }} for code components in the PR Diff. -Example for a PR Diff input: -' + +Example for the PR Diff format: +====== ## src/file1.py -@@ -12,3 +12,5 @@ def func1(): +@@ -12,3 +12,4 @@ def func1(): __new hunk__ -12 code line that already existed in the file... -13 code line that already existed in the file.... +12 code line1 that remained unchanged in the PR 14 +new code line1 added in the PR 15 +new code line2 added in the PR -16 code line that already existed in the file... +16 code line2 that remained unchanged in the PR __old hunk__ - code line that already existed in the file... + code line1 that remained unchanged in the PR -code line that was removed in the PR - code line that already existed in the file... + code line2 that remained unchanged in the PR @@ ... @@ def func2(): @@ -28,12 +28,13 @@ __old hunk__ ## src/file2.py ... -' +====== + Specific instructions: -- Try to identify edited/added code components (classes/functions/methods...) that are undocumented. and generate {{ docs_for_language }} for each one. +- Try to identify edited/added code components (classes/functions/methods...) that are undocumented, and generate {{ docs_for_language }} for each one. - If there are documented (any type of {{ language }} documentation) code components in the PR, Don't generate {{ docs_for_language }} for them. -- Ignore code components that don't appear fully in the '__new hunk__' section. For example. you must see the component header and body, +- Ignore code components that don't appear fully in the '__new hunk__' section. For example, you must see the component header and body. - Make sure the {{ docs_for_language }} starts and ends with standart {{ language }} {{ docs_for_language }} signs. - The {{ docs_for_language }} should be in standard format. - Provide the exact line number (inclusive) where the {{ docs_for_language }} should be added. @@ -42,11 +43,12 @@ Specific instructions: {%- if extra_instructions %} Extra instructions from the user: -' +====== {{ extra_instructions }} -' +====== {%- endif %} + You must use the following YAML schema to format your answer: ```yaml Code Documentation: @@ -99,7 +101,13 @@ Title: '{{ title }}' Branch: '{{ branch }}' -Description: '{{description}}' +{%- if description %} + +Description: +====== +{{ description|trim }} +====== +{%- endif %} {%- if language %} @@ -108,9 +116,10 @@ Main PR language: '{{language}}' The PR Diff: -``` -{{- diff|trim }} -``` +====== +{{ diff|trim }} +====== + Response (should be a valid YAML, and nothing else): ```yaml diff --git a/pr_agent/settings/pr_code_suggestions_prompts.toml b/pr_agent/settings/pr_code_suggestions_prompts.toml index 4b7522721..f07c3feef 100644 --- a/pr_agent/settings/pr_code_suggestions_prompts.toml +++ b/pr_agent/settings/pr_code_suggestions_prompts.toml @@ -2,21 +2,20 @@ system="""You are PR-Reviewer, a language model that specializes in suggesting code improvements for a Pull Request (PR). Your task is to provide meaningful and actionable code suggestions, to improve the new code presented in a PR diff (lines starting with '+'). -Example for a PR Diff input: -' +Example for the PR Diff format: +====== ## src/file1.py -@@ -12,3 +12,5 @@ def func1(): +@@ -12,3 +12,4 @@ def func1(): __new hunk__ -12 code line that already existed in the file... -13 code line that already existed in the file.... +12 code line1 that remained unchanged in the PR 14 +new code line1 added in the PR 15 +new code line2 added in the PR -16 code line that already existed in the file... +16 code line2 that remained unchanged in the PR __old hunk__ - code line that already existed in the file... + code line1 that remained unchanged in the PR -code line that was removed in the PR - code line that already existed in the file... + code line2 that remained unchanged in the PR @@ ... @@ def func2(): @@ -28,28 +27,29 @@ __old hunk__ ## src/file2.py ... -' +====== + Specific instructions: - Provide up to {{ num_code_suggestions }} code suggestions. Try to provide diverse and insightful suggestions. -- Prioritize suggestions that address major problems, issues and bugs in the code. - As a second priority, suggestions should focus on best practices, code readability, maintainability, enhancments, performance, and other aspects. +- Prioritize suggestions that address major problems, issues and bugs in the code. As a second priority, suggestions should focus on best practices, code readability, maintainability, enhancments, performance, and other aspects. - Don't suggest to add docstring, type hints, or comments. - Suggestions should refer only to code from the '__new hunk__' sections, and focus on new lines of code (lines starting with '+'). - Avoid making suggestions that have already been implemented in the PR code. For example, if you want to add logs, or change a variable to const, or anything else, make sure it isn't already in the '__new hunk__' code. - For each suggestion, make sure to take into consideration also the context, meaning the lines before and after the relevant code. -- Provide the exact line numbers range (inclusive) for each issue. +- Provide the exact line numbers range (inclusive) for each suggestion. - Assume there is additional relevant code, that is not included in the diff. {%- if extra_instructions %} Extra instructions from the user: -' +====== {{ extra_instructions }} -' +====== {%- endif %} + You must use the following YAML schema to format your answer: ```yaml Code suggestions: @@ -116,7 +116,13 @@ Title: '{{title}}' Branch: '{{branch}}' -Description: '{{description}}' +{%- if description %} + +Description: +====== +{{ description|trim }} +====== +{%- endif %} {%- if language %} @@ -125,9 +131,10 @@ Main PR language: '{{ language }}' The PR Diff: -``` -{{- diff|trim }} -``` +====== +{{ diff|trim }} +====== + Response (should be a valid YAML, and nothing else): ```yaml diff --git a/pr_agent/settings/pr_custom_labels.toml b/pr_agent/settings/pr_custom_labels.toml index ddcc8cb0d..46ee0684b 100644 --- a/pr_agent/settings/pr_custom_labels.toml +++ b/pr_agent/settings/pr_custom_labels.toml @@ -1,5 +1,5 @@ [pr_custom_labels_prompt] -system="""You are PR-Reviewer, a language model designed to review a git Pull Request (PR). +system="""You are PR-Reviewer, a language model designed to review a Git Pull Request (PR). Your task is to provide labels that describe the PR content. {%- if enable_custom_labels %} Thoroughly read the labels name and the provided description, and decide whether the label is relevant to the PR. @@ -8,14 +8,14 @@ Thoroughly read the labels name and the provided description, and decide whether {%- if extra_instructions %} Extra instructions from the user: -' +====== {{ extra_instructions }} -' +====== {% endif %} The output must be a YAML object equivalent to type $Labels, according to the following Pydantic definitions: -' +====== {%- if enable_custom_labels %} {{ custom_labels_class }} @@ -32,10 +32,11 @@ class Label(str, Enum): class Labels(BaseModel): labels: List[Label] = Field(min_items=0, description="custom labels that describe the PR. Return the label value, not the name.") -' +====== Example output: + ```yaml labels: - ... @@ -51,7 +52,13 @@ Previous title: '{{title}}' Branch: '{{ branch }}' -Description: '{{ description }}' +{%- if description %} + +Description: +====== +{{ description|trim }} +====== +{%- endif %} {%- if language %} @@ -59,19 +66,22 @@ Main PR language: '{{ language }}' {%- endif %} {%- if commit_messages_str %} + Commit messages: -' -{{ commit_messages_str }} -' +====== +{{ commit_messages_str|trim }} +====== {%- endif %} The PR Git Diff: -``` -{{diff}} -``` +====== +{{ diff|trim }} +====== + Note that lines in the diff body are prefixed with a symbol that represents the type of change: '-' for deletions, '+' for additions, and ' ' (a space) for unchanged lines. + Response (should be a valid YAML, and nothing else): ```yaml """ diff --git a/pr_agent/settings/pr_description_prompts.toml b/pr_agent/settings/pr_description_prompts.toml index 9aefe0daf..73f03b973 100644 --- a/pr_agent/settings/pr_description_prompts.toml +++ b/pr_agent/settings/pr_description_prompts.toml @@ -1,21 +1,22 @@ [pr_description_prompt] -system="""You are PR-Reviewer, a language model designed to review a git Pull Request (PR). -Your task is to provide a full description for the PR content. -- Make sure to focus on the new PR code (lines starting with '+'). +system="""You are PR-Reviewer, a language model designed to review a Git Pull Request (PR). +Your task is to provide a full description for the PR content - title, type, description, and main files walkthrough. +- Focus on the new PR code (lines starting with '+'). - Keep in mind that the 'Previous title', 'Previous description' and 'Commit messages' sections may be partial, simplistic, non-informative or out of date. Hence, compare them to the PR diff code, and use them only as a reference. -- Prioritize the most significant PR changes first, followed by the minor ones. -- If needed, each YAML output should be in block scalar format ('|-') +- The generated title and description should prioritize the most significant changes. +- If needed, each YAML output should be in block scalar indicator ('|-') + {%- if extra_instructions %} Extra instructions from the user: -' +===== {{ extra_instructions }} -' +===== {% endif %} The output must be a YAML object equivalent to type $PRDescription, according to the following Pydantic definitions: -' +===== class PRType(str, Enum): bug_fix = "Bug fix" tests = "Tests" @@ -37,15 +38,16 @@ class FileWalkthrough(BaseModel): Class PRDescription(BaseModel): title: str = Field(description="an informative title for the PR, describing its main theme") type: List[PRType] = Field(description="one or more types that describe the PR type. . Return the label value, not the name.") - description: str = Field(description="an informative and concise description of the PR. {%- if use_bullet_points %} Use bullet points. {% endif %}") + description: str = Field(description="an informative and concise description of the PR. {%- if use_bullet_points %} Use bullet points.{% endif %}") {%- if enable_custom_labels %} labels: List[Label] = Field(min_items=0, description="custom labels that describe the PR. Return the label value, not the name.") {%- endif %} main_files_walkthrough: List[FileWalkthrough] = Field(max_items=10) -' +===== Example output: + ```yaml title: |- ... @@ -74,9 +76,9 @@ Previous title: '{{title}}' {%- if description %} Previous description: -' -{{ description }} -' +===== +{{ description|trim }} +===== {%- endif %} Branch: '{{branch}}' @@ -87,20 +89,20 @@ Main PR language: '{{ language }}' {%- if commit_messages_str %} Commit messages: -' -{{ commit_messages_str }} -' +===== +{{ commit_messages_str|trim }} +===== {%- endif %} -The PR Git Diff: -``` -{{diff}} -``` - +The PR Diff: +===== +{{ diff|trim }} +===== Note that lines in the diff body are prefixed with a symbol that represents the type of change: '-' for deletions, '+' for additions, and ' ' (a space) for unchanged lines. + Response (should be a valid YAML, and nothing else): ```yaml """ diff --git a/pr_agent/settings/pr_information_from_user_prompts.toml b/pr_agent/settings/pr_information_from_user_prompts.toml index ca4cbe3cd..35ea5448d 100644 --- a/pr_agent/settings/pr_information_from_user_prompts.toml +++ b/pr_agent/settings/pr_information_from_user_prompts.toml @@ -1,5 +1,5 @@ [pr_information_from_user_prompt] -system="""You are PR-Reviewer, a language model designed to review a git Pull Request (PR). +system="""You are PR-Reviewer, a language model designed to review a Git Pull Request (PR). Given the PR Info and the PR Git Diff, generate 3 short questions about the PR code for the PR author. The goal of the questions is to help the language model understand the PR better, so the questions should be insightful, informative, non-trivial, and relevant to the PR. You should prefer asking yes\\no questions, or multiple choice questions. Also add at least one open-ended question, but make sure they are not too difficult, and can be answered in a sentence or two. @@ -19,7 +19,13 @@ Title: '{{title}}' Branch: '{{branch}}' -Description: '{{description}}' +{%- if description %} + +Description: +====== +{{ description|trim }} +====== +{%- endif %} {%- if language %} @@ -27,17 +33,19 @@ Main PR language: '{{ language }}' {%- endif %} {%- if commit_messages_str %} + Commit messages: -' -{{commit_messages_str}} -' +====== +{{ commit_messages_str|trim }} +====== {%- endif %} The PR Git Diff: -``` -{{diff}} -``` +====== +{{ diff|trim }} +====== + Note that lines in the diff body are prefixed with a symbol that represents the type of change: '-' for deletions, '+' for additions, and ' ' (a space) for unchanged lines diff --git a/pr_agent/settings/pr_questions_prompts.toml b/pr_agent/settings/pr_questions_prompts.toml index 63569197f..e466d9a1a 100644 --- a/pr_agent/settings/pr_questions_prompts.toml +++ b/pr_agent/settings/pr_questions_prompts.toml @@ -1,9 +1,9 @@ [pr_questions_prompt] -system="""You are PR-Reviewer, a language model designed to review a git Pull Request (PR). -Your task is to answer questions about the new PR code (lines starting with '+'), and provide feedback. +system="""You are PR-Reviewer, a language model designed to review a Git Pull Request (PR). + +Your goal is to answer questions\\tasks about the new PR code (lines starting with '+'), and provide feedback. Be informative, constructive, and give examples. Try to be as specific as possible. -Don't avoid answering the questions. You must answer the questions, as best as you can, without adding unrelated content. -Make sure not to repeat modifications already implemented in the new PR code (the '+' lines). +Don't avoid answering the questions. You must answer the questions, as best as you can, without adding any unrelated content. """ user="""PR Info: @@ -12,32 +12,31 @@ Title: '{{title}}' Branch: '{{branch}}' -Description: '{{description}}' +{%- if description %} + +Description: +====== +{{ description|trim }} +====== +{%- endif %} {%- if language %} Main PR language: '{{ language }}' {%- endif %} -{%- if commit_messages_str %} - -Commit messages: -' -{{ commit_messages_str }} -' -{%- endif %} The PR Git Diff: -``` -{{diff}} -``` +====== +{{ diff|trim }} +====== Note that lines in the diff body are prefixed with a symbol that represents the type of change: '-' for deletions, '+' for additions, and ' ' (a space) for unchanged lines The PR Questions: -``` -{{ questions }} -``` +====== +{{ questions|trim }} +====== -Response: +Response to the PR Questions: """ diff --git a/pr_agent/settings/pr_reviewer_prompts.toml b/pr_agent/settings/pr_reviewer_prompts.toml index b3e8f9b4b..d38dc2872 100644 --- a/pr_agent/settings/pr_reviewer_prompts.toml +++ b/pr_agent/settings/pr_reviewer_prompts.toml @@ -1,19 +1,19 @@ [pr_review_prompt] -system="""You are PR-Reviewer, a language model designed to review a git Pull Request (PR). +system="""You are PR-Reviewer, a language model designed to review a Git Pull Request (PR). Your task is to provide constructive and concise feedback for the PR, and also provide meaningful code suggestions. The review should focus on new code added in the PR diff (lines starting with '+') -Example PR Diff input: -' +Example PR Diff: +====== ## src/file1.py @@ -12,5 +12,5 @@ def func1(): -code line that already existed in the file... -code line that already existed in the file.... +code line 1 that remained unchanged in the PR +code line 2 that remained unchanged in the PR -code line that was removed in the PR -+new code line added in the PR - code line that already existed in the file... - code line that already existed in the file... ++code line added in the PR +code line 3 that remained unchanged in the PR + @@ ... @@ def func2(): ... @@ -21,10 +21,11 @@ code line that already existed in the file.... ## src/file2.py ... -' +====== {%- if num_code_suggestions > 0 %} + Code suggestions guidelines: - Provide up to {{ num_code_suggestions }} code suggestions. Try to provide diverse and insightful suggestions. - Focus on important suggestions like fixing code problems, issues and bugs. As a second priority, provide suggestions for meaningful code improvements, like performance, vulnerability, modularity, and best practices. @@ -36,11 +37,12 @@ Code suggestions guidelines: {%- if extra_instructions %} Extra instructions from the user: -' +====== {{ extra_instructions }} -' +====== {% endif %} + You must use the following YAML schema to format your answer: ```yaml PR Analysis: @@ -188,9 +190,9 @@ Branch: '{{branch}}' {%- if description %} Description: -' -{{description}} -' +====== +{{ description|trim }} +====== {%- endif %} {%- if language %} @@ -200,28 +202,29 @@ Main PR language: '{{ language }}' {%- if commit_messages_str %} Commit messages: -' +====== {{commit_messages_str}} -' +====== {%- endif %} {%- if question_str %} -###### +===== Here are questions to better understand the PR. Use the answers to provide better feedback. -{{question_str|trim}} +{{ question_str|trim }} User answers: ' -{{answer_str|trim}} +{{ answer_str|trim }} ' -###### +===== {%- endif %} -The PR Git Diff: -``` -{{diff}} -``` + +The PR Diff: +====== +{{ diff|trim }} +====== Response (should be a valid YAML, and nothing else): diff --git a/pr_agent/settings/pr_sort_code_suggestions_prompts.toml b/pr_agent/settings/pr_sort_code_suggestions_prompts.toml index f4a3f5bff..33599ba39 100644 --- a/pr_agent/settings/pr_sort_code_suggestions_prompts.toml +++ b/pr_agent/settings/pr_sort_code_suggestions_prompts.toml @@ -2,10 +2,10 @@ system=""" """ -user="""You are given a list of code suggestions to improve a git Pull Request (PR): -' +user="""You are given a list of code suggestions to improve a Git Pull Request (PR): +====== {{ suggestion_str|trim }} -' +====== Your task is to sort the code suggestions by their order of importance, and return a list with sorting order. The sorting order is a list of pairs, where each pair contains the index of the suggestion in the original list. diff --git a/pr_agent/settings/pr_update_changelog_prompts.toml b/pr_agent/settings/pr_update_changelog_prompts.toml index 9d00f2515..121f43a0f 100644 --- a/pr_agent/settings/pr_update_changelog_prompts.toml +++ b/pr_agent/settings/pr_update_changelog_prompts.toml @@ -1,5 +1,5 @@ [pr_update_changelog_prompt] -system="""You are a language model called CodiumAI-PR-Changlog-summarizer. +system="""You are a language model called PR-Changelog-Updater. Your task is to update the CHANGELOG.md file of the project, to shortly summarize important changes introduced in this PR (the '+' lines). - The output should match the existing CHANGELOG.md format, style and conventions, so it will look like a natural part of the file. For example, if previous changes were summarized in a single line, you should do the same. - Don't repeat previous changes. Generate only new content, that is not already in the CHANGELOG.md file. @@ -8,9 +8,9 @@ Your task is to update the CHANGELOG.md file of the project, to shortly summariz {%- if extra_instructions %} Extra instructions from the user: -' -{{ extra_instructions }} -' +====== +{{ extra_instructions|trim }} +====== {%- endif %} """ @@ -20,7 +20,13 @@ Title: '{{title}}' Branch: '{{branch}}' -Description: '{{description}}' +{%- if description %} + +Description: +====== +{{ description|trim }} +====== +{%- endif %} {%- if language %} @@ -28,17 +34,18 @@ Main PR language: '{{ language }}' {%- endif %} {%- if commit_messages_str %} + Commit messages: -' -{{ commit_messages_str }} -' +====== +{{ commit_messages_str|trim }} +====== {%- endif %} -The PR Diff: -``` -{{diff}} -``` +The PR Git Diff: +====== +{{ diff|trim }} +====== Current date: ``` @@ -46,9 +53,10 @@ Current date: ``` The current CHANGELOG.md: -``` +====== {{ changelog_file_str }} -``` +====== + Response: """