#openai #api-key #chat-completion #chat-bot #gpt #llm #openai-api

bin+lib gptui

OpenAI Chat Completions 的 TUI 界面

1 个不稳定版本

0.1.0 2023年12月26日

#2544命令行工具

GPL-3.0-or-later

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