关于 Console Chat Gpt
console-chat-gpt 是一个 Python 命令行工具,用于在终端与 OpenAI、Anthropic、Ollama 等多家模型交流。它支持任何兼容 OpenAI SDK 的端点,并可通过 mcp_config.json 使用 MCP 服务。该项目已标记为弃用,新用户可改用 tellm。
主要功能
- 01兼容 OpenAI SDK 的多模型提供方配置
- 02通过 Ollama 运行本地模型
- 03AI Managed 模式自动选择模型
- 04通过 mcp_config.json 加载 MCP 服务
- 05对话历史保存与继续
适用场景
- 01在命令行中比较不同提供方的模型回答
- 02在终端中使用本地 Ollama 模型对话
- 03在命令行对话中调用已有的 MCP 服务
MCP 相关
该项目作为 MCP 客户端,读取 mcp_config.json 中的配置,在聊天会话中连接并使用 MCP 服务。
详细介绍
已弃用 / 后继项目: 新安装请改用 tellm。它是一款小巧的 Rust Telegram 助手,支持 Claude、GPT/Grok、Gemini、兼容端点和本地 Ollama,并支持按聊天室选择模型以及由密钥链保护的密钥。
console-chat-gpt v6
您与 AI 模型聊天的终极命令行伴侣
直接通过命令行,与 OpenAI、MistralAI、Anthropic、xAI、Google AI 或任何其他兼容 OpenAI SDK 的大模型提供商(例如 DeepSeek、Alibaba、Inception、Moonshot AI、OpenRouter 等)或由 Ollama 托管的模型畅享无缝交互。
高效轻松地提升您的聊天体验。
目录
免责声明: 本代码的意图和实现与 OpenAI、MistralAI、Anthropic、xAI、Google AI 以及任何其他大模型实验室或相关方完全无关。我们与 OpenAI、MistralAI、Anthropic、xAI、Google、任何其他大模型实验室或其子公司之间不存在任何形式的从属或关联关系。
功能
- :new: 支持通过 Telegram 机器人进行对话,并在可用时支持 Bot API 10.1 的富文本消息格式。创建方法:从 BotFather 到“Hello World” :new:
- :star: 支持通过 Responses API 生成 OpenAI 图像。:star:
- :star: 支持 OpenAI Responses API。:star:
- :star: 运行任何兼容 OpenAI SDK 的模型——只需将包含相应
model_name和base_url的模型结构添加到config.toml文件中。:star: - :star: 在本地运行由 Ollama 托管的模型。需安装 Ollama,并提前下载所选模型 :star:
- :star: 完全支持 Anthropic 提示词缓存 :star:
- :star: 支持 模型上下文协议(MCP)!如果你已经在使用 MCP 服务,只需将
claude_desktop_config.json复制到根目录并重命名为mcp_config.json,即可开始搭配任何模型使用!:star: - 将统一的聊天补全功能拆分为独立库,可用于任何应用,实现无缝的跨提供商 API 体验。源代码提供 Python 和 TypeScript 版本
- 支持所有兼容模型的流式输出,默认禁用,可在
settings菜单中启用 - 支持 OpenAI Assistants Beta
- AI 托管模式:根据任务复杂度自动确定要使用的模型。
- 配置文件:通过
config.toml文件轻松自定义应用设置,全面掌控应用的运行方式。也支持在应用内通过settings命令进行设置。 - 角色选择:用户可以定义 AI 在对话中的角色,获得更个性化、更具互动性的体验。
- 温度控制:调整生成回复的温度,控制对话的创造性和随机性。
- 命令处理:应用会响应用户输入的各种命令,实现简单直观的交互。
- 图像输入:适用于选定的模型。
- 错误处理:提供清晰实用的错误消息,便于理解和解决问题。
- 对话历史记录:查看先前的交互并保存对话,以供日后参考,提供上下文连贯性。
- 平稳退出:妥善处理中断,在退出前保存对话,避免进度丢失。
- 优秀的团队:积极添加功能、乐于接受建议并修复错误。
总的来说,这款应用致力于提供用户友好且可自定义的体验,并通过丰富的功能提升个性化程度、控制力和便利性。
安装和使用
此脚本在 Linux 和 MacOS 终端中运行正常。对于 Windows,建议使用 WSL。
-
克隆仓库:
git clone https://github.com/amidabuddha/console-chat-gpt.git -
进入文件夹:
cd console-chat-gpt -
安装必要的依赖项:
python3 -m pip install -r requirements.txt -
根据所选大模型,从 OpenAI、MistralAI、Anthropic、xAI、Google AI Studio 或相应平台获取 API 密钥。
-
首次运行时,系统会自动将
config.toml.sample复制为config.toml,并提示输入 API 密钥。你可以根据需要更改其他默认设置;这些设置无法在应用内的settings菜单中调整。 -
运行可执行文件:
python3 main.py小提示: 为可执行文件创建别名,即可从任意位置运行。
-
在聊天中使用
help命令查看可用选项。 -
尽情使用
config.toml 中的可配置选项
| [chat.defaults] | 用于生成聊天补全/回复的主要属性。 |
|---|---|
| temperature | 使用的采样温度,范围为 0 到 2。较高的值(如 0.8)会让输出更随机,较低的值(如 0.2)则会让输出更聚焦。如果 [chat.features] 中的 adjust_temperature 为 true,可针对每个新聊天会话进行设置。 |
| system_role | 插入模型上下文中的系统(或开发者)消息。应为 [chat.roles] 部分中列出的角色之一。如果 [chat.features] 中的 role_selector 为 true,可针对每个新聊天会话进行设置。 |
| model | 用于生成聊天补全/回复的模型 ID,例如 gpt-4o 或 o3。应在 [chat.models] 部分中列出,并包含相关参数。如果 [chat.features] 中的 model_selector 为 true,可针对每个新聊天会话进行设置。 |
| [chat.managed] | 专用于 AI Managed 模式的设置。无法在聊天会话中编辑。 |
|---|---|
| assistant | 用于评估提示词并从下方配置的四种模型中选出最适合处理该提示词的首选模型。应在 [chat.models] 部分中列出,并包含相关参数。 |
| assistant_role | 给评估模型的自定义指令。只有在完全清楚自己在做什么时才更改此项! |
| assistant_generalist | 你首选的通用模型,通常是你最常用于各种查询的模型。应在 [chat.models] 部分中列出,并包含相关参数。 |
| assistant_fast | 适用于优先考虑速度而非准确性的情况。应在 [chat.models] 部分中列出,并包含相关参数。 |
| assistant_thinker | 用于处理复杂任务的推理模型。应在 [chat.models] 部分中列出,并包含相关参数。 |
| assistant_coder | 你首选的、用于处理编码和数学问题的模型。应在 [chat.models] 部分中列出,并包含相关参数。 |
| prompt | 如果经常使用 AI Managed mode,可将此项更改为 false,以禁用 Y/N 提示。 |
| [chat.features] | 聊天应用的可配置选项。其中一些可以在聊天会话中通过 settings 命令访问。 |
| - | - |
| model_selector | config.toml 的 [chat.models] 部分中可用模型的选择列表。设为 true 时,可在每次新聊天会话开始时修改此列表。 |
| adjust_temperature | 提示为每次聊天会话更改温度。设为 true 时,可在每次新聊天会话开始时修改温度值。 |
| role_selector | config.toml 的 [chat.roles] 部分中可用角色的选择列表。设为 true 时,可在每次新聊天会话开始时修改此列表。 |
| save_chat_on_exit | 设为 true 时,在聊天中使用 exit 命令后自动保存聊天会话。 |
| continue_chat | 设为 true 时,提供先前保存的聊天会话列表,以便在新会话中继续。可在聊天会话中通过 chats 命令修改此列表。 |
| 应用日志记录——尚未实现。 | |
| disable_intro_help_message | 初始化聊天时会打印 help 中提供的所有聊天命令。此功能面向新用户,可设为 false 以禁用。 |
| assistant_mode | 启用 Open AI Assistants API,使其成为聊天初始化时的可选项。 |
| ai_managed | 启用 AI Managed mode,允许模型根据你的提示自动选择最合适的模型。详细设置见下文。 |
| streaming | 设为 true 时,模型响应数据将流式传输到终端客户端。Telegram 模式始终发送完整回复。 |
| mcp_client | 设为 false 时,如果不需要,可阻止每次聊天时默认初始化 MCP 服务。 |
| [chat.telegram] | 启用 Telegram 对话界面。 |
|---|---|
| enabled | 设为 true 时,启动 Telegram 机器人轮询循环,取代终端聊天界面。 |
| bot_token | 来自 BotFather 的 Telegram 机器人令牌,格式为 <digits>:<token>。 |
| allowed_chat_ids | 允许使用机器人的聊天 ID 列表。当此列表为空且未配置模型房间映射(telegram_chat_id/telegram_chat_ids)时,将启用配对模式:机器人会在终端打印一次性代码,发送 /pair <code> 的聊天将被认领并保存到此处;其他所有聊天均会被拒绝。代码每 10 分钟轮换一次,多次输入错误会导致相应聊天暂时被锁定。 |
| admin_chat_ids | 允许运行仅限管理员使用的命令(例如 /shutdown)的聊天 ID 列表。 |
| debug_context | 设为 true 时,会将 Telegram 会话/记忆调试快照打印到终端日志,以便排查上下文问题。 |
| max_concurrent_updates | 并行处理的 Telegram 更新的最大数量。省略时,默认值为 8。不同聊天会并发运行,而每个聊天内的消息严格按序处理且相互隔离。 |
当 Bot API 支持时,Telegram 回复会通过 sendRichMessage 发送,因此模型 Markdown 可以呈现为丰富的标题、列表、表格、引用、公式、详情块和其他类似的结构化内容。如果无法发送富消息,或者 Telegram 拒绝格式错误的富内容块,机器人会回退到经典的 sendMessage 方式。
每个模型块中也支持按模型映射 Telegram 房间:
telegram_chat_id = <chat_id>telegram_chat_ids = [<chat_id_1>, <chat_id_2>]
当聊天房间映射到某个模型时,该房间将固定使用此模型(其中的模型切换命令会被禁用),但其他所有命令(/mode、/role、/reasoning、/websearch、/webfetch 等)仍可使用。
添加受 OpenAI SDK 支持的模型
在 config.toml 文件末尾添加一条配置。
使用以下示例结构:
[chat.models.{{model name that makes sense to you}}]
api_key = "YOUR_API_KEY"
base_url = {{the custom base URL, for example "https://api.deepseek.com/v1"}}
model_input_pricing_per_1k = 0.015 (currently the price is not calculated but you may adjust this for your reference)
model_max_tokens = 32000 (the suported context window of the selected model)
model_name = {{model name exactly as specified in the relevant API reference, for example "deepseek-reasoner"}}
model_output_pricing_per_1k = 0.075 (currently the price is not calculated but you may adjust this for your reference)
reasoning_effort = (the desired value if supported, such as "medium", otherwise false)
示例
-
提示词示例:

-
Markdown 可视化示例:

-
设置和帮助:

您可以在我们的示例页面上找到更多示例。
贡献
欢迎贡献!如果您发现任何错误、有功能请求或想要贡献改进,请开启一个 issue 或提交 pull request。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。