Giter Site home page Giter Site logo

wechat-gptbot's Introduction

以下是优化后的文档,旨在使其更易于理解、使用和维护。


给孩子或宠物创建一个 GPT 机器人

欢迎来到 微信 GPT 机器人 项目!这个项目可以帮助你在微信上创建一个智能机器人,用于与孩子或宠物互动。你可以利用它发送消息、查询天气、获取每日新闻等。

项目地址: https://github.com/code-innovator-zyx/wechat-gptbot

最近我们家迎来了一个新的生命,这个机器人可以方便家人提前与她互动。这不仅有助于培养她的微信账号,还可以在以后将微信号交给她。☺️

项目优势

  • 易于部署:Golang 编译的二进制文件,避免了其他语言的依赖问题。
  • 微信登录 :使用桌面版微信协议,突破微信登录限制(感谢开源项目 openwechat)。

功能列表

  • 文本对话:接收并回复私聊或群聊消息,基于 OpenAI 的 GPT-4-turbo 生成内容。
  • 用户级上下文管理:保证每个用户的对话按提问顺序生成上下文。
  • 触发口令
    • 私聊时无需额外触发口令。
    • 群聊中需 @机器人或使用指定口令触发对话。
  • 连续对话:支持私聊和群聊的连续对话,默认记忆最近三组对话及最初提示词。
  • 图片生成:根据描述生成图片并回复。
  • 称谓识别:识别对话中的称谓,并在回复中附带对方称谓。
  • 会话隔离:不同用户的对话独立管理,保持 session 隔离。
  • 图片压缩:自动压缩生成的图片以便传输。
  • 聊天模型配置:可自定义聊天模型。
  • 模型代理切换:支持使用 OpenAI 的代理地址。
  • 微信朋友圈插件:控制微信计步器,修改微信运动步数(待集成)。
  • 大模型交互界面:基于纯后端的交互界面,支持更多功能。
  • 插件管理:自定义插件管理,可以随心所欲增加插件。
  • 定时触发器:通过自然语言设置定时触发器,代码小白也能设置定时任务。
  • 实时天气查询插件:随时查询全国各地的天气预报。
  • 实时热点事件查询插件:随时查询热点事件(支持RSS订阅)。
  • 微信装逼神器插件:每天自动帮我刷新微信运动步数,通过配置设置范围,能在朋友圈装逼
刷步1 刷步2

待实现功能

  • 群聊和私信消息隔离:实现不同用户的群聊和私信信息上下文隔离。
  • GPT-4 语音对话:通过微信与 GPT-4 进行语音对话。
  • RSS 多订阅源支持:支持订阅多个RSS源,推送
  • 更多功能:欢迎提供意见和建议。

最近更新

2024年 6月14日

  • 新增功能:自定义插件系统,目前支持天气预报和每日热点新闻。
  • 插件调用:无需特殊唤醒词,只需正常询问即可。
天气 新闻

2024年 6月19日

  • 自动消息推送:每天早晨自动发送天气和热点消息。
  • 定制化时间设置:可在 cron.json 中修改触发时间。
  • 自然语言时间设置:可视化工具允许通过自然语言设置时间。
  • 插件定制:在 core/plugins 目录下添加自定义插件。
自动推送 时间设置

2024年 6月25日

  • 媒体新闻订阅支持RSS:支持设置RSS订阅源,推送查询订阅消息。

img.png

插件示例:添加一个新闻插件

以下是如何添加一个自定义的新闻插件:

package news

import (
	"wechat-gptbot/core/plugins"
)

const NewsPluginName = "NewsPlugin"

type plugin struct {
}

func NewPlugin() plugins.PluginSvr {
	return &plugin{}
}

func (p plugin) Do(i ...interface{}) string {
	return "插件返回的结果"
}

func (p plugin) Name() string {
	return NewsPluginName
}

func (p plugin) Scenes() string {
	return "每日热点新闻"
}

func (p plugin) IsUseful() bool {
	return true
}

func (p plugin) Args() []interface{} {
	return nil
}

UI 界面(选装)

如果需要 UI 界面展示,可以安装 Python 环境或使用 Docker 构建。所有环境已打包成基础镜像,见 Dockerfile。

优点

  • 无需适配手机端,支持公网访问,手机可直接访问和修改配置。
登录 UI 界面

聊天效果预览

以下是一些聊天效果的展示,包括群聊对话、私聊对话和图片生成的例子:

群聊1 群聊
私聊
画图

开始部署

一、环境准备

  • 一台服务器或长期开启的 PC。
  • OpenAI 账号及生成的 SECRET KEY
  • 一个微信账号。

注:OpenAI 的域名 https://api.openai.com 在国内可能无法访问,需自行解决 API 访问问题。推荐使用国内代理如 https://api.v3.cm/register?aff=5KuW

二、配置

  1. 克隆代码到本地:

    git clone https://github.com/code-innovator-zyx/wechat-gptbot
    cd wechat-gptbot
  2. 执行初始化:

    make init
    

    执行完成后你将看到三个文件

  • /config/config.json:机器人的基础配置文件。
  • /config/prompt.conf:OpenAI 模型的提示语文件。
  • /config/cron.json: 定时执行插件计划
  1. 根据你个人信息修改配置文件config.json 和 提示词文件prompt.conf
  • proxy_url:访问 OpenAPI 接口的代理地址。
  • auth_token:OpenAI 官网生成的 SECRET KEY
  • trigger_prefix:微信对话中触发 AI 回复的前缀。
  • context_status:开启上下文聊天功能。
  1. 运行服务,你可以选择两种运行方式:

    # 1本地运行
    make local
    
    # 2 docker运行
    make docker

首次执行时,机器人会提示扫码登录微信。

  • 登录完成后,系统会生成一个 token.json 文件,用于保存当前的微信登录状态,避免每次运行都需要

wechat-gptbot's People

Contributors

code-innovator-zyx avatar

Stargazers

 avatar 陈高朋 avatar  avatar 姚木木 avatar XCATX avatar dorthl avatar caicai avatar Jun.wan avatar dydhyh avatar  avatar www avatar 朱连杰 avatar  avatar  avatar Esword618 avatar Clover614 avatar  avatar FFYzz avatar  avatar Zhongxuan Wang avatar  avatar  avatar  avatar iioooiiaaoo avatar  avatar  avatar Haru avatar Brightest08 avatar Fisher Alone avatar Tom喵 avatar hirak0 avatar  avatar quoyle avatar 凌 avatar  avatar  avatar  avatar Godfiry avatar  avatar Steven avatar jonn avatar  avatar 清风徐来 avatar caoler avatar  avatar  avatar °Yolo avatar  avatar  avatar  avatar  avatar  avatar  avatar itzhang89 avatar  avatar  avatar koma avatar  avatar BlackWatch avatar  avatar Somnus.M avatar Ge Qingyun avatar ox avatar  avatar  avatar 卡酷多 avatar BruceNong avatar 匡匡 avatar 爱戮戮 avatar huopijiu avatar Leo avatar Noctis avatar  avatar nobita avatar 張語涵 avatar  avatar icychick avatar  avatar 莫辰风 avatar  avatar 孙海洋 avatar  avatar Mzs avatar Milo avatar  avatar  avatar Jaya avatar nathaniel_max avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar flyhu avatar  avatar  avatar DiegoYoung avatar

Watchers

 avatar  avatar Haru avatar

wechat-gptbot's Issues

Bug: 群聊中不能正常按照预期走生成图片的逻辑

我又来了: )

./core/handler/handler.go:160
checkCreateImage() 这个函数在群聊中裁剪去@xx后还有个微信自带的空格导致返回值永远是false,需要在这里再一次去掉开头的空白字符

func checkCreateImage(msg *openwechat.Message) bool {
	msg.Content = strings.TrimSpace(msg.Content)
	if strings.HasPrefix(msg.Content, config.C.Gpt.ImageConfig.TriggerPrefix) {
		return true
	}
	return false
}

Error: 私聊对单正常,群聊报错下标越界,信息见详情

感谢作者开源~

panic: runtime error: slice bounds out of range [7:5]

goroutine 13 [running]:
wechat-gptbot/core/handler.checkMessageType(0xc00013ea00)
        /root/wechat-gptbot/core/handler/handler.go:138 +0x491
wechat-gptbot/core/handler.NewMessageMatchDispatcher.func2(0x0?)
        /root/wechat-gptbot/core/handler/handler.go:39 +0x13
github.com/eatmoreapple/openwechat.(*MessageMatchDispatcher).Dispatch(0xc000024360, 0xc00013ea00)
        /root/go/pkg/mod/github.com/eatmoreapple/[email protected]/message_handle.go:113 +0xa6
main.main.(*MessageMatchDispatcher).AsMessageHandler.func1(0xc00015c000?)
        /root/go/pkg/mod/github.com/eatmoreapple/[email protected]/message_handle.go:237 +0x1d
github.com/eatmoreapple/openwechat.(*Bot).syncCheck(0xc00015c000)
        /root/go/pkg/mod/github.com/eatmoreapple/[email protected]/bot.go:266 +0x273
github.com/eatmoreapple/openwechat.(*Bot).webInit.func1()
        /root/go/pkg/mod/github.com/eatmoreapple/[email protected]/bot.go:183 +0x58
created by github.com/eatmoreapple/openwechat.(*Bot).webInit in goroutine 1
        /root/go/pkg/mod/github.com/eatmoreapple/[email protected]/bot.go:178 +0x379

关于wx保活的讨论反馈

作者好呀~

你试过在不配置 自动发消息 & 长时间静默 时掉线情况如何吗?
以前版本老代码关注公众号发消息的时候我就没配也自然没关注,我布在服务器上可能因为网络环境比较稳定所以感觉还好没怎么掉线;
现在隔一分钟给“文件传输助手”发一条心跳消息对新注册的wx小号来说其实有点危险,我已被tx禁言 😿 ;

尚不清楚tx他是怎么检测的,频率 or 关键词?;
但我觉得不如让用户可配开关传入几个变量控制 KeepAlive() 开关乃至间隔;
其实我觉得可以接入push服务同样让用户配置渠道,监听 openwecaht 提供的 Alive() 如果掉线了先走 NewFileHotReloadStorage() 热登录不行再走扫码重连的逻辑,把当前状态、流程flow和需要登录的二维码转码通过push服务发给用户扫码,当然现在的web服务如果用户能访问的情况下也可以自己去扫码;


仅做讨论,不是给你加需求啊,不是(jiushi 🤣

貌似配置文件有问题

config.json文件好像有问题,docker一直无法正确启动,错误如下:
读取配置文件失败,请检查配置文件 config.json 的格式, 错误信息: invalid character '"' after object key:value pair
应该是第13行和16行少了逗号

小白求助:编译go项目不成功

github上有许多微信机器人的项目,由于微信不断升级,过去的项目很多都不能使用了。而您的项目看起来很好用,为您的分享精神点赞!
我是编程小白,只会写python。我现在使用一台window电脑,使用cygwin64终端运行您的makefile文件。在解决了前序问题后,运行下列代码时:

fi
@# 编译 Go 项目
@if go build .; then
echo "项目构建成功";
else
echo "项目构建失败,请检查错误信息";
exit 1; \

出现了没法展开的报错:

runtime/cgo
runtime/cgo: C:\Program Files\Go\pkg\tool\windows_amd64\cgo.exe: exit status 2
项目构建失败,请检查错误信息
make: *** [makefile:35: local] Error 1

我电脑上安装了python、go,并且都有环境变量,请问我应该如何找到报错信息,或者直接解决问题呢,非常感谢您。

微信桌面版到底安全性如何

用itchat时会被限制,也看到很多群里的案例说微信桌面版被限制了,相比较其他hook,ipad协议等,微信桌面版安全性如何?真能长期使用吗?

每天定时往配置的群里发消息[早安/晚安]

每天定时往配置的群里发消息,提高群内存在感,提高利用率
消息可以是:

  1. 基于特定提示词的消息[定制化早安/晚安...]
  2. 基于访问指定的配置接口后,再基于特定提示词,产生消息[定制化早上热点新闻...]

大佬觉得如何

登陆以后回复报错了

1 【🤖】:1
2 抱歉,出错了,请稍后重试~
3 【🤖】:6
4 抱歉,出错了,请稍后重试~
5 【🤖】:
=====🤖=======
{"func":"wechat-gptbot/core/gpt.(*openAiClient)/openai.go:(75)","level":"info","msg":"openAIClient.CreateChatCompletion err=invalid character '<' looking for beginning of value\n","timestamp":"2024-05-22 12:08:58"}
[text] Response: 抱歉,出错了,请稍后重试~

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.