Aider(已升級):Aider利用雙模型架構(gòu)做到85% SOTA得分!
Hi,這里是Aitrainee,歡迎閱讀本期新文章。
令人振奮的是,Aider 最近推出了一種新模式,名為“ 使用一對 Architect/Editor 模型以提升編碼效果 ”。這個更新旨在通過協(xié)同工作,優(yōu)化編碼過程,使開發(fā)更高效。
將代碼推理和編輯分開
架構(gòu)師模型首先描述了如何解決編碼問題,包括設(shè)計思路和步驟。然后,將該解決方案傳遞給編輯器模型,后者負責(zé)生成具體的代碼編輯指令。
這一架構(gòu)師/編輯器的方法顯著提升了多個模型的基準分數(shù),相較于之前的“單獨”基線分數(shù),進步明顯。特別的,使用o1-preview作為架構(gòu)師,并結(jié)合DeepSeek或o1-mini作為編輯器,達到了85%的SOTA得分。
動機
這種方法受到OpenAI o1模型發(fā)布的啟發(fā)。盡管這些模型在推理方面表現(xiàn)出色,但在生成格式正確的代碼編輯指令時常顯得不足。
通過讓模型以其偏好的方式描述解決方案,并將這些描述傳遞給更傳統(tǒng)的LLM,可以顯著改善結(jié)果。第二個編輯LLM可以理解這些描述,并生成所需的代碼編輯指令。
像 o1-preview 這樣的強大推理模型可以成為優(yōu)秀的架構(gòu)師,而編輯器角色可以根據(jù)成本、速度和代碼編輯技能分配給適當?shù)哪P汀?/p>
實際測試
我們將分別使用兩個組合來測試上面的功能:
第一種:gpt4o-mini+deepseek
我會告訴你如何獲取免費的gpt4o-mini接口:
首先下載aider:
python -m pip install -U aider-chat
創(chuàng)建一個新的文件夾,以便在這里面運行aider(它會建立git倉庫以控制版本):
如何獲取免費的gpt4o-mini接口?參考這個項目:
其他的免費API在菜單里:
設(shè)置中轉(zhuǎn)點為:
setx OPENAI_API_BASE "https://api.chatanywhere.tech"
在這個項目中獲取免費的api key之后
setx OPENAI_API_KEY "your_api_key_here"
以上setx命令都是針對于windows的,意思是永久保存環(huán)境變量。其他mac/linux的可以看aider官網(wǎng)。
再設(shè)置deepseek的
setx DEEPSEEK_API_KEY <key> # Windows, restart shell after setx
配置好之后我們使用下面命令啟動adier,就可以使用架構(gòu)/編輯師模式了:
aider --model openai/gpt-4o-mini --architect --editor-model deepseek/deepseek-coder
現(xiàn)在讓他們兩個創(chuàng)建一個音樂播放器:
Develop a simple music player that allows users to upload and play their own music files.
你可以看到作為架構(gòu)師的gpt4o-mini在開始架構(gòu)了,他描述了架構(gòu)、應(yīng)該做什么,這是架構(gòu)師的整個過程:
創(chuàng)建過程中有錯誤它會自動修復(fù):
讓我們看看最終的結(jié)果(你可能注意到有一個待辦事項的應(yīng)用在上面,那是因為我們接下來的一個測試例子沒有刪,而是在這個例子的基礎(chǔ)上繼續(xù)開發(fā)的這個音樂播放器)
結(jié)果還不錯,功能一切正常。
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.
效果還是不錯的,主要gemini1.5 api還是免費的https://aistudio.google.com/。
對了deepseek api去官網(wǎng)注冊領(lǐng)取即可,有免費額度。
其他你想使用 ollama 的 型其實過往的文章我都是有介紹過的,有很多aider相關(guān)的文章。
公眾號手機端進入點右上角的搜索就可以搜索到過往文章。
完整結(jié)果
以下是使用各種模型作為架構(gòu)師并與各種模型作為編輯器配對的基準測試結(jié)果。每個部分都包含一個“基線”結(jié)果,其中模型在 aider 的正?!按a”編輯模式下獨立運行(不是作為架構(gòu)師/編輯器配置的一部分)。這個“單獨”基線代表了之前將此模型與 aider 一起使用時可獲得的性能。
aider所有命令我放在這;
options:
選項:
-h, --help 顯示此幫助信息并退出
-h,--help 顯示此幫助信息并退出
Main:
主要:
FILE 要用 LLM 編輯的文件(可選)
--openai-api-key OPENAI_API_KEY
指定 OpenAI API 密鑰 [環(huán)境變量:OPENAI_API_KEY]
--anthropic-api-key ANTHROPIC_API_KEY
指定 Anthropic API 密鑰 [環(huán)境變量:ANTHROPIC_API_KEY]
--model MODEL 指定用于主要聊天的模型 [環(huán)境變量:AIDER_MODEL]
--opus 使用 claude-3-opus-20240229 模型進行主要聊天 [環(huán)境變量:AIDER_OPUS]
--sonnet 使用 claude-3-5-sonnet-20240620 模型進行主要聊天 [環(huán)境變量:AIDER_SONNET]
--4, -4 使用 gpt-4-0613 模型進行主要聊天 [環(huán)境變量:AIDER_4]
--4o 使用 gpt-4o-2024-08-06 模型進行主要聊天 [環(huán)境變量:AIDER_4O]
--mini 使用 gpt-4o-mini 模型進行主要聊天 [環(huán)境變量:AIDER_MINI]
--4-turbo 使用 gpt-4-1106-preview 模型進行主要聊天 [環(huán)境變量:AIDER_4_TURBO]
--35turbo, --35-turbo, --3, -3
使用 gpt-3.5-turbo 模型進行主要聊天 [環(huán)境變量:AIDER_35TURBO]
--deepseek 使用 deepseek/deepseek-coder 模型進行主要聊天 [環(huán)境變量:AIDER_DEEPSEEK]
--o1-mini 使用 o1-mini 模型進行主要聊天 [環(huán)境變量:AIDER_O1_MINI]
--o1-preview 使用 o1-preview 模型進行主要聊天 [環(huán)境變量:AIDER_O1_PREVIEW]
Model Settings:
模型設(shè)置:
--list-models MODEL, --models MODEL
列出匹配(部分)模型名稱的已知模型 [環(huán)境變量:AIDER_LIST_MODELS]
--openai-api-base OPENAI_API_BASE
指定 API 基礎(chǔ) URL [環(huán)境變量:OPENAI_API_BASE]
--openai-api-type OPENAI_API_TYPE
指定 api_type [環(huán)境變量:OPENAI_API_TYPE]
--openai-api-version OPENAI_API_VERSION
指定 api_version [環(huán)境變量:OPENAI_API_VERSION]
--openai-api-deployment-id OPENAI_API_DEPLOYMENT_ID
指定 deployment_id [環(huán)境變量:OPENAI_API_DEPLOYMENT_ID]
--openai-organization-id OPENAI_ORGANIZATION_ID
指定 OpenAI 組織 ID [環(huán)境變量:OPENAI_ORGANIZATION_ID]
--model-settings-file MODEL_SETTINGS_FILE
指定包含未知模型設(shè)置的文件 [環(huán)境變量:AIDER_MODEL_SETTINGS_FILE]
--model-metadata-file MODEL_METADATA_FILE
指定包含未知模型的上下文窗口和成本的文件 [環(huán)境變量:AIDER_MODEL_METADATA_FILE]
--verify-ssl, --no-verify-ssl
連接到模型時驗證 SSL 證書(默認:True) [環(huán)境變量:AIDER_VERIFY_SSL]
--edit-format EDIT_FORMAT, --chat-mode EDIT_FORMAT
指定 LLM 應(yīng)使用的編輯格式(默認取決于模型) [環(huán)境變量:AIDER_EDIT_FORMAT]
--architect 在主要聊天中使用 architect 編輯格式 [環(huán)境變量:AIDER_ARCHITECT]
--weak-model WEAK_MODEL
指定用于提交消息和聊天歷史摘要的模型(默認取決于 --model) [環(huán)境變量:AIDER_WEAK_MODEL]
--editor-model EDITOR_MODEL
指定用于編輯器任務(wù)的模型(默認取決于 --model) [環(huán)境變量:AIDER_EDITOR_MODEL]
--editor-edit-format EDITOR_EDIT_FORMAT
指定編輯器模型的編輯格式(默認:取決于編輯器模型) [環(huán)境變量:AIDER_EDITOR_EDIT_FORMAT]
--show-model-warnings, --no-show-model-warnings
僅與具有可用元數(shù)據(jù)的模型一起使用(默認:True) [環(huán)境變量:AIDER_SHOW_MODEL_WARNINGS]
--max-chat-history-tokens MAX_CHAT_HISTORY_TOKENS
聊天歷史中使用的最大令牌數(shù)。如果未指定,則使用模型的 max_chat_history_tokens。[環(huán)境變量:AIDER_MAX_CHAT_HISTORY_TOKENS]
--env-file ENV_FILE 指定要加載的 .env 文件(默認:git 根目錄中的 .env) [環(huán)境變量:AIDER_ENV_FILE]
Cache Settings:
緩存設(shè)置:
--cache-prompts, --no-cache-prompts
啟用緩存提示(默認:False) [環(huán)境變量:AIDER_CACHE_PROMPTS]
--cache-keepalive-pings CACHE_KEEPALIVE_PINGS
每 5 分鐘間隔 ping 的次數(shù),以保持提示緩存溫暖(默認:0) [環(huán)境變量:AIDER_CACHE_KEEPALIVE_PINGS]
Repomap Settings:
映射設(shè)置:
--map-tokens MAP_TOKENS
建議用于 repo 映射的令牌數(shù)量,使用 0 禁用(默認:1024) [環(huán)境變量:AIDER_MAP_TOKENS]
--map-refresh {auto,always,files,manual}
控制 repo 映射的刷新頻率。選項:自動、始終、文件、手動(默認:自動) [環(huán)境變量:AIDER_MAP_REFRESH]
--map-multiplier-no-files MAP_MULTIPLIER_NO_FILES
當未指定文件時,映射令牌的乘數(shù)(默認:2) [環(huán)境變量:AIDER_MAP_MULTIPLIER_NO_FILES]
History Files:
歷史文件:
--input-history-file INPUT_HISTORY_FILE
指定聊天輸入歷史文件(默認:.aider.input.history) [環(huán)境變量:AIDER_INPUT_HISTORY_FILE]
--chat-history-file CHAT_HISTORY_FILE
指定聊天歷史文件(默認:.aider.chat.history.md) [環(huán)境變量:AIDER_CHAT_HISTORY_FILE]
--restore-chat-history, --no-restore-chat-history
恢復(fù)以前的聊天歷史消息(默認:False) [環(huán)境變量:AIDER_RESTORE_CHAT_HISTORY]
--llm-history-file LLM_HISTORY_FILE
將與 LLM 的對話記錄到此文件中(例如,.aider.llm.history) [環(huán)境變量:AIDER_LLM_HISTORY_FILE]
Output Settings:
輸出設(shè)置:
--dark-mode 使用適合深色終端背景的顏色(默認:False) [環(huán)境變量:AIDER_DARK_MODE]
--light-mode 使用適合淺色終端背景的顏色(默認:False) [環(huán)境變量:AIDER_LIGHT_MODE]
--pretty, --no-pretty
啟用/禁用漂亮的彩色輸出(默認:True) [環(huán)境變量:AIDER_PRETTY]
--stream, --no-stream
啟用/禁用流式響應(yīng)(默認:True) [環(huán)境變量:AIDER_STREAM]
--user-input-color USER_INPUT_COLOR
設(shè)置用戶輸入的顏色(默認:#00cc00) [環(huán)境變量:AIDER_USER_INPUT_COLOR]
--tool-output-color TOOL_OUTPUT_COLOR
設(shè)置工具輸出的顏色(默認:無) [環(huán)境變量:AIDER_TOOL_OUTPUT_COLOR]
--tool-error-color TOOL_ERROR_COLOR
設(shè)置工具錯誤消息的顏色(默認:#FF2222) [環(huán)境變量:AIDER_TOOL_ERROR_COLOR]
--tool-warning-color TOOL_WARNING_COLOR
設(shè)置工具警告消息的顏色(默認:#FFA500) [環(huán)境變量:AIDER_TOOL_WARNING_COLOR]
--assistant-output-color ASSISTANT_OUTPUT_COLOR
設(shè)置助手輸出的顏色(默認:#0088ff) [環(huán)境變量:AIDER_ASSISTANT_OUTPUT_COLOR]
--completion-menu-color COLOR
設(shè)置完成菜單的顏色(默認:終端默認文本顏色) [環(huán)境變量:AIDER_COMPLETION_MENU_COLOR]
--completion-menu-bg-color COLOR
設(shè)置完成菜單的背景顏色(默認:終端默認背景顏色) [環(huán)境變量:AIDER_COMPLETION_MENU_BG_COLOR]
--completion-menu-current-color COLOR
設(shè)置完成菜單中當前項的顏色(默認:終端默認背景顏色) [環(huán)境變量:
AIDER_COMPLETION_MENU_CURRENT_COLOR]
--completion-menu-current-bg-color COLOR
設(shè)置完成菜單中當前項的背景顏色(默認:終端默認文本顏色) [環(huán)境變量:
AIDER_COMPLETION_MENU_CURRENT_BG_COLOR]
--code-theme CODE_THEME
設(shè)置 markdown 代碼主題(默認:default,其他選項包括 monokai、solarized-dark、solarized-light) [環(huán)境變量:AIDER_CODE_THEME]
--show-diffs 提交更改時顯示差異(默認:False) [環(huán)境變量:AIDER_SHOW_DIFFS]
Git Settings:
Git 設(shè)置:
--git, --no-git 啟用/禁用查找 git repo(默認:True) [環(huán)境變量:AIDER_GIT]
--gitignore, --no-gitignore
啟用/禁用將 .aider* 添加到 .gitignore(默認:True) [環(huán)境變量:AIDER_GITIGNORE]
--aiderignore AIDERIGNORE
指定 aider 忽略文件(默認:git 根目錄中的 .aiderignore) [環(huán)境變量:AIDER_AIDERIGNORE]
--subtree-only 僅考慮 git 倉庫當前子樹中的文件 [環(huán)境變量:AIDER_SUBTREE_ONLY]
--auto-commits, --no-auto-commits
啟用/禁用 LLM 更改的自動提交(默認:True) [環(huán)境變量:AIDER_AUTO_COMMITS]
--dirty-commits, --no-dirty-commits
啟用/禁用在倉庫發(fā)現(xiàn)臟文件時進行提交(默認:True) [環(huán)境變量:AIDER_DIRTY_COMMITS]
--attribute-author, --no-attribute-author
在 git 作者名稱中標記 aider 代碼更改(默認:True) [環(huán)境變量:AIDER_ATTRIBUTE_AUTHOR]
--attribute-committer, --no-attribute-committer
在 git 提交者名稱中標記 aider 提交(默認:True) [環(huán)境變量:AIDER_ATTRIBUTE_COMMITTER]
--attribute-commit-message-author, --no-attribute-commit-message-author
如果 aider 創(chuàng)建了更改,則在提交消息前添加 'aider: '(默認:False) [環(huán)境變量:AIDER_ATTRIBUTE_COMMIT_MESSAGE_AUTHOR]
--attribute-commit-message-committer, --no-attribute-commit-message-committer
在所有提交消息前添加 'aider: '(默認:False) [環(huán)境變量:AIDER_ATTRIBUTE_COMMIT_MESSAGE_COMMITTER]
--commit 提交所有待處理更改并適當提交消息,然后退出 [環(huán)境變量:AIDER_COMMIT]
--commit-prompt PROMPT
指定生成提交消息的自定義提示 [環(huán)境變量:AIDER_COMMIT_PROMPT]
--dry-run, --no-dry-run
進行干運行而不修改文件(默認:False) [環(huán)境變量:AIDER_DRY_RUN]
Fixing and committing:
修復(fù)和提交:
--lint 檢查并修復(fù)提供的文件,或如果未提供文件則檢查臟文件 [環(huán)境變量:AIDER_LINT]
--lint-cmd LINT_CMD 指定不同語言要運行的 lint 命令,例如:“python: flake8 --select=...” (可以多次使用) [環(huán)境變量:AIDER_LINT_CMD]
--auto-lint, --no-auto-lint
啟用/禁用更改后的自動 lint(默認:True) [環(huán)境變量:AIDER_AUTO_LINT]
--test-cmd TEST_CMD 指定要運行的測試命令 [環(huán)境變量:AIDER_TEST_CMD]
--auto-test, --no-auto-test
啟用/禁用更改后的自動測試(默認:False) [環(huán)境變量:AIDER_AUTO_TEST]
--test 運行測試并修復(fù)發(fā)現(xiàn)的問題 [環(huán)境變量:AIDER_TEST]
Other Settings:
其他設(shè)置:
--file FILE 指定要編輯的文件(可以多次使用) [環(huán)境變量:AIDER_FILE]
--read FILE 指定只讀文件(可以多次使用) [環(huán)境變量:AIDER_READ]
--vim 在終端中使用 VI 編輯模式(默認:False) [環(huán)境變量:AIDER_VIM]
--chat-language CHAT_LANGUAGE
指定聊天中使用的語言(默認:無,使用系統(tǒng)設(shè)置) [環(huán)境變量:AIDER_CHAT_LANGUAGE]
--version 顯示版本號并退出
--just-check-update 檢查更新并在退出代碼中返回狀態(tài) [環(huán)境變量:AIDER_JUST_CHECK_UPDATE]
--check-update, --no-check-update
啟動時檢查新 aider 版本 [環(huán)境變量:AIDER_CHECK_UPDATE]
--install-main-branch
從主分支安裝最新版本 [環(huán)境變量:AIDER_INSTALL_MAIN_BRANCH]
--upgrade, --update 將 aider 升級到最新版本 [環(huán)境變量:AIDER_UPGRADE]
--apply FILE 從給定文件應(yīng)用更改,而不是運行聊天(調(diào)試) [環(huán)境變量:AIDER_APPLY]
--yes 對每個確認始終選擇是 [環(huán)境變量:AIDER_YES]
-v, --verbose 啟用詳細輸出 [環(huán)境變量:AIDER_VERBOSE]
--show-repo-map 打印 repo 映射并退出(調(diào)試) [環(huán)境變量:AIDER_SHOW_REPO_MAP]
--show-prompts 打印系統(tǒng)提示并退出(調(diào)試) [環(huán)境變量:AIDER_SHOW_PROMPTS]
--exit 完成所有啟動活動后退出,等待用戶輸入(調(diào)試) [環(huán)境變量:AIDER_EXIT]
--message COMMAND, --msg COMMAND, -m COMMAND
指定要發(fā)送給 LLM 的單個消息,處理回復(fù)然后退出(禁用聊天模式) [環(huán)境變量:AIDER_MESSAGE]
--message-file MESSAGE_FILE, -f MESSAGE_FILE
指定包含要發(fā)送給 LLM 的消息的文件,處理回復(fù)然后退出(禁用聊天模式) [環(huán)境變量:AIDER_MESSAGE_FILE]
--encoding ENCODING 指定輸入和輸出的編碼(默認:utf-8) [環(huán)境變量:AIDER_ENCODING]
-c CONFIG_FILE, --config CONFIG_FILE
指定配置文件(默認:在 git 根目錄、當前工作目錄或主目錄中搜索 .aider.conf.yml)
--gui, --browser 在瀏覽器中運行 aider [環(huán)境變量:AIDER_GUI]
--suggest-shell-commands, --no-suggest-shell-commands
啟用/禁用建議 shell 命令(默認:True) [環(huán)境變量:AIDER_SUGGEST_SHELL_COMMANDS]
Voice Settings:
語音設(shè)置:
--voice-format VOICE_FORMAT
語音錄音的音頻格式(默認:wav)。webm 和 mp3 需要 ffmpeg [環(huán)境變量:AIDER_VOICE_FORMAT]
--voice-language VOICE_LANGUAGE
使用 ISO 639-1 代碼指定語音語言(默認:自動) [環(huán)境變量:AIDER_VOICE_LANGUAGE]
以'--'開頭的參數(shù)也可以在配置文件中設(shè)置(C:\Users\Aitrainee\.aider.conf.yml 或 C:\Users\Aitrainee\.aider.conf.yml 或通過 -c 指定)。配置文件語法允許:key=value,flag=true,stuff=[a,b,c] (有關(guān)詳細信息,請參見 https://goo.gl/R74nmi)。一般而言,命令行值覆蓋環(huán)境變量,環(huán)境變量覆蓋配置文件值,配置文件值覆蓋默認值。
學(xué)習(xí)AI,某種程度上像是在培養(yǎng)另一個‘自己’。它需要耐心、實踐和不斷修正。這個實戰(zhàn)訓(xùn)練營并不是要你成為AI的‘創(chuàng)造者’,而是幫助你成為更高效的‘合作者’,一起探討智能的未來。
