ChatGPT Telegram Bot
https://github.com/n3d1117/chatgpt-telegram-bot
A Telegram bot that integrates with OpenAI’s official ChatGPT APIs to provide answers. Ready to use with minimal configuration required.
与 OpenAI 的官方ChatGPT API集成以提供答案的Telegram机器人。只需最少的配置即可使用。
特征
- 答案中支持降价
- /reset使用命令重置对话
- 生成响应时键入指示符
- 可以通过指定允许的用户列表来限制访问
- Docker 和代理支持
- (新!)通过/image命令使用 DALL·E 生成图像
- (新!)使用 Whisper 转录音频和视频消息(可能需要ffmpeg)
- (新!)自动对话摘要以避免过度使用令牌(修复#34)
- (新!)带内联查询的群聊支持
- 要使用此功能,请通过/setinline 命令在 BotFather 中为您的机器人启用内联查询
- (新!)跟踪每个用户的令牌使用情况 - @AlexHTW
- (新!)通过命令获取个人令牌使用统计数据和每天/每月的成本/stats- @AlexHTW
- (新!)用户预算和访客预算 - @AlexHTW
- (新!)流支持
- (新!)GPT-4 支持
- 如果您有权访问 GPT-4 API,只需将OPENAI_MODEL参数更改为gpt-4
基础要求
- Python 3.9+
- Telegram 机器人及其令牌(请参阅教程)
- 一个OpenAI帐户(参见配置部分)
必须配置
通过复制.env.example
并将其重命名为.env
来自定义配置,然后根据需要编辑所需的参数:
参数 | 说明 |
---|---|
OPENAI_API_KEY |
您的 OpenAI API 密钥,您可以从 此处 |
TELEGRAM_BOT_TOKEN |
您的 Telegram 机器人的令牌,使用 BotFather 获得(参见 教程) |
ADMIN_USER_IDS |
管理员的电报用户 ID。这些用户可以访问特殊的管理命令、信息并且没有预算限制。管理员 ID 不必添加到“ALLOWED_TELEGRAM_USER_IDS”。注意:默认情况下,没有管理员(’-‘) |
ALLOWED_TELEGRAM_USER_IDS |
允许与机器人交互的 Telegram 用户 ID 的逗号分隔列表(使用 getidsbot 查找您的用户 ID)。注意:默认情况下,允许所有人 (* ) |
可选配置
以下参数是可选的,可以在.env文件中设置:
参数 | 说明 | 默认值 |
---|---|---|
ENABLE_QUOTING |
私聊是否开启消息引用 | true |
ENABLE_IMAGE_GENERATION |
是否通过/image 命令启用图像生成 |
true |
ENABLE_TRANSCRIPTION |
是否开启音视频信息转录 | true |
MONTHLY_USER_BUDGETS |
以逗号分隔的每个用户的金额列表,来自列表“ALLOWED_TELEGRAM_USER_IDS”,用于为每个用户设置 OpenAI API 成本的自定义使用限制。注意:默认情况下,对任何人都没有限制 (* ) |
* |
MONTHLY_GUEST_BUDGET |
$-金额作为所有来宾用户的使用限制。来宾用户是群聊中不在“ALLOWED_TELEGRAM_USER_IDS”列表中的用户。如果未在用户预算中设置使用限制,则忽略该值 (MONTHLY_USER_BUDGETS =”*”) |
100.0 |
代理 |
用于 OpenAI 和 Telegram 机器人的代理(例如 http://localhost:8080 ) |
- |
OPENAI_MODEL |
用于生成响应的 OpenAI 模型 | gpt-3.5-turbo |
ASSISTANT_PROMPT |
设置基调并控制助手行为的系统消息 | 你是一个很有帮助的助手。 |
SHOW_USAGE |
是否在每次响应后显示 OpenAI 令牌使用信息 | false |
流 |
是否流式传输响应。注意:不兼容,如果启用,N_CHOICES 高于 1 |
true |
MAX_TOKENS |
ChatGPT API 将返回多少令牌的上限 | 1200 |
MAX_HISTORY_SIZE |
保留在内存中的最大消息数,之后将总结对话以避免过度使用令牌 | 15 |
MAX_CONVERSATION_AGE_MINUTES |
自上一条消息以来对话应该存在的最大分钟数,之后对话将被重置 | 180 |
VOICE_REPLY_WITH_TRANSCRIPT_ONLY |
是仅使用文字记录还是使用文字记录的 ChatGPT 响应来回答语音消息 | true |
N_CHOICES |
为每个输入消息生成的答案数。注意:如果启用 STREAM ,将其设置为大于 1 的数字将无法正常工作 |
1 |
温度 |
介于 0 和 2 之间的数字。值越高,输出越随机 | 1.0 |
PRESENCE_PENALTY |
-2.0 和 2.0 之间的数字。正值根据到目前为止是否出现在文本中来惩罚新标记 | 0 |
FREQUENCY_PENALTY |
-2.0 和 2.0 之间的数字。到目前为止,正值会根据它们在文本中的现有频率惩罚新标记 | 0 |
IMAGE_SIZE |
DALL·E生成的图像大小。允许值:“256x256”、“512x512”或“1024x1024” | “512x512” |
GROUP_TRIGGER_KEYWORD |
如果设置,群聊中的机器人将只回复以此关键字开头的消息 | “” |
IGNORE_GROUP_TRANSCRIPTIONS |
如果设置为 true,机器人将不会处理群聊中的转录 | true |
TOKEN_PRICE |
$-每 1000 个代币的价格,用于计算使用统计中的成本信息 (https://openai.com/pricing) | 0.002 |
IMAGE_PRICES |
一个以逗号分隔的列表,包含 3 个不同图像尺寸的价格元素:“256x256”、“512x512”和“1024x1024” | “0.016,0.018,0.02” |
TRANSCRIPTION_PRICE |
一分钟音频转录的美元价格 | 0.006 |
查看官方 API 参考 了解更多详情。
安装
克隆存储库并导航到项目目录:
git clone https://github.com/n3d1117/chatgpt-telegram-bot.git
cd chatgpt-telegram-bot
基于源码
- 创建虚拟环境:
python -m venv venv
- 激活虚拟环境:
# For Linux or macOS:
source venv/bin/activate
# For Windows:
venv\Scripts\activate
- 使用
requirements.txt
文件安装依赖项:
pip install -r requirements.txt
- 使用以下命令启动机器人:
python bot/main.py
使用 Docker Compose
运行以下命令来构建和运行 Docker 镜像:
docker compose up
可直接使用的 Docker 镜像
您还可以使用 Docker Hub 中的 Docker 镜像:
docker pull n3d1117/chatgpt-telegram-bot:latest
或使用 GitHub 容器注册表:
docker pull ghcr.io/n3d1117/chatgpt-telegram-bot:latest
学分
作者:Jeebiz 创建时间:2023-04-09 22:12
最后编辑:Jeebiz 更新时间:2023-12-28 16:43
最后编辑:Jeebiz 更新时间:2023-12-28 16:43