diff --git a/README.md b/README.md index ef74e63d1..9af8ebcb3 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ with sensible commit messages. You can start a new project or work with an existing git repo. Aider is unique in that it lets you ask for changes to [pre-existing, larger codebases](https://aider.chat/docs/repomap.html). Aider works well with GPT 3.5, GPT-4, GPT-4 Turbo with Vision, -Claude 3 Opus and has support for connecting to almost any LLM. +and Claude 3 Opus; it also has support for [connecting to almost any LLM](https://aider.chat/docs/connect.html).

aider screencast @@ -44,13 +44,14 @@ get started quickly like this: ``` $ pip install aider-chat + +# To work with GPT-4 Turbo: $ export OPENAI_API_KEY=your-key-goes-here -$ aider hello.js +$ aider -Using git repo: .git -Added hello.js to the chat. - -hello.js> write a js script that prints hello world +# To work with Claude 3 Opus: +$ export ANTHROPIC_API_KEY=your-key-goes-here +$ aider --opus ``` ## Example chat transcripts @@ -72,6 +73,8 @@ You can find more chat transcripts on the [examples page](https://aider.chat/exa * Chat with aider about your code by launching `aider` from the command line with set of source files to discuss and edit together. Aider lets the LLM see and edit the content of those files. * Aider can write and edit code in most popular languages: python, javascript, typescript, php, html, css, etc. +* Aider works well with GPT 3.5, GPT-4, GPT-4 Turbo with Vision, +and Claude 3 Opus; it also has support for [connecting to almost any LLM](https://aider.chat/docs/connect.html). * Request new features, changes, improvements, or bug fixes to your code. Ask for new test cases, updated documentation or code refactors. * Aider will apply the edits suggested by the LLM directly to your source files. * Aider will [automatically commit each changeset to your local git repo](https://aider.chat/docs/faq.html#how-does-aider-use-git) with a descriptive commit message. These frequent, automatic commits provide a safety net. It's easy to undo changes or use standard git workflows to manage longer sequences of changes. diff --git a/aider/commands.py b/aider/commands.py index 44804b9eb..737050962 100644 --- a/aider/commands.py +++ b/aider/commands.py @@ -371,8 +371,9 @@ class Commands: else: if is_image_file(matched_file) and not self.coder.main_model.accepts_images: self.io.tool_error( - f"Cannot add image file {matched_file} as the model does not support image" - " files" + f"Cannot add image file {matched_file} as the" + f" {self.coder.main_model.name} does not support image.\nYou can run `aider" + " --4turbo` to use GPT-4 Turbo with Vision." ) continue content = self.io.read_text(abs_file_path) diff --git a/aider/main.py b/aider/main.py index 93933f4ba..c9f1d3593 100644 --- a/aider/main.py +++ b/aider/main.py @@ -163,6 +163,12 @@ def main(argv=None, input=None, output=None, force_git_root=None): env_var="OPENAI_API_KEY", help="Specify the OpenAI API key", ) + core_group.add_argument( + "--anthropic-api-key", + metavar="ANTHROPIC_API_KEY", + env_var="ANTHROPIC_API_KEY", + help="Specify the OpenAI API key", + ) default_model = models.DEFAULT_MODEL_NAME core_group.add_argument( "--model", @@ -178,6 +184,14 @@ def main(argv=None, input=None, output=None, force_git_root=None): const=opus_model, help=f"Use {opus_model} model for the main chat", ) + sonnet_model = "claude-3-sonnet-20240229" + core_group.add_argument( + "--sonnet", + action="store_const", + dest="model", + const=sonnet_model, + help=f"Use {sonnet_model} model for the main chat", + ) default_4_model = "gpt-4-0613" core_group.add_argument( "--4", @@ -187,7 +201,7 @@ def main(argv=None, input=None, output=None, force_git_root=None): const=default_4_model, help=f"Use {default_4_model} model for the main chat", ) - default_4_turbo_model = "gpt-4-1106-preview" + default_4_turbo_model = "gpt-4-turbo" core_group.add_argument( "--4turbo", "--4-turbo", @@ -553,7 +567,9 @@ def main(argv=None, input=None, output=None, force_git_root=None): def scrub_sensitive_info(text): # Replace sensitive information with placeholder if text and args.openai_api_key: - return text.replace(args.openai_api_key, "***") + text = text.replace(args.openai_api_key, "***") + if text and args.anthropic_api_key: + text = text.replace(args.anthropic_api_key, "***") return text if args.verbose: @@ -567,6 +583,9 @@ def main(argv=None, input=None, output=None, force_git_root=None): io.tool_output(*map(scrub_sensitive_info, sys.argv), log_only=True) + if args.anthropic_api_key: + os.environ["ANTHROPIC_API_KEY"] = args.anthropic_api_key + if args.openai_api_key: os.environ["OPENAI_API_KEY"] = args.openai_api_key if args.openai_api_base: diff --git a/docs/connect.md b/docs/connect.md new file mode 100644 index 000000000..d19f78267 --- /dev/null +++ b/docs/connect.md @@ -0,0 +1,121 @@ + +# Connecting aider to LLMs + +Aider works well with OpenAI's GPT 3.5, GPT-4, GPT-4 Turbo with Vision and +Anthropic's Claude 3 Opus and Sonnet. + +Aider also has support for connecting to almost any LLM, but may not be as effective +because of the reduced capabilities of such alternative models. +For comparison, GPT-3.5 is just barely capable of *editing code* to provide aider's +interactive "pair programming" style workflow. +So models that are less capable than GPT-3.5 may struggle to perform well with aider. + +## OpenAI + +To work with OpenAI's models, you need to provide your +[OpenAI API key](https://help.openai.com/en/articles/4936850-where-do-i-find-my-secret-api-key) +either in the `OPENAI_API_KEY` environment variable or +via the `--openai-api-key` command line switch. + +Aider has some built in shortcuts for the most popular OpenAI models and +has been tested and benchmarked to work well with them: + +- OpenAI's GPT-4 Turbo: `aider` with no args uses GPT-4 Turbo by default. +- OpenAI's GPT-4 Turbo with Vision: `aider --4turbo` will use this vision capable model, allowing you to share images with GPT by adding them to the chat with `/add` or by naming them on the command line. +- OpenAI's GPT-3.5 Turbo: `aider --35turbo` + +You can use `aider --model ` to use any other OpenAI model. + +## Anthropic + +To work with Anthropic's models, you need to provide your +[Anthropic API key](https://docs.anthropic.com/claude/reference/getting-started-with-the-api) +either in the `ANTHROPIC_API_KEY` environment variable or +via the `--anthropic-api-key` command line switch. + +Aider has some built in shortcuts for the most popular Anthropic models and +has been tested and benchmarked to work well with them: + +- Anthropic's Claude 3 Opus: `aider --opus` +- Anthropic's Claude 3 Sonnet: `aider --sonnet` + +You can use `aider --model ` to use any other Anthropic model. + +## Azure + +Aider can be configured to connect to the OpenAI models on Azure. +You can run aider with the following arguments to connect to Azure: + +``` +$ aider \ + --openai-api-type azure \ + --openai-api-key your-key-goes-here \ + --openai-api-base https://example-endpoint.openai.azure.com \ + --openai-api-version 2023-05-15 \ + --openai-api-deployment-id deployment-name \ + ... +``` + +You could also store those values in an `.aider.conf.yml` file in your home directory: + +``` +openai-api-type: azure +openai-api-key: your-key-goes-here +openai-api-base: https://example-endpoint.openai.azure.com +openai-api-version: 2023-05-15 +openai-api-deployment-id: deployment-name +``` + +Or you can populate the following environment variables instead: + +``` +OPENAI_API_TYPE=azure +OPENAI_API_KEY=your-key-goes-here +OPENAI_API_BASE=https://example-endpoint.openai.azure.com +OPENAI_API_VERSION=2023-05-15 +OPENAI_API_DEPLOYMENT_ID=deployment-name +``` + +See the +[official Azure documentation on using OpenAI models](https://learn.microsoft.com/en-us/azure/cognitive-services/openai/chatgpt-quickstart?tabs=command-line&pivots=programming-language-python) +for more information on how to populate the above configuration values. + +## OpenAI compatible APIs + +If you can make an LLM accessible via an OpenAI compatible API, +you can use `--openai-api-base` to connect to a different API endpoint. + +## Other LLMs + +Aider uses the [litellm](https://docs.litellm.ai/docs/providers) package +to provide connections to hundreds of other models. +You can use `aider --model /` to use any supported model. + +Depending on which model you access, you may need to provide an API key +or other configuration parameters by setting certain environment variables. +If any required variables are not set, aider will print a brief +error message listing which parameters are needed. + +To explore the list of supported models you can run `aider --model `. +If it's not an exact match for a model, aider will +return a list of possible matching models. +For example `aider --model 3.5` will return the following list of models: + +- gpt-3.5-turbo +- gpt-3.5-turbo-0301 +- gpt-3.5-turbo-0613 +- gpt-3.5-turbo-1106 +- gpt-3.5-turbo-0125 +- gpt-3.5-turbo-16k +- gpt-3.5-turbo-16k-0613 +- ft:gpt-3.5-turbo +- azure/gpt-3.5-turbo-instruct-0914 +- gpt-3.5-turbo-instruct +- gpt-3.5-turbo-instruct-0914 +- openrouter/openai/gpt-3.5-turbo +- openrouter/openai/gpt-3.5-turbo-16k +- deepinfra/openchat/openchat_3.5 + +Or, see the [list of providers supported by litellm](https://docs.litellm.ai/docs/providers) +for more details. + diff --git a/docs/faq.md b/docs/faq.md index c6b011fca..17758c4de 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -2,7 +2,6 @@ # Frequently asked questions - [How does aider use git?](#how-does-aider-use-git) -- [GPT-4 vs GPT-3.5](#gpt-4-vs-gpt-35) - [Can I use aider with other LLMs, local LLMs, etc?](#can-i-use-aider-with-other-llms-local-llms-etc) - [Accessing other LLMs with OpenRouter](#accessing-other-llms-with-openrouter) - [Aider isn't editing my files?](#aider-isnt-editing-my-files) @@ -40,42 +39,6 @@ While it is not recommended, you can disable aider's use of git in a few ways: - `--no-dirty-commits` will stop aider from committing dirty files before applying GPT's edits. - `--no-git` will completely stop aider from using git on your files. You should ensure you are keeping sensible backups of the files you are working with. -## GPT-4 vs GPT-3.5 - -Aider supports all of OpenAI's chat models, -and uses GPT-4 Turbo by default. -It has a large context window, good coding skills and -generally obeys the instructions in the system prompt. - -You can choose another model with the `--model` command line argument -or one of these shortcuts: - -``` -aider -4 # to use gpt-4-0613 -aider -3 # to use gpt-3.5-turbo-0125 -``` - -The older `gpt-4-0613` model is a great choice if GPT-4 Turbo is having -trouble with your coding task, although it has a smaller context window -which can be a real limitation. - -All the GPT-4 models are able to structure code edits as "diffs" -and use a -[repository map](https://aider.chat/docs/repomap.html) -to improve its ability to make changes in larger codebases. - -GPT-3.5 is -limited to editing somewhat smaller codebases. -It is less able to follow instructions and -so can't reliably return code edits as "diffs". -Aider disables the -repository map -when using GPT-3.5. - -For detailed quantitative comparisons of the various models, please see the -[aider blog](https://aider.chat/blog/) -which contains many benchmarking articles. - ## Can I use aider with other LLMs, local LLMs, etc? Aider provides experimental support for LLMs other than OpenAI's GPT-3.5 and GPT-4. The support is currently only experimental for two reasons: @@ -105,54 +68,13 @@ are relevant tools to serve local models via an OpenAI compatible API. ### Azure -Aider can be configured to connect to the OpenAI models on Azure. -Aider supports the configuration changes specified in the -[official openai python library docs](https://github.com/openai/openai-python#microsoft-azure-endpoints). -You should be able to run aider with the following arguments to connect to Azure: - -``` -$ aider \ - --openai-api-type azure \ - --openai-api-key your-key-goes-here \ - --openai-api-base https://example-endpoint.openai.azure.com \ - --openai-api-version 2023-05-15 \ - --openai-api-deployment-id deployment-name \ - ... -``` - -You could also store those values in an `.aider.conf.yml` file in your home directory: - -``` -openai-api-type: azure -openai-api-key: your-key-goes-here -openai-api-base: https://example-endpoint.openai.azure.com -openai-api-version: 2023-05-15 -openai-api-deployment-id: deployment-name -``` - -See the -[official Azure documentation on using OpenAI models](https://learn.microsoft.com/en-us/azure/cognitive-services/openai/chatgpt-quickstart?tabs=command-line&pivots=programming-language-python) -for more information on how to populate the above configuration values. - +See the documentation on connection to LLMs for details on +[connecting aider to Azure](). ## Accessing other LLMs with OpenRouter -[OpenRouter](https://openrouter.ai) provide an interface to [many models](https://openrouter.ai/models) which are not widely accessible, in particular Claude 3 Opus. - -To access the OpenRouter models, simply: - -``` -# Install aider -pip install aider-chat - -# Setup OpenRouter access -export OPENAI_API_KEY= -export OPENAI_API_BASE=https://openrouter.ai/api/v1 - -# For example, run aider with Claude 3 Opus using the diff editing format -aider --model anthropic/claude-3-opus --edit-format diff -``` - +See the documentation on connection to LLMs for details on +[connecting aider to OpenRouter](). ## Aider isn't editing my files? diff --git a/docs/install.md b/docs/install.md index a75b9519e..10e0781d7 100644 --- a/docs/install.md +++ b/docs/install.md @@ -2,9 +2,10 @@ # Installing aider - [Install git](#install-git) -- [Get your OpenAI API key](#get-your-openai-api-key) +- [Get your API key](#get-your-api-key) - [Windows install](#windows-install) - [Mac/Linux install](#maclinux-install) +- [Working with other LLMs](https://aider.chat/docs/connect.html) - [Tutorial videos](#tutorial-videos) ## Install git @@ -13,33 +14,48 @@ Make sure you have git installed. Here are [instructions for installing git in various environments](https://github.com/git-guides/install-git). -## Get your OpenAI API key +## Get your API key -You need a paid +To work with OpenAI's GPT 3.5 or GPT-4 models you need a paid [OpenAI API key](https://help.openai.com/en/articles/4936850-where-do-i-find-my-secret-api-key). Note that this is different than being a "ChatGPT Plus" subscriber. +To work with Anthropic's models like Claude 3 Opus you need a paid +[Anthropic API key](https://docs.anthropic.com/claude/reference/getting-started-with-the-api). + ## Windows install ``` # Install aider py -m pip install aider-chat -# Launch aider -aider --openai-api-key sk-xxxxxxxxxxxxxxx +# To work with GPT-4 Turbo: +$ aider --openai-api-key sk-xxx... --4turbo + +# To work with Claude 3 Opus: +$ aider --anthropic-api-key sk-xxx... --opus ``` ## Mac/Linux install - ``` # Install aider python -m pip install aider-chat -# Launch aider -aider --openai-api-key sk-xxxxxxxxxxxxxxx +# To work with GPT-4 Turbo: +$ aider --openai-api-key sk-xxx... --4turbo + +# To work with Claude 3 Opus: +$ aider --anthropic-api-key sk-xxx... --opus ``` +## Working with other LLMs + +Aider works well with GPT 3.5, GPT-4, GPT-4 Turbo with Vision, +and Claude 3 Opus. +It also has support for [connecting to almost any LLM](https://aider.chat/docs/connect.html). + + ## Tutorial videos Here are a few tutorial videos: