1 个不稳定版本
0.1.0 | 2023年12月26日 |
---|
#2544 在 命令行工具
73KB
1.5K SLoC
GPTui
GPTui 是一个简单的 TUI,用于与 OpenAI Chat Completions API 交互。
为什么会有这个存在?
我更喜欢与 LLMS 进行编程辅助的问答式交互(与 Copilot 的自动完成等相比),我想制作一个考虑到这种交互方式的界面,同时也能与我的现有 CLI/TUI 基于的工作流程兼容。如果你也是 vim/tmux/alacritty 的爱好者,不妨试一试!
特性
- ChatGPT 风格的令牌流
- 可选在编译时提供您的 API 密钥,这样您就不需要以后与环境变量纠缠了
- 在 TOML 配置文件中配置自定义提示和其他设置
- 聊天历史保存到本地的 Sqlite 数据库以备后用
- 代码块中的语法高亮
- 复制代码块内容到您的系统剪贴板
- 可选在您喜欢的文本编辑器中编写消息(按 ctrl-e 打开)
- 全部在 100% 安全、极快速度的 rust 中完成!(《极快速度”可能根据网络条件而变化》)
身份验证
您需要 OpenAI API 密钥 才能开始。据我所知,GPTui 即使在高强度使用下也很便宜,因为它完全是文本,没有使用 API 的任何多模态特性。您可以通过两种方式之一提供您的 API 密钥
- 作为环境变量:程序默认会在运行时查找 OPENAI_API_KEY 环境变量;您可以在
config.toml
中更改此变量的名称(有关更多内容,请参阅下文)。 - 在编译时提供:如果您启用了
comptime-key
功能,OPENAI_API_KEY 的值将被读取并编译到二进制文件本身。这意味着您不需要在环境中保留密钥,但如果您更改密钥,则需要重新编译。
配置
首次运行时,将在您的平台上配置文件所在的任何位置(在 Linux 上是 $XDG_CONFIG_HOME)生成一个带注释的 config.toml
文件。
CLI
Start a new conversation thread
Usage: gpt new [OPTIONS]
Options:
-p, --prompt <PROMPT> Prompt to use
-h, --help Print help
Resume a previous conversation
Usage: gpt resume <INDEX>
Arguments:
<INDEX>
Options:
-h, --help Print help
Delete a conversation thread permanently
Usage: gpt delete <INDEX>
Arguments:
<INDEX>
Options:
-h, --help Print help
List all saved threads
Usage: gpt list
Options:
-h, --help Print help
Delete all conversation threads
Usage: gpt clear
Options:
-h, --help Print help
键绑定
- Alt-Enter:提交消息
- Ctrl-e:在外部编辑器中打开消息缓冲区(如果有$EDITOR,则使用平台的安全默认值)。完成编辑后保存并退出编辑器窗口以返回。
- Ctrl-w:进入复制模式
- 在复制模式下,输入代码块编号并按Enter键将其内容复制到系统剪贴板。
- Esc:退出复制模式
- 向上/向下:滚动聊天历史记录
- Ctrl-c:退出程序
路线图/愿望清单
- 外部编辑器支持
- 语法高亮显示
- 开启复制代码块到剪贴板功能
- Windows
- Linux (X11)
- Linux (Wayland)(部分工作)
- MacOS(没有Mac无法测试,但认为已经有很大几率可以工作)
- 在UI本身中记录快捷键
- 用TUI屏幕替换选择线程的CLI?
依赖关系
~40–58MB
~1M SLoC