查看原文
其他

Git集成、多模型支持、实时编码 | 探索Aider的AI驱动编码能力

思辨view kate人不错
2024-08-22

引言

我在前几天这篇文章里介绍了我正在使用的AI编程工具,今天再介绍一个新的工具——Aider。

https://aider.chat/

Aider在Github上斩获15K⭐️。

我想和大家分享我使用Aider的经历,特别是它如何与Claude 3.5 Sonnet和DeepSeek等AI模型结合使用。

Aider官方还有个排名。Claude 3.5 Sonnet编程能力第一,其次是DeepSeek Coder V2,DeepSeek的API 很好获取,新用户还能获赠500万的tokens。

Aider的作者说,Aider迭代的部分代码就是由Aider写的,这让人惊叹。

什么是Aider?

Aider是一个AI辅助编程工具,它可以帮助你编写、修改和理解代码。无论你是编程新手还是经验丰富的开发者,Aider都能成为你得力的编程伙伴。

安装Aider

pip install aider-chat

安装完成后,你需要设置API密钥。对于OpenAI的模型,你可以这样设置(Mac电脑):

export OPENAI_API_KEY=<your-api-key-here>

Aider是在终端使用的工具,因此熟悉它的命令很重要。

最简单的方式就是输入”/“

Aider常用命令列表

启动Aider

aider [文件名1] [文件名2] ...

Aider默认使用GPT-4o

聊天中的命令

  • /add <文件名>:将文件添加到聊天中
  • /drop <文件名>:从聊天中移除文件
  • /undo:撤销上一次的AI更改
  • /diff:显示最后一次Aider提交的diff
  • /run <命令>:运行shell命令并可选择将输出添加到聊天中
  • /tokens:报告当前聊天上下文使用的token数量
  • /clear:清除聊天历史
  • /exit/quit:退出应用程序

文件和Git操作

  • /commit:提交所有待处理的更改并生成合适的提交消息
  • /git <命令>:运行git命令
  • /ls:列出所有已知文件并指示哪些包含在聊天会话中

代码质量和测试

  • /lint:对提供的文件或聊天中的文件进行lint并修复
  • /test:运行测试命令并在非零退出代码时将输出添加到聊天中

其他功能

  • /voice:记录并转录语音输入

  • /web <url>:使用无头selenium抓取网页并将内容添加到聊天中

模型和帮助

  • /model <模型名称>:切换到新的LLM模型
  • /models <查询>:搜索可用模型列表
  • /help <问题>:获取关于使用Aider的帮助

你可以在聊天中使用上箭头↑来滚动浏览历史命令,或使用CONTROL-R来搜索消息历史。

Aider与Claude 3.5 Sonnet的完美结合

我最喜欢的是Aider与Claude 3.5 Sonnet模型的结合。

无论是中文或英文和Aider对话,它都准确把文件编辑好并生成对应的文档。

要使用Claude 3.5 Sonnet,你需要先获取Anthropic的API密钥,然后设置环境变量(Mac电脑):

export ANTHROPIC_API_KEY=<your-anthropic-api-key>

然后,你可以使用以下命令启动Aider with Claude 3.5 Sonnet:

aider --sonnet

Aider也支持OpenRouter,因此你也可以从OpenRouter获取Claude 3.5 Sonnet API。

每次对话后能清楚看到API的使用费用。

Aider与DeepSeek模型

除了Claude 3.5 Sonnet,我还尝试了将Aider与DeepSeek模型结合使用。

要使用DeepSeek模型,你需要先获取DeepSeek的API密钥,然后设置环境变量(Mac电脑):

export DEEPSEEK_API_KEY=<your-deepseek-api-key>

然后,使用以下命令启动Aider with DeepSeek:

aider --model deepseek/deepseek-coder

实际使用过程中,如果是中文和Aider对话,它能生成代码,但是需要你手动编辑文件。

但改成英文的话,能就像Claude一样,Aider自动编辑文件了。

Aider的亮点

1. 与Git的无缝集成

这不仅使得代码版本控制变得异常简单,还为开发过程带来了很多便利:

  • 自动提交:每当Aider修改代码时,它会自动创建一个带有描述性提交信息的Git提交。这让你可以轻松跟踪AI所做的每一个更改。
  • 轻松撤销:使用 /undo 命令,你可以立即撤销任何不满意的AI更改。这给了你试错和实验的自由,而不用担心破坏代码库。
  • 分支管理:Aider可以帮助你在Git分支上管理一系列的更改,使得特性开发和实验变得更加容易。

2. 智能代码分析

Aider使用先进的代码分析技术来理解你的项目结构:

  • 仓库地图:Aider会创建一个包含关键类和函数及其类型和调用签名的仓库地图。这帮助AI理解正在编辑的代码如何与代码库的其他部分相关联。

  • 图排序算法:对于大型仓库,Aider使用基于PageRank的算法来优化仓库地图,确保最重要的代码上下文被包含在内。

3. 实时代码生成和编辑

Aider的核心功能是实时代码生成和编辑:

  • 即时响应:当你请求添加新功能或修改现有代码时,Aider会立即生成相应的代码。

  • 上下文感知:通过理解整个代码库的结构,Aider生成的代码能够很好地集成到现有项目中。

  • 交互式编辑:你可以与Aider进行对话,要求它解释、修改或优化生成的代码。

4. 图像和URL集成

  • 图像分析:你可以向Aider添加图像,它能分析图像内容并基于此生成代码。这对于UI开发或图像处理任务特别有用。

  • URL抓取:Aider可以抓取和分析URL内容,使得引入外部资源或文档变得简单。

5. 自动化代码优化

  • 代码重构: Aider可以识别并重构复杂的代码段,提高代码的可读性和效率。
  • 性能优化: 它能分析代码的执行效率,并提供优化建议。
  • 最佳实践应用: Aider会自动应用编程最佳实践,确保代码质量。

6. 智能错误处理和调试

  • 错误预测: 它能预测潜在的错误并提供预防措施。
  • 实时调试建议: 当遇到错误时,Aider可以分析错误信息并提供具体的解决方案。
  • 测试用例生成: Aider能自动生成相关的测试用例,提高代码的健壮性。

7. 文档自动生成

  • 注释生成: 为函数、类和模块自动生成清晰的注释。
  • README更新: 根据项目变化自动更新README文件。
  • API文档: 为API自动生成详细的使用文档。

Aider的进阶特性

1. 代码编辑基准测试

Aider不仅仅是一个编码助手,它还有自己的性能评估系统:

  • 编辑技能评估: Aider使用两个基准测试来评估LLM的代码编辑技能。这确保了与Aider配对的AI模型能够胜任编码任务。
  • Exercism基准: 使用来自Exercism的133个小型编码练习来测试AI的编码能力。
  • 重构基准: 使用89个大型方法的重构任务来测试AI处理复杂代码的能力。

这种基准测试系统使得Aider能够不断优化其性能,并为用户选择最适合的AI模型提供依据。

2. 多样化的编辑格式

  • 整体格式: 适用于简单的编辑任务。
  • 差异格式: 更节省令牌,适合大文件编辑。
  • 统一差异格式: 进一步优化的差异格式,特别适合像GPT-4o这样的模型。

3. 高级用户交互

  • 多行输入: 支持多种方式输入多行消息,方便复杂指令的输入。
  • 命令自动补全: 提供命令自动补全功能,提高使用效率。

4. 独特的使用案例

Aider的文档中提到了一些非常有趣的使用案例,展示了其通用性:

  • 编辑Asciinema文件: 能够编辑复杂的屏幕录制文件,处理特殊的文件格式。
  • 自动更新文档: 基于代码变化自动更新相关文档,保持文档的及时性。
  • 数据分析与可视化: 能够下载、分析数据并生成图表,展示了其在数据科学领域的潜力。

5. 可扩展性与自定义

  • 自定义提示: 允许用户修改系统提示,以适应特定的编码风格或项目需求。
  • 模型设置: 提供高级模型设置,允许用户为未知模型注册上下文窗口限制和成本。
  • 脚本化使用: 支持通过命令行或Python脚本来使用Aider,便于集成到现有工作流程中。

广告时间

过去我已写了160+篇AI主题原创长文,我对继续写作充满信心,因为这是我的爱好,我非常热爱这件事。

最近我开通了知识星球,你加入后可以访问公众号收费文章,向我提问,第一时间获取AI资讯。

结语

希望这些工具和技巧能帮助你实现更多创意想法。

别忘了分享你的作品,让我们一起在AI应用开发的道路上共同进步!

欢迎点赞、转发、收藏。

精选历史文章,请看这里:

效率提升N倍!分享我正在使用的AI编程新工具

打造更可靠的 AI :解析 7 种减少幻觉的高效策略

解锁 Claude 3.5 Sonnet 创意潜能:10+ 个 Web 应用实战

Poe x Claude:零代码创建交互式 Web 应用,完整操作带你轻松上手

AI 驱动的网页开发:用 Claude 3.5 Sonnet 打造趣味互动应用并轻松部署


继续滑动看下一个
kate人不错
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存