【ChatGPT】基于GO语言实现的微信聊天和图片生成机器人

这篇具有很好参考价值的文章主要介绍了【ChatGPT】基于GO语言实现的微信聊天和图片生成机器人。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ChatGPT-DreamStudio WeChat Robot

🎨基于GO语言实现的微信聊天和图片生成机器人🎨

个人微信接入ChatGPT,实现和GPT机器人互动聊天,同时支持基于文本生成图像。支持私聊回复和群聊艾特回复。

GitHub源代码地址

实现功能

  • GPT机器人模型热度可配置
  • 提问增加上下文&指令清空上下文
  • DreamStudio图像生成模型参数可配置
  • 可设定图像生成触发指令
  • 机器人私聊回复&机器人群聊@回复
  • 好友添加自动通过可配置

实现机制

  1. 利用微信A作为机器人扫码登录程序模拟的微信电脑端,程序后端调用API接口进行文本回复和图片生成。其他微信账号与微信A聊天实现微信个人机器人功能。基于openwechat开源仓库实现

  2. 基于openai官网提供的GPT API,实现文本交互功能,每个新账号前三个月有18美元免费额度。

  3. 基于stability官网提供的DreamStudio API,实现图像生成功能,每个账号注册送500张图像生成免费额度,玩玩基本够用了,不够的话10$可购买5000张。

GPT的官方文档和详细参数示例 。

DreamStudio的官方文档和详细参数示例 。

使用前提

  • 有openai账号,并且创建好api_key,注册事项可以参考此文章 。
  • 有dreamstudio.ai账号,并且创建好api_key
  • 微信必须实名认证。最好用小号

注意事项

  • 项目仅供娱乐,滥用可能有微信封禁的风险,请勿用于商业用途。
  • 请注意收发敏感信息,本项目不做信息过滤。
  • dreamstudio图像生成 仅对英文的支持比较好

结果展示

docker运行

使用docker快速运行本项目。

1.基于配置文件挂载运行(推荐)
# 1. 创建目录
$ mkdir -p /data/openai
$ cd /data/openai
# 2. 创建配置文件
$ touch config.json
# 3. 编辑配置文件 ...  配置内容粘贴下文 【配置说明】并按需修改
$ vim config.json
# 4. 拉取镜像
$ docker run -dti --name wechatbot -v /data/openai/config.json:/app/config.json  yinqishuo/wechatbot:latest
# 5. 进入容器内部,打开日志文件扫码登陆
$ docker exec -it wechatbot bash 
$ tail -f -n 50 /app/run.log 

# 操作出错后删除容器的操作
$ docker stop wechatbot
$ docker remove wechatbot

# 退出容器
$ exit

其中配置文件参考下边的配置文件说明。

2.基于环境变量运行
# 运行项目,环境变量参考下方配置说明
$ docker run -itd --name wechatbot --restart=always \
 -e GPTAPIKEY=换成你的GPT key \
 -e AUTO_PASS=false \
 -e SESSION_TIMEOUT=60s \
 -e MODEL=text-davinci-003 \
 -e MAX_TOKENS=512 \
 -e TEMPREATURE=0.9 \
 -e REPLY_PREFIX=我是来自机器人回复: \
 -e SESSION_CLEAR_TOKEN=下个问题 \
 -e DREAMSTDIO_APIKEY=换成你的dreamstudio key \
 -e ENGINE_ID=stable-diffusion-v1-5 \
 -e PICTURE_WIDTH=512 \
 -e PICTURE_HEIGHT=512 \
 -e STEPS=30 \
 -e CFG_SCALE= 7 \
 -e PICTURE_TOKEN=生成图片 \
 yinqishuo/wechatbot:latest

#进入容器内部,打开日志文件扫码登陆
$ docker exec -it wechatbot bash 
$ tail -f -n 50 /app/run.log 

# 退出容器
$ exit

运行命令中映射的配置文件参考下边的配置文件说明。

3.配置说明

模板:

{
  "gpt_api_key": "你的gpt api key",
  "auto_pass": true,
  "session_timeout": 60,
  "max_tokens": 1024,
  "model": "text-davinci-003",
  "temperature": 1,
  "reply_prefix": "来自机器人回复:",
  "session_clear_token": "我要问下一个问题了",

  "dreamstdio_api_key":"你的dreamstdio账号api_key",
  "engine_id":"stable-diffusion-v1-5",
  "picture_width":512,
  "picture_height":512,
  "steps":30,
  "cfg_scale":7,
  "picture_token":"生成图片"
}

参数说明:

"gpt_api_key":						# openai账号里设置的api_key
"auto_pass":# 是否自动通过好友添加
  "session_timeout": 60,            # 会话超时时间,默认60秒,单位秒,在会话时间内所有发送给机器人的信息会作为上下文
  "max_tokens": 1024,               # GPT响应字符数,最大2048,默认值512。会影响接口响应速度,字符越大响应越慢
  "model": "text-davinci-003",      # GPT选用模型,默认text-davinci-003,具体选项参考官网训练场
  "temperature": 1,                 # GPT热度,0到1,默认0.9,数字越大创造力越强,但更偏离训练事实,越低越接近训练事实
  "reply_prefix": "来自机器人回复:", # 私聊回复前缀
  "session_clear_token": "清空会话"  # 会话清空口令,默认`下个问题`
  "dreamstdio_api_key":"你的dreamstdio账号api_key",     #dreamstdio账号的api_key
  "engine_id":"stable-diffusion-v1-5",     			  #dreamstdio模型的名称
  "picture_width":512,								  #生成图片的宽度,长度,默认512*512
  "picture_height":512,								#要求为64的倍数,且>=128,尺寸越大消耗的credits越多
  "steps":30,										#代表模型的渲染步数,越高图片越精细,所需的渲染时间也越长,默认为30,数值越大消耗的credits越多;
  "cfg_scale":7,									#表示生成图像与文本提示的相似度,越高越像
  "picture_token":"生成图片"						  #生成图像的触发口令

源码运行

适合了解go语言编程并想进行源码修改的同学,

# 获取项目
$ git clone https://github.com/yinqishuo/chatgpt-dreamstudio_wechat_robot

# 进入项目目录
$ cd chatgpt_wechat_robot

# 复制配置文件
$ cp config.dev.json config.json

# 添加依赖
$ go mod tidy

# 启动项目
$ go run main.go

# 若想编译为可执行文件
$ go run main.go

# 若想打包成docker镜像,需安装Docker ,建议在linux环境下打包,镜像名称为wechatbot
$ make docker

# 执行镜像,步骤如上

常见问题

如无法登录login error: write storage.json: bad file descriptor
删除掉storage.json文件重新登录。

如无法登录login error: wechat network error: Get "https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage": 301 response missing Location header
一般是微信登录权限问题,先确保PC端能否正常登录。

其他无法登录问题
尝试删除掉storage.json文件,结束进程(linux一般是kill -9 进程id)之后重启程序,重新扫码登录。
如果为docket部署,Supervisord进程管理工具会自动重启程序。

机器人一直答非所问
可能因为上下文累积过多。切换不同问题时,发送指令:启动时配置的session_clear_token字段。会清空上下文

https://link.zhihu.com/?target=https%3A//github.com/Maks-s/sd-akashic

图像生成技巧

想让 AI 图像生成器创作出精准高质的图像,填写准确合适的文本提示词十分重要。

  1. 不要只输入一个简单的词语(raw prompt),如 Panda(熊猫)、A warrior(战士)等,这样生成的图像会缺少美感和艺术性。
  2. 使用风格提示词能让图像更具艺术性。在提示词中加入艺术风格的关键词,如 Realistic(写实)、Oil painting(油画)、Pencil drawing(铅笔画)、Concept art(概念艺术)等;此外写实风格的提示词有多重表达形式,如[ a photo of + raw prompt ]、[ a photograph of + raw prompt ]、[ raw prompt,hyperrealistic ]、[ raw prompt,realistic ]。
  3. 使用艺术家名称让风格更具像或保持风格一致。比如想表现抽象艺术,可以使用[made by Pablo Picassoa]或者 [ raw prompt,Picassoa]。还可以同时输入多名艺术家,效果会更加有趣。
  4. 最终修饰词。在文本末尾加上的一个修饰词,使图像更符合你想要的效果。比如想要逼真的灯光,可以加上“Unreal Engine”,展现精密细节加上“4K”或“8K”,想要更有艺术性可以加上“trending on artstation”等。

① Stable Diffusion Artist Studies

网址: https://proximacentaurib.notion.site/e2537cbf42c34b7e9a9a4126f81dfd0d

一个由国外网友收集建立的艺术家风格概览表,找到你喜欢的风格后在自己的提示词中加上对应艺术家的名字,就能生成类似风格的图片。

② Stable Diffusion prompting cheatsheet

网址: https://moritz.pm/posts/parameters

一个简短的提示词列表,里面列举了如果你想要实现 3D、精致细节、光照、大环境等效果,应该使用哪些关键词。

③ Stable Diffusion Akashic Records

网址: https://github.com/Maks-s/sd-akashic

一个专业的研究资料库,收集了关于模型原理、艺术风格、提示词、使用技巧和其他有用的工具,适合想深入了解文本-图像扩散模型的人阅读。

本段内容复制于AI绘画神器:DreamStudio - 知乎 (zhihu.com)

友情提示

本项目是 fork 他人的项目来进行学习和使用,请勿商用,可以下载下来做自定义的功能。
项目基于eatmoreapple/openwechat 、ZYallers/chatgpt_wechat_robot 、qingconglaixueit/wechatbot开发。文章来源地址https://www.toymoban.com/news/detail-494390.html

到了这里,关于【ChatGPT】基于GO语言实现的微信聊天和图片生成机器人的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于chatgpt-on-wechat的微信个人对话机器人搭建

    现在gpt很火,git中大佬们都创建了很多高星项目,我这里选用了chatgpt-on-wechat(项目地址:https://github.com/zhayujie/chatgpt-on-wechat),这个项目在扩展时也很舒服,大家可以去拉下来看看,学习源码才能方便后续的扩展 国内服务:前置条件需要走代理(这个不方便说,项目中也有对应的方案,大家

    2024年02月13日
    浏览(39)
  • 基于Uniapp+SSM+Vue的微信小程序设计与实现

    摘要:本文介绍了基于Uniapp+SSM+Vue技术栈开发的微信小程序——走失人员报备平台的设计、实现与优化。该平台旨在为志愿者提供便捷的走失人员信息收集与报备功能,助力社会公益事业的发展。 :Uniapp;SSM;Vue;微信小程序;走失人员报备 一、引言 介绍走失人员问

    2024年01月17日
    浏览(43)
  • 基于SpringBoot+Vue+uniapp微信小程序的微信小程序书店的详细设计和实现

    💗 博主介绍 :✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅 👇🏻 2023-2024年最值得选的微信小程序毕业设

    2024年03月17日
    浏览(71)
  • Go 语言体系下的微服务框架选型: Dubbo-go

      一、Go 微服务体系发展与选型 随着微服务技术的快速发展,其在各个领域都形成了一系列事实标准,在 Kubernetes 和容器技术加持下,云原生微服务已经成为了主流解决方案。而 Go 语言作为云原生领域最受欢迎的开发语言,正被越来越多的企业作为微服务开发的首选语言,

    2023年04月10日
    浏览(41)
  • Go 语言体系下的微服务框架选型:Dubbo-go

    随着微服务技术的快速发展,其在各个领域都形成了一系列事实标准,在 Kubernetes 和容器技术加持下,云原生微服务已经成为了主流解决方案。而 Go 语言作为云原生领域最受欢迎的开发语言,正被越来越多的企业作为微服务开发的首选语言,其中比较流行的包括 Go-micro、Go

    2024年01月21日
    浏览(38)
  • 手把手教你搭建微信聊天机器人系列(三):搭建对接文心一言(ERNIE-Bot大模型)接口的微信聊天机器人

            上一章介绍了eggjs+wechaty搭建一个简单的微信聊天机器人,只是实现了简单的回复,这一章我们将对接ERNIE-Bot接口,实现智能回复。         我们在上一章代码基础上进行调整,首先我们要加入access_token的请求逻辑。第一章我们说过,请求需要使用应用对应的

    2024年02月03日
    浏览(57)
  • 【毕业设计之微信小程序系列】基于APP的微信点餐小程序的设计与实现

            本文介绍了一种基于APP的微信点餐小程序的设计与实现方法。该系统利用微信公众号作为用户入口,用户可以通过微信扫码进入点餐系统,选择菜品、下单、支付等操作。系统后台使用云服务器进行数据存储和处理,提高了系统的可靠性和安全性。         在

    2024年02月11日
    浏览(50)
  • 基于微信小程序的微信社团小程序的设计与实现(源码+lw+部署文档+讲解等)

    🌞 博主介绍 :✌全网粉丝15W+,CSDN特邀作者、211毕业、高级全栈开发程序员、大厂多年工作经验、码云/掘金/华为云/阿里云/InfoQ/StackOverflow/github等平台优质作者、专注于Java、小程序技术领域和毕业项目实战,以及程序定制化开发、全栈讲解、就业辅导✌🌞 👇🏻 精彩专栏

    2024年02月22日
    浏览(45)
  • 使用chatgpt实现微信聊天小程序(秒回复),github开源(附带链接)

    我在前一段时间突发奇想,就使用java来调用chatgpt的接口,然后写了一个简单小程序,也上了热榜第一,java调用chatgpt接口,实现专属于自己的人工智能助手,事实上,这个程序毛病挺多的,最不能让人接受的一点就是返回速度非常缓慢(即使使用非常好的外网服务器)。 现在,

    2024年02月03日
    浏览(43)
  • 微信公众号订阅号(未认证)接入Chatgpt实现AI聊天(代码已开源)

    众说周知,微信未经过认证的订阅号在接口权限上面有非常大的限制,这里主要做的事是:用户通过关注订阅号发送消息到后台,处理调用chatgpt接口,缓存到redis中。因为chatgpt接口延迟问题,如果微信三次回调均没有收到chatgpt回复,就将数据存到redis通过openid 和msgid绑定用户

    2024年04月17日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包