ChatGPTCLIBot:命令行中的智能助手
ChatGPTCLIBot是一款基于命令行界面的ChatGPT机器人,由GitHub用户LagPixelLOL开发。该项目旨在为用户提供一种在终端中与ChatGPT模型进行交互的便捷方式,同时还增加了许多实用功能,以增强用户体验。
项目背景
ChatGPTCLIBot最初的开发目的是为了解决GPT-3模型4096 tokens的上下文限制问题。开发者认为这个上下文长度对于许多应用场景来说太短,因此通过使用Embeddings技术实现了近乎无限的上下文记忆功能。
然而,随着大型语言模型(LLMs)的快速发展,许多模型现在已经支持10万甚至更多tokens的上下文长度。同时,OpenAI、Google和Anthropic等大型AI公司也开始在其官方网站中集成RAG(检索增强生成)技术。这些变化使得ChatGPTCLIBot的一些核心优势不再那么突出。
项目现状
尽管ChatGPTCLIBot曾经在解决上下文限制方面发挥了重要作用,但随着技术的进步,项目作者LagPixelLOL宣布该项目将不再维护。作者表示,由于个人生活和其他项目的原因,无法继续投入时间更新这个仓库。
虽然项目不再活跃开发,但ChatGPTCLIBot仍然是一个功能丰富的命令行ChatGPT工具,为许多用户提供了便利。接下来,让我们深入了解这个项目的主要特性和使用方法。
核心功能
-
长期记忆支持:通过使用Embeddings技术,ChatGPTCLIBot能够存储近乎无限的上下文信息,极大地扩展了对话的连贯性和深度。
-
自定义文档问答:用户可以加载自定义文档,并基于这些文档进行问答,实现了类似于RAG的功能。
-
多种模型支持:支持运行gpt-3.5-turbo、text-davinci-003等多种GPT模型,还可以使用GPT-4和GPT-4-32k等新模型(需要有访问权限)。
-
流式输出:与ChatGPT官网类似,ChatGPTCLIBot支持实时流式显示API返回的内容,无需等待完整响应生成。
-
丰富的交互命令:
/stop
: 结束并保存对话/undo
: 撤销上一次输入/reset
: 重置整个对话/dump
: 将对话历史导出为txt文件
-
自定义初始提示:用户可以在"initial"文件夹中放置txt文件来设置不同的初始提示。
-
对话保存和加载:支持将对话保存为JSON文件,并在下次使用时快速加载。
-
多行输入支持:通过Ctrl+N或Alt+Enter可以输入多行文本。
-
剪贴板支持:支持使用Ctrl+V粘贴文本。
-
UTF-8支持:完全支持UTF-8,可以输入任何语言。
-
自动翻译:内置自动翻译功能,可以自动翻译文本文件。
-
系统代理支持:在Windows系统上可以自动使用系统代理(Linux和macOS暂不支持)。
技术实现
ChatGPTCLIBot使用C++语言开发,并利用了多个开源库来实现其功能:
- Boost: 用于通用C++编程
- cURL: 处理HTTP请求
- nlohmann/json: JSON解析
- libproxy: 系统代理支持
- cpp-terminal: 终端操作
- ftxui: 终端UI
- oneTBB: 并行计算
- clip: 剪贴板操作
- cpp-tiktoken: token计数
- pcre2: 正则表达式
- utf8proc: UTF-8处理
使用方法
-
下载并运行:
- Windows: 双击
GPT3Bot.exe
或run.bat
- Linux/macOS: 运行
./GPT3Bot
- Windows: 双击
-
配置:
- 在
config.json
文件中可以切换模型和调整其他设置
- 在
-
初始提示:
- 在"initial"文件夹中放置txt文件作为初始提示
- 运行程序时直接回车,然后输入初始提示文件名即可加载
-
保存对话:
- 使用
/stop
命令结束对话 - 输入文件名保存,或直接回车跳过保存
- 使用
-
加载已保存的对话:
- 启动程序时输入"s"并回车
- 输入保存的JSON文件名即可加载
支持的操作系统
- Windows 10/11 64位
- Linux 64位 (Ubuntu 20.04及以上, CentOS 8及以上)
- macOS 64位 (macOS 12及以上)
项目展望
虽然ChatGPTCLIBot项目目前已停止维护,但它仍然为我们展示了如何在命令行环境中创建一个功能丰富的ChatGPT交互工具。对于那些偏好命令行界面或需要在服务器环境中使用ChatGPT的用户来说,这个项目仍然具有参考价值。
然而,考虑到大型语言模型和相关技术的快速发展,用户可能需要寻找更现代化的替代方案。项目作者推荐了几个优秀的GUI工具作为替代:
- SillyTavern: 适合角色扮演,并支持RAG功能。
- LobeChat: 适合通用LLM使用,但不支持RAG。
- BetterChatGPT: 专为OpenAI设计的通用LLM工具,UI与原始ChatGPT网站相似。
结语
ChatGPTCLIBot项目展示了开源社区如何快速响应新技术的出现,并为用户提供实用工具。尽管该项目现已停止维护,但它的开发历程和功能实现仍然值得我们学习和借鉴。对于那些想要深入了解如何在命令行环境中与ChatGPT交互的开发者来说,ChatGPTCLIBot的源码无疑是一个很好的学习资源。
随着AI技术的不断进步,我们期待看到更多创新的项目emerge,为用户提供更智能、更便捷的人工智能交互体验。同时,ChatGPTCLIBot的经历也提醒我们,在快速变化的技术领域中,保持灵活性和持续学习的重要性。
ChatGPTCLIBot运行界面示例
无论您是AI爱好者、开发者还是研究人员,ChatGPTCLIBot项目都为我们提供了宝贵的经验和启示。尽管技术在不断evolve,但推动这些创新的人类创造力和探索精神永远不会过时。让我们继续关注和支持开源社区,共同推动AI技术的发展与应用。