跳转到主要内容

与OpenAI ChatGPT API(以及其他文本生成器)交互

项目描述

Test Release chap PyPI

chap - ChatGPT和其他LLM的Python接口,包括终端用户界面(tui)

Chap screencast

系统需求

chap主要在Linux上使用Python 3.11进行开发。将适度努力支持回滚到Python 3.9(Debian oldstable)的版本。

安装

如果您希望将chap作为命令使用,只需使用pipx install chappip 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 --lastchap 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 切换确保此消息(用户和助手消息部分)不被考虑。

会话与命令行参数

会话处理和命令行参数的详细信息正在变化。

默认情况下,创建一个新会话。它保存到用户的州目录中(例如,Linux/Unix 系统上的 ~/.local/state/chap)。

您可以使用 -n 指定新会话的文件名,或使用 -s 重新打开现有会话。或者,您可以使用 --last 继续最后一个会话。

您可以使用 -S 标志设置 "系统消息"。

您可以使用-b标志选择文本生成后端

环境变量

可以使用CHAP_BACKEND环境变量设置后端。

可以使用CHAP_<backend_name>_<parameter_name>设置后端设置,其中backend_nameparameter_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 installpipx inject(根据您安装Chap的方式)安装插件,然后像平常一样使用它。

chap-backend-replay是一个后端插件示例。它重新播放先前会话中的答案。

chap-command-explain是一个命令插件示例。它与chap ask类似。

目前,对命令或后端API的稳定性没有保证。

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪一个,请了解更多关于安装包的信息。

源分发

chap-0.8.3.tar.gz (365.7 kB 查看散列)

上传时间

构建分发

chap-0.8.3-py3-none-any.whl (31.2 kB 查看散列)

上传时间 Python 3

支持者