██████╗██╗ ██╗ █████╗ ████████╗ ██████╗ ██████╗ ██████╗ ██████╗ ███████╗
██╔════╝██║ ██║██╔══██╗╚══██╔══╝ ╚════██╗ ██╔════╝██╔═══██╗██╔══██╗██╔════╝
██║ ███████║███████║ ██║ █████╔╝ ██║ ██║ ██║██║ ██║█████╗
██║ ██╔══██║██╔══██║ ██║ ██╔═══╝ ██║ ██║ ██║██║ ██║██╔══╝
╚██████╗██║ ██║██║ ██║ ██║ ███████╗ ╚██████╗╚██████╔╝██████╔╝███████╗
╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝
中文 | English
Chat2Code是一个可以让程序员用自然语言和代码对话的工具
程序员经常会发出灵魂拷问:
- 🤔"xxx这个函数是干嘛的?"
- 🤔"xxx这个函数的实现原理是什么?"
- 🤔"怎么样才能实现xxx功能?"
- 🤔"有实现了xxx功能的函数吗?"
通常情况你身边没有一个能随时随地给你答案的人
Chat2Code:"来问我💻"
-
预分析代码
- 先通过过滤规则遍历出目录需要分析的文件
- 对其切分合适大小的chunk
- 对chunk进行文本嵌入向量化(Embedding)
- 对chunk建立索引和向量一并存储本地缓存
-
问答
- 将自然语言问题文本向量化
- 在本地缓存中查找最近向量,得到对应的chunk
- 将chunk文本作为回话本问题的context,和问题一并喂给大语言模型,大语言模型总结回答问题
- 自然语言描述代码相关问题更精准,更符合直觉,大语言模型结合关键代码来回答
- 索引缓存能避免每次分析消耗大量api token
- 使用openai的Embedding对代码分析更精准
- 本地向量查询不依赖外部接口,更快更安全
- 安装
go install github.com/byebyebruce/chat2code/cmd/chat2code@latest
- 设置OPENAI_API_KEY环境变量
export OPENAI_API_KEY=xxxx
,如果需要设置OpenAI base urlexport OPENAI_API_BASE=https://xxx
- load一个代码目录
chat2code load {code_dir}
- 开始和代码对话吧
chat2code