Aider(已升级):Aider利用双模型架构做到85% SOTA得分!

发布于 2024-11-29 14:34
浏览
0收藏

Hi,这里是Aitrainee,欢迎阅读本期新文章。

令人振奋的是,Aider 最近推出了一种新模式,名为“ 使用一对 Architect/Editor 模型以提升编码效果 ”。这个更新旨在通过协同工作,优化编码过程,使开发更高效。

将代码推理和编辑分开

架构师模型首先描述了如何解决编码问题,包括设计思路和步骤。然后,将该解决方案传递给编辑器模型,后者负责生成具体的代码编辑指令。

这一架构师/编辑器的方法显著提升了多个模型的基准分数,相较于之前的“单独”基线分数,进步明显。特别的,使用o1-preview作为架构师,并结合DeepSeek或o1-mini作为编辑器,达到了85%的SOTA得分。

Aider(已升级):Aider利用双模型架构做到85% SOTA得分!-AI.x社区

动机

这种方法受到OpenAI o1模型发布的启发。尽管这些模型在推理方面表现出色,但在生成格式正确的代码编辑指令时常显得不足。

通过让模型以其偏好的方式描述解决方案,并将这些描述传递给更传统的LLM,可以显著改善结果。第二个编辑LLM可以理解这些描述,并生成所需的代码编辑指令。

像 o1-preview 这样的强大推理模型可以成为优秀的架构师,而编辑器角色可以根据成本、速度和代码编辑技能分配给适当的模型。

实际测试

我们将分别使用两个组合来测试上面的功能:

第一种:gpt4o-mini+deepseek

我会告诉你如何获取免费的gpt4o-mini接口:

首先下载aider:

python -m pip install -U aider-chat

创建一个新的文件夹,以便在这里面运行aider(它会建立git仓库以控制版本):

Aider(已升级):Aider利用双模型架构做到85% SOTA得分!-AI.x社区

如何获取免费的gpt4o-mini接口?参考这个项目:

Aider(已升级):Aider利用双模型架构做到85% SOTA得分!-AI.x社区

其他的免费API在菜单里:

Aider(已升级):Aider利用双模型架构做到85% SOTA得分!-AI.x社区

设置中转点为:

setx OPENAI_API_BASE "https://api.chatanywhere.tech"

在这个项目中获取免费的api key之后

setx OPENAI_API_KEY "your_api_key_here"

以上setx命令都是针对于windows的,意思是永久保存环境变量。其他mac/linux的可以看aider官网。

再设置deepseek的

setx   DEEPSEEK_API_KEY <key> # Windows, restart shell after setx

配置好之后我们使用下面命令启动adier,就可以使用架构/编辑师模式了:

aider --model openai/gpt-4o-mini --architect --editor-model deepseek/deepseek-coder

Aider(已升级):Aider利用双模型架构做到85% SOTA得分!-AI.x社区

现在让他们两个创建一个音乐播放器:

Develop a simple music player that allows users to upload and play their own music files.

Aider(已升级):Aider利用双模型架构做到85% SOTA得分!-AI.x社区

你可以看到作为架构师的gpt4o-mini在开始架构了,他描述了架构、应该做什么,这是架构师的整个过程:

Aider(已升级):Aider利用双模型架构做到85% SOTA得分!-AI.x社区

创建过程中有错误它会自动修复:

Aider(已升级):Aider利用双模型架构做到85% SOTA得分!-AI.x社区

让我们看看最终的结果(你可能注意到有一个待办事项的应用在上面,那是因为我们接下来的一个测试例子没有删,而是在这个例子的基础上继续开发的这个音乐播放器)

Aider(已升级):Aider利用双模型架构做到85% SOTA得分!-AI.x社区

 结果还不错,功能一切正常。

gemin1.5 pro 002 + deepseek

aider --model gemini/gemini-1.5-pro-002 --architect --editor-model deepseek/deepseek-coder

    就上面这行命令不一样,其他的都一样的,我们直接上过程demo

Create a To-do App using HTML, CSS JS.

Aider(已升级):Aider利用双模型架构做到85% SOTA得分!-AI.x社区

Aider(已升级):Aider利用双模型架构做到85% SOTA得分!-AI.x社区

效果还是不错的,主要gemini1.5 api还是免费的https://aistudio.google.com/。

对了deepseek api去官网注册领取即可,有免费额度。

其他你想使用 ollama 的 型其实过往的文章我都是有介绍过的,有很多aider相关的文章。

公众号手机端进入点右上角的搜索就可以搜索到过往文章。

完整结果

以下是使用各种模型作为架构师并与各种模型作为编辑器配对的基准测试结果。每个部分都包含一个“基线”结果,其中模型在 aider 的正常“代码”编辑模式下独立运行(不是作为架构师/编辑器配置的一部分)。这个“单独”基线代表了之前将此模型与 aider 一起使用时可获得的性能。

Aider(已升级):Aider利用双模型架构做到85% SOTA得分!-AI.x社区

aider所有命令我放在这;

options:
选项:
  -h, --help            显示此帮助信息并退出
  -h,--help            显示此帮助信息并退出


Main:
主要:
  FILE                  要用 LLM 编辑的文件(可选)
  --openai-api-key OPENAI_API_KEY
                        指定 OpenAI API 密钥 [环境变量:OPENAI_API_KEY]
  --anthropic-api-key ANTHROPIC_API_KEY
                        指定 Anthropic API 密钥 [环境变量:ANTHROPIC_API_KEY]
  --model MODEL         指定用于主要聊天的模型 [环境变量:AIDER_MODEL]
  --opus                使用 claude-3-opus-20240229 模型进行主要聊天 [环境变量:AIDER_OPUS]
  --sonnet              使用 claude-3-5-sonnet-20240620 模型进行主要聊天 [环境变量:AIDER_SONNET]
  --4, -4               使用 gpt-4-0613 模型进行主要聊天 [环境变量:AIDER_4]
  --4o                  使用 gpt-4o-2024-08-06 模型进行主要聊天 [环境变量:AIDER_4O]
  --mini                使用 gpt-4o-mini 模型进行主要聊天 [环境变量:AIDER_MINI]
  --4-turbo             使用 gpt-4-1106-preview 模型进行主要聊天 [环境变量:AIDER_4_TURBO]
  --35turbo, --35-turbo, --3, -3
                        使用 gpt-3.5-turbo 模型进行主要聊天 [环境变量:AIDER_35TURBO]
  --deepseek            使用 deepseek/deepseek-coder 模型进行主要聊天 [环境变量:AIDER_DEEPSEEK]
  --o1-mini             使用 o1-mini 模型进行主要聊天 [环境变量:AIDER_O1_MINI]
  --o1-preview          使用 o1-preview 模型进行主要聊天 [环境变量:AIDER_O1_PREVIEW]


Model Settings:
模型设置:
  --list-models MODEL, --models MODEL
                        列出匹配(部分)模型名称的已知模型 [环境变量:AIDER_LIST_MODELS]
  --openai-api-base OPENAI_API_BASE
                        指定 API 基础 URL [环境变量:OPENAI_API_BASE]
  --openai-api-type OPENAI_API_TYPE
                        指定 api_type [环境变量:OPENAI_API_TYPE]
  --openai-api-version OPENAI_API_VERSION
                        指定 api_version [环境变量:OPENAI_API_VERSION]
  --openai-api-deployment-id OPENAI_API_DEPLOYMENT_ID
                        指定 deployment_id [环境变量:OPENAI_API_DEPLOYMENT_ID]
  --openai-organization-id OPENAI_ORGANIZATION_ID
                        指定 OpenAI 组织 ID [环境变量:OPENAI_ORGANIZATION_ID]
  --model-settings-file MODEL_SETTINGS_FILE
                        指定包含未知模型设置的文件 [环境变量:AIDER_MODEL_SETTINGS_FILE]
  --model-metadata-file MODEL_METADATA_FILE
                        指定包含未知模型的上下文窗口和成本的文件 [环境变量:AIDER_MODEL_METADATA_FILE]
  --verify-ssl, --no-verify-ssl
                        连接到模型时验证 SSL 证书(默认:True) [环境变量:AIDER_VERIFY_SSL]
  --edit-format EDIT_FORMAT, --chat-mode EDIT_FORMAT
                        指定 LLM 应使用的编辑格式(默认取决于模型) [环境变量:AIDER_EDIT_FORMAT]
  --architect           在主要聊天中使用 architect 编辑格式 [环境变量:AIDER_ARCHITECT]
  --weak-model WEAK_MODEL
                        指定用于提交消息和聊天历史摘要的模型(默认取决于 --model) [环境变量:AIDER_WEAK_MODEL]
  --editor-model EDITOR_MODEL
                        指定用于编辑器任务的模型(默认取决于 --model) [环境变量:AIDER_EDITOR_MODEL]
  --editor-edit-format EDITOR_EDIT_FORMAT
                        指定编辑器模型的编辑格式(默认:取决于编辑器模型) [环境变量:AIDER_EDITOR_EDIT_FORMAT]
  --show-model-warnings, --no-show-model-warnings
                        仅与具有可用元数据的模型一起使用(默认:True) [环境变量:AIDER_SHOW_MODEL_WARNINGS]
  --max-chat-history-tokens MAX_CHAT_HISTORY_TOKENS
                        聊天历史中使用的最大令牌数。如果未指定,则使用模型的 max_chat_history_tokens。[环境变量:AIDER_MAX_CHAT_HISTORY_TOKENS]
  --env-file ENV_FILE   指定要加载的 .env 文件(默认:git 根目录中的 .env) [环境变量:AIDER_ENV_FILE]


Cache Settings:
缓存设置:
  --cache-prompts, --no-cache-prompts
                        启用缓存提示(默认:False) [环境变量:AIDER_CACHE_PROMPTS]
  --cache-keepalive-pings CACHE_KEEPALIVE_PINGS
                        每 5 分钟间隔 ping 的次数,以保持提示缓存温暖(默认:0) [环境变量:AIDER_CACHE_KEEPALIVE_PINGS]


Repomap Settings:
映射设置:
  --map-tokens MAP_TOKENS
                        建议用于 repo 映射的令牌数量,使用 0 禁用(默认:1024) [环境变量:AIDER_MAP_TOKENS]
  --map-refresh {auto,always,files,manual}
                        控制 repo 映射的刷新频率。选项:自动、始终、文件、手动(默认:自动) [环境变量:AIDER_MAP_REFRESH]
  --map-multiplier-no-files MAP_MULTIPLIER_NO_FILES
                        当未指定文件时,映射令牌的乘数(默认:2) [环境变量:AIDER_MAP_MULTIPLIER_NO_FILES]


History Files:
历史文件:
  --input-history-file INPUT_HISTORY_FILE
                        指定聊天输入历史文件(默认:.aider.input.history) [环境变量:AIDER_INPUT_HISTORY_FILE]
  --chat-history-file CHAT_HISTORY_FILE
                        指定聊天历史文件(默认:.aider.chat.history.md) [环境变量:AIDER_CHAT_HISTORY_FILE]
  --restore-chat-history, --no-restore-chat-history
                        恢复以前的聊天历史消息(默认:False) [环境变量:AIDER_RESTORE_CHAT_HISTORY]
  --llm-history-file LLM_HISTORY_FILE
                        将与 LLM 的对话记录到此文件中(例如,.aider.llm.history) [环境变量:AIDER_LLM_HISTORY_FILE]


Output Settings:
输出设置:
  --dark-mode           使用适合深色终端背景的颜色(默认:False) [环境变量:AIDER_DARK_MODE]
  --light-mode          使用适合浅色终端背景的颜色(默认:False) [环境变量:AIDER_LIGHT_MODE]
  --pretty, --no-pretty
                        启用/禁用漂亮的彩色输出(默认:True) [环境变量:AIDER_PRETTY]
  --stream, --no-stream
                        启用/禁用流式响应(默认:True) [环境变量:AIDER_STREAM]
  --user-input-color USER_INPUT_COLOR
                        设置用户输入的颜色(默认:#00cc00) [环境变量:AIDER_USER_INPUT_COLOR]
  --tool-output-color TOOL_OUTPUT_COLOR
                        设置工具输出的颜色(默认:无) [环境变量:AIDER_TOOL_OUTPUT_COLOR]
  --tool-error-color TOOL_ERROR_COLOR
                        设置工具错误消息的颜色(默认:#FF2222) [环境变量:AIDER_TOOL_ERROR_COLOR]
  --tool-warning-color TOOL_WARNING_COLOR
                        设置工具警告消息的颜色(默认:#FFA500) [环境变量:AIDER_TOOL_WARNING_COLOR]
  --assistant-output-color ASSISTANT_OUTPUT_COLOR
                        设置助手输出的颜色(默认:#0088ff) [环境变量:AIDER_ASSISTANT_OUTPUT_COLOR]
  --completion-menu-color COLOR
                        设置完成菜单的颜色(默认:终端默认文本颜色) [环境变量:AIDER_COMPLETION_MENU_COLOR]
  --completion-menu-bg-color COLOR
                        设置完成菜单的背景颜色(默认:终端默认背景颜色) [环境变量:AIDER_COMPLETION_MENU_BG_COLOR]
  --completion-menu-current-color COLOR
                        设置完成菜单中当前项的颜色(默认:终端默认背景颜色) [环境变量:
                        AIDER_COMPLETION_MENU_CURRENT_COLOR]
  --completion-menu-current-bg-color COLOR
                        设置完成菜单中当前项的背景颜色(默认:终端默认文本颜色) [环境变量:
                        AIDER_COMPLETION_MENU_CURRENT_BG_COLOR]
  --code-theme CODE_THEME
                        设置 markdown 代码主题(默认:default,其他选项包括 monokai、solarized-dark、solarized-light) [环境变量:AIDER_CODE_THEME]
  --show-diffs          提交更改时显示差异(默认:False) [环境变量:AIDER_SHOW_DIFFS]


Git Settings:
Git 设置:
  --git, --no-git       启用/禁用查找 git repo(默认:True) [环境变量:AIDER_GIT]
  --gitignore, --no-gitignore
                        启用/禁用将 .aider* 添加到 .gitignore(默认:True) [环境变量:AIDER_GITIGNORE]
  --aiderignore AIDERIGNORE




                        指定 aider 忽略文件(默认:git 根目录中的 .aiderignore) [环境变量:AIDER_AIDERIGNORE]
  --subtree-only        仅考虑 git 仓库当前子树中的文件 [环境变量:AIDER_SUBTREE_ONLY]
  --auto-commits, --no-auto-commits
                        启用/禁用 LLM 更改的自动提交(默认:True) [环境变量:AIDER_AUTO_COMMITS]
  --dirty-commits, --no-dirty-commits
                        启用/禁用在仓库发现脏文件时进行提交(默认:True) [环境变量:AIDER_DIRTY_COMMITS]
  --attribute-author, --no-attribute-author
                        在 git 作者名称中标记 aider 代码更改(默认:True) [环境变量:AIDER_ATTRIBUTE_AUTHOR]
  --attribute-committer, --no-attribute-committer
                        在 git 提交者名称中标记 aider 提交(默认:True) [环境变量:AIDER_ATTRIBUTE_COMMITTER]
  --attribute-commit-message-author, --no-attribute-commit-message-author
                        如果 aider 创建了更改,则在提交消息前添加 'aider: '(默认:False) [环境变量:AIDER_ATTRIBUTE_COMMIT_MESSAGE_AUTHOR]
  --attribute-commit-message-committer, --no-attribute-commit-message-committer
                        在所有提交消息前添加 'aider: '(默认:False) [环境变量:AIDER_ATTRIBUTE_COMMIT_MESSAGE_COMMITTER]
  --commit              提交所有待处理更改并适当提交消息,然后退出 [环境变量:AIDER_COMMIT]
  --commit-prompt PROMPT
                        指定生成提交消息的自定义提示 [环境变量:AIDER_COMMIT_PROMPT]
  --dry-run, --no-dry-run
                        进行干运行而不修改文件(默认:False) [环境变量:AIDER_DRY_RUN]


Fixing and committing:
修复和提交:
  --lint                检查并修复提供的文件,或如果未提供文件则检查脏文件 [环境变量:AIDER_LINT]
  --lint-cmd LINT_CMD   指定不同语言要运行的 lint 命令,例如:“python: flake8 --select=...” (可以多次使用) [环境变量:AIDER_LINT_CMD]
  --auto-lint, --no-auto-lint
                        启用/禁用更改后的自动 lint(默认:True) [环境变量:AIDER_AUTO_LINT]
  --test-cmd TEST_CMD   指定要运行的测试命令 [环境变量:AIDER_TEST_CMD]
  --auto-test, --no-auto-test
                        启用/禁用更改后的自动测试(默认:False) [环境变量:AIDER_AUTO_TEST]
  --test                运行测试并修复发现的问题 [环境变量:AIDER_TEST]


Other Settings:
其他设置:
  --file FILE           指定要编辑的文件(可以多次使用) [环境变量:AIDER_FILE]
  --read FILE           指定只读文件(可以多次使用) [环境变量:AIDER_READ]
  --vim                 在终端中使用 VI 编辑模式(默认:False) [环境变量:AIDER_VIM]
  --chat-language CHAT_LANGUAGE
                        指定聊天中使用的语言(默认:无,使用系统设置) [环境变量:AIDER_CHAT_LANGUAGE]
  --version             显示版本号并退出
  --just-check-update   检查更新并在退出代码中返回状态 [环境变量:AIDER_JUST_CHECK_UPDATE]
  --check-update, --no-check-update
                        启动时检查新 aider 版本 [环境变量:AIDER_CHECK_UPDATE]
  --install-main-branch
                        从主分支安装最新版本 [环境变量:AIDER_INSTALL_MAIN_BRANCH]
  --upgrade, --update   将 aider 升级到最新版本 [环境变量:AIDER_UPGRADE]
  --apply FILE          从给定文件应用更改,而不是运行聊天(调试) [环境变量:AIDER_APPLY]
  --yes                 对每个确认始终选择是 [环境变量:AIDER_YES]
  -v, --verbose         启用详细输出 [环境变量:AIDER_VERBOSE]
  --show-repo-map       打印 repo 映射并退出(调试) [环境变量:AIDER_SHOW_REPO_MAP]
  --show-prompts        打印系统提示并退出(调试) [环境变量:AIDER_SHOW_PROMPTS]
  --exit                完成所有启动活动后退出,等待用户输入(调试) [环境变量:AIDER_EXIT]
  --message COMMAND, --msg COMMAND, -m COMMAND
                        指定要发送给 LLM 的单个消息,处理回复然后退出(禁用聊天模式) [环境变量:AIDER_MESSAGE]
  --message-file MESSAGE_FILE, -f MESSAGE_FILE
                        指定包含要发送给 LLM 的消息的文件,处理回复然后退出(禁用聊天模式) [环境变量:AIDER_MESSAGE_FILE]
  --encoding ENCODING   指定输入和输出的编码(默认:utf-8) [环境变量:AIDER_ENCODING]
  -c CONFIG_FILE, --config CONFIG_FILE
                        指定配置文件(默认:在 git 根目录、当前工作目录或主目录中搜索 .aider.conf.yml)
  --gui, --browser      在浏览器中运行 aider [环境变量:AIDER_GUI]
  --suggest-shell-commands, --no-suggest-shell-commands
                        启用/禁用建议 shell 命令(默认:True) [环境变量:AIDER_SUGGEST_SHELL_COMMANDS]


Voice Settings:
语音设置:
  --voice-format VOICE_FORMAT
                        语音录音的音频格式(默认:wav)。webm 和 mp3 需要 ffmpeg [环境变量:AIDER_VOICE_FORMAT]
  --voice-language VOICE_LANGUAGE
                        使用 ISO 639-1 代码指定语音语言(默认:自动) [环境变量:AIDER_VOICE_LANGUAGE]


以'--'开头的参数也可以在配置文件中设置(C:\Users\Aitrainee\.aider.conf.yml 或 C:\Users\Aitrainee\.aider.conf.yml 或通过 -c 指定)。配置文件语法允许:key=value,flag=true,stuff=[a,b,c] (有关详细信息,请参见 https://goo.gl/R74nmi)。一般而言,命令行值覆盖环境变量,环境变量覆盖配置文件值,配置文件值覆盖默认值。

学习AI,某种程度上像是在培养另一个‘自己’。它需要耐心、实践和不断修正。这个实战训练营并不是要你成为AI的‘创造者’,而是帮助你成为更高效的‘合作者’,一起探讨智能的未来。

本文转载自​AI进修生​,作者: Aitrainee ​​

收藏
回复
举报
回复
相关推荐