#tui #llm #键绑定 #界面 #ChatGPT #ollama #cli

bin+lib tenere

用Rust编写的LLM TUI界面

7个版本 (重大更改)

0.11.1 2024年3月19日
0.11.0 2024年2月2日
0.10.0 2024年1月27日
0.9.0 2023年10月31日
0.6.0 2023年5月3日

#6 in #键绑定

Download history 17/week @ 2024-04-01 27/week @ 2024-04-08 14/week @ 2024-04-22 9/week @ 2024-05-27 2/week @ 2024-06-10

每月301次下载

GPL-3.0 许可

485KB
2K SLoC

Tenere

A crab in the moroccan desert

用Rust编写的LLM TUI界面

📸 演示

Demo


🪄 特点

  • 语法高亮
  • 聊天历史
  • 将聊天保存到文件
  • Vim 键绑定(常见操作)
  • 从/到剪贴板复制文本(仅在提示中有效)
  • 多个后端

💎 支持的LLM

  • ChatGPT
  • llama.cpp
  • ollama

🚀 安装

📥 二进制发布

您可以从发布页面下载预构建的二进制文件

📦 crates.io

tenere可以从crates.io安装

cargo install tenere

⚒️ 从源码构建

要从源码构建,您需要Rust 编译器和 Cargo 包管理器

一旦安装了Rust和Cargo,运行以下命令以构建

cargo build --release

这将生成一个可执行文件,位于target/release/tenere,您可以将它复制到您的$PATH中的某个目录。

🍺Brew

在macOS上,您可以使用brew

brew tap pythops/tenere
brew install tenere

⚙️ 配置

Tenere可以使用TOML配置文件进行配置。文件应位于

  • Linux: $HOME/.config/tenere/config.toml$XDG_CONFIG_HOME/tenere/config.toml
  • Mac: $HOME/Library/Application Support/tenere/config.toml

常规设置

以下是可用的常规设置

  • archive_file_name:保存聊天的文件名。默认设置为tenere.archive
  • llm:llm模型名称。可能的值包括
    • ChatGPT
    • llamacpp
    • ollama
archive_file_name = "tenere.archive"
llm  = "chatgpt"

键绑定

Tenere支持可定制的键绑定。您可以通过更新配置文件中的[key_bindings]部分来修改一些默认键绑定。以下是一个带有默认键绑定的示例

[key_bindings]
show_help = '?'
show_history = 'h'
new_chat = 'n'
save_chat = 's'

ℹ️ 注意

为了避免与 vim 键绑定冲突,您需要使用 ctrl + key,除了帮助 ? 键。

ChatGPT

要使用 ChatGPT 作为后端,您需要提供 OpenAI 的 API 密钥。有两种方法可以实现:

使用 API 密钥设置环境变量

export OPENAI_API_KEY="YOUTR KEY HERE"

或者

在配置文件中包含您的 API 密钥

[chatgpt]
openai_api_key = "Your API key here"
model = "gpt-3.5-turbo"
url = "https://api.openai.com/v1/chat/completions"

默认模型设置为 gpt-3.5-turbo。有关更多信息,请查看 OpenAI 文档

llama.cpp

要使用 llama.cpp 作为后端,您需要提供指向服务器的 URL

[llamacpp]
url = "https://127.0.0.1:8080/v1/chat/completions"

如果使用 API 密钥配置了服务器,则需要提供它

设置环境变量

export LLAMACPP_API_KEY="YOUTR KEY HERE"

或者

在配置文件中包含您的 API 密钥

[llamacpp]
url = "https://127.0.0.1:8080/v1/chat/completions"
api_key = "Your API Key here"

有关 llama.cpp API 的更多信息 在此处

Ollama

要使用 ollama 作为后端,您需要提供指向包含模型名称的服务器的 URL

[ollama]
url = "https://127.0.0.1:11434/api/chat"
model = "Your model name here"

有关 ollama API 的更多信息 在此处


⌨️ 键绑定

全局

这些是无论焦点块如何都适用的默认键绑定。

ctrl + n:开始新的聊天并将上一个聊天保存到历史记录中。

ctrl + s:将当前聊天或聊天历史(应首先显示历史记录弹出窗口)保存到当前目录中的 tenere.archive 文件。

Tab:切换焦点。

j下箭头键:向下滚动

k上箭头键:向上滚动

ctrl + h:显示聊天历史。按 Esc 关闭它。

ctrl + t:停止流响应

qctrl + c:退出应用

?:显示帮助弹出窗口。按 Esc 关闭它

提示

有三种模式类似于 vim:NormalVisualInsert

插入模式

Esc:切换回 Normal 模式。

Enter:创建新行。

Backspace:删除前一个字符。

正常模式

Enter:提交提示。


h 或 左箭头:将光标向后移动一个字符。

j 或 向下箭头:将光标向下移动。

k 或 向上箭头:将光标向上移动。

l 或 右箭头:将光标向前移动一个字符。

w:将光标向右移动一个单词。

b:将光标向后移动一个单词。

0:将光标移动到行首。

$:将光标移动到行尾。

G:转到末尾。

gg:转到顶部。


a:在光标后插入。

A:在行尾插入。

i:在光标前插入。

I:在行首插入。

o:在当前行下方添加新行。

O:在当前行上方添加新行。


x:删除光标下方的字符。

dd:剪切当前行。

D:删除当前行并

dw:删除光标旁边的单词。

db:删除光标左边的单词。

d0:从光标位置删除到行首。

d$:从光标位置删除到行尾。


C:切换到行尾。

cc:更改当前行。

c0:从光标位置更改到行首。

c$:从光标位置更改到行尾。

cw:更改下一个单词。

cb:更改光标左边的单词。


u:撤销。

p:粘贴。

可视模式

v:切换到可视模式。

y:复制选中的文本。


⚖️ 许可证

GPLv3

依赖

~25–46MB
~732K SLoC