diff --git a/pr_agent/git_providers/utils.py b/pr_agent/git_providers/utils.py index 0cfbe116..75f058a8 100644 --- a/pr_agent/git_providers/utils.py +++ b/pr_agent/git_providers/utils.py @@ -3,6 +3,7 @@ import os import tempfile from dynaconf import Dynaconf +from dynaconf.utils.boxing import DynaBox from starlette_context import context from pr_agent.config_loader import get_settings @@ -62,6 +63,28 @@ def apply_repo_settings(pr_url): if get_settings().config.model.lower() == 'claude-3-5-sonnet': set_claude_model() + # Append the response language in the extra instructions + response_language = get_settings().config.get('response_language', 'en-us') + if response_language.lower() != 'en-us': + get_logger().info(f'User has set the response language to: {response_language}') + + lang_instruction_text = f"Your response MUST be written in the language corresponding to locale code: '{response_language}'. This is crucial." + separator_text = "\n======\n\nIn addition, " + + for key in get_settings(): + setting = get_settings().get(key) + if isinstance(setting, DynaBox): + if key.lower() in ['pr_description', 'pr_code_suggestions', 'pr_reviewer']: + if hasattr(setting, 'extra_instructions'): + extra_instructions = setting.extra_instructions + + if lang_instruction_text not in str(extra_instructions): + updated_instructions = ( + str(extra_instructions) + separator_text + lang_instruction_text + if extra_instructions else lang_instruction_text + ) + setting.extra_instructions = updated_instructions + def handle_configurations_errors(config_errors, git_provider): try: