From 5f949856ca24aa88de60c279778e0d2f0d5756a8 Mon Sep 17 00:00:00 2001 From: Krazer Date: Thu, 23 Jan 2025 23:35:57 -0600 Subject: [PATCH] move model settings to yml --- aider/models.py | 783 ++----------------------------------- aider/models/anthropic.yml | 151 +++++++ aider/models/deepseek.yml | 65 +++ aider/models/gemini.yml | 54 +++ aider/models/llama.yml | 16 + aider/models/openai.yml | 178 +++++++++ aider/models/others.yml | 26 ++ tests/basic/test_models.py | 3 +- 8 files changed, 527 insertions(+), 749 deletions(-) create mode 100644 aider/models/anthropic.yml create mode 100644 aider/models/deepseek.yml create mode 100644 aider/models/gemini.yml create mode 100644 aider/models/llama.yml create mode 100644 aider/models/openai.yml create mode 100644 aider/models/others.yml diff --git a/aider/models.py b/aider/models.py index 97575993b36..5c25333a0c5 100644 --- a/aider/models.py +++ b/aider/models.py @@ -17,7 +17,6 @@ from aider.llm import litellm DEFAULT_MODEL_NAME = "gpt-4o" -ANTHROPIC_BETA_HEADER = "prompt-caching-2024-07-31,pdfs-2024-09-25" OPENAI_MODELS = """ gpt-4 @@ -100,758 +99,48 @@ class ModelSettings: streaming: bool = True editor_model_name: Optional[str] = None editor_edit_format: Optional[str] = None + provider: 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( - "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, - ), -] +def load_model_settings(): + """Load all model settings from YAML files in the models directory.""" + model_settings = [] + models_dir = Path(__file__).parent / "models" + + if not models_dir.exists(): + return model_settings + + # Recursively find all .yml files + for yml_file in models_dir.rglob("*.yml"): + try: + with open(yml_file) as f: + settings = yaml.safe_load(f) + + # Handle settings with 'models:' key + if isinstance(settings, dict) and 'models' in settings: + settings = settings['models'] + + # Handle list of models + if isinstance(settings, list): + for setting in settings: + if setting.get('prompt'): # If prompt exists and is non-empty + setting['name'] = f"{setting.get('provider', '')}/{setting['name']}".strip('/') + model_settings.append(ModelSettings(**setting)) + else: + if settings.get('prompt'): # If prompt exists and is non-empty + settings['name'] = f"{settings.get('provider', '')}/{settings['name']}".strip('/') + model_settings.append(ModelSettings(**settings)) + except Exception as e: + print(f"Error loading {yml_file}: {e}") + + return model_settings + +# Load model settings from YAML files +MODEL_SETTINGS = load_model_settings() class ModelInfoManager: diff --git a/aider/models/anthropic.yml b/aider/models/anthropic.yml new file mode 100644 index 00000000000..337fdd67acd --- /dev/null +++ b/aider/models/anthropic.yml @@ -0,0 +1,151 @@ +definitions: + - &anthropic-base + edit_format: "diff" + use_repo_map: true + + - &anthropic-haiku-base + <<: *anthropic-base + weak_model_name: "claude-3-5-haiku-20241022" + + - &anthropic-cache-headers + extra_headers: + anthropic-beta: "prompt-caching-2024-07-31,pdfs-2024-09-25" + + - &anthropic-cache-params + extra_params: + <<: *anthropic-cache-headers + cache_control: true + + - &anthropic-haiku-cache + <<: *anthropic-haiku-base + <<: *anthropic-cache-params + + - &anthropic-sonnet-base + <<: *anthropic-haiku-cache + editor_edit_format: "editor-diff" + examples_as_sys_msg: true + reminder: "user" + extra_params: + <<: *anthropic-cache-headers + max_tokens: 8192 + + - &anthropic-sonnet-self-edit + <<: *anthropic-sonnet-base + editor_model_name: "${self}" + +models: + - <<: *anthropic-haiku-base + provider: "" + name: "claude-3-opus-20240229" + + - <<: *anthropic-haiku-base + provider: "openrouter" + name: "anthropic/claude-3-opus" + weak_model_name: "openrouter/anthropic/claude-3-5-haiku" + + - provider: "" + name: "claude-3-sonnet-20240229" + edit_format: "whole" + weak_model_name: "claude-3-5-haiku-20241022" + + - <<: *anthropic-sonnet-self-edit + provider: "" + name: "claude-3-5-sonnet-20240620" + + - <<: *anthropic-sonnet-self-edit + provider: "anthropic" + name: "claude-3-5-sonnet-20240620" + weak_model_name: "anthropic/claude-3-5-haiku-20241022" + editor_model_name: "anthropic/claude-3-5-sonnet-20240620" + + - <<: *anthropic-sonnet-self-edit + provider: "anthropic" + name: "claude-3-5-sonnet-20241022" + weak_model_name: "anthropic/claude-3-5-haiku-20241022" + editor_model_name: "anthropic/claude-3-5-sonnet-20241022" + + - <<: *anthropic-sonnet-self-edit + provider: "bedrock" + name: "anthropic.claude-3-5-sonnet-20241022-v2:0" + weak_model_name: "bedrock/anthropic.claude-3-5-haiku-20241022-v1:0" + editor_model_name: "bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0" + + - <<: *anthropic-sonnet-self-edit + provider: "anthropic" + name: "claude-3-5-sonnet-latest" + weak_model_name: "anthropic/claude-3-5-haiku-20241022" + editor_model_name: "anthropic/claude-3-5-sonnet-20241022" + + - <<: *anthropic-sonnet-self-edit + provider: "" + name: "claude-3-5-sonnet-20241022" + + - provider: "anthropic" + name: "claude-3-haiku-20240307" + edit_format: "whole" + weak_model_name: "anthropic/claude-3-haiku-20240307" + examples_as_sys_msg: true + <<: *anthropic-cache-params + + - <<: *anthropic-haiku-cache + provider: "anthropic" + name: "claude-3-5-haiku-20241022" + weak_model_name: "anthropic/claude-3-5-haiku-20241022" + + - <<: *anthropic-haiku-cache + provider: "bedrock" + name: "anthropic.claude-3-5-haiku-20241022-v1:0" + weak_model_name: "bedrock/anthropic.claude-3-5-haiku-20241022-v1:0" + + - <<: *anthropic-haiku-cache + provider: "" + name: "claude-3-5-haiku-20241022" + examples_as_sys_msg: true + + - <<: *anthropic-base + provider: "vertex_ai" + name: "claude-3-5-haiku@20241022" + weak_model_name: "vertex_ai/claude-3-5-haiku@20241022" + extra_params: + max_tokens: 4096 + + - provider: "" + name: "claude-3-haiku-20240307" + edit_format: "whole" + weak_model_name: "claude-3-haiku-20240307" + examples_as_sys_msg: true + <<: *anthropic-cache-params + + - <<: *anthropic-sonnet-base + provider: "openrouter" + name: "anthropic/claude-3.5-sonnet" + weak_model_name: "openrouter/anthropic/claude-3-5-haiku" + editor_model_name: "openrouter/anthropic/claude-3.5-sonnet" + + - <<: *anthropic-sonnet-base + provider: "openrouter" + name: "anthropic/claude-3.5-sonnet:beta" + weak_model_name: "openrouter/anthropic/claude-3-5-haiku:beta" + editor_model_name: "openrouter/anthropic/claude-3.5-sonnet:beta" + + - <<: *anthropic-sonnet-base + provider: "vertex_ai" + name: "claude-3-5-sonnet@20240620" + weak_model_name: "vertex_ai/claude-3-5-haiku@20241022" + editor_model_name: "vertex_ai/claude-3-5-sonnet@20240620" + + - <<: *anthropic-sonnet-base + provider: "vertex_ai" + name: "claude-3-5-sonnet-v2@20241022" + weak_model_name: "vertex_ai/claude-3-5-haiku@20241022" + editor_model_name: "vertex_ai/claude-3-5-sonnet-v2@20241022" + + - <<: *anthropic-haiku-base + provider: "vertex_ai" + name: "claude-3-opus@20240229" + weak_model_name: "vertex_ai/claude-3-5-haiku@20241022" + + - provider: "vertex_ai" + name: "claude-3-sonnet@20240229" + edit_format: "whole" + weak_model_name: "vertex_ai/claude-3-5-haiku@20241022" diff --git a/aider/models/deepseek.yml b/aider/models/deepseek.yml new file mode 100644 index 00000000000..8e07b2a046d --- /dev/null +++ b/aider/models/deepseek.yml @@ -0,0 +1,65 @@ +definitions: + - &deepseek-base + edit_format: "diff" + use_repo_map: true + examples_as_sys_msg: true + reminder: "sys" + + - &deepseek-with-tokens + <<: *deepseek-base + extra_params: + max_tokens: 8192 + + - &deepseek-coder + <<: *deepseek-with-tokens + name: "deepseek-coder" + caches_by_default: true + + - &deepseek-chat + <<: *deepseek-with-tokens + name: "deepseek-chat" + + - &deepseek-reasoner + edit_format: "diff" + 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 + +models: + - <<: *deepseek-chat + provider: "deepseek" + caches_by_default: true + + - <<: *deepseek-coder + provider: "deepseek" + + - <<: *deepseek-chat + provider: "" + + - <<: *deepseek-coder + provider: "" + + - <<: *deepseek-base + provider: "openrouter" + name: "deepseek/deepseek-coder" + + - <<: *deepseek-base + provider: "openrouter" + name: "deepseek/deepseek-chat" + + - <<: *deepseek-reasoner + provider: "openrouter" + name: "deepseek/deepseek-r1" + weak_model_name: "openrouter/deepseek/deepseek-chat" + editor_model_name: "openrouter/deepseek/deepseek-chat" + + - <<: *deepseek-reasoner + provider: "deepseek" + name: "deepseek-reasoner" + weak_model_name: "deepseek/deepseek-chat" + editor_model_name: "deepseek/deepseek-chat" diff --git a/aider/models/gemini.yml b/aider/models/gemini.yml new file mode 100644 index 00000000000..eec0837bc3c --- /dev/null +++ b/aider/models/gemini.yml @@ -0,0 +1,54 @@ +definitions: + - &gemini-base + provider: "gemini" + use_repo_map: true + + - &gemini-diff-base + <<: *gemini-base + edit_format: "diff" + + - &gemini-diff-fenced-base + <<: *gemini-base + edit_format: "diff-fenced" + + - &gemini-flash-base + <<: *gemini-base + edit_format: "whole" + use_repo_map: false + send_undo_reply: false + +models: + - <<: *gemini-diff-base + name: "gemini-1.5-pro-002" + + - <<: *gemini-flash-base + name: "gemini-1.5-flash-002" + use_repo_map: false + + - <<: *gemini-diff-fenced-base + name: "gemini-1.5-pro" + + - <<: *gemini-diff-fenced-base + name: "gemini-1.5-pro-latest" + + - <<: *gemini-diff-fenced-base + name: "gemini-1.5-pro-exp-0827" + + - <<: *gemini-diff-base + name: "gemini-exp-1206" + + - <<: *gemini-diff-base + name: "gemini-exp-1114" + + - <<: *gemini-diff-base + name: "gemini-exp-1121" + + - <<: *gemini-diff-fenced-base + provider: "vertex_ai" + name: "gemini-pro-experimental" + + - <<: *gemini-flash-base + name: "gemini-1.5-flash-exp-0827" + + - <<: *gemini-diff-base + name: "gemini-2.0-flash-exp" diff --git a/aider/models/llama.yml b/aider/models/llama.yml new file mode 100644 index 00000000000..91c4109a710 --- /dev/null +++ b/aider/models/llama.yml @@ -0,0 +1,16 @@ +models: + - provider: "groq" + name: "llama3-70b-8192" + edit_format: "diff" + weak_model_name: "groq/llama3-8b-8192" + use_repo_map: false + send_undo_reply: false + examples_as_sys_msg: true + + - provider: "openrouter" + name: "meta-llama/llama-3-70b-instruct" + edit_format: "diff" + weak_model_name: "openrouter/meta-llama/llama-3-70b-instruct" + use_repo_map: false + send_undo_reply: false + examples_as_sys_msg: true \ No newline at end of file diff --git a/aider/models/openai.yml b/aider/models/openai.yml new file mode 100644 index 00000000000..20a33361ca9 --- /dev/null +++ b/aider/models/openai.yml @@ -0,0 +1,178 @@ +definitions: + - &openai-base + provider: "openai" + weak_model_name: "gpt-4o-mini" + reminder: "sys" + + - &openai-whole + <<: *openai-base + edit_format: "whole" + + - &openai-diff + <<: *openai-base + edit_format: "diff" + use_repo_map: true + + - &openai-udiff + <<: *openai-base + edit_format: "udiff" + use_repo_map: true + lazy: true + + - &openai-gpt4o + <<: *openai-diff + lazy: true + editor_edit_format: "editor-diff" + examples_as_sys_msg: True + + - &o1-base + edit_format: "whole" + editor_edit_format: "editor-diff" + use_repo_map: true + reminder: "user" + use_system_prompt: false + use_temperature: false + + - &openrouter-base + provider: "openrouter" + use_repo_map: true + reminder: "sys" + editor_edit_format: "editor-diff" + +models: + - <<: *openai-whole + name: "gpt-3.5-turbo" + + - <<: *openai-whole + name: "gpt-3.5-turbo-0125" + + - <<: *openai-whole + name: "gpt-3.5-turbo-1106" + + - <<: *openai-whole + name: "gpt-3.5-turbo-0613" + + - <<: *openai-whole + name: "gpt-3.5-turbo-16k-0613" + + - <<: *openai-udiff + name: "gpt-4-turbo-2024-04-09" + + - <<: *openai-udiff + name: "gpt-4-turbo" + + - <<: *openai-gpt4o + name: "gpt-4o" + + - <<: *openai-gpt4o + name: "gpt-4o-2024-08-06" + + - <<: *openai-gpt4o + name: "gpt-4o-2024-11-20" + + - <<: *openai-whole + name: "gpt-4o-mini" + weak_model_name: "gpt-4o-mini" + lazy: true + + - <<: *openai-whole + name: "gpt-4o-mini" + weak_model_name: "openai/gpt-4o-mini" + lazy: true + + - <<: *openai-udiff + name: "gpt-4-0125-preview" + examples_as_sys_msg: true + + - <<: *openai-udiff + name: "gpt-4-1106-preview" + + - <<: *openai-diff + name: "gpt-4-vision-preview" + + - <<: *openai-diff + name: "gpt-4-0314" + examples_as_sys_msg: true + + - <<: *openai-diff + name: "gpt-4-0613" + + - <<: *openai-diff + name: "gpt-4-32k-0613" + + - <<: *openrouter-base + name: "openai/gpt-4o" + edit_format: "diff" + weak_model_name: "openrouter/openai/gpt-4o-mini" + examples_as_sys_msg: True + lazy: true + + - <<: *o1-base + provider: "openai" + name: "o1-mini" + weak_model_name: "openai/gpt-4o-mini" + editor_model_name: "openai/gpt-4o" + + - <<: *o1-base + provider: "azure" + name: "o1-mini" + weak_model_name: "azure/gpt-4o-mini" + editor_model_name: "azure/gpt-4o" + + - <<: *o1-base + provider: "openai" + name: "o1-mini" + weak_model_name: "gpt-4o-mini" + editor_model_name: "gpt-4o" + + - <<: *o1-base + provider: "openai" + name: "o1-preview" + edit_format: "diff" + weak_model_name: "openai/gpt-4o-mini" + editor_model_name: "openai/gpt-4o" + + - <<: *o1-base + provider: "azure" + name: "o1-preview" + edit_format: "diff" + weak_model_name: "azure/gpt-4o-mini" + editor_model_name: "azure/gpt-4o" + + - <<: *o1-base + provider: "openai" + name: "o1-preview" + edit_format: "architect" + weak_model_name: "gpt-4o-mini" + editor_model_name: "gpt-4o" + + - <<: *o1-base + provider: "openrouter" + name: "openai/o1-mini" + weak_model_name: "openrouter/openai/gpt-4o-mini" + editor_model_name: "openrouter/openai/gpt-4o" + streaming: false + + - <<: *o1-base + provider: "openrouter" + name: "openai/o1-preview" + edit_format: "diff" + weak_model_name: "openrouter/openai/gpt-4o-mini" + editor_model_name: "openrouter/openai/gpt-4o" + streaming: false + + - <<: *o1-base + provider: "openrouter" + name: "openai/o1" + edit_format: "diff" + weak_model_name: "openrouter/openai/gpt-4o-mini" + editor_model_name: "openrouter/openai/gpt-4o" + streaming: false + + - <<: *o1-base + provider: "openai" + name: "o1" + edit_format: "diff" + weak_model_name: "openai/gpt-4o-mini" + editor_model_name: "openai/gpt-4o" + streaming: false diff --git a/aider/models/others.yml b/aider/models/others.yml new file mode 100644 index 00000000000..3ca24a2238c --- /dev/null +++ b/aider/models/others.yml @@ -0,0 +1,26 @@ +models: + - provider: "" + name: "command-r-plus" + edit_format: "whole" + weak_model_name: "command-r-plus" + use_repo_map: true + + - provider: "" + name: "command-r-08-2024" + edit_format: "whole" + weak_model_name: "command-r-08-2024" + use_repo_map: true + + - provider: "" + name: "command-r-plus-08-2024" + edit_format: "whole" + weak_model_name: "command-r-plus-08-2024" + use_repo_map: true + + - provider: "openrouter" + name: "qwen/qwen-2.5-coder-32b-instruct" + edit_format: "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 diff --git a/tests/basic/test_models.py b/tests/basic/test_models.py index a8f7c8d3003..a7cb543cd9d 100644 --- a/tests/basic/test_models.py +++ b/tests/basic/test_models.py @@ -2,7 +2,6 @@ from unittest.mock import ANY, MagicMock, patch from aider.models import ( - ANTHROPIC_BETA_HEADER, Model, ModelInfoManager, register_models, @@ -190,7 +189,7 @@ def test_aider_extra_model_settings(self): self.assertEqual(model.extra_params["extra_headers"]["Foo"], "bar") self.assertEqual( model.extra_params["extra_headers"]["anthropic-beta"], - ANTHROPIC_BETA_HEADER, + "prompt-caching-2024-07-31,pdfs-2024-09-25", ) self.assertEqual(model.extra_params["some_param"], "some value") self.assertEqual(model.extra_params["max_tokens"], 8192)