SuperAPI AI 工具集

cody

Cody 是一个基于 OpenAI 语言模型和向量嵌入的 AI 编程助手,允许开发者用自然语言交互式查询代码库。它通过实时监控项目文件、构建嵌入知识库,帮助用户高效导航和理解代码。支持终端文本聊天和语音对话两种交互方式,并可自定义忽略列表以排除无关文件。

访问官网

工具介绍

Cody 是一个 AI 编程助手,旨在让开发者通过自然语言交互式查询代码库。它利用向量嵌入、分块和 OpenAI 的语言模型,帮助用户高效、直观地浏览代码。

主要能力

  • 文件监控:实时监控项目目录及子目录中的所有文件,每次保存文件时自动更新知识库。
  • 基于嵌入的知识库:使用 OpenAI Embeddings 创建知识库,收集所有文本和 JSON 文件的内容并加入知识库。
  • 交互式问答:监听用户输入,用户提问后 Cody 利用知识库生成回答。
  • 可定制:可通过 ignore_list 指定监控时要忽略的文件或目录。

使用方式

  1. (可选)在终端中从项目根目录运行 pip install -m venv .venv 设置虚拟环境,然后运行 pip install -r requirements.txt。
  2. 将 .local.env 文件重命名为 .env,并将 YOUR_API_KEY_HERE 替换为你的 OpenAI API 密钥。
  3. 修改脚本顶部的 IGNORE_THESE 全局变量,指定要排除监控的目录和文件(应注释掉大型文件,如虚拟环境、缓存、已下载的 JS 库等)。
  4. 使用 Python 运行脚本:python cody.py,并按照终端提示进行设置。它会询问你希望使用文本聊天(终端)还是对话(语音输入/输出)。如果你从忽略列表中移除了 .env,它也会发出警告。
  5. 要停止脚本,输入 'exit' 或说出 'exit' 并按回车,Cody 将优雅地终止程序。

配置忽略列表

Cody 允许指定在文件监控期间应忽略的文件和目录,这对于排除频繁更改、与查询无关或可能包含敏感信息的文件特别有用。

  • 忽略特定文件:添加 *.env 到忽略列表,例如 IGNORE_THESE = ['*.env']。
  • 忽略目录:添加目录名,例如 IGNORE_THESE = ['node_modules', '.venv']。
  • 忽略文件扩展名:使用通配符,例如 IGNORE_THESE = ['*.log', '*.tmp']。
  • 复杂模式:组合目录名和通配符,例如忽略 docs 目录下所有 .md 文件:IGNORE_THESE = ['docs/*.md']。 建议定期审查和更新忽略列表,谨慎使用通配符,并在更新后测试更改。

依赖库

  • dotenv:从 .env 文件加载变量到环境。
  • langchain-community:用于嵌入和向量存储的语言处理库。
  • langchain_openai:提供 OpenAIEmbeddings 功能,将 OpenAI 模型与 langchain 架构集成。
  • litellm:使用 OpenAI 格式调用所有 LLM API。
  • watchdog:实时监控文件系统事件。
  • openai:使用 OpenAI 语言模型生成智能响应。
  • speech_recognition:将语音转换为文本以进行语音交互。
  • gtts:Google 文本转语音库,用于从文本生成音频。
  • pygame:用于播放音频文件的库。

注意事项与提示

  • Cody 使用 FAISS 库进行高效的相似性搜索来存储向量。请确保有足够的内存,尤其是在监控大量文件时。
  • 请监控 OpenAI API 使用量。建议在 OpenAI 账户中设置每月支出限额,以防止意外情况。此外,它会在每次调用时打印使用的 token 数量。
  • 为了充分发挥“实时”编码问答的潜力,建议打开单独的终端或命令提示符,cd 到项目目录,然后启动 python cody.py。然后将其与代码分屏显示,这样你可以使用另一个终端实际运行代码,而无需担心 Cody 或每次都要运行它。它仍会在每次保存文件时持续更新,始终使用最新数据。

适用场景

适用于开发者需要快速理解、导航或查询代码库的场景,尤其适合在编码过程中实时获取代码相关问题的解答。

限制

  • 需要 OpenAI API 密钥,并可能产生 API 使用费用。
  • 需要足够的内存,尤其是大型项目。
  • 仅支持文本和 JSON 文件的内容收集。
  • 语音交互依赖 speech_recognition 和 gtts 等库,可能受环境限制。

欢迎贡献。请提交拉取请求或打开问题以报告错误或请求功能。