lapis

lapis

理解以真实为本,但真实本身不会自动呈现

部署自己的Chatgpt Telegram机器人

部署自己的 Chatgpt Telegram 机器人#

date: March 24, 2023
slug: 19
status: Published
tags: 技术
type: Post

开源项目地址:链接基于 cloudflare workers 开发的 telegram 对话 bot,实测体验不错,毕竟免费好用谁不爱呢

前期准备#

1. 创建 tg 机器人#

在 BotFather 处新建 telegram 机器人,获取 Token 并自定义机器人的名称,头像等;

  • 打开 Telegram 并向 BotFather 发送 /start 命令
  • 发送 /newbot 命令,并给你的机器人起一个名字
  • 给你的机器人取一个唯一的用户名
  • BotFather 会生成一个 Token,复制下来保存好,稍后再 Cloudflare Workers 的设置里将这个 Token 填入 TELEGRAM_TOKEN 变量中
  • 在 Telegram 中找到 BotFather, 发送 /setcommands, 找到自己的机器人,发送 new - 开始新对话

2. 注册 OpenAI 账号并创建 API Key#

在 openai.com 里注册账号,点击右上角头像进入个人设置界面,在 API Keys 里创建一个新的 API Key,稍后将它填入 API_KEY

部署#

1. 部署 Workers#

  • 打开 Cloudfalre Workers 注册账号
  • 点击 Create a Worker
  • 将代码复制到编辑器中,保存

2. 配置环境变量#

打开 Setting-Variables-Environment Variables,增加变量:

KEY说明默认值特殊说明
API_KEYOpenAI API Keynull
TELEGRAM_AVAILABLE_TOKENS支持多个 Telegram Bot Tokennull多个 Token 用,分隔
CHAT_WHITE_LIST聊天 ID 白名单null多个 ID 用,分隔,不知道 ID,和机器人聊一句就能返回
I_AM_A_GENEROUS_PERSON关闭白名单,允许所有人访问false鉴于很多人不想设置白名单,或者不知道怎么获取 ID,所以设置这个选项就能允许所有人访问, 值为 true 时生效
AUTO_TRIM_HISTORY自动清理历史记录true为了避免 4096 字符限制,将消息删减
MAX_HISTORY_LENGTH最大历史记录长度20AUTO_TRIM_HISTORY 开启后 为了避免 4096 字符限制,将消息删减
CHAT_MODELopen ai 模型选择gpt-3.5-turbo
SYSTEM_INIT_MESSAGE系统初始化信息你是一个得力的助手默认机器人设定
SYSTEM_INIT_MESSAGE_ROLE系统初始化信息角色system默认机器人设定
ENABLE_USAGE_STATISTICS开启使用统计false开启后,每次调用 API 都会记录到 KV,可以通过 /usage 查看
HIDE_COMMAND_BUTTONS隐藏指令按钮null把想要隐藏的按钮写入用逗号分开 /start,/system, 记得带上斜杠,修改之后得重新 init
DEBUG_MODE调试模式false目前可以把最新一条消息保存到 KV 方便调试

3. 绑定 KV 数据#

(Settings-Variables-KV Namespace Bindings), 名字设置为 DATABASE

  • 点击右上角的 Create a Namespace
  • 设置名字为 DATABASE
  • 打开 Cloudflare Workers 点击你的 Workers
  • 点击右上角的 Setting -> Variables
  • 在 KV Namespace Bindings 中点击 Edit variables
  • 点击 Add variable
  • 设置名字为 DATABASE 并选择刚刚创建的 KV 数据

4. 运行#

访问 https://your_workers_name.your_workers_subdomain.workers.dev/init 绑定 telegram 开始新对话,使用 /new 指令开始,之后每次都会将聊天上下文发送到 ChatGPT

运行之后的用户配置#

每个用户的自定义配置,只能通过 Telegram 发送消息来修改,消息格式为/setenv KEY=VALUE

KEY说明例子
SYSTEM_INIT_MESSAGE系统初始化参数,设定后就算开启新会话还能保持,不用每次都调试/setenv SYSTEM_INIT_MESSAGE = 现在开始你是喵娘,每句话以喵结尾
OPENAI_API_EXTRA_PARAMSOpenAI API 额外参数,设定后每次调用 API 都会带上,可以用来调整温度等参数/setenv OPENAI_API_EXTRA_PARAMS={"temperature": 0.5} 每次修改必须为完整 JSON
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。