Skip to content

Latest commit

 

History

History
220 lines (172 loc) · 10.6 KB

README.zh.md

File metadata and controls

220 lines (172 loc) · 10.6 KB

GPTUI

GitHub PyPI - Version GitHub Workflow Status (with event) GitHub Workflow Status (with event) Static Badge

English readme简体中文 readme

gptui_logo

GPTUI是一个在终端中运行的GPT对话TUI工具。 你可以使用快捷键高效掌控你的节奏。 GPTUI使用Textual构建TUI界面,使用Semantic Kernel提供的插件框架;您可以快速灵活地为自己的需求自定义插件。 GPTUI提供了一个轻量级的Kernel,用以驱动AI应用。上层的TUI应用与下层的Kernel解耦,使您可以轻松替换TUI界面或拓展其它功能。如果您喜欢,您也可以在此Kenrel上开发您自己的AI应用。 目前仅支持OpenAI的GPT模型,后续会增加对其它大语言模型接口的支持。

  gptui_demo

TUI功能

  • 创建并管理与GPT的对话。
  • 实时显示上下文tokens窗口。
  • 查看并随时设置与GPT对话的参数,例如temperature、top_p、presence_penalty等。
  • 专门的通道显示内部过程调用。
  • 提供一个文件通道,您可以通过此通道给GPT上传文件或下载文件。
  • 语音功能。
  • 群聊功能12
  • AI-Care。你的AI可以主动关心你3
  • 可选的插件功能,包括(持续增加与优化中):
    • 搜索互联网4
    • open interpreter521。(暂时被移除,等待它支持openai v1.x后再被添加回来。)
    • 提醒1
    • 从矢量化的对话历史记录中回想记忆。
  • 支持自定义插件。

gptui_img

🎬 演示视频

兼容性

GPTUI在命令行环境下运行,支持Linux,macOS,Windows和Android平台6。 使用textual-web提供的功能,您还可以在浏览器中运行GPTUI,并分享给远方的好友,不需要对方做任何的准备,也不需要对方具有API Key,只要有网络和浏览器即可👍。

⚙️ GPTUI Kernel

GPTUI提供了轻量级的构建AI应用的Kernel,使您可以方便地拓展GPTUI的功能或构建自己的AI应用。

gptui-framework

kernel依赖于jobshandlers实现具体的功能。要实现新的功能,您只需编写或组合自己的jobshandlers。 GPTUI的mangerkernel完全不依赖于client应用,您可以轻松地将mangerkernel转移到别的地方使用。GPTUI的应用层(client)采用CVM架构,其中model层提供了基础的可重复使用的与LLM交互的功能模块,不依赖于views和controllers的具体实现,若要构件自己的AI应用,您可以从这里开始,完全复用kernelmanger以及models,若要更换或拓展UI功能,通常您只需要修改controllers以及views。 详请参考开发文档

如果需要用到gptui的部分组件或功能,你可以把gptui当作一个库来导入并使用。

安装

正常使用需要确保网络畅通,可以连接OpenAI。 如果遇到安装问题,请参考troubleshooting

使用pip安装

pip install gptui

在运行之前您需要配置API。 运行:

gptui

指定配置文件:

gptui --config <your_config_file_path>

本程序通过以下步骤加载文件:

  1. --config中读取配置文件,如果没有指定,则进行下一步。
  2. 从用户目录寻找~/.gptui/.config.yml,如果没有,则进行下一步。
  3. 拷贝默认的配置文件gptui/config.yml~/.gitui/.config.yml并使用。

从源码安装

git clone https://github.com/happyapplehorse/gptui.git
cd gptui
pip install .

在运行之前需要配置API。 运行:

gptui
# 或者您也可以
# python -m gptui

您还可以直接运行启动脚本(这样允许您修改源代码并即刻运行): 首先,安装依赖:

pip install -r requirements.txt

然后,运行启动脚本:

python main.py

当使用python main.pypython -m gptui来运行本程序时,使用gptui/config.yml作为配置文件。 在Linux或macOS系统下,如果要使用语音功能,还需要额外安装pyaudio。

配置

API keys的配置

~/.gptui/.env_gptui中配置相应的API Keys。参考.env_gptui.example文件。当使用“WebServe”插件时,需提供GOOGLE_KEYGOOGLE_CX,它们可免费地从谷歌获取

配置文件

配置文件的示例请参考./config.yml,其中列出了所有可配置的选项。 根据您所使用的平台,最好配置以下选项:

  • os: 系统平台

否则,部分功能可能不能正常使用,比如复制代码与语音相关功能。

配置指南

详细的配置说明请查看这里

快速开始

界面区域

gptui-layout

  • chat area: 聊天内容的显示区域。
  • status area: 程序状态显示区域。显示响应动画以及通知等。
  • input area: 聊天内容的输入区域。
  • auxiliary area: 辅助信息区域,显示程序内部与LLM的“内部交流”,包括函数调用信息等。
  • control area: 程序的控制区,在这里可以显示和设置程序的状态,例如动态地控制OpenAI的聊天参数。
  • chat tabs: 对话标签页。
  • conversation control: 对话的控制按钮。从上到下依次为:
    • +: 新建对话
    • >: 保存对话
    • <: 载入对话
    • -: 删除对话
    • x: 删除对话文件
    • n: 新建一次性对话
    • : 上传文件
  • panel selector: 面板选择区域。从上到下依次为:
    • C: 对话的文件记录
    • D: 系统文件树
    • A: 辅助信息面板
    • T: 文件管道面板
    • P: 插件选择面板
  • switches:直接控制开关。从左到右依次为:
    • R: 程序状态自动保存与恢复开关
    • V: 语音开关
    • S: 语音朗读回复开关
    • F: 折叠聊天中的文件
    • |Exit|: 退出程序
  • dashboard:聊天的上下文窗口的大小。
  • others:
    • <: 前一个聊天
    • >: 后一个聊天
    • 1: 聊天的数量
    • : 运行状态
    • : 折叠右侧非聊天区
    • ?: 帮助文档

运行状态提示

: 就绪状态。
:有任务正在运行。

动态命令

在control area中切换到S,输入命令后回车。目前支持以下命令:

  • 设置聊天参数 命令:set_chat_parameters()
    参数:字典形式的OpenAI聊天参数,参考OpenAI Chat
    示例:set_chat_parameters({"model": "gpt-4", "stream": True})
  • 设置最大发送token数量的比例 命令:set_max_sending_tokens_ratio()
    参数:发送token数量占总的token窗口的比例,float的形式。剩余的token数量作为GPT返回token数的限制。
    示例:set_max_sending_tokens_ratio(0.5)

快捷键

GPTUI为常用功能提供了快捷键,参考帮助。 另外,您还可以按ESCctrl+[或者ctrl+/来呼出快捷键菜单(此种方式的快捷键功能更全,但与直接的快捷键键位并不完全一致.)。

文档

详细使用和开发说明请看这里,程序内的帮助文档看这里

贡献

GPTUI的部分插件功能需要依靠提示词,您可以继续帮助我完善这些提示词。 我希望在一些状态变化时,有合适的动画提示,如果您有好的创意,欢迎帮我实现它。 每个贡献者可以在程序中留下一条语录。

注意

本项目使用OpenAI的文本转语音(TTS)服务来生成语音输出 请注意,您听到的声音不是由真人发出的,而是由人工智能技术合成的。

License

GPTUI 建立在众多优秀的开源组件基础之上,遵循和使用 MIT License 开源协议,您可以自由地使用。

Footnotes

  1. 推荐使用GPT-4或更好的模型。 2 3

  2. 注意:该功能可能产生较多的tokens花费。 2

  3. AI-Care提供该能力。

  4. 需要提供GOOGLE_KEYGOOGLE_CX。可以从这里免费获取。

  5. 本插件使用了open-interpreter , 需要先按open-interpreter的说明配置好open-interpreter的环境和API。 Open-interpreter具有执行代码的权限,在开启此功能前请确保你已经了解其中的风险。

  6. Windows平台我还没有测试,部分功能的驱动还没有写,例如代码复制,语音功能等,后续会完善相关功能。 在Android上运行时,请使用Termux终端工具,部分拓展功能例如代码复制和语音功能需要安装Termux-API并赋予权限。