发布时间

AI 编程


简介

AI coding 是一种利用人工智能提升生产力和代码质量的全新编程方式。它代表了开发者构建软件方式的一次重要转变,在整个编码过程中都能提供智能辅助。

AI 编程的历史

GitHub Copilot 于 2021 年以公开测试版形式推出,把我们带入了 AI 驱动编码辅助的世界。最初,它的能力还比较有限,更像是一个智能代码片段生成器。但到了 2023 年,OpenAI 在 GPT-3GPT-4,以及后来的 GPT-4O 等模型上取得了显著进展。尤其随着 O1 推理模块的引入,这些模型展现了 AI 在理解和生成代码方面的巨大提升。在一些特定领域里,**大型语言模型(LLMs)**如今甚至已经超过经验丰富的开发者。

时间来到 2024 年,Retrieval-Augmented Generation (RAG) 系统的整合彻底改变了 LLM 与大型代码库的交互方式。通过把项目拆成更小、可管理的文件变更(diff),开发者现在可以把重点放在审查 AI 生成的代码上,而不是从零开始手写。这种方式显著减少了调试和解决复杂问题所花费的时间,让 AI 成为现代软件开发中不可或缺的工具。

GitHub Copilot 的功能

这个工具展示了令人印象深刻的能力,也改变了我们理解编程的方式:

  • 智能代码补全:不只是基础自动补全,Copilot 还能理解上下文并建议整个函数或代码块
  • 自然语言处理:只要用普通英文写注释,就能生成对应的代码实现
  • 上下文感知建议:AI 会分析你的代码库,并给出符合你编码风格和项目模式的建议

例如,如果你写下一条注释,例如“// function to calculate fibonacci sequence”,Copilot 就能生成一个完整且可运行的实现。同样地,当你处理 API 或常见编程模式时,它也能预判你的需求,并建议合适的代码结构。

AI 编程真正具有革命性的地方,在于它既是助手,也是学习工具。你在写代码时,不只是得到建议,也会看到不同的实现思路与模式,这些都能反过来提升你自己的编码实践。

如果要在当前这篇文章基础上继续展开,我会重点深入 AI 编程工具的实际应用场景、它们的局限性,以及开发者如何最好地利用它们。接下来这一节我会这样组织:


示例:用 DeepSeek Chat 提升开发效率

在这一节中,我们会深入看看像 DeepSeek Chat 这样的 AI 编程工具如何无缝融入你的开发工作流。我们将通过实际案例展示,这些工具如何帮助完成代码生成多文件协作,甚至提交信息生成。此外,我们还会讨论如何编写高质量 prompt,充分释放 AI 助手的潜力,从而启用 autocompletecontext-aware suggestions 等能力。

TIP

本文中的所有 API 引用都基于 2025-01-27 时可用的版本。请注意,这些细节未来可能会发生变化。


DeepSeek Chat APIs:驱动 AI 编程

DeepSeek Chat 的核心在于其强大的 API 生态,专门用于增强你的编码体验。下面我们来拆解支撑这一切的两个主要 API:

1. Chat Completions API

https://api.deepseek.com/chat/completions 端点是 DeepSeek Chat 的基石。它允许你发送 prompt 并接收 completion,从而支持 autocompletecontext-aware code generation 等功能。下面是它的工作示例:

请求示例:

{
  "messages": [
    {
      "content": "You are a helpful assistant",
      "role": "system"
    },
    {
      "content": "Write a Python function to calculate the factorial of a number.",
      "role": "user"
    }
  ],
  "model": "deepseek-chat"
}

2. Code Completion API

https://api.deepseek.com/beta/completions 端点是 Fill-In-the-Middle (FIM) Completion API,用于处理上下文被拆分为两部分的代码补全任务:prompt(代码前半部分)和 suffix(代码后半部分)。这个 API 尤其适合多文件协作context-aware suggestions场景,因为它能生成刚好衔接在 promptsuffix 之间的代码。

请求示例:

{
  "model": "deepseek-chat",
  "prompt": "Once upon a time, ",
  "max_tokens": 1024,
  "suffix": "and they lived happily ever after.",
  "temperature": 1,
  "top_p": 1
}

VSCode AI 助手插件:Continue

Continue 是 VSCode 的一款强大插件,可与多种 AI 模型提供商集成,从而显著增强你的编码工作流。它提供了很高程度的可定制性,让开发者可以根据自身需求调整 AI 的行为。下面我们来看看它的关键能力,以及这些能力如何提升开发流程。

关键定制能力:

  1. 模型提供商

    • 灵活的模型选择:你可以从 OpenAI、Anthropic、Microsoft/Azure 和 Mistral 等多种 AI 模型提供商中进行选择。这种灵活性使你可以为不同任务选择最合适的模型,例如聊天辅助或代码自动补全。
    • 任务专属模型:不同模型可以分配给不同任务。例如,你可能会用更擅长对话的 GPT-4 处理 chat-based assistance,而用专门的代码模型负责 autocomplete。
    • 自托管支持:对于希望自行托管模型的人,Continue 也支持 self-hosting,让你完全掌控 AI 基础设施。
  2. 上下文提供器

    • 增强上下文感知:该插件允许你通过引用代码片段、文档,甚至搜索结果,为 prompt 增加额外上下文。这能确保 AI 给出的建议与当前任务高度相关。
    • 多文件协作:借助 context providers,你可以让 AI 理解并跨多个文件生成代码,从而更轻松地处理大型项目。
  3. Slash Commands

    • 自定义命令:你可以创建自定义 slash commands 来简化工作流。例如,创建一个命令来生成 shell 命令、编写 commit message,甚至自动化重复任务。
    • 任务自动化:这些命令可以按你的具体需求定制,让你只用几次按键就自动化复杂工作流。
  4. 外部工具

    • 与外部工具集成Continue 支持直接在 prompt 中调用外部工具或函数。这个功能在使用 Anthropic 模型时尤其有用,因为你可以把开发栈中的其他工具集成进来,扩展 AI 的能力。

示例:使用 Continue 进行 AI 驱动编程

为了更直观地展示 Continue 的能力,我们来看一个实际例子。假设你正在开发一个 Python 项目,需要实现一个计算斐波那契数列的函数,Continue 可以这样协助你:

  1. 使用 Slash Commands

    • 你在 VSCode 终端中输入 /generate fibonacci
    • Continue 会分析你的请求,并生成一个完整的 Fibonacci 函数实现,包含注释和错误处理。
  2. 上下文感知建议

    • 当你开始输入函数时,Continue 会给出上下文感知建议,例如变量名、循环结构,甚至边界情况处理。
    • 如果你引用了项目文档中的某个特定算法或模式,Continue 也会把这些上下文纳入生成过程。
  3. 多文件协作

    • 如果你的 Fibonacci 函数需要和代码库的其他部分交互,Continue 可以分析相关文件,并确保生成的代码能够无缝集成。
  4. 生成提交信息

    • 当你对实现满意之后,可以使用像 /commit 这样的 slash command,生成一条详细的 commit message,总结你的改动。

为什么这很重要

Continue 插件很好地展示了 AI 编程工具是如何改变开发流程的。它通过可定制的功能与无缝的工作流集成,让开发者可以把精力放在更高层次的问题解决上,而把重复、耗时的编码工作交给 AI。这不仅能提升生产力,也能通过智能、上下文感知的建议提升代码质量。

在下一节中,我们会进一步讨论如何编写高质量 prompt,以最大化像 Continue 这样的 AI 编程工具的潜力,并探索把 AI 更深入地集成进开发工作流的高级技巧。敬请期待!