• Stars
    star
    242
  • Rank 167,048 (Top 4 %)
  • Language
    JavaScript
  • License
    GNU General Publi...
  • Created about 1 year ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

基于微信测试号的ChatBot,对接OpenAI API

BotChan · Bot酱

Bot酱使用微信测试号对接任何兼容OpenAI规范的API接口(例如API+API2D),实现ChatBot。

⚠️ 特别提示

如果配置好以后,服务器端有日志输出,但微信无反应,日志提示 get access token failed,那么恭喜你遇到微信测试号平台的Bug了。尤其是对于刚开通的账号。可以试试手动退出微信测试号平台,重新扫码登录,查看 appsecret 是不是变了,然后改用新的 appsecret 。

安装和配置

准备资料

  1. 访问并开通微信测试号

将页面上的 appID、appsecret作为环境变量

- MP_APPID=appID
- MP_APPSECRET=appsecret
  1. 随机编写一个Token
- MP_TOKEN=your-random-token
  1. 设置 OpenAI 接口

如果要使用 OpenAI 官方接口,需要将镜像部署在海外,否则很可能网络不通

OpenAI 配置示例

- DEFAULT_API_URL=https://api.openai.com
- DEFAULT_API_KEY=sk...
- DEFAULT_MODEL=gpt-3.5-turbo

API2D 配置示例

- DEFAULT_API_URL=https://oa.api2d.net
- DEFAULT_API_KEY=fk...
- DEFAULT_MODEL=gpt-3.5-turbo
  1. 设置触发词

可通过以下环境变量设置触发词,设置后只有包含触发词的对话才会触发AI答复。如果测试为空,那么每一句都可以触发AI答复。

DEFAULT_API_WORD=
  1. 对话命令和默认参数锁定

设置的默认值可以通过 /setXXX 命令(针对每个人)进行配置,可通过 /help 查看。

但某些参数你可能不希望用户修改,可以用以下环境变量锁定:

LOCK_API_URL=true
LOCK_API_KEY=true
LOCK_API_WORD=true
LOCK_MODEL=true
  1. 启动服务后(见后),记得将回调地址和Token回填到微信测试号设置页面。

Docker

请按上文介绍修改环境变量

确保对 ./data 有写权限,或者挂到有权限的地方去

docker run -d --name bot \
-e MP_APPID= \
-e MP_APPSECRET= \
-e MP_TOKEN= \
-e DEFAULT_API_URL=https://oa.api2d.net \
-e DEFAULT_API_WORD= \  
-e DEFAULT_API_KEY=fk... \
-e LOCK_API_URL=true \
-e LOCK_API_KEY=true \
-e LOCK_MODEL=true \
-e DB_TYPE=json \
-v ./data:/data \
-p 80:9000 \
easychen/botchan:latest

Docker-compose

请按上文介绍修改环境变量

确保对 ./data 有写权限,或者挂到有权限的地方去

复制 docker-compose.example.ymldocker-compose.yml,并根据需要修改环境变量:

version: '3'
services:
  bot:
    image: easychen/botchan
    environment:
      - MP_APPID=
      - MP_APPSECRET=
      - MP_TOKEN=
      - DEFAULT_API_URL=https://oa.api2d.net
      - DEFAULT_API_WORD=
      - DEFAULT_API_KEY=fk...
      - LOCK_API_URL=true
      - LOCK_API_KEY=true
      - LOCK_MODEL=true
      - DB_TYPE=json
    volumes:
      - ./data:/data
    ports:
      - 80:9000

启动服务

docker-compose up -d

nodejs 安装见最后

回填Token和回调地址

启动服务后,我们可以获得回调地址。如果IP/域名是xxx.xxx.xxx.xxx:xxxx,那么回调地址http://xxx.xxx.xxx.xxx:xxxx/wechat

如果你在本机测试,需要使用 ngrok 等内网穿透工具创建一个公网可以访问的域名

回到测试号设置页面,点击 接口配置信息 后的修改链接,会将 回调地址TOKEN( 即 MP_TOKEN ) 填入并保存。

使用

用微信扫描测试号设置页面的二维码,关注测试号以后,可以发送问题。也可以通过 /setXXX 命令进行针对个人的配置。

可以通过 /help 查看可用命令。

你可以将测试号「发送到桌面」,作为快速进入的入口。这样就不用在微信里边到处找了

高级配置

模型配置

可以进一步指定模型参数优化需要的答复

- MAX_TOKEN=1000 #返回的最大token数
- TEMPERATURE=0.8 #模型的temperature
- TIMEOUT=180 #超时秒数
- STREAM=true #是否采用流式传输 

AZURE 支持

Bot酱兼容 Azure 接口,将 DEFAULT_API_URL 指定为 Azure Endpoint( https://xxx.openai.azure.com ) 即可。

Azure 的 Deployment 需要和 azure 的 model name 保持一致。

在通过命令或者配置文件指定模型时,请使用 OpenAI 官方的名称,如 gpt-3.5-turbo

截断设置

过长文字可能导致内容无法返回,会截断为多条。

注意:受微信平台限制,每次互动,只能最多回复五条消息,因此不要将字数设置太低,可能导致超过五条

- REPLY_CHUNK_LENGHT=1000 #字数

使用 NodeJS 架设服务

包依赖安装

node18

yarn add api2d body-parser cors cross-fetch dotenv express express-xml-bodyparser knex mysql2 simple-json-db

node16.13.1

yarn add api2d body-parser cors cross-fetch dotenv express express-xml-bodyparser knex [email protected] simple-json-db

启动服务 node index.js 端口 9000

将用户设置保存到数据库

默认情况下,用户设置保存在 /data/db.json ,这要求运行环境可写;你也可将用户设置保存在 MySQL中。

MySQL 表初始化

CREATE TABLE `data` (
  `id` int NOT NULL AUTO_INCREMENT,
  `key` varchar(255) NOT NULL,
  `value` text,
  PRIMARY KEY (`id`),
  UNIQUE KEY `key` (`key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

MySQL 环境变量

- DB_HOST
- DB_PORT
- DB_USER
- DB_PASSWD
- DB_NAME

切换用户配置保存模式

- DB_TYPE=mysql2

More Repositories

1

howto-make-more-money

程序员如何优雅的挣零花钱,2.0版,升级为小书了。Most of this not work outside China , so no English translate
PHP
16,190
star
2

lean-side-bussiness

精益副业:程序员如何优雅地做副业
8,305
star
3

pushdeer

开放源码的无App推送服务,iOS14+扫码即用。亦支持快应用/iOS和Mac客户端、Android客户端、自制设备
C
4,353
star
4

one-person-businesses-methodology

一人公司方法论
3,220
star
5

stack-roadmap

方糖全栈路线图2023,为「从螺丝钉到一人企业」补全技能栈
PHP
3,063
star
6

CookieCloud

CookieCloud是一个和自架服务器同步浏览器Cookie和LocalStorage的小工具,支持端对端加密,可设定同步时间间隔。本仓库包含了插件和服务器端源码。CookieCloud is a small tool for synchronizing browser cookies and LocalStorage with a self-hosted server. It supports end-to-end encryption and allows for setting the synchronization interval. This repository contains both the plugin and the server-side source code
JavaScript
1,581
star
7

checkchan-dist

Check酱:监测网页内容变化,并发送异动到微信。亦支持http status、json和rss监测。配合自架云端,关电脑后也能运行。
JavaScript
1,532
star
8

openai-api-proxy

一行Docker命令部署的 OpenAI/GPT API代理,支持SSE流式返回、腾讯云函数 。Simple proxy for OpenAi api via a one-line docker command
JavaScript
1,450
star
9

openai-gpt-dev-notes-for-cn-developer

如何快速开发一个OpenAI/GPT应用:国内开发者笔记
Shell
1,403
star
10

wecomchan

微信推送服务Server酱的开源替代。通过企业微信向微信推送消息的配置文档、直推函数和可自行搭建的在线服务代码。
Go
1,233
star
11

docker2saas

An open source tool that lets you create a SaaS website from docker images in 10 minutes.
PHP
765
star
12

chatchan-dist

Chat酱独立部署版,docker方案自带代理
Dockerfile
729
star
13

catgate

CatGate is a small crawler framework based on Chrome extension . CatGate是一个基于浏览器插件的数据抓取工具。做成浏览器插件无需模拟登入,能最真实的模仿用户行为和特征。
Vue
673
star
14

TeamToy

企业协同办公工具TeamToy2(多人TODO版)官方Git源
PHP
662
star
15

LazyPHP

轻框架。包含一个前端控制器,20个常用函数和用于页面布局的Layout系统,10分钟即可学会。LP采用BSD开源协议,在代码内保留框架名即可随意商用。
PHP
573
star
16

rsspush

监测RSS变动,并发送最新内容到微信、Webhook 和 Telegram, Discord, Slack, Amazon SNS, Gotify 等数十个消息通道。
499
star
17

telechan

message api for telegram bot 可供多人发送消息的 telegram 机器人 api , 类似server酱的开源实现
TypeScript
414
star
18

not-only-fans

an open source, self-hosted digital content subscription platform like `onlyfans.com` with cryptocurrency payment
HTML
356
star
19

career-guide-for-cs-graduate

计算机系应届生求职指北
316
star
20

LazyPHP4

LazyPHP4 , an API first framework for php developer
PHP
313
star
21

MemberPrism2

open source alternative to memberstack / memberspace , but with both front and backend member-only content protection
PHP
273
star
22

http-t-shirts

Open source http status code T shirt · http状态码系列T恤设计稿
266
star
23

tumblr-like-exporter

Download tumblr photos you liked , or others liked . Or even images in your blog . It supports videos now , see README to enable it
PHP
262
star
24

LazyRest4

基于Web界面的Rest风格API生成器For LazyPHP4
PHP
244
star
25

lianmilite

莲米粒是一个基于PHP+MySQL+微信小程序技术栈的、拥有用户登入、发布、修改、删除和转发信息、以及私信聊天模块的信息流应用。
PHP
233
star
26

deepgpt-dist

DeepGPT,类agentGPT/AutoGPT 工具,支持 api2d / 和自定义 openai key。此为静态网页独立部署版,部署方便
JavaScript
227
star
27

book-by-ai

Generate high-quality books with AI
JavaScript
216
star
28

TeamToy-Pocket

TeamToy是跨平台的团队TODO应用,官网 TeamToy.net。 TeamToyPocket是其移动客户端。本项目采用GPLV2协议,本分支代码用于在新浪移动云上直接打包。如果自行用PhoneGap打包,请将代码中<phonegap></phonegap>换成phonegap.js的路径。
JavaScript
203
star
29

LazyREST

可通过Web配置的REST Server,采用GPLV2授权
PHP
193
star
30

gpt-bat

GPT长文本批处理工具,Batch Processing tools for GPT
JavaScript
184
star
31

LazyAudioBook

将 txt 文件生成语音书。
PHP
167
star
32

flowdeer-dist

可用于深度思考和复杂流程的AI工具
163
star
33

LeanBase

143
star
34

aiapi

A Claude-driven, OpenAI specification-compliant API, free
135
star
35

onlytech-javascript-info

纯粹技术免费课计划·现代JavaScript 教程
112
star
36

timetodo-server

remote server for timetodo
PHP
108
star
37

windrecorder

JavaScript
103
star
38

rumenqi

从入门到放弃系列周边补全计划
98
star
39

api2d-js

OpenAI/Api2d pure js sdk 无需node后端直接在浏览器中运行,支持SSE流式输出
JavaScript
90
star
40

fangPHP

fangPHP is a docker based development env with php7 mysql redis and livereload
PHP
84
star
41

any2api

A framework( or a tool? ) that turns any website into an API
JavaScript
81
star
42

h2webreader

h2book web reader
JavaScript
78
star
43

awesome-checkchan

Check酱任务分享清单
76
star
44

windmark-practice

采用 windmark 编写的视频的源文件
74
star
45

h2reader-host

方糖小剧场Web阅读器和上传网站
JavaScript
72
star
46

Simple-Weibo

PS: 这个方案有些过时了,建议用新方案 https://github.com/qhm123/tinybo open source phonegap weibo client demo 。想要更多功能的同学自己写嘛,别偷懒哈。
JavaScript
70
star
47

url2pdf

url2pdf docker image based on wkhtmltopdf with Chinese support.
PHP
68
star
48

code-tattoo

语言纹身贴纸图案库
60
star
49

GPT4Company

Gpt4Company is a request forwarder used to prevent Samsung-style leaks. Gpt4Company 是一个用来避免三星式泄密的请求转发器
JavaScript
57
star
50

ffonline

video creating in browser
JavaScript
57
star
51

LazyBoardExt

定时采集数据并发送到指定接口的Chrome扩展机器人🤖
JavaScript
54
star
52

nCoV-push

nCoV疫情实时播报推送脚本。数据基于丁香园。
PHP
53
star
53

Wechat-Wordpress-Search

a wordpress plugin allowed user search blogs in wechat app
PHP
52
star
54

MoDocker

modo动漫私有云(modo.moe)的Docker构建用文件。
PHP
40
star
55

ask-gpt-download

通过GPT向微博账号提问
39
star
56

WindChat

A React Chatbot starter with highly customizable styles can be achieved through TailwindCSS. 可以通过 TailwindCSS 高度定制样式的 React Chatbot starter。
JavaScript
36
star
57

fo-pay

基于加密稳定币 FOUSDT 的 WordPress 付费阅读插件。
PHP
33
star
58

Fangtang-Chrome-Starter-Kit

Starter Kit for chrome extension based on Vue2 and ElementUI
JavaScript
33
star
59

serverchan-demo

Server酱多语言调用实例
Java
31
star
60

vue-starter

JavaScript
27
star
61

fangtangtree

方糖知识树
26
star
62

nowboard

基于SAE Channel服务的实时信息流展板。通过微博帐号登入、可聊天;支持API发布信息,可用于服务器调试信息、错误信息展示。
PHP
26
star
63

TeamToy-Plugins

TeamToy插件目录
PHP
24
star
64

LazyExtKit

a simple chrome extension startkit
JavaScript
24
star
65

github-action-server-chan

TypeScript
23
star
66

MetaToy2

通用命令行和可视化代码生成工具
EJS
19
star
67

WeiboList

微博上活跃的技术帐号整理
19
star
68

easy-starter2

react + mobx + react-router v4 + react-next-i18n starter for create-react-app 2.x
JavaScript
17
star
69

fangtangCV-react-native

react native demo
JavaScript
16
star
70

serverchan-wordpress-comments-notice

Server酱WordPress博客评论微信通知插件
PHP
16
star
71

easy-starter

一个整合了 react 、 react-router v4 和 mobx 的简单起始项目脚手架
JavaScript
15
star
72

LazyBot

一些基于 robo.li 的日常自动化/半自动化脚本
PHP
15
star
73

one-person-businesses-methodology-v2

用AI撰写的一本小书
Shell
14
star
74

teamtoy-mina-demo

一个调用TeamToy API 的微信小程序 Demo
JavaScript
14
star
75

CubismWebSamples-with-lip-sync

TypeScript
14
star
76

fullstack-learnning-map

全栈创业者(fullstack-creator)的知识地图
13
star
77

fangtangCV

PHP
12
star
78

2dstudio-dist

使用 API2D Key 的 Stable Studio,独立部署版
HTML
12
star
79

Aoi

LazyPHP3的看板娘,能帮你自动创建模板,Action和测试。
PHP
12
star
80

xf-tts-sdk

php & node sdk for xunfei tts websocket api
JavaScript
10
star
81

easychen.github.com

8
star
82

tcp

tcp包介绍网站
CSS
8
star
83

autoplay-web-specification

自播放网页规范 specification of autoplay web
7
star
84

imgShare

为文章中的图片添加鼠标浮动时分享到微博的链接。封装自 国内首家互联网人才拍卖网站 JobDeer.com
JavaScript
6
star
85

fangtangGif

方糖动图生成器
6
star
86

telegram-bot-api-proxy

express app for forwarding request to api.telegram.org
JavaScript
4
star
87

GameDemo

DemoGame for FE courses , Just a hosting , not open source project
4
star
88

easychen.github.io

HTML
4
star
89

book-by-ai-demo-book

3
star
90

wordpress-local-dev-env

3
star
91

LitePHP

Simple version of LazyPHP in one file
PHP
3
star
92

serverchan-e2e-demo

Server酱端对端加密函数和DEMO
2
star
93

fangCV

PHP
2
star
94

easychen

2
star
95

cubeslam

Automatically exported from code.google.com/p/cubeslam
JavaScript
2
star
96

TeamToy-Language-Files

translate teamtoy to other languages
PHP
2
star
97

fxd

Flow eXtension Define,它是一个被设计用于工作流(尤其是AI和自动化工作流)扩展的规范。"Flow eXtension Define" is a specification designed for extending workflows, especially AI and automation workflows.
JavaScript
2
star
98

bluesky-wave

Bluesky bulk follow tool
JavaScript
2
star
99

serverchan3-doc

Server酱³文档网站
MDX
1
star
100

2d-ai-chatbot

TypeScript
1
star