gpt-code-search(项目内也称 gpt-code-assistant)是一个基于 AI 的开源工具,用于探索、查询和理解任意代码库。它利用语言模型(LLM)和向量嵌入(将文本等对象转换为向量的技术)来实现自然语言搜索。
用途
该工具旨在解决开发者需要理解、调试或查询代码库时,不必手动复制粘贴代码片段到提示中,也不必把代码发送给 OpenAI 以外的第三方服务。它让 GPT-4 等模型自行判断代码库中最相关的代码片段,并允许在终端中完成查询,无需单独的 UI。
主要能力
- 基于 LLM 的搜索与检索:使用语言模型进行高效的代码搜索、检索和理解。
- 文件系统集成:设计为可与任意代码库配合,直接操作本地代码,无缝融入现有工作流。
- 语言无关:支持多种编程语言。
- 隐私中心设计:代码片段仅在提问且语言模型请求相关代码时才会传输(注意:代码片段会与 OpenAI 共享)。
- 未来计划包括支持本地模型和生成代码的能力。
使用方式
首先创建一个项目来索引所有文件,该步骤会为每个文件创建嵌入并存储在本地数据库中。
查询代码库用途可使用 query 命令。
若想为特定文件(例如 analytics.py)生成测试,可提及文件名以提高准确性。
对于某个模块(如 analytics)的一般用法问题,可使用关键词在代码库中搜索。
注意:提及文件名或特定关键词可提高搜索准确性。
获取所有项目列表。
重新索引项目并更新嵌入到最新内容。
删除项目及其所有数据(包括嵌入)。
可选择用于查询的模型,默认为 gpt-3.5-turbo-16k。所选模型存储在 $HOME/.gpt-code-assistant/config.toml 中。
如果尚未配置,工具会提示配置 OPENAI_API_KEY。
适用场景
- 帮助调试错误并找到相关代码和文件
- 以 markdown 格式记录大型文件或功能
- 基于现有文件和约定生成新代码
- 询问关于代码库任何部分的一般问题
限制与未来计划
当前代码片段会与 OpenAI 共享。未来计划包括:使用向量嵌入改进搜索和检索;增加对其他模型(Claude、Bedrock 等)的支持;增加对本地模型(Llama2、Starcoder 等)的支持;增加生成代码并保存到文件的支持;支持跨多个代码库搜索;允许模型创建可执行的新函数;使用 guidance 改进提示。
其他信息
该项目采用 Apache 2.0 许可证。欢迎社区贡献,可 fork 仓库并提交 pull request。使用中遇到问题可在 GitHub 上开 issue,或直接联系 narenkmanoharan@gmail.com。