:brain: mindflow :ocean:
由ChatGPT驱动的现代开发者瑞士军刀!我们提供一个由AI驱动的CLI Git包装器、样板代码生成器、代码搜索引擎、对话历史管理器等等!
功能
演示
加入我们的社区!
入门
前提条件:
- 安装Mindflow:
- 如果您使用的是Mac OS并安装了brew,请运行:
brew tap mindflowai/homebrew-mindflow && brew install mindflow
- 否则请运行:
pip install mindflow
- 或者您可以克隆这个仓库并运行:
pip install -e path/to/mindflow
- 注意: 如果你不是在conda环境中安装,你可能需要将包添加到你的路径中。如果遇到问题请在我们的discord上寻求帮助!
- 运行
mf login
: - 现在,您可以开始使用MindFlow了!
基本用法
配置(可选)
通过运行mf config
并选择GPT 3.5 Turbo(默认)或GPT 4来配置用于生成响应的模型。如果要使用GPT 4,您需要有特别访问API的权限。如果有访问权限,您可以运行mf config
并选择GPT 4。如果没有访问权限,您将收到错误消息。
- 在这里注册GPT 4访问权限。
聊天
使用mindflow的聊天功能有多个层级。
- 最简单的
mf chat "解释下什么是编程语言"
- 像使用chatGPT网站一样直接与chatGPT互动。我们还提供聊天持久性,因此它会记住之前的聊天消息。
- 带文件上下文
mf chat path/to/code.py "请总结下这段代码的功能"
- 您可以通过在
mf chat
调用中传递任意数量的文件,向chatGPT提供单个或多文件的上下文。对于足够小的文件(参见:chatGPT令牌限制),这将起作用并且还能保持聊天历史。
- 您可以通过在
- 带目录上下文
mf chat path/to/submodule1/ path/to/submodule2/ "这些子模块负责什么?"
- 提供目录将实际上在您的代码子目录/文件上运行索引器。因此,它可能需要一些时间来完全索引所有内容——别担心;如果成本成为问题,我们会提醒您!当前,如果索引作业成本超过0.50美元,我们会触发警告。
- 自定义预先索引的上下文
mf index path/to/subdir/file1.txt path/to/file2.txt
mf chat -s ./ "我的所有类之间是如何关联的?"
- 如果您预先索引了您的仓库,可以缩小聊天中提供的上下文范围。传递
-s
将跳过自动索引,而是依赖于现有的索引。这个索引在第一步mf index
生成,其中只有那些文件/子目录将被包括在内。 - 如果您的仓库非常大,这可以节省您的时间和金钱。
- 如果您预先索引了您的仓库,可以缩小聊天中提供的上下文范围。传递
代码生成器
您可以使用mf gen
在瞬间生成样板代码,生成的代码和注释将保存在指定路径。
以下是几个示例:
mf gen setup.py "给我的python包'foobar'写一个setup.py文件"
mf gen main.py "写一个包含main if块并打印前10个斐波那契数的python脚本"
聊天记录
默认情况下,简单的聊天消息(引用没有文件或非常小的文件时)将存储在本地,以便您保留聊天持久性。
要查看您的聊天记录统计,可以运行mf history stats
。
如果您想清除聊天记录,可以运行mf history clear
,它将忘记您发送的所有之前消息。
如果您尝试向聊天消息添加目录,聊天持久性将被禁用,并且不会使用之前的上下文。随着MindFlow的发展以及openAI API本身支持更多的令牌级别/对话历史,这一情况将会改变。
Git差异摘要
注意:Git差异摘要尚不支持聊天持久性。
在您的git仓库中进行一些更改,但不要暂存/提交。然后,运行mf diff
!您应该会得到如下响应:
`mindflow/commands/diff.py`更改:
- 添加导入`typing`模块中的`List`和`Tuple`。
- 添加一个函数`parse_git_diff`,接收一个`git diff`命令的输出并返回包含文件名和差异内容的元组列表。
- 添加一个函数`batch_git_diffs`,接收由`parse_git_diff`返回的元组列表并将它们分批成小于3000个字符的差异块。
- 修改`diff`函数以使用新的`parse_git_diff`和`batch_git_diffs`函数将差异分批并发送给GPT模型处理。
`mindflow/commands/inspect.py`更改:
- 删除用于输出数据库查询结果的`print`语句。git diff显示在两个文件中的更改:`mindflow/commands/diff.py`和`mindflow/commands/inspect.py`。
`mindflow/commands/diff.py`更改:
- 添加导入`typing`模块中的`List`和`Tuple`。
- 添加一个函数`parse_git_diff`,接收一个`git diff`命令的输出并返回包含文件名和差异内容的元组列表。
- 添加一个函数`batch_git_diffs`,接收由`parse_git_diff`返回的元组列表并将它们分批成小于3000个字符的差异块。
- 修改`diff`函数以使用新的`parse_git_diff`和`batch_git_diffs`函数将差异分批并发送给GPT模型处理。
`mindflow/commands/inspect.py`更改:
- 删除用于输出数据库查询结果的`print`语句。
自动Git提交
在您的git仓库中进行一些更改并暂存它们。然后,运行mf commit
!您应该会得到如下响应:
[格式化 7770179] 添加needs_push()函数并在run_pr()函数中检查。
1个文件更改,14次插入(+)
自动拉取请求
在您的分支中进行一些更改并暂存,然后提交它们。然后,运行mf pr
(对于GitHub)或mf mr
(对于GitLab)!将会生成一个带有标题和正文的拉取请求/合并请求链接,并在控制台打印PR链接。
- 使用此功能,必须先安装和验证GitHub CLI。
展示
聊天持久性和文件上下文!
生成setup.py
生成任意程序文件
它如何工作?
MindFlow使用最先进的方法进行高通量分段、处理、存储和检索文档,使用递归层级摘要和嵌入技术来存储文档块的嵌入向量,然后通过基于层级嵌入文本附加相似的文档块作为上下文,来快速、高质量地响应问题和任务。此外,如果查询上下文中能够容纳,聊天记录将保持持久性,用于已索引文档或常规聊天的查询。
MindFlow的未来
未来,MindFlow计划成为现代开发者工具包中的一个更为重要的部分。我们计划增加功能,使开发者可以抛弃传统文档,直接与您的私有文档和通信渠道集成,从而实现更加无缝和直观的体验。使用MindFlow,您可以与代码、文档和通信渠道进行"意识流"互动,使您能够更轻松地掌控项目并与团队合作。我们期待继续突破语言模型的可能性,革新开发者的工作方式。