From ddbaa8b32b9af25931bcc1421032dcd3be2d127d Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Tue, 28 Jan 2025 13:31:31 -0800 Subject: [PATCH] refactor: Move model settings to external YAML configuration file --- aider/models.py | 766 +----------------------------------------------- 1 file changed, 4 insertions(+), 762 deletions(-) diff --git a/aider/models.py b/aider/models.py index bac6b1b15..ead18ada4 100644 --- a/aider/models.py +++ b/aider/models.py @@ -103,768 +103,10 @@ class ModelSettings: remove_reasoning: Optional[str] = None -# https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo -# https://platform.openai.com/docs/models/gpt-3-5-turbo -# https://openai.com/pricing - -MODEL_SETTINGS = [ - # gpt-3.5 - ModelSettings( - "gpt-3.5-turbo", - "whole", - weak_model_name="gpt-4o-mini", - reminder="sys", - ), - ModelSettings( - "gpt-3.5-turbo-0125", - "whole", - weak_model_name="gpt-4o-mini", - reminder="sys", - ), - ModelSettings( - "gpt-3.5-turbo-1106", - "whole", - weak_model_name="gpt-4o-mini", - reminder="sys", - ), - ModelSettings( - "gpt-3.5-turbo-0613", - "whole", - weak_model_name="gpt-4o-mini", - reminder="sys", - ), - ModelSettings( - "gpt-3.5-turbo-16k-0613", - "whole", - weak_model_name="gpt-4o-mini", - reminder="sys", - ), - # gpt-4 - ModelSettings( - "gpt-4-turbo-2024-04-09", - "udiff", - weak_model_name="gpt-4o-mini", - use_repo_map=True, - lazy=True, - reminder="sys", - ), - ModelSettings( - "gpt-4-turbo", - "udiff", - weak_model_name="gpt-4o-mini", - use_repo_map=True, - lazy=True, - reminder="sys", - ), - ModelSettings( - "openai/gpt-4o", - "diff", - weak_model_name="gpt-4o-mini", - use_repo_map=True, - lazy=True, - reminder="sys", - editor_edit_format="editor-diff", - examples_as_sys_msg=True, - ), - ModelSettings( - "openai/gpt-4o-2024-08-06", - "diff", - weak_model_name="gpt-4o-mini", - use_repo_map=True, - lazy=True, - reminder="sys", - examples_as_sys_msg=True, - ), - ModelSettings( - "gpt-4o-2024-08-06", - "diff", - weak_model_name="gpt-4o-mini", - use_repo_map=True, - lazy=True, - reminder="sys", - examples_as_sys_msg=True, - ), - ModelSettings( - "gpt-4o-2024-11-20", - "diff", - weak_model_name="gpt-4o-mini", - use_repo_map=True, - lazy=True, - reminder="sys", - examples_as_sys_msg=True, - ), - ModelSettings( - "openai/gpt-4o-2024-11-20", - "diff", - weak_model_name="gpt-4o-mini", - use_repo_map=True, - lazy=True, - reminder="sys", - examples_as_sys_msg=True, - ), - ModelSettings( - "gpt-4o", - "diff", - weak_model_name="gpt-4o-mini", - use_repo_map=True, - lazy=True, - reminder="sys", - editor_edit_format="editor-diff", - examples_as_sys_msg=True, - ), - ModelSettings( - "gpt-4o-mini", - "whole", - weak_model_name="gpt-4o-mini", - lazy=True, - reminder="sys", - ), - ModelSettings( - "openai/gpt-4o-mini", - "whole", - weak_model_name="openai/gpt-4o-mini", - lazy=True, - reminder="sys", - ), - ModelSettings( - "gpt-4-0125-preview", - "udiff", - weak_model_name="gpt-4o-mini", - use_repo_map=True, - lazy=True, - reminder="sys", - examples_as_sys_msg=True, - ), - ModelSettings( - "gpt-4-1106-preview", - "udiff", - weak_model_name="gpt-4o-mini", - use_repo_map=True, - lazy=True, - reminder="sys", - ), - ModelSettings( - "gpt-4-vision-preview", - "diff", - weak_model_name="gpt-4o-mini", - use_repo_map=True, - reminder="sys", - ), - ModelSettings( - "gpt-4-0314", - "diff", - weak_model_name="gpt-4o-mini", - use_repo_map=True, - reminder="sys", - examples_as_sys_msg=True, - ), - ModelSettings( - "gpt-4-0613", - "diff", - weak_model_name="gpt-4o-mini", - use_repo_map=True, - reminder="sys", - ), - ModelSettings( - "gpt-4-32k-0613", - "diff", - weak_model_name="gpt-4o-mini", - use_repo_map=True, - reminder="sys", - ), - # Claude - ModelSettings( - "claude-3-opus-20240229", - "diff", - weak_model_name="claude-3-5-haiku-20241022", - use_repo_map=True, - ), - ModelSettings( - "openrouter/anthropic/claude-3-opus", - "diff", - weak_model_name="openrouter/anthropic/claude-3-5-haiku", - use_repo_map=True, - ), - ModelSettings( - "claude-3-sonnet-20240229", - "whole", - weak_model_name="claude-3-5-haiku-20241022", - ), - ModelSettings( - "claude-3-5-sonnet-20240620", - "diff", - weak_model_name="claude-3-5-haiku-20241022", - editor_model_name="claude-3-5-sonnet-20240620", - editor_edit_format="editor-diff", - use_repo_map=True, - examples_as_sys_msg=True, - extra_params={ - "extra_headers": { - "anthropic-beta": ANTHROPIC_BETA_HEADER, - }, - "max_tokens": 8192, - }, - cache_control=True, - reminder="user", - ), - ModelSettings( - "anthropic/claude-3-5-sonnet-20240620", - "diff", - weak_model_name="anthropic/claude-3-5-haiku-20241022", - editor_model_name="anthropic/claude-3-5-sonnet-20240620", - editor_edit_format="editor-diff", - use_repo_map=True, - examples_as_sys_msg=True, - extra_params={ - "extra_headers": { - "anthropic-beta": ANTHROPIC_BETA_HEADER, - }, - "max_tokens": 8192, - }, - cache_control=True, - reminder="user", - ), - ModelSettings( - "anthropic/claude-3-5-sonnet-20241022", - "diff", - weak_model_name="anthropic/claude-3-5-haiku-20241022", - editor_model_name="anthropic/claude-3-5-sonnet-20241022", - editor_edit_format="editor-diff", - use_repo_map=True, - examples_as_sys_msg=True, - extra_params={ - "extra_headers": { - "anthropic-beta": ANTHROPIC_BETA_HEADER, - }, - "max_tokens": 8192, - }, - cache_control=True, - reminder="user", - ), - ModelSettings( - "bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0", - "diff", - weak_model_name="bedrock/anthropic.claude-3-5-haiku-20241022-v1:0", - editor_model_name="bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0", - editor_edit_format="editor-diff", - use_repo_map=True, - examples_as_sys_msg=True, - extra_params={ - "extra_headers": { - "anthropic-beta": ANTHROPIC_BETA_HEADER, - }, - "max_tokens": 8192, - }, - cache_control=True, - reminder="user", - ), - ModelSettings( - "anthropic/claude-3-5-sonnet-latest", - "diff", - weak_model_name="anthropic/claude-3-5-haiku-20241022", - editor_model_name="anthropic/claude-3-5-sonnet-20241022", - editor_edit_format="editor-diff", - use_repo_map=True, - examples_as_sys_msg=True, - extra_params={ - "extra_headers": { - "anthropic-beta": ANTHROPIC_BETA_HEADER, - }, - "max_tokens": 8192, - }, - cache_control=True, - reminder="user", - ), - ModelSettings( - "claude-3-5-sonnet-20241022", - "diff", - weak_model_name="claude-3-5-haiku-20241022", - editor_model_name="claude-3-5-sonnet-20241022", - editor_edit_format="editor-diff", - use_repo_map=True, - examples_as_sys_msg=True, - extra_params={ - "extra_headers": { - "anthropic-beta": ANTHROPIC_BETA_HEADER, - }, - "max_tokens": 8192, - }, - cache_control=True, - reminder="user", - ), - ModelSettings( - "anthropic/claude-3-haiku-20240307", - "whole", - weak_model_name="anthropic/claude-3-haiku-20240307", - examples_as_sys_msg=True, - extra_params={ - "extra_headers": { - "anthropic-beta": ANTHROPIC_BETA_HEADER, - }, - }, - cache_control=True, - ), - ModelSettings( - "anthropic/claude-3-5-haiku-20241022", - "diff", - weak_model_name="anthropic/claude-3-5-haiku-20241022", - use_repo_map=True, - extra_params={ - "extra_headers": { - "anthropic-beta": ANTHROPIC_BETA_HEADER, - }, - }, - cache_control=True, - ), - ModelSettings( - "bedrock/anthropic.claude-3-5-haiku-20241022-v1:0", - "diff", - weak_model_name="bedrock/anthropic.claude-3-5-haiku-20241022-v1:0", - use_repo_map=True, - extra_params={ - "extra_headers": { - "anthropic-beta": ANTHROPIC_BETA_HEADER, - }, - }, - cache_control=True, - ), - ModelSettings( - "claude-3-5-haiku-20241022", - "diff", - weak_model_name="claude-3-5-haiku-20241022", - use_repo_map=True, - examples_as_sys_msg=True, - extra_params={ - "extra_headers": { - "anthropic-beta": ANTHROPIC_BETA_HEADER, - }, - }, - cache_control=True, - ), - ModelSettings( - "vertex_ai/claude-3-5-haiku@20241022", - "diff", - weak_model_name="vertex_ai/claude-3-5-haiku@20241022", - use_repo_map=True, - extra_params={ - "max_tokens": 4096, - }, - ), - ModelSettings( - "claude-3-haiku-20240307", - "whole", - weak_model_name="claude-3-haiku-20240307", - examples_as_sys_msg=True, - extra_params={ - "extra_headers": { - "anthropic-beta": ANTHROPIC_BETA_HEADER, - }, - }, - cache_control=True, - ), - ModelSettings( - "openrouter/anthropic/claude-3.5-sonnet", - "diff", - weak_model_name="openrouter/anthropic/claude-3-5-haiku", - editor_model_name="openrouter/anthropic/claude-3.5-sonnet", - editor_edit_format="editor-diff", - use_repo_map=True, - examples_as_sys_msg=True, - extra_params={ - "max_tokens": 8192, - }, - reminder="user", - cache_control=True, - ), - ModelSettings( - "openrouter/anthropic/claude-3.5-sonnet:beta", - "diff", - weak_model_name="openrouter/anthropic/claude-3-5-haiku:beta", - editor_model_name="openrouter/anthropic/claude-3.5-sonnet:beta", - editor_edit_format="editor-diff", - use_repo_map=True, - examples_as_sys_msg=True, - extra_params={ - "max_tokens": 8192, - }, - reminder="user", - cache_control=True, - ), - # Vertex AI Claude models - # Does not yet support 8k token - ModelSettings( - "vertex_ai/claude-3-5-sonnet@20240620", - "diff", - weak_model_name="vertex_ai/claude-3-5-haiku@20241022", - editor_model_name="vertex_ai/claude-3-5-sonnet@20240620", - editor_edit_format="editor-diff", - use_repo_map=True, - examples_as_sys_msg=True, - extra_params={ - "max_tokens": 8192, - }, - reminder="user", - ), - ModelSettings( - "vertex_ai/claude-3-5-sonnet-v2@20241022", - "diff", - weak_model_name="vertex_ai/claude-3-5-haiku@20241022", - editor_model_name="vertex_ai/claude-3-5-sonnet-v2@20241022", - editor_edit_format="editor-diff", - use_repo_map=True, - examples_as_sys_msg=True, - extra_params={ - "max_tokens": 8192, - }, - reminder="user", - ), - ModelSettings( - "vertex_ai/claude-3-opus@20240229", - "diff", - weak_model_name="vertex_ai/claude-3-5-haiku@20241022", - use_repo_map=True, - ), - ModelSettings( - "vertex_ai/claude-3-sonnet@20240229", - "whole", - weak_model_name="vertex_ai/claude-3-5-haiku@20241022", - ), - # Cohere - ModelSettings( - "command-r-plus", - "whole", - weak_model_name="command-r-plus", - use_repo_map=True, - ), - # New Cohere models - ModelSettings( - "command-r-08-2024", - "whole", - weak_model_name="command-r-08-2024", - use_repo_map=True, - ), - ModelSettings( - "command-r-plus-08-2024", - "whole", - weak_model_name="command-r-plus-08-2024", - use_repo_map=True, - ), - # Groq llama3 - ModelSettings( - "groq/llama3-70b-8192", - "diff", - weak_model_name="groq/llama3-8b-8192", - use_repo_map=False, - send_undo_reply=False, - examples_as_sys_msg=True, - ), - # Openrouter llama3 - ModelSettings( - "openrouter/meta-llama/llama-3-70b-instruct", - "diff", - weak_model_name="openrouter/meta-llama/llama-3-70b-instruct", - use_repo_map=False, - send_undo_reply=False, - examples_as_sys_msg=True, - ), - # Gemini - ModelSettings( - "gemini/gemini-1.5-pro-002", - "diff", - use_repo_map=True, - ), - ModelSettings( - "gemini/gemini-1.5-flash-002", - "whole", - ), - ModelSettings( - "gemini/gemini-1.5-pro", - "diff-fenced", - use_repo_map=True, - ), - ModelSettings( - "gemini/gemini-1.5-pro-latest", - "diff-fenced", - use_repo_map=True, - ), - ModelSettings( - "gemini/gemini-1.5-pro-exp-0827", - "diff-fenced", - use_repo_map=True, - ), - ModelSettings( - "gemini/gemini-exp-1206", - "diff", - use_repo_map=True, - ), - ModelSettings( - "gemini/gemini-exp-1114", - "diff", - use_repo_map=True, - ), - ModelSettings( - "gemini/gemini-exp-1121", - "diff", - use_repo_map=True, - ), - ModelSettings( - "vertex_ai/gemini-pro-experimental", - "diff-fenced", - use_repo_map=True, - ), - ModelSettings( - "gemini/gemini-1.5-flash-exp-0827", - "whole", - use_repo_map=False, - send_undo_reply=False, - ), - ModelSettings( - "gemini/gemini-2.0-flash-exp", - "diff", - use_repo_map=True, - send_undo_reply=False, - ), - ModelSettings( - "openrouter/deepseek/deepseek-r1", - "diff", - weak_model_name="openrouter/deepseek/deepseek-chat", - editor_model_name="openrouter/deepseek/deepseek-chat", - editor_edit_format="editor-diff", - use_repo_map=True, - examples_as_sys_msg=True, - use_temperature=False, - reminder="user", - caches_by_default=True, - extra_params={ - "max_tokens": 8192, - }, - ), - ModelSettings( - "deepseek/deepseek-reasoner", - "diff", - weak_model_name="deepseek/deepseek-chat", - editor_model_name="deepseek/deepseek-chat", - editor_edit_format="editor-diff", - use_repo_map=True, - examples_as_sys_msg=True, - use_temperature=False, - reminder="user", - caches_by_default=True, - extra_params={ - "max_tokens": 8192, - }, - ), - ModelSettings( - "deepseek/deepseek-chat", - "diff", - use_repo_map=True, - examples_as_sys_msg=True, - reminder="sys", - caches_by_default=True, - extra_params={ - "max_tokens": 8192, - }, - ), - ModelSettings( - "deepseek/deepseek-coder", - "diff", - use_repo_map=True, - examples_as_sys_msg=True, - reminder="sys", - caches_by_default=True, - extra_params={ - "max_tokens": 8192, - }, - ), - ModelSettings( - "deepseek-chat", - "diff", - use_repo_map=True, - examples_as_sys_msg=True, - reminder="sys", - extra_params={ - "max_tokens": 8192, - }, - ), - ModelSettings( - "deepseek-coder", - "diff", - use_repo_map=True, - examples_as_sys_msg=True, - reminder="sys", - caches_by_default=True, - extra_params={ - "max_tokens": 8192, - }, - ), - ModelSettings( - "openrouter/deepseek/deepseek-coder", - "diff", - use_repo_map=True, - examples_as_sys_msg=True, - reminder="sys", - ), - ModelSettings( - "openrouter/deepseek/deepseek-chat", - "diff", - use_repo_map=True, - examples_as_sys_msg=True, - reminder="sys", - ), - ModelSettings( - "openrouter/openai/gpt-4o", - "diff", - weak_model_name="openrouter/openai/gpt-4o-mini", - use_repo_map=True, - lazy=True, - reminder="sys", - editor_edit_format="editor-diff", - examples_as_sys_msg=True, - ), - ModelSettings( - "openai/o1-mini", - "whole", - weak_model_name="openai/gpt-4o-mini", - editor_model_name="openai/gpt-4o", - editor_edit_format="editor-diff", - use_repo_map=True, - reminder="user", - use_system_prompt=False, - use_temperature=False, - ), - ModelSettings( - "azure/o1-mini", - "whole", - weak_model_name="azure/gpt-4o-mini", - editor_model_name="azure/gpt-4o", - editor_edit_format="editor-diff", - use_repo_map=True, - reminder="user", - use_system_prompt=False, - use_temperature=False, - ), - ModelSettings( - "o1-mini", - "whole", - weak_model_name="gpt-4o-mini", - editor_model_name="gpt-4o", - editor_edit_format="editor-diff", - use_repo_map=True, - reminder="user", - use_system_prompt=False, - use_temperature=False, - ), - ModelSettings( - "openai/o1-preview", - "diff", - weak_model_name="openai/gpt-4o-mini", - editor_model_name="openai/gpt-4o", - editor_edit_format="editor-diff", - use_repo_map=True, - reminder="user", - use_system_prompt=False, - use_temperature=False, - ), - ModelSettings( - "azure/o1-preview", - "diff", - weak_model_name="azure/gpt-4o-mini", - editor_model_name="azure/gpt-4o", - editor_edit_format="editor-diff", - use_repo_map=True, - reminder="user", - use_system_prompt=False, - use_temperature=False, - ), - ModelSettings( - "azure/o1", - "diff", - weak_model_name="azure/gpt-4o-mini", - editor_model_name="azure/gpt-4o", - editor_edit_format="editor-diff", - use_repo_map=True, - streaming=False, - use_temperature=False, - # extra_params=dict(extra_body=dict(reasoning_effort="high")), - ), - ModelSettings( - "o1-preview", - "architect", - weak_model_name="gpt-4o-mini", - editor_model_name="gpt-4o", - editor_edit_format="editor-diff", - use_repo_map=True, - reminder="user", - use_system_prompt=False, - use_temperature=False, - ), - ModelSettings( - "openrouter/openai/o1-mini", - "whole", - weak_model_name="openrouter/openai/gpt-4o-mini", - editor_model_name="openrouter/openai/gpt-4o", - editor_edit_format="editor-diff", - use_repo_map=True, - reminder="user", - use_system_prompt=False, - use_temperature=False, - streaming=False, - ), - ModelSettings( - "openrouter/openai/o1-preview", - "diff", - weak_model_name="openrouter/openai/gpt-4o-mini", - editor_model_name="openrouter/openai/gpt-4o", - editor_edit_format="editor-diff", - use_repo_map=True, - reminder="user", - use_system_prompt=False, - use_temperature=False, - streaming=False, - ), - ModelSettings( - "openrouter/openai/o1", - "diff", - weak_model_name="openrouter/openai/gpt-4o-mini", - editor_model_name="openrouter/openai/gpt-4o", - editor_edit_format="editor-diff", - use_repo_map=True, - streaming=False, - use_temperature=False, - # extra_params=dict(extra_body=dict(reasoning_effort="high")), - ), - ModelSettings( - "openai/o1", - "diff", - weak_model_name="openai/gpt-4o-mini", - editor_model_name="openai/gpt-4o", - editor_edit_format="editor-diff", - use_repo_map=True, - streaming=False, - use_temperature=False, - # extra_params=dict(extra_body=dict(reasoning_effort="high")), - ), - ModelSettings( - "o1", - "diff", - weak_model_name="gpt-4o-mini", - editor_model_name="gpt-4o", - editor_edit_format="editor-diff", - use_repo_map=True, - streaming=False, - use_temperature=False, - # extra_params=dict(extra_body=dict(reasoning_effort="high")), - ), - ModelSettings( - "openrouter/qwen/qwen-2.5-coder-32b-instruct", - "diff", - weak_model_name="openrouter/qwen/qwen-2.5-coder-32b-instruct", - editor_model_name="openrouter/qwen/qwen-2.5-coder-32b-instruct", - editor_edit_format="editor-diff", - use_repo_map=True, - ), -] - +# load these from aider/resources/model-settings.yml +# use the proper packaging way to locate that file +# ai! +MODEL_SETTINGS = [] class ModelInfoManager: MODEL_INFO_URL = (