From 32ccb25575cbded7c491fba5521883746ffa124d Mon Sep 17 00:00:00 2001 From: Trung Dinh Date: Fri, 31 Jan 2025 11:24:43 +0700 Subject: [PATCH 1/8] Add user_message_only_models --- pr_agent/settings/configuration.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pr_agent/settings/configuration.toml b/pr_agent/settings/configuration.toml index 62649d5e..c861bfee 100644 --- a/pr_agent/settings/configuration.toml +++ b/pr_agent/settings/configuration.toml @@ -3,6 +3,7 @@ model="gpt-4o-2024-11-20" fallback_models=["gpt-4o-2024-08-06"] #model_weak="gpt-4o-mini-2024-07-18" # optional, a weaker model to use for some easier tasks +user_message_only_models=["deepseek/deepseek-reasoner", "o1-mini", "o1-mini-2024-09-12", "o1", "o1-2024-12-17"] # CLI git_provider="github" publish_output=true From 7eb26b3220b781fa12031cf279c6391f6120fdc6 Mon Sep 17 00:00:00 2001 From: Trung Dinh Date: Fri, 31 Jan 2025 11:25:51 +0700 Subject: [PATCH 2/8] Check current model is in user_message_only_models list --- pr_agent/algo/ai_handlers/litellm_ai_handler.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pr_agent/algo/ai_handlers/litellm_ai_handler.py b/pr_agent/algo/ai_handlers/litellm_ai_handler.py index 50d14b21..57151b91 100644 --- a/pr_agent/algo/ai_handlers/litellm_ai_handler.py +++ b/pr_agent/algo/ai_handlers/litellm_ai_handler.py @@ -197,10 +197,9 @@ class LiteLLMAIHandler(BaseAiHandler): messages[1]["content"] = [{"type": "text", "text": messages[1]["content"]}, {"type": "image_url", "image_url": {"url": img_path}}] - # Currently, model OpenAI o1 series does not support a separate system and user prompts - O1_MODEL_PREFIX = 'o1' - model_type = model.split('/')[-1] if '/' in model else model - if (model_type.startswith(O1_MODEL_PREFIX)) or ("deepseek-reasoner" in model): + # Currently, some models do not support a separate system and user prompts + user_message_only_models = get_settings().config.user_message_only_models + if user_message_only_models and any(entry in model for entry in user_message_only_models): user = f"{system}\n\n\n{user}" system = "" get_logger().info(f"Using model {model}, combining system and user prompts") From 48377e3c816d79666d72c52d2f9352ecf4790945 Mon Sep 17 00:00:00 2001 From: Trung Dinh Date: Fri, 31 Jan 2025 11:53:05 +0700 Subject: [PATCH 3/8] Add a null check for user_message_only_models before using it --- pr_agent/algo/ai_handlers/litellm_ai_handler.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pr_agent/algo/ai_handlers/litellm_ai_handler.py b/pr_agent/algo/ai_handlers/litellm_ai_handler.py index 57151b91..cd8c1097 100644 --- a/pr_agent/algo/ai_handlers/litellm_ai_handler.py +++ b/pr_agent/algo/ai_handlers/litellm_ai_handler.py @@ -198,8 +198,8 @@ class LiteLLMAIHandler(BaseAiHandler): {"type": "image_url", "image_url": {"url": img_path}}] # Currently, some models do not support a separate system and user prompts - user_message_only_models = get_settings().config.user_message_only_models - if user_message_only_models and any(entry in model for entry in user_message_only_models): + user_message_only_models = get_settings().config.user_message_only_models or [] + if user_message_only_models and any(entry.lower() in model.lower() for entry in user_message_only_models): user = f"{system}\n\n\n{user}" system = "" get_logger().info(f"Using model {model}, combining system and user prompts") From 7168d16386dfe7fca619b5ba867e68c395662989 Mon Sep 17 00:00:00 2001 From: Trung Dinh Date: Sun, 2 Feb 2025 18:00:34 +0700 Subject: [PATCH 4/8] Remove user_message_only_models from configuration file --- pr_agent/settings/configuration.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/pr_agent/settings/configuration.toml b/pr_agent/settings/configuration.toml index c861bfee..62649d5e 100644 --- a/pr_agent/settings/configuration.toml +++ b/pr_agent/settings/configuration.toml @@ -3,7 +3,6 @@ model="gpt-4o-2024-11-20" fallback_models=["gpt-4o-2024-08-06"] #model_weak="gpt-4o-mini-2024-07-18" # optional, a weaker model to use for some easier tasks -user_message_only_models=["deepseek/deepseek-reasoner", "o1-mini", "o1-mini-2024-09-12", "o1", "o1-2024-12-17"] # CLI git_provider="github" publish_output=true From a48686bde9317ea88b43daeea17eee4d878cd015 Mon Sep 17 00:00:00 2001 From: Trung Dinh Date: Sun, 2 Feb 2025 18:01:16 +0700 Subject: [PATCH 5/8] Define USER_MESSAGE_ONLY_MODELS in the algo init file --- pr_agent/algo/__init__.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pr_agent/algo/__init__.py b/pr_agent/algo/__init__.py index 40d4fc07..6026b67c 100644 --- a/pr_agent/algo/__init__.py +++ b/pr_agent/algo/__init__.py @@ -81,3 +81,11 @@ MAX_TOKENS = { "watsonx/ibm/granite-34b-code-instruct": 8191, "watsonx/mistralai/mistral-large": 32768, } + +USER_MESSAGE_ONLY_MODELS = [ + "deepseek/deepseek-reasoner", + "o1-mini", + "o1-mini-2024-09-12", + "o1", + "o1-2024-12-17" +] From 4ac1e15baea21afa2c4eacce17114236981409ee Mon Sep 17 00:00:00 2001 From: Trung Dinh Date: Sun, 2 Feb 2025 18:01:44 +0700 Subject: [PATCH 6/8] Refactoring user messages only flow --- pr_agent/algo/ai_handlers/litellm_ai_handler.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pr_agent/algo/ai_handlers/litellm_ai_handler.py b/pr_agent/algo/ai_handlers/litellm_ai_handler.py index cd8c1097..c936ebd5 100644 --- a/pr_agent/algo/ai_handlers/litellm_ai_handler.py +++ b/pr_agent/algo/ai_handlers/litellm_ai_handler.py @@ -6,6 +6,7 @@ import requests from litellm import acompletion from tenacity import retry, retry_if_exception_type, stop_after_attempt +from pr_agent.algo import USER_MESSAGE_ONLY_MODELS from pr_agent.algo.ai_handlers.base_ai_handler import BaseAiHandler from pr_agent.algo.utils import get_version from pr_agent.config_loader import get_settings @@ -94,6 +95,9 @@ class LiteLLMAIHandler(BaseAiHandler): if get_settings().get("DEEPSEEK.KEY", None): os.environ['DEEPSEEK_API_KEY'] = get_settings().get("DEEPSEEK.KEY") + # Models that only use user meessage + self.user_message_only_models = USER_MESSAGE_ONLY_MODELS + def prepare_logs(self, response, system, user, resp, finish_reason): response_log = response.dict().copy() response_log['system'] = system @@ -198,8 +202,7 @@ class LiteLLMAIHandler(BaseAiHandler): {"type": "image_url", "image_url": {"url": img_path}}] # Currently, some models do not support a separate system and user prompts - user_message_only_models = get_settings().config.user_message_only_models or [] - if user_message_only_models and any(entry.lower() in model.lower() for entry in user_message_only_models): + if self.user_message_only_models and any(entry.lower() in model.lower() for entry in self.user_message_only_models): user = f"{system}\n\n\n{user}" system = "" get_logger().info(f"Using model {model}, combining system and user prompts") From 83582bc935eb2c5fc506ea45ed9383536c4146c6 Mon Sep 17 00:00:00 2001 From: Trung Dinh Date: Sun, 2 Feb 2025 18:02:53 +0700 Subject: [PATCH 7/8] Add support o3-mini model --- pr_agent/algo/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pr_agent/algo/__init__.py b/pr_agent/algo/__init__.py index 6026b67c..34285d61 100644 --- a/pr_agent/algo/__init__.py +++ b/pr_agent/algo/__init__.py @@ -26,6 +26,8 @@ MAX_TOKENS = { 'o1-preview-2024-09-12': 128000, # 128K, but may be limited by config.max_model_tokens 'o1-2024-12-17': 204800, # 200K, but may be limited by config.max_model_tokens 'o1': 204800, # 200K, but may be limited by config.max_model_tokens + 'o3-mini': 204800, # 200K, but may be limited by config.max_model_tokens + 'o3-mini-2025-01-31': 204800, # 200K, but may be limited by config.max_model_tokens 'claude-instant-1': 100000, 'claude-2': 100000, 'command-nightly': 4096, From a6482c37ce76c59752b3d520b42d36af01f46a6a Mon Sep 17 00:00:00 2001 From: Trung Dinh Date: Sun, 2 Feb 2025 18:03:38 +0700 Subject: [PATCH 8/8] Add o3-mini to user message only model list --- pr_agent/algo/__init__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pr_agent/algo/__init__.py b/pr_agent/algo/__init__.py index 34285d61..10b53cb3 100644 --- a/pr_agent/algo/__init__.py +++ b/pr_agent/algo/__init__.py @@ -89,5 +89,7 @@ USER_MESSAGE_ONLY_MODELS = [ "o1-mini", "o1-mini-2024-09-12", "o1", - "o1-2024-12-17" + "o1-2024-12-17", + "o3-mini", + "o3-mini-2025-01-31" ]