diff --git a/README.md b/README.md index 6d0f1d66..ddd77a23 100644 --- a/README.md +++ b/README.md @@ -53,8 +53,9 @@ PR-Agent aims to help efficiently review and handle pull requests, by providing ## News and Updates ### Feb 27, 2025 - -Important updates and bug fixes for Azure DevOps, see [here](https://github.com/qodo-ai/pr-agent/pull/1583) +- Updated the default model to `o3-mini` for all tools. You can still use the `gpt-4o` as the default model by setting the `model` parameter in the configuration file. +- Important updates and bug fixes for Azure DevOps, see [here](https://github.com/qodo-ai/pr-agent/pull/1583) +- Added support for adjusting the [response language](https://qodo-merge-docs.qodo.ai/usage-guide/additional_configurations/#language-settings) of the PR-Agent tools. ### Feb 6, 2025 New design for the `/improve` tool: diff --git a/docs/docs/usage-guide/additional_configurations.md b/docs/docs/usage-guide/additional_configurations.md index d71e5be0..e8058eac 100644 --- a/docs/docs/usage-guide/additional_configurations.md +++ b/docs/docs/usage-guide/additional_configurations.md @@ -57,21 +57,22 @@ All Qodo Merge tools have a parameter called `extra_instructions`, that enables /update_changelog --pr_update_changelog.extra_instructions="Make sure to update also the version ..." ``` -## Localization +## Language Settings The default response language for Qodo Merge is **U.S. English**. However, some development teams may prefer to display information in a different language. For example, your team's workflow might improve if PR descriptions and code suggestions are set to your country's native language. To configure this, set the `response_language` parameter in the configuration file. This will prompt the model to respond in the specified language. Use a **standard locale code** based on [ISO 3166](https://en.wikipedia.org/wiki/ISO_3166) (country codes) and [ISO 639](https://en.wikipedia.org/wiki/ISO_639) (language codes) to define a language-country pair. See this [comprehensive list of locale codes](https://simplelocalize.io/data/locales/). -### Example: +Example: -```yaml -response_language: "he-IL" +```toml +[config] +response_language: "it-IT" ``` -This will set the response language globally for [describe](../tools/describe.md), [improve](../tools/improve.md), [add_docs](../tools/documentation.md), [update_changelog](../tools/update_changelog.md), [test](../tools/test.md) commands to Hebrew +This will set the response language globally for all the commands to Italian. -> **Important:** Note that only dynamic text generated by the AI model is translated to the configured language. Static text such as labels and table headers that are not part of the AI modeles response will remain in US English. +> **Important:** Note that only dynamic text generated by the AI model is translated to the configured language. Static text such as labels and table headers that are not part of the AI models response will remain in US English. In addition, the model you are using must have good support for the specified language. ## Working with large PRs diff --git a/pr_agent/agent/pr_agent.py b/pr_agent/agent/pr_agent.py index 5b950339..126452d2 100644 --- a/pr_agent/agent/pr_agent.py +++ b/pr_agent/agent/pr_agent.py @@ -74,14 +74,18 @@ class PRAgent: args = update_settings_from_args(args) # Append the response language in the extra instructions - response_language = get_settings().config.response_language - if response_language != 'en-us': + 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}') for key in get_settings(): setting = get_settings().get(key) if str(type(setting)) == "": if hasattr(setting, 'extra_instructions'): - extra_instructions = get_settings()[key.lower()].extra_instructions - get_settings()[key.lower()].extra_instructions = f"{extra_instructions} \n======\n\nLanguage preference from the user\n======\n In your reply only use the lanaguage with locale code: {response_language}" + current_extra_instructions = setting.extra_instructions + if current_extra_instructions: + setting.extra_instructions = current_extra_instructions+ f"\n======\n\nIn addition, Your response MUST be written in the language corresponding to local code: {response_language}. This is crucial." + else: + setting.extra_instructions = f"Your response MUST be written in the language corresponding to locale code: '{response_language}'. This is crucial." action = action.lstrip("/").lower() if action not in command2class: diff --git a/pr_agent/algo/ai_handlers/litellm_ai_handler.py b/pr_agent/algo/ai_handlers/litellm_ai_handler.py index ba557979..e2894f1b 100644 --- a/pr_agent/algo/ai_handlers/litellm_ai_handler.py +++ b/pr_agent/algo/ai_handlers/litellm_ai_handler.py @@ -232,7 +232,7 @@ class LiteLLMAIHandler(BaseAiHandler): # Add temperature only if model supports it if model not in self.no_support_temperature_models and not get_settings().config.custom_reasoning_model: - get_logger().info(f"Adding temperature with value {temperature} to model {model}.") + # get_logger().info(f"Adding temperature with value {temperature} to model {model}.") kwargs["temperature"] = temperature # Add reasoning_effort if model supports it diff --git a/pr_agent/settings/configuration.toml b/pr_agent/settings/configuration.toml index fb4bbc4a..4e004722 100644 --- a/pr_agent/settings/configuration.toml +++ b/pr_agent/settings/configuration.toml @@ -1,9 +1,13 @@ +# Important: This file contains all available configuration options. +# Do not copy this entire file to your repository configuration. +# Your repository configuration should only include options you wish to override from the defaults. + [config] # models -model="gpt-4o-2024-11-20" -fallback_models=["gpt-4o-2024-08-06"] +model="o3-mini" +fallback_models=["gpt-4o-2024-11-20"] #model_weak="gpt-4o-mini-2024-07-18" # optional, a weaker model to use for some easier tasks -response_language="en-US" # Language locales code for PR responses in ISO 3166 and ISO 639 format (e.g., "en-US", "es-ES", "he-IL", "ar-IL", "zh-CN") +response_language="en-US" # Language locales code for PR responses in ISO 3166 and ISO 639 format (e.g., "en-US", "it-IT", "zh-CN", ...) # CLI git_provider="github" publish_output=true