chatmcp-cli 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- aider/__init__.py +20 -0
- aider/__main__.py +4 -0
- aider/_version.py +21 -0
- aider/analytics.py +250 -0
- aider/args.py +926 -0
- aider/args_formatter.py +228 -0
- aider/coders/__init__.py +34 -0
- aider/coders/architect_coder.py +48 -0
- aider/coders/architect_prompts.py +40 -0
- aider/coders/ask_coder.py +9 -0
- aider/coders/ask_prompts.py +35 -0
- aider/coders/base_coder.py +2483 -0
- aider/coders/base_prompts.py +60 -0
- aider/coders/chat_chunks.py +64 -0
- aider/coders/context_coder.py +53 -0
- aider/coders/context_prompts.py +75 -0
- aider/coders/editblock_coder.py +657 -0
- aider/coders/editblock_fenced_coder.py +10 -0
- aider/coders/editblock_fenced_prompts.py +143 -0
- aider/coders/editblock_func_coder.py +141 -0
- aider/coders/editblock_func_prompts.py +27 -0
- aider/coders/editblock_prompts.py +174 -0
- aider/coders/editor_diff_fenced_coder.py +9 -0
- aider/coders/editor_diff_fenced_prompts.py +11 -0
- aider/coders/editor_editblock_coder.py +8 -0
- aider/coders/editor_editblock_prompts.py +18 -0
- aider/coders/editor_whole_coder.py +8 -0
- aider/coders/editor_whole_prompts.py +10 -0
- aider/coders/help_coder.py +16 -0
- aider/coders/help_prompts.py +46 -0
- aider/coders/patch_coder.py +706 -0
- aider/coders/patch_prompts.py +161 -0
- aider/coders/search_replace.py +757 -0
- aider/coders/shell.py +37 -0
- aider/coders/single_wholefile_func_coder.py +102 -0
- aider/coders/single_wholefile_func_prompts.py +27 -0
- aider/coders/udiff_coder.py +429 -0
- aider/coders/udiff_prompts.py +115 -0
- aider/coders/udiff_simple.py +14 -0
- aider/coders/udiff_simple_prompts.py +25 -0
- aider/coders/wholefile_coder.py +144 -0
- aider/coders/wholefile_func_coder.py +134 -0
- aider/coders/wholefile_func_prompts.py +27 -0
- aider/coders/wholefile_prompts.py +67 -0
- aider/commands.py +1665 -0
- aider/copypaste.py +72 -0
- aider/deprecated.py +126 -0
- aider/diffs.py +128 -0
- aider/dump.py +29 -0
- aider/editor.py +147 -0
- aider/exceptions.py +107 -0
- aider/format_settings.py +26 -0
- aider/gui.py +545 -0
- aider/help.py +163 -0
- aider/help_pats.py +19 -0
- aider/history.py +143 -0
- aider/io.py +1175 -0
- aider/linter.py +304 -0
- aider/llm.py +47 -0
- aider/main.py +1267 -0
- aider/mdstream.py +243 -0
- aider/models.py +1286 -0
- aider/onboarding.py +428 -0
- aider/openrouter.py +128 -0
- aider/prompts.py +64 -0
- aider/queries/tree-sitter-language-pack/README.md +7 -0
- aider/queries/tree-sitter-language-pack/arduino-tags.scm +5 -0
- aider/queries/tree-sitter-language-pack/c-tags.scm +9 -0
- aider/queries/tree-sitter-language-pack/chatito-tags.scm +16 -0
- aider/queries/tree-sitter-language-pack/commonlisp-tags.scm +122 -0
- aider/queries/tree-sitter-language-pack/cpp-tags.scm +15 -0
- aider/queries/tree-sitter-language-pack/csharp-tags.scm +26 -0
- aider/queries/tree-sitter-language-pack/d-tags.scm +26 -0
- aider/queries/tree-sitter-language-pack/dart-tags.scm +92 -0
- aider/queries/tree-sitter-language-pack/elisp-tags.scm +5 -0
- aider/queries/tree-sitter-language-pack/elixir-tags.scm +54 -0
- aider/queries/tree-sitter-language-pack/elm-tags.scm +19 -0
- aider/queries/tree-sitter-language-pack/gleam-tags.scm +41 -0
- aider/queries/tree-sitter-language-pack/go-tags.scm +42 -0
- aider/queries/tree-sitter-language-pack/java-tags.scm +20 -0
- aider/queries/tree-sitter-language-pack/javascript-tags.scm +88 -0
- aider/queries/tree-sitter-language-pack/lua-tags.scm +34 -0
- aider/queries/tree-sitter-language-pack/ocaml-tags.scm +115 -0
- aider/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +98 -0
- aider/queries/tree-sitter-language-pack/pony-tags.scm +39 -0
- aider/queries/tree-sitter-language-pack/properties-tags.scm +5 -0
- aider/queries/tree-sitter-language-pack/python-tags.scm +14 -0
- aider/queries/tree-sitter-language-pack/r-tags.scm +21 -0
- aider/queries/tree-sitter-language-pack/racket-tags.scm +12 -0
- aider/queries/tree-sitter-language-pack/ruby-tags.scm +64 -0
- aider/queries/tree-sitter-language-pack/rust-tags.scm +60 -0
- aider/queries/tree-sitter-language-pack/solidity-tags.scm +43 -0
- aider/queries/tree-sitter-language-pack/swift-tags.scm +51 -0
- aider/queries/tree-sitter-language-pack/udev-tags.scm +20 -0
- aider/queries/tree-sitter-languages/README.md +23 -0
- aider/queries/tree-sitter-languages/c-tags.scm +9 -0
- aider/queries/tree-sitter-languages/c_sharp-tags.scm +46 -0
- aider/queries/tree-sitter-languages/cpp-tags.scm +15 -0
- aider/queries/tree-sitter-languages/dart-tags.scm +91 -0
- aider/queries/tree-sitter-languages/elisp-tags.scm +8 -0
- aider/queries/tree-sitter-languages/elixir-tags.scm +54 -0
- aider/queries/tree-sitter-languages/elm-tags.scm +19 -0
- aider/queries/tree-sitter-languages/go-tags.scm +30 -0
- aider/queries/tree-sitter-languages/hcl-tags.scm +77 -0
- aider/queries/tree-sitter-languages/java-tags.scm +20 -0
- aider/queries/tree-sitter-languages/javascript-tags.scm +88 -0
- aider/queries/tree-sitter-languages/kotlin-tags.scm +27 -0
- aider/queries/tree-sitter-languages/ocaml-tags.scm +115 -0
- aider/queries/tree-sitter-languages/ocaml_interface-tags.scm +98 -0
- aider/queries/tree-sitter-languages/php-tags.scm +26 -0
- aider/queries/tree-sitter-languages/python-tags.scm +12 -0
- aider/queries/tree-sitter-languages/ql-tags.scm +26 -0
- aider/queries/tree-sitter-languages/ruby-tags.scm +64 -0
- aider/queries/tree-sitter-languages/rust-tags.scm +60 -0
- aider/queries/tree-sitter-languages/scala-tags.scm +65 -0
- aider/queries/tree-sitter-languages/typescript-tags.scm +41 -0
- aider/reasoning_tags.py +82 -0
- aider/repo.py +623 -0
- aider/repomap.py +847 -0
- aider/report.py +200 -0
- aider/resources/__init__.py +3 -0
- aider/resources/model-metadata.json +468 -0
- aider/resources/model-settings.yml +1767 -0
- aider/run_cmd.py +132 -0
- aider/scrape.py +284 -0
- aider/sendchat.py +61 -0
- aider/special.py +203 -0
- aider/urls.py +17 -0
- aider/utils.py +338 -0
- aider/versioncheck.py +113 -0
- aider/voice.py +187 -0
- aider/waiting.py +221 -0
- aider/watch.py +318 -0
- aider/watch_prompts.py +12 -0
- aider/website/Gemfile +8 -0
- aider/website/_includes/blame.md +162 -0
- aider/website/_includes/get-started.md +22 -0
- aider/website/_includes/help-tip.md +5 -0
- aider/website/_includes/help.md +24 -0
- aider/website/_includes/install.md +5 -0
- aider/website/_includes/keys.md +4 -0
- aider/website/_includes/model-warnings.md +67 -0
- aider/website/_includes/multi-line.md +22 -0
- aider/website/_includes/python-m-aider.md +5 -0
- aider/website/_includes/recording.css +228 -0
- aider/website/_includes/recording.md +34 -0
- aider/website/_includes/replit-pipx.md +9 -0
- aider/website/_includes/works-best.md +1 -0
- aider/website/_sass/custom/custom.scss +103 -0
- aider/website/docs/config/adv-model-settings.md +1881 -0
- aider/website/docs/config/aider_conf.md +527 -0
- aider/website/docs/config/api-keys.md +90 -0
- aider/website/docs/config/dotenv.md +478 -0
- aider/website/docs/config/editor.md +127 -0
- aider/website/docs/config/model-aliases.md +103 -0
- aider/website/docs/config/options.md +843 -0
- aider/website/docs/config/reasoning.md +209 -0
- aider/website/docs/config.md +44 -0
- aider/website/docs/faq.md +378 -0
- aider/website/docs/git.md +76 -0
- aider/website/docs/index.md +47 -0
- aider/website/docs/install/codespaces.md +39 -0
- aider/website/docs/install/docker.md +57 -0
- aider/website/docs/install/optional.md +100 -0
- aider/website/docs/install/replit.md +8 -0
- aider/website/docs/install.md +115 -0
- aider/website/docs/languages.md +264 -0
- aider/website/docs/legal/contributor-agreement.md +111 -0
- aider/website/docs/legal/privacy.md +104 -0
- aider/website/docs/llms/anthropic.md +77 -0
- aider/website/docs/llms/azure.md +48 -0
- aider/website/docs/llms/bedrock.md +132 -0
- aider/website/docs/llms/cohere.md +34 -0
- aider/website/docs/llms/deepseek.md +32 -0
- aider/website/docs/llms/gemini.md +49 -0
- aider/website/docs/llms/github.md +105 -0
- aider/website/docs/llms/groq.md +36 -0
- aider/website/docs/llms/lm-studio.md +39 -0
- aider/website/docs/llms/ollama.md +75 -0
- aider/website/docs/llms/openai-compat.md +39 -0
- aider/website/docs/llms/openai.md +58 -0
- aider/website/docs/llms/openrouter.md +78 -0
- aider/website/docs/llms/other.md +103 -0
- aider/website/docs/llms/vertex.md +50 -0
- aider/website/docs/llms/warnings.md +10 -0
- aider/website/docs/llms/xai.md +53 -0
- aider/website/docs/llms.md +54 -0
- aider/website/docs/more/analytics.md +122 -0
- aider/website/docs/more/edit-formats.md +116 -0
- aider/website/docs/more/infinite-output.md +137 -0
- aider/website/docs/more-info.md +8 -0
- aider/website/docs/recordings/auto-accept-architect.md +31 -0
- aider/website/docs/recordings/dont-drop-original-read-files.md +35 -0
- aider/website/docs/recordings/index.md +21 -0
- aider/website/docs/recordings/model-accepts-settings.md +69 -0
- aider/website/docs/recordings/tree-sitter-language-pack.md +80 -0
- aider/website/docs/repomap.md +112 -0
- aider/website/docs/scripting.md +100 -0
- aider/website/docs/troubleshooting/aider-not-found.md +24 -0
- aider/website/docs/troubleshooting/edit-errors.md +76 -0
- aider/website/docs/troubleshooting/imports.md +62 -0
- aider/website/docs/troubleshooting/models-and-keys.md +54 -0
- aider/website/docs/troubleshooting/support.md +79 -0
- aider/website/docs/troubleshooting/token-limits.md +96 -0
- aider/website/docs/troubleshooting/warnings.md +12 -0
- aider/website/docs/troubleshooting.md +11 -0
- aider/website/docs/usage/browser.md +57 -0
- aider/website/docs/usage/caching.md +49 -0
- aider/website/docs/usage/commands.md +132 -0
- aider/website/docs/usage/conventions.md +119 -0
- aider/website/docs/usage/copypaste.md +121 -0
- aider/website/docs/usage/images-urls.md +48 -0
- aider/website/docs/usage/lint-test.md +118 -0
- aider/website/docs/usage/modes.md +211 -0
- aider/website/docs/usage/not-code.md +179 -0
- aider/website/docs/usage/notifications.md +87 -0
- aider/website/docs/usage/tips.md +79 -0
- aider/website/docs/usage/tutorials.md +30 -0
- aider/website/docs/usage/voice.md +121 -0
- aider/website/docs/usage/watch.md +294 -0
- aider/website/docs/usage.md +92 -0
- aider/website/share/index.md +101 -0
- chatmcp_cli-0.1.0.dist-info/METADATA +502 -0
- chatmcp_cli-0.1.0.dist-info/RECORD +228 -0
- chatmcp_cli-0.1.0.dist-info/WHEEL +5 -0
- chatmcp_cli-0.1.0.dist-info/entry_points.txt +3 -0
- chatmcp_cli-0.1.0.dist-info/licenses/LICENSE.txt +202 -0
- chatmcp_cli-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,103 @@
|
|
1
|
+
---
|
2
|
+
parent: Connecting to LLMs
|
3
|
+
nav_order: 800
|
4
|
+
---
|
5
|
+
|
6
|
+
# Other LLMs
|
7
|
+
|
8
|
+
Aider uses the [litellm](https://docs.litellm.ai/docs/providers) package
|
9
|
+
to connect to hundreds of other models.
|
10
|
+
You can use `aider --model <model-name>` to use any supported model.
|
11
|
+
|
12
|
+
To explore the list of supported models you can run `aider --list-models <model-name>`
|
13
|
+
with a partial model name.
|
14
|
+
If the supplied name is not an exact match for a known model, aider will
|
15
|
+
return a list of possible matching models.
|
16
|
+
For example:
|
17
|
+
|
18
|
+
```
|
19
|
+
$ aider --list-models turbo
|
20
|
+
|
21
|
+
Aider v0.29.3-dev
|
22
|
+
Models which match "turbo":
|
23
|
+
- gpt-4-turbo-preview (openai/gpt-4-turbo-preview)
|
24
|
+
- gpt-4-turbo (openai/gpt-4-turbo)
|
25
|
+
- gpt-4-turbo-2024-04-09 (openai/gpt-4-turbo-2024-04-09)
|
26
|
+
- gpt-3.5-turbo (openai/gpt-3.5-turbo)
|
27
|
+
- ...
|
28
|
+
```
|
29
|
+
|
30
|
+
See the [model warnings](warnings.html)
|
31
|
+
section for information on warnings which will occur
|
32
|
+
when working with models that aider is not familiar with.
|
33
|
+
|
34
|
+
## LiteLLM
|
35
|
+
|
36
|
+
Aider uses the LiteLLM package to connect to LLM providers.
|
37
|
+
The [LiteLLM provider docs](https://docs.litellm.ai/docs/providers)
|
38
|
+
contain more detail on all the supported providers,
|
39
|
+
their models and any required environment variables.
|
40
|
+
|
41
|
+
|
42
|
+
## Other API key variables
|
43
|
+
|
44
|
+
Here are the API key environment variables that are supported
|
45
|
+
by litellm. See their docs for more info.
|
46
|
+
|
47
|
+
<!--[[[cog
|
48
|
+
from subprocess import run
|
49
|
+
lines = run(
|
50
|
+
"egrep -ho '[A-Z_]+_API_KEY' ../litellm/litellm/*py | sort -u",
|
51
|
+
shell=True,
|
52
|
+
capture_output=True,
|
53
|
+
text=True,
|
54
|
+
).stdout
|
55
|
+
lines = ['- ' + line for line in lines.splitlines(keepends=True)]
|
56
|
+
cog.out(''.join(lines))
|
57
|
+
]]]-->
|
58
|
+
- ALEPH_ALPHA_API_KEY
|
59
|
+
- ALEPHALPHA_API_KEY
|
60
|
+
- ANTHROPIC_API_KEY
|
61
|
+
- ANYSCALE_API_KEY
|
62
|
+
- AZURE_AI_API_KEY
|
63
|
+
- AZURE_API_KEY
|
64
|
+
- AZURE_OPENAI_API_KEY
|
65
|
+
- BASETEN_API_KEY
|
66
|
+
- CEREBRAS_API_KEY
|
67
|
+
- CLARIFAI_API_KEY
|
68
|
+
- CLOUDFLARE_API_KEY
|
69
|
+
- CO_API_KEY
|
70
|
+
- CODESTRAL_API_KEY
|
71
|
+
- COHERE_API_KEY
|
72
|
+
- DATABRICKS_API_KEY
|
73
|
+
- DEEPINFRA_API_KEY
|
74
|
+
- DEEPSEEK_API_KEY
|
75
|
+
- FIREWORKS_AI_API_KEY
|
76
|
+
- FIREWORKS_API_KEY
|
77
|
+
- FIREWORKSAI_API_KEY
|
78
|
+
- GEMINI_API_KEY
|
79
|
+
- GROQ_API_KEY
|
80
|
+
- HUGGINGFACE_API_KEY
|
81
|
+
- INFINITY_API_KEY
|
82
|
+
- MARITALK_API_KEY
|
83
|
+
- MISTRAL_API_KEY
|
84
|
+
- NLP_CLOUD_API_KEY
|
85
|
+
- NVIDIA_NIM_API_KEY
|
86
|
+
- OLLAMA_API_KEY
|
87
|
+
- OPENAI_API_KEY
|
88
|
+
- OPENAI_LIKE_API_KEY
|
89
|
+
- OPENROUTER_API_KEY
|
90
|
+
- OR_API_KEY
|
91
|
+
- PALM_API_KEY
|
92
|
+
- PERPLEXITYAI_API_KEY
|
93
|
+
- PREDIBASE_API_KEY
|
94
|
+
- PROVIDER_API_KEY
|
95
|
+
- REPLICATE_API_KEY
|
96
|
+
- TOGETHERAI_API_KEY
|
97
|
+
- VOLCENGINE_API_KEY
|
98
|
+
- VOYAGE_API_KEY
|
99
|
+
- WATSONX_API_KEY
|
100
|
+
- WX_API_KEY
|
101
|
+
- XAI_API_KEY
|
102
|
+
- XINFERENCE_API_KEY
|
103
|
+
<!--[[[end]]]-->
|
@@ -0,0 +1,50 @@
|
|
1
|
+
---
|
2
|
+
parent: Connecting to LLMs
|
3
|
+
nav_order: 550
|
4
|
+
---
|
5
|
+
|
6
|
+
# Vertex AI
|
7
|
+
|
8
|
+
Aider can connect to models provided by Google Vertex AI.
|
9
|
+
You will need to install the
|
10
|
+
[gcloud CLI](https://cloud.google.com/sdk/docs/install) and [login](https://cloud.google.com/sdk/docs/initializing) with a GCP account
|
11
|
+
or service account with permission to use the Vertex AI API.
|
12
|
+
|
13
|
+
With your chosen login method, the gcloud CLI should automatically set the
|
14
|
+
`GOOGLE_APPLICATION_CREDENTIALS` environment variable which points to the credentials file.
|
15
|
+
|
16
|
+
First, install aider:
|
17
|
+
|
18
|
+
{% include install.md %}
|
19
|
+
|
20
|
+
To configure Aider to use the Vertex AI API, you need to set `VERTEXAI_PROJECT` (the GCP project ID)
|
21
|
+
and `VERTEXAI_LOCATION` (the GCP region) [environment variables for Aider](/docs/config/dotenv.html).
|
22
|
+
|
23
|
+
Note that Claude on Vertex AI is only available in certain GCP regions,
|
24
|
+
check [the model card](https://console.cloud.google.com/vertex-ai/publishers/anthropic/model-garden/claude-3-5-sonnet)
|
25
|
+
for your model to see which regions are supported.
|
26
|
+
|
27
|
+
Example `.env` file:
|
28
|
+
|
29
|
+
```
|
30
|
+
VERTEXAI_PROJECT=my-project
|
31
|
+
VERTEXAI_LOCATION=us-east5
|
32
|
+
```
|
33
|
+
|
34
|
+
Start working with aider and Vertex AI on your codebase:
|
35
|
+
|
36
|
+
```
|
37
|
+
# Change directory into your codebase
|
38
|
+
cd /to/your/project
|
39
|
+
|
40
|
+
aider --model vertex_ai/claude-3-5-sonnet@20240620
|
41
|
+
```
|
42
|
+
|
43
|
+
Or you can use the [YAML config](/docs/config/aider_conf.html) to set the model to any of the
|
44
|
+
models supported by Vertex AI.
|
45
|
+
|
46
|
+
Example `.aider.conf.yml` file:
|
47
|
+
|
48
|
+
```yaml
|
49
|
+
model: vertex_ai/claude-3-5-sonnet@20240620
|
50
|
+
```
|
@@ -0,0 +1,53 @@
|
|
1
|
+
---
|
2
|
+
parent: Connecting to LLMs
|
3
|
+
nav_order: 400
|
4
|
+
---
|
5
|
+
|
6
|
+
# xAI
|
7
|
+
|
8
|
+
You'll need a [xAI API key](https://console.x.ai.).
|
9
|
+
|
10
|
+
First, install aider:
|
11
|
+
|
12
|
+
{% include install.md %}
|
13
|
+
|
14
|
+
Then configure your API keys:
|
15
|
+
|
16
|
+
```bash
|
17
|
+
export XAI_API_KEY=<key> # Mac/Linux
|
18
|
+
setx XAI_API_KEY <key> # Windows, restart shell after setx
|
19
|
+
```
|
20
|
+
|
21
|
+
Start working with aider and xAI on your codebase:
|
22
|
+
|
23
|
+
```bash
|
24
|
+
# Change directory into your codebase
|
25
|
+
cd /to/your/project
|
26
|
+
|
27
|
+
# Grok 3
|
28
|
+
aider --model xai/grok-3-beta
|
29
|
+
|
30
|
+
# Grok 3 fast (faster, more expensive)
|
31
|
+
aider --model xai/grok-3-fast-beta
|
32
|
+
|
33
|
+
# Grok 3 Mini
|
34
|
+
aider --model xai/grok-3-mini-beta
|
35
|
+
|
36
|
+
# Grok 3 Mini fast (faster, more expensive)
|
37
|
+
aider --model xai/grok-3-mini-fast-beta
|
38
|
+
|
39
|
+
# List models available from xAI
|
40
|
+
aider --list-models xai/
|
41
|
+
```
|
42
|
+
|
43
|
+
The Grok 3 Mini models support the `--reasoning-effort` flag.
|
44
|
+
See the [reasoning settings documentation](../config/reasoning.md) for details.
|
45
|
+
Example:
|
46
|
+
|
47
|
+
```bash
|
48
|
+
aider --model xai/grok-3-mini-beta --reasoning-effort high
|
49
|
+
```
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
|
@@ -0,0 +1,54 @@
|
|
1
|
+
---
|
2
|
+
title: Connecting to LLMs
|
3
|
+
nav_order: 40
|
4
|
+
has_children: true
|
5
|
+
description: Aider can connect to most LLMs for AI pair programming.
|
6
|
+
---
|
7
|
+
|
8
|
+
# Aider can connect to most LLMs
|
9
|
+
{: .no_toc }
|
10
|
+
|
11
|
+
[](https://aider.chat/assets/llms.jpg)
|
12
|
+
|
13
|
+
|
14
|
+
## Best models
|
15
|
+
{: .no_toc }
|
16
|
+
|
17
|
+
Aider works best with these models, which are skilled at editing code:
|
18
|
+
|
19
|
+
- [Gemini 2.5 Pro](/docs/llms/gemini.html)
|
20
|
+
- [DeepSeek R1 and V3](/docs/llms/deepseek.html)
|
21
|
+
- [Claude 3.7 Sonnet](/docs/llms/anthropic.html)
|
22
|
+
- [OpenAI o3, o4-mini and GPT-4.1](/docs/llms/openai.html)
|
23
|
+
|
24
|
+
|
25
|
+
## Free models
|
26
|
+
{: .no_toc }
|
27
|
+
|
28
|
+
Aider works with a number of **free** API providers:
|
29
|
+
|
30
|
+
- [OpenRouter offers free access to many models](https://openrouter.ai/models/?q=free), with limitations on daily usage.
|
31
|
+
- Google's [Gemini 2.5 Pro Exp](/docs/llms/gemini.html) works very well with aider.
|
32
|
+
|
33
|
+
## Local models
|
34
|
+
{: .no_toc }
|
35
|
+
|
36
|
+
Aider can work also with local models, for example using [Ollama](/docs/llms/ollama.html).
|
37
|
+
It can also access
|
38
|
+
local models that provide an
|
39
|
+
[Open AI compatible API](/docs/llms/openai-compat.html).
|
40
|
+
|
41
|
+
## Use a capable model
|
42
|
+
{: .no_toc }
|
43
|
+
|
44
|
+
Check
|
45
|
+
[Aider's LLM leaderboards](https://aider.chat/docs/leaderboards/)
|
46
|
+
to see which models work best with aider.
|
47
|
+
|
48
|
+
Be aware that aider may not work well with less capable models.
|
49
|
+
If you see the model returning code, but aider isn't able to edit your files
|
50
|
+
and commit the changes...
|
51
|
+
this is usually because the model isn't capable of properly
|
52
|
+
returning "code edits".
|
53
|
+
Models weaker than GPT 3.5 may have problems working well with aider.
|
54
|
+
|
@@ -0,0 +1,122 @@
|
|
1
|
+
---
|
2
|
+
parent: More info
|
3
|
+
nav_order: 500
|
4
|
+
description: Opt-in, anonymous, no personal info.
|
5
|
+
---
|
6
|
+
|
7
|
+
# Analytics
|
8
|
+
|
9
|
+
Aider can collect anonymous analytics to help
|
10
|
+
improve aider's ability to work with LLMs, edit code and complete user requests.
|
11
|
+
|
12
|
+
## Opt-in, anonymous, no personal info
|
13
|
+
|
14
|
+
Analytics are only collected if you agree and opt-in.
|
15
|
+
Aider respects your privacy and never collects your code, chat messages, keys or
|
16
|
+
personal info.
|
17
|
+
|
18
|
+
Aider collects information on:
|
19
|
+
|
20
|
+
- which LLMs are used and with how many tokens,
|
21
|
+
- which of aider's edit formats are used,
|
22
|
+
- how often features and commands are used,
|
23
|
+
- information about exceptions and errors,
|
24
|
+
- etc
|
25
|
+
|
26
|
+
These analytics are associated with an anonymous,
|
27
|
+
randomly generated UUID4 user identifier.
|
28
|
+
|
29
|
+
This information helps improve aider by identifying which models, edit formats,
|
30
|
+
features and commands are most used.
|
31
|
+
It also helps uncover bugs that users are experiencing, so that they can be fixed
|
32
|
+
in upcoming releases.
|
33
|
+
|
34
|
+
## Disabling analytics
|
35
|
+
|
36
|
+
You can opt out of analytics forever by running this command one time:
|
37
|
+
|
38
|
+
```
|
39
|
+
aider --analytics-disable
|
40
|
+
```
|
41
|
+
|
42
|
+
## Enabling analytics
|
43
|
+
|
44
|
+
The `--[no-]analytics` switch controls whether analytics are enabled for the
|
45
|
+
current session:
|
46
|
+
|
47
|
+
- `--analytics` will turn on analytics for the current session.
|
48
|
+
This will *not* have any effect if you have permanently disabled analytics
|
49
|
+
with `--analytics-disable`.
|
50
|
+
If this is the first time you have enabled analytics, aider
|
51
|
+
will confirm you wish to opt-in to analytics.
|
52
|
+
- `--no-analytics` will turn off analytics for the current session.
|
53
|
+
- By default, if you don't provide `--analytics` or `--no-analytics`,
|
54
|
+
aider will enable analytics for a random subset of users.
|
55
|
+
This will never happen if you have permanently disabled analytics
|
56
|
+
with `--analytics-disable`.
|
57
|
+
Randomly selected users will be asked if they wish to opt-in to analytics.
|
58
|
+
|
59
|
+
|
60
|
+
## Opting in
|
61
|
+
|
62
|
+
The first time analytics are enabled, you will need to agree to opt-in.
|
63
|
+
|
64
|
+
```
|
65
|
+
aider --analytics
|
66
|
+
|
67
|
+
Aider respects your privacy and never collects your code, prompts, chats, keys or any personal
|
68
|
+
info.
|
69
|
+
For more info: https://aider.chat/docs/more/analytics.html
|
70
|
+
Allow collection of anonymous analytics to help improve aider? (Y)es/(N)o [Yes]:
|
71
|
+
```
|
72
|
+
|
73
|
+
If you say "no", analytics will be permanently disabled.
|
74
|
+
|
75
|
+
|
76
|
+
## Details about data being collected
|
77
|
+
|
78
|
+
### Sample analytics data
|
79
|
+
|
80
|
+
To get a better sense of what type of data is collected, you can review some
|
81
|
+
[sample analytics logs](https://github.com/aider-ai/aider/blob/main/aider/website/assets/sample-analytics.jsonl).
|
82
|
+
These are the last 1,000 analytics events from the author's
|
83
|
+
personal use of aider, updated regularly.
|
84
|
+
|
85
|
+
|
86
|
+
### Analytics code
|
87
|
+
|
88
|
+
Since aider is open source, all the places where aider collects analytics
|
89
|
+
are visible in the source code.
|
90
|
+
They can be viewed using
|
91
|
+
[GitHub search](https://github.com/search?q=repo%3Aaider-ai%2Faider+%22.event%28%22&type=code).
|
92
|
+
|
93
|
+
|
94
|
+
### Logging and inspecting analytics
|
95
|
+
|
96
|
+
You can get a full log of the analytics that aider is collecting,
|
97
|
+
in case you would like to audit or inspect this data.
|
98
|
+
|
99
|
+
```
|
100
|
+
aider --analytics-log filename.jsonl
|
101
|
+
```
|
102
|
+
|
103
|
+
If you want to just log analytics without reporting them, you can do:
|
104
|
+
|
105
|
+
```
|
106
|
+
aider --analytics-log filename.jsonl --no-analytics
|
107
|
+
```
|
108
|
+
|
109
|
+
|
110
|
+
## Reporting issues
|
111
|
+
|
112
|
+
If you have concerns about any of the analytics that aider is collecting
|
113
|
+
or our data practices
|
114
|
+
please contact us by opening a
|
115
|
+
[GitHub Issue](https://github.com/aider-ai/aider/issues).
|
116
|
+
|
117
|
+
## Privacy policy
|
118
|
+
|
119
|
+
Please see aider's
|
120
|
+
[privacy policy](/docs/legal/privacy.html)
|
121
|
+
for more details.
|
122
|
+
|
@@ -0,0 +1,116 @@
|
|
1
|
+
---
|
2
|
+
parent: More info
|
3
|
+
nav_order: 490
|
4
|
+
description: Aider uses various "edit formats" to let LLMs edit source files.
|
5
|
+
---
|
6
|
+
|
7
|
+
# Edit formats
|
8
|
+
|
9
|
+
Aider uses various "edit formats" to let LLMs edit source files.
|
10
|
+
Different models work better or worse with different edit formats.
|
11
|
+
Aider is configured to use the optimal format for most popular, common models.
|
12
|
+
You can always force use of a specific edit format with
|
13
|
+
the `--edit-format` switch.
|
14
|
+
|
15
|
+
## whole
|
16
|
+
|
17
|
+
The "whole" edit format is the simplest possible editing format.
|
18
|
+
The LLM is instructed to return a full, updated
|
19
|
+
copy of each source file that needs changes.
|
20
|
+
While simple, it can be slow and costly because the LLM has to return
|
21
|
+
the *entire file* even if just a few lines are edited.
|
22
|
+
|
23
|
+
The whole format expects the file path just before the fenced file content:
|
24
|
+
|
25
|
+
````
|
26
|
+
show_greeting.py
|
27
|
+
```
|
28
|
+
import sys
|
29
|
+
|
30
|
+
def greeting(name):
|
31
|
+
print("Hey", name)
|
32
|
+
|
33
|
+
if __name__ == '__main__':
|
34
|
+
greeting(sys.argv[1])
|
35
|
+
```
|
36
|
+
````
|
37
|
+
|
38
|
+
|
39
|
+
## diff
|
40
|
+
|
41
|
+
The "diff" edit format asks the LLM to specify file edits as a series of search/replace blocks.
|
42
|
+
This is an efficient format, because the model only needs to return parts of the file
|
43
|
+
which have changes.
|
44
|
+
|
45
|
+
Edits are formatted using a syntax similar to the git merge conflict resolution markings,
|
46
|
+
with the file path right before a fenced block:
|
47
|
+
|
48
|
+
````
|
49
|
+
mathweb/flask/app.py
|
50
|
+
```
|
51
|
+
<<<<<<< SEARCH
|
52
|
+
from flask import Flask
|
53
|
+
=======
|
54
|
+
import math
|
55
|
+
from flask import Flask
|
56
|
+
>>>>>>> REPLACE
|
57
|
+
```
|
58
|
+
````
|
59
|
+
|
60
|
+
## diff-fenced
|
61
|
+
|
62
|
+
The "diff-fenced" edit format is based on the diff format, but
|
63
|
+
the file path is placed inside the fence.
|
64
|
+
It is primarily used with the Gemini family of models,
|
65
|
+
which often fail to conform to the fencing approach specified in the diff format.
|
66
|
+
|
67
|
+
````
|
68
|
+
```
|
69
|
+
mathweb/flask/app.py
|
70
|
+
<<<<<<< SEARCH
|
71
|
+
from flask import Flask
|
72
|
+
=======
|
73
|
+
import math
|
74
|
+
from flask import Flask
|
75
|
+
>>>>>>> REPLACE
|
76
|
+
```
|
77
|
+
````
|
78
|
+
|
79
|
+
## udiff
|
80
|
+
|
81
|
+
The "udiff" edit format is based on the widely used unified diff format,
|
82
|
+
but [modified and simplified](/2023/12/21/unified-diffs.html).
|
83
|
+
This is an efficient format, because the model only needs to return parts of the file
|
84
|
+
which have changes.
|
85
|
+
|
86
|
+
It was mainly used to the GPT-4 Turbo family of models,
|
87
|
+
because it reduced their "lazy coding" tendencies.
|
88
|
+
With other edit formats the GPT-4 Turbo models tended to elide
|
89
|
+
large sections of code and replace them with "# ... original code here ..."
|
90
|
+
style comments.
|
91
|
+
|
92
|
+
|
93
|
+
````
|
94
|
+
```diff
|
95
|
+
--- mathweb/flask/app.py
|
96
|
+
+++ mathweb/flask/app.py
|
97
|
+
@@ ... @@
|
98
|
+
-class MathWeb:
|
99
|
+
+import sympy
|
100
|
+
+
|
101
|
+
+class MathWeb:
|
102
|
+
```
|
103
|
+
````
|
104
|
+
|
105
|
+
## editor-diff and editor-whole
|
106
|
+
|
107
|
+
These are streamlined versions of the diff and whole formats, intended to be used
|
108
|
+
with `--editor-edit-format` when using
|
109
|
+
[architect mode](/docs/usage/modes.html).
|
110
|
+
The actual edit format is the same, but aider uses a simpler prompt that
|
111
|
+
is more narrowly focused on just editing the file as opposed to
|
112
|
+
solving the coding task.
|
113
|
+
The architect model resolves the coding task and
|
114
|
+
provides plain text instructions about which file changes need to be made.
|
115
|
+
The editor interprets those instructions to produce the
|
116
|
+
syntactically correct diff or whole edits.
|
@@ -0,0 +1,137 @@
|
|
1
|
+
---
|
2
|
+
parent: More info
|
3
|
+
nav_order: 480
|
4
|
+
description: Aider can handle "infinite output" from models that support prefill.
|
5
|
+
---
|
6
|
+
|
7
|
+
# Infinite output
|
8
|
+
|
9
|
+
LLM providers limit how much output a model can generate from a single request.
|
10
|
+
This is usually called the output token limit.
|
11
|
+
|
12
|
+
Aider is able to work around this limit with models that support
|
13
|
+
"prefilling" the assistant response.
|
14
|
+
When you use aider with a model that supports prefill, you will see
|
15
|
+
"infinite output" noted in the announcement lines displayed at launch:
|
16
|
+
|
17
|
+
```
|
18
|
+
Aider v0.58.0
|
19
|
+
Main model: claude-3-5-sonnet-20240620 with diff edit format, prompt cache, infinite output
|
20
|
+
```
|
21
|
+
|
22
|
+
Models that support prefill can be primed to think they started their response
|
23
|
+
with a specific piece of text.
|
24
|
+
You can put words in their mouth, and they will continue generating
|
25
|
+
text from that point forward.
|
26
|
+
|
27
|
+
When aider is collecting code edits from a model and
|
28
|
+
it hits the output token limit,
|
29
|
+
aider simply initiates another LLM request with the partial
|
30
|
+
response prefilled.
|
31
|
+
This prompts the model to continue where it left off,
|
32
|
+
generating more of the desired response.
|
33
|
+
This prefilling of the partially completed response can be repeated,
|
34
|
+
allowing for very long outputs.
|
35
|
+
Joining the text across these output limit boundaries
|
36
|
+
requires some heuristics, but is typically fairly reliable.
|
37
|
+
|
38
|
+
Aider supports "infinite output" for models that support "prefill",
|
39
|
+
such as:
|
40
|
+
|
41
|
+
<!--[[[cog
|
42
|
+
import requests
|
43
|
+
import json
|
44
|
+
|
45
|
+
# Fetch the JSON data
|
46
|
+
url = "https://raw.githubusercontent.com/BerriAI/litellm/refs/heads/main/model_prices_and_context_window.json"
|
47
|
+
response = requests.get(url)
|
48
|
+
data = json.loads(response.text)
|
49
|
+
|
50
|
+
# Process the JSON to find models with supports_assistant_prefill=true
|
51
|
+
prefill_models = [model for model, info in data.items() if info.get('supports_assistant_prefill') == True]
|
52
|
+
|
53
|
+
# Generate the list of models
|
54
|
+
model_list = "\n".join(f"- {model}" for model in sorted(prefill_models))
|
55
|
+
|
56
|
+
cog.out(model_list)
|
57
|
+
]]]-->
|
58
|
+
- anthropic.claude-3-5-haiku-20241022-v1:0
|
59
|
+
- anthropic.claude-3-5-sonnet-20241022-v2:0
|
60
|
+
- anthropic.claude-3-7-sonnet-20250219-v1:0
|
61
|
+
- anthropic.claude-opus-4-20250514-v1:0
|
62
|
+
- anthropic.claude-sonnet-4-20250514-v1:0
|
63
|
+
- azure_ai/mistral-medium-2505
|
64
|
+
- claude-3-5-haiku-20241022
|
65
|
+
- claude-3-5-haiku-latest
|
66
|
+
- claude-3-5-sonnet-20240620
|
67
|
+
- claude-3-5-sonnet-20241022
|
68
|
+
- claude-3-5-sonnet-latest
|
69
|
+
- claude-3-7-sonnet-20250219
|
70
|
+
- claude-3-7-sonnet-latest
|
71
|
+
- claude-3-haiku-20240307
|
72
|
+
- claude-3-opus-20240229
|
73
|
+
- claude-3-opus-latest
|
74
|
+
- claude-3-sonnet-20240229
|
75
|
+
- claude-opus-4-20250514
|
76
|
+
- claude-sonnet-4-20250514
|
77
|
+
- codestral/codestral-2405
|
78
|
+
- codestral/codestral-latest
|
79
|
+
- databricks/databricks-claude-3-7-sonnet
|
80
|
+
- deepseek/deepseek-chat
|
81
|
+
- deepseek/deepseek-coder
|
82
|
+
- deepseek/deepseek-reasoner
|
83
|
+
- eu.anthropic.claude-3-5-haiku-20241022-v1:0
|
84
|
+
- eu.anthropic.claude-3-5-sonnet-20241022-v2:0
|
85
|
+
- eu.anthropic.claude-3-7-sonnet-20250219-v1:0
|
86
|
+
- eu.anthropic.claude-opus-4-20250514-v1:0
|
87
|
+
- eu.anthropic.claude-sonnet-4-20250514-v1:0
|
88
|
+
- mistral/codestral-2405
|
89
|
+
- mistral/codestral-latest
|
90
|
+
- mistral/codestral-mamba-latest
|
91
|
+
- mistral/devstral-small-2505
|
92
|
+
- mistral/mistral-large-2402
|
93
|
+
- mistral/mistral-large-2407
|
94
|
+
- mistral/mistral-large-2411
|
95
|
+
- mistral/mistral-large-latest
|
96
|
+
- mistral/mistral-medium
|
97
|
+
- mistral/mistral-medium-2312
|
98
|
+
- mistral/mistral-medium-2505
|
99
|
+
- mistral/mistral-medium-latest
|
100
|
+
- mistral/mistral-small
|
101
|
+
- mistral/mistral-small-latest
|
102
|
+
- mistral/mistral-tiny
|
103
|
+
- mistral/open-codestral-mamba
|
104
|
+
- mistral/open-mistral-7b
|
105
|
+
- mistral/open-mistral-nemo
|
106
|
+
- mistral/open-mistral-nemo-2407
|
107
|
+
- mistral/open-mixtral-8x22b
|
108
|
+
- mistral/open-mixtral-8x7b
|
109
|
+
- mistral/pixtral-12b-2409
|
110
|
+
- mistral/pixtral-large-2411
|
111
|
+
- mistral/pixtral-large-latest
|
112
|
+
- openrouter/anthropic/claude-3.5-sonnet
|
113
|
+
- openrouter/anthropic/claude-3.7-sonnet
|
114
|
+
- openrouter/deepseek/deepseek-r1
|
115
|
+
- us.anthropic.claude-3-5-haiku-20241022-v1:0
|
116
|
+
- us.anthropic.claude-3-5-sonnet-20241022-v2:0
|
117
|
+
- us.anthropic.claude-3-7-sonnet-20250219-v1:0
|
118
|
+
- us.anthropic.claude-opus-4-20250514-v1:0
|
119
|
+
- us.anthropic.claude-sonnet-4-20250514-v1:0
|
120
|
+
- vertex_ai/claude-3-5-haiku
|
121
|
+
- vertex_ai/claude-3-5-haiku@20241022
|
122
|
+
- vertex_ai/claude-3-5-sonnet
|
123
|
+
- vertex_ai/claude-3-5-sonnet-v2
|
124
|
+
- vertex_ai/claude-3-5-sonnet-v2@20241022
|
125
|
+
- vertex_ai/claude-3-5-sonnet@20240620
|
126
|
+
- vertex_ai/claude-3-7-sonnet@20250219
|
127
|
+
- vertex_ai/claude-3-haiku
|
128
|
+
- vertex_ai/claude-3-haiku@20240307
|
129
|
+
- vertex_ai/claude-3-opus
|
130
|
+
- vertex_ai/claude-3-opus@20240229
|
131
|
+
- vertex_ai/claude-3-sonnet
|
132
|
+
- vertex_ai/claude-3-sonnet@20240229
|
133
|
+
- vertex_ai/claude-opus-4@20250514
|
134
|
+
- vertex_ai/claude-sonnet-4@20250514
|
135
|
+
<!--[[[end]]]-->
|
136
|
+
|
137
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
---
|
2
|
+
parent: Screen recordings
|
3
|
+
nav_order: 1
|
4
|
+
layout: minimal
|
5
|
+
highlight_image: /assets/recordings.jpg
|
6
|
+
description: See how a new command-line option is added to automatically accept edits proposed by the architect model, with implementation. Aider also updates the project's HISTORY file.
|
7
|
+
---
|
8
|
+
|
9
|
+
# Add --auto-accept-architect feature
|
10
|
+
|
11
|
+
<script>
|
12
|
+
const recording_id = "auto-accept-architect";
|
13
|
+
const recording_url = "https://gist.githubusercontent.com/paul-gauthier/e7383fbc29c9bb343ee6fb7ee5d77e15/raw/c2194334085304bb1c6bb80814d791704d9719b6/707774.cast";
|
14
|
+
</script>
|
15
|
+
|
16
|
+
{% include recording.md %}
|
17
|
+
|
18
|
+
## Commentary
|
19
|
+
|
20
|
+
- 0:01 We're going to add a new feature to automatically accept edits proposed by the architect model.
|
21
|
+
- 0:11 First, let's add the new switch.
|
22
|
+
- 0:40 Aider figured out that it should be passed to the Coder class.
|
23
|
+
- 0:48 Now we need to implement the functionality.
|
24
|
+
- 1:00 Let's do some manual testing.
|
25
|
+
- 1:28 That worked. Let's make sure we can turn it off too.
|
26
|
+
- 1:42 That worked too. Let's have aider update the HISTORY file to document the new feature.
|
27
|
+
- 2:00 Let's quickly tidy up the changes to HISTORY.
|
28
|
+
- 2:05 All done!
|
29
|
+
|
30
|
+
|
31
|
+
|