与OpenAI ChatGPT API(以及其他文本生成器)交互
项目描述
chap - ChatGPT和其他LLM的Python接口,包括终端用户界面(tui)
系统需求
chap主要在Linux上使用Python 3.11进行开发。将适度努力支持回滚到Python 3.9(Debian oldstable)的版本。
安装
如果您希望将chap
作为命令使用,只需使用pipx install chap
或pip install chap
进行安装。
除非您想全局安装,否则请使用虚拟环境。
开发安装
使用以下两种方法之一运行chap
作为命令,并能够编辑源文件。欢迎您将宝贵的更改作为pull request提交。
通过pip install --editable .
这是一个“可编辑安装”,正如Python打包权威机构所推荐。
将目录更改到chap
项目的根目录。
激活您的虚拟环境,然后以开发模式安装chap
pip install --editable .
在此模式下,您将安装 chap
命令行程序,但您可以在 src
目录就地编辑源文件。
通过 chap-dev.py
包含了一个名为 chap-dev.py
的简单包装脚本,以演示如何在不以开发模式安装 chap
的情况下加载和运行 chap
库。这种方法可能对某些开发者更为熟悉。
将目录更改到chap
项目的根目录。
激活您的虚拟环境,然后安装需求
pip install -r requirements.txt
运行包装脚本(根据需要添加可选命令标志)
./chap-dev.py
在此模式下,您可以就地编辑 src
目录中的源文件,包装脚本将通过 import
指令来获取更改。
贡献
请参阅 CONTRIBUTING.md。
行为准则
请参阅 CODE_OF_CONDUCT.md。
配置
将您的 OpenAI API 密钥放在 chap 的平台配置目录中,例如在 Linux/Unix 系统上的 ~/.config/chap/openai_api_key
命令行用法
-
chap ask "一个20世纪的人第一次来到21世纪会给你什么建议?"
-
chap render --last
或chap cat --last
-
chap import ChatGPT-style-chatlog.json
(用于来自 pionxzh/ChatGPT-exporter 的文件) -
chap grep 针对性
@FILE
参数
将一系列相关参数一起设置很有用,例如完全配置后端。此功能通过 @FILE
参数实现。
在任何其他命令行参数解析之前,先展开 @FILE
参数
@FILE
参数是在当前目录中搜索的@:FILE
参数是在配置目录中搜索的(例如,Linux/Unix 系统上的 $HOME/.config/chap)- 如果参数以字面量
@
开头,请将其加倍:@@
@.
停止处理任何进一步的@FILE
参数,并保持它们不变。一个@FILE
的内容将根据shlex.split(comments=True)
解析。支持注释。一个典型内容可能如下所示
# gpt-3.5.txt: Use cheaper gpt 3.5 and custom prompt
--backend openai-chatgpt
-B model:gpt-3.5-turbo
-s my-custom-system-message.txt
并且您可能使用它与
chap @:gpt-3.5.txt ask what version of gpt is this
交互式终端用法
通过 chap tui
访问交互式终端模式。
需要注意各种键盘快捷键
- tab/shift-tab 在输入字段和对话之间或对话项之间移动
- 在文本框中时,按 F9 或(如果终端支持)alt+enter 提交多行文本
- 在对话项上时
- 按 ctrl+x 重新草拟消息。这
- 将会将会话保存到对话文件夹中的自动命名的文件中
- 将对话从这条消息删除到结尾
- 将用户的消息放入文本框以编辑
- 按 ctrl+x 重新提交消息。这
- 将会将会话保存到对话文件夹中的自动命名的文件中
- 将对话从这条消息删除到结尾
- 将用户的消息放入文本框
- 并立即提交
- 按 ctrl+y 撤取消息。这将当前交互的响应部分放入操作系统剪贴板以粘贴(例如,在支持的其他软件中按 ctrl+v 或 command+v)
- 按 ctrl+q 切换是否将此消息包含在未来的查询的上下文历史中。确切的历史提交方式由后端确定,通常是通过计算消息或令牌数,但 ctrl+q 切换确保此消息(用户和助手消息部分)不被考虑。
- 按 ctrl+x 重新草拟消息。这
会话与命令行参数
会话处理和命令行参数的详细信息正在变化。
默认情况下,创建一个新会话。它保存到用户的州目录中(例如,Linux/Unix 系统上的 ~/.local/state/chap
)。
您可以使用 -n
指定新会话的文件名,或使用 -s
重新打开现有会话。或者,您可以使用 --last
继续最后一个会话。
您可以使用 -S
标志设置 "系统消息"。
您可以使用-b
标志选择文本生成后端
- openai-ChatGPT:默认付费API,最佳质量结果
- llama-cpp:与llama.cpp的http服务器配合使用,并可在本地使用各种模型运行,尽管它针对使用llama2风格提示的模型进行了优化。使用
-B url:...
设置服务器URL。 - textgen:与https://github.com/oobabooga/text-generation-webui配合使用,并可在本地使用各种模型运行。需要在$configuration_directory/textgen_url中设置服务器URL。
- lorem:本地非AI lorem生成器,用于测试
环境变量
可以使用CHAP_BACKEND
环境变量设置后端。
可以使用CHAP_<backend_name>_<parameter_name>
设置后端设置,其中backend_name
和parameter_name
全部大写。
例如,CHAP_LLAMA_CPP_URL=http://server.local:8080/completion
将llama-cpp后端的默认服务器URL更改为。
从ChatGPT导入
用户脚本https://github.com/pionxzh/ChatGPT-exporter可以将chat.openai.com的聊天记录以JSON格式导出。
此格式与chap不同,特别是由于chap
目前仅在一条日志中代表单个会话分支。
您可以使用chap import
命令将ChatGPT风格的聊天记录的所有分支以JSON格式导入为一系列chap
风格的聊天记录。
插件
Chap支持后端和命令插件。
"后端"添加额外的文本生成器。
"命令"添加与文本生成器、会话数据等交互的新方式。
使用pip install
或pipx inject
(根据您安装Chap的方式)安装插件,然后像平常一样使用它。
chap-backend-replay是一个后端插件示例。它重新播放先前会话中的答案。
chap-command-explain是一个命令插件示例。它与chap ask
类似。
目前,对命令或后端API的稳定性没有保证。
项目详情
下载文件
下载适合您平台的文件。如果您不确定要选择哪一个,请了解更多关于安装包的信息。