1 分钟高效集成 ChatGPT,Stable Diffusion 等 AIGC 模型最强教程

1 分钟能做什么?集成 ChatGPT 到自己的公众号,小程序或者 APP?集成各种形式的 Stable Diffusion,让 AIGC 帮助自己的项目更有趣,更生动?本教程将会教大家如何 1 分钟高效集成 ChatGPT,Stable Diffusion 等 AIGC 模型到自己的项目中。(文末有视频和代码案例)

#1 分钟集成 ChatGPT

  1. 1. 注册并登录 https://aigcaas.cn网站

  2. b86760da3c041f7261356df36d361e72.png

  3. 2. 点击左侧 API Explorer,并选择分类“聊天机器人”,选择应用 ChatGPT,并选择Chat Completion:

  4. 21ae5f8e99910213e8d0a5b8e86fc6dd.png

    3. 在中间,按照提示的格式,输入对应的参数信息,例如:[{"role":"user","content":"你好"}],并点击右侧的在线调用→发送请求按钮:

    c8f0adf75d00327b11798ec3054fe0ff.png

  5. 稍等片刻,即可看到接口完成调用,已经获得请求结果。如果想要进行流式响应,可以在流式响应输入框中输入stream,例如:

  6. 5c75ceb054cdcb4b746f0e95098313f8.png

  7. 4. 点击右侧的案例代码,根据自己需要获得对应的案例代码:0661c61424943a7a00129433b36bee57.png

  8. 5. 此时,可以将代码复制到本地,对代码的第12行-13行进行修改:7e6a15b187a0b0ca34bb208b79bf5bae.png

  9.     点击页面左侧密钥列表→新建,创建密钥信息:c94d09c2cf91b453ec361bf4af00dfeb.png

  10.   将密钥信息对应复制到代码12-13行:97a4423caab2cacc94b31be9991d4091.png

  11. 6. 完成粘贴之后,即可进行代码的测试,例如执行代码(可能涉及到一些依赖的安装,不同语言安装依赖方式略有不同,可以自行安装依赖):39839278e2fd6c8121892e4a751307ee.png

  12.    完成调试之后,即可和自己的项目做集成。当然也可以根据自己的需求对参数内容进行相对应的优化和调整。

#1 分钟获取 Stable Diffusion

Stable Diffusion 是目前非常火热的文生图工具,根据文字即可生成图片, AIGCaaS 平台拥有数十款 Stable Diffusion 应用,例如以哈士奇作为关键词,进行不同类型,不同风格的图像生成,效果如下:

d818db1fa9750cc6d0b4ca58ca45cea7.png

接口获取的方式与 ChatGPT 基本一致:

  1. 1. 点击左侧 API Explorer,并选择分类“图像生成”,选择一个自己需要的场景,例如“Open Journey”:98d0bb580345671f8a06b47d7bad528c.png

  2. 2. 输入提示词,例如:1girl, white hair, golden eyes, beautiful eyes, detail, flower meadow, cumulonimbus clouds, lighting, detailed sky, garden,并点击发送请求按钮:4856f9de7e15742c7722ac3a78132fce.png

  3.     多次生成,超看效果:ee7bc514d66ab10e75755e1bda9938cb.png

  4.     当然,不同模型的表现可能不同,例如二次元生成的效果:78198c6b3139fe9e10eaa96817f9291e.png

  5. 3. 完成图片的生成,可以点击右侧的案例代码,根据自己需要获得对应的案例代码:827120b228c55e064fee9ce8832a5a31.png

  6. 4. 同样要对13-14行代码进行密钥信息的替换,替换完成即可在本地进行代码的运行:此时,通过返回的链接地址,下载数据即可:3baf1e5b08f439d2c2bfeded1b850588.png

#如何与微信公众号进行集成

以 Python 语言为例,通过 Flask 框架作为后端框架:

# coding:utf-8
import os
import time
import json
import redis
import random
import base64
import hashlib
import logging
import requests
import xmltodict
import urllib.parse
import urllib.request
from flask import Flask, request, abort, Response, render_template_string# 获取随机字符串
random_str = lambda count=100: "".join(random.sample('zyxwvutsrqponmlkjihgUIOPLKJHGFDSAZXCVBNM' * 10, count))# 日志配置
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)# 常量
WECHAT_TOKEN = "公众号 Token"
WECHAT_APPID = "公众号 APPID"
WECHAT_APPSECRET = "公众号 APP Secret"
WECHAT_ENCODINGAESKEY = '公众号 Encoding AES Key'
secret_id = 'AIGCaaS 平台密钥'  # 密钥信息
secret_key = 'AIGCaaS 平台密钥'  # 密钥信息db_config = {"redis": {"server": "192.168.211.1","port": 6379,}
}app = Flask(__name__)redis_conn = redis.Redis(host=db_config["redis"]["server"], port=db_config["redis"]["port"])# 签名对象
getSha256 = lambda content: hashlib.sha256(content.encode("utf-8")).hexdigest()getTextResponse = lambda xml_dict, response_data: {"xml":{"ToUserName": xml_dict.get("FromUserName"),"FromUserName": xml_dict.get("ToUserName"),"CreateTime": int(time.time()),"MsgType": "text","Content": response_data}
}def chatgpt(user, content):try:messages = redis_conn.get('user-%s' % (user))messages = json.loads(messages.decode("utf-8")) if messages else []messages.append({"role": "user", "content": content})redis_conn.setex('user-%s' % (user), 60 * 60 * 24 * 7, json.dumps(messages))url = "https://api.aigcaas.cn/product/%s/api/%s" % ('chatgpt_chat', 'chat_com')# 构建请求头nonce = str(random.randint(1, 10000))timestamp = str(int(time.time()))headers = {'SecretID': secret_id,'Nonce': nonce,'Token': getSha256(("%s%s%s" % (timestamp, secret_key, nonce))),'Timestamp': timestamp,'Content-Type': 'application/json'}# 构建请求 bodydata = {"messages": messages}# 获取响应response = requests.request("POST", url, headers=headers, data=json.dumps(data))result = json.loads(response.text)logger.debug("result: %s" % result)if result.get("status") == "Error":redis_conn.delete('user-%s' % (user))redis_conn.setex('user-last-text-message-%s' % user, 600, "系统检测到敏感信息,已经屏蔽,请重试")else:messages.append(result["choices"][0]["message"])messages = messages[-10:]redis_conn.setex('user-%s' % (user), 60 * 60 * 24, json.dumps(messages))return result["choices"][0]["message"]["content"]except Exception as e:logger.error(e)return e@app.route("/mp", methods=["GET", "POST"])
def wechat():# 接收微信服务器发送参数signature = request.args.get("signature")timestamp = request.args.get("timestamp")nonce = request.args.get("nonce")logger.debug([signature, timestamp, nonce])if not all([signature, timestamp, nonce]):abort(400)li = [WECHAT_TOKEN, timestamp, nonce]li.sort()tmp_str = "".join(li)sign = hashlib.sha1(tmp_str.encode("utf-8")).hexdigest()  # 进行sha1加密, 得到正确的签名值# 将自己计算的签名值, 与请求的签名参数进行对比, 如果相同, 则证明请求来自微信if signature != sign:abort(403)if request.method == "GET":return request.args.get("echostr")xml_str = request.dataif not xml_str:abort(400)# 对xml字符串进行解析成字典xml_dict = xmltodict.parse(xml_str)xml_dict = xml_dict.get("xml")logger.debug('xml_str: %s' % xml_str)logger.debug('xml_dict: %s' % xml_dict)user = xml_dict.get("FromUserName")# 新的信息处理resp_dict = getTextResponse(xml_dict, "感谢您关注 AIGC Hub")if xml_dict.get("MsgType") == "text":response_data = chatgpt(user, xml_dict.get("Content"))resp_dict = getTextResponse(xml_dict, response_data)resp_xml_str = xmltodict.unparse(resp_dict)logger.debug(resp_xml_str)return resp_xml_strif __name__ == '__main__':app.run(host='0.0.0.0', port=8000, debug=True, threaded=True)

整个项目非常简单:服务端接收到请求,将文字信息提取出来xml_dict.get("Content"),并通过chatgpt方法进行结果的获取,并将结果返回给用户。但是这里遇到一个比较尴尬的事情,因为 AIGC 模型往往运行时间会比较长,可能超过微信公众号的 5 秒钟要求,所以此处可以进行额外的处理:

  1. 1. 服务端接收到请求,将文字信息提取出来xml_dict.get("Content")

  2. 2. 异步调用chatgpt方法,如果 5 秒钟没有响应,则返回一个友好的提示:系统正在进行处理,请稍后回复"继续"查看结果,如果获得到了结果,则进行结果的返回

  3. 3. 如果没有拿到结果,用户稍后发送继续时,系统将结果返回给客户端

整体的实现逻辑为:

# coding:utf-8
import os
import time
import json
import redis
import random
import base64
import hashlib
import logging
import requests
import xmltodict
import urllib.parse
import urllib.request
from flask import Flask, request, abort, Response, render_template_string
from concurrent.futures import ThreadPoolExecutor# 创建线程池执行器
executor = ThreadPoolExecutor(2)# 获取随机字符串
random_str = lambda count=100: "".join(random.sample('zyxwvutsrqponmlkjihgUIOPLKJHGFDSAZXCVBNM' * 10, count))# 日志配置
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)# 常量
WECHAT_TOKEN = "公众号 Token"
WECHAT_APPID = "公众号 APPID"
WECHAT_APPSECRET = "公众号 APP Secret"
WECHAT_ENCODINGAESKEY = '公众号 Encoding AES Key'
secret_id = 'AIGCaaS 平台密钥'  # 密钥信息
secret_key = 'AIGCaaS 平台密钥'  # 密钥信息db_config = {"redis": {"server": "192.168.211.1","port": 6379,}
}app = Flask(__name__)redis_conn = redis.Redis(host=db_config["redis"]["server"], port=db_config["redis"]["port"])# 签名对象
getSha256 = lambda content: hashlib.sha256(content.encode("utf-8")).hexdigest()getTextResponse = lambda xml_dict, response_data: {"xml":{"ToUserName": xml_dict.get("FromUserName"),"FromUserName": xml_dict.get("ToUserName"),"CreateTime": int(time.time()),"MsgType": "text","Content": response_data}
}def chatgpt(user, content):try:messages = redis_conn.get('user-%s' % (user))messages = json.loads(messages.decode("utf-8")) if messages else []messages.append({"role": "user", "content": content})redis_conn.setex('user-%s' % (user), 60 * 60 * 24 * 7, json.dumps(messages))url = "https://api.aigcaas.cn/product/%s/api/%s" % ('chatgpt_chat', 'chat_com')# 构建请求头nonce = str(random.randint(1, 10000))timestamp = str(int(time.time()))headers = {'SecretID': secret_id,'Nonce': nonce,'Token': getSha256(("%s%s%s" % (timestamp, secret_key, nonce))),'Timestamp': timestamp,'Content-Type': 'application/json'}# 构建请求 bodydata = {"messages": messages}# 获取响应response = requests.request("POST", url, headers=headers, data=json.dumps(data))result = json.loads(response.text)logger.debug("result: %s" % result)if result.get("status") == "Error":redis_conn.delete('user-%s' % (user))redis_conn.setex('user-last-text-message-%s' % user, 600, "系统检测到敏感信息,已经屏蔽,请重试")else:messages.append(result["choices"][0]["message"])messages = messages[-10:]redis_conn.setex('user-%s' % (user), 60 * 60 * 24, json.dumps(messages))redis_conn.setex('user-last-text-message-%s' % user, 600, result["choices"][0]["message"]["content"])except Exception as e:logger.error(e)redis_conn.delete('user-%s' % (user))def get_access_token():url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s' % (WECHAT_APPID, WECHAT_APPSECRET)response_data = urllib.request.urlopen(url).read().decode("utf-8")logger.debug("response_data: %s" % response_data)return json.loads(response_data)["access_token"]@app.route("/mp", methods=["GET", "POST"])
def wechat():# 接收微信服务器发送参数signature = request.args.get("signature")timestamp = request.args.get("timestamp")nonce = request.args.get("nonce")logger.debug([signature, timestamp, nonce])if not all([signature, timestamp, nonce]):abort(400)li = [WECHAT_TOKEN, timestamp, nonce]li.sort()tmp_str = "".join(li)sign = hashlib.sha1(tmp_str.encode("utf-8")).hexdigest()  # 进行sha1加密, 得到正确的签名值# 将自己计算的签名值, 与请求的签名参数进行对比, 如果相同, 则证明请求来自微信if signature != sign:abort(403)if request.method == "GET":return request.args.get("echostr")xml_str = request.dataif not xml_str:abort(400)# 对xml字符串进行解析成字典xml_dict = xmltodict.parse(xml_str)xml_dict = xml_dict.get("xml")logger.debug('xml_str: %s' % xml_str)logger.debug('xml_dict: %s' % xml_dict)user = xml_dict.get("FromUserName")# 对超时信息进行处理resp_dict = Noneif xml_dict.get("MsgType") == "text" and '继续' == xml_dict.get("Content").strip():resp_dict = getTextResponse(xml_dict, '系统还在处理中,烦请再等一下发送"继续"查看结果')text_status = redis_conn.get('user-last-text-message-status-%s' % user)if text_status:response_data = redis_conn.get('user-last-text-message-%s' % user)if response_data:redis_conn.delete('user-last-text-message-status-%s' % user)redis_conn.delete('user-last-text-message-%s' % user)resp_dict = getTextResponse(xml_dict, response_data.decode("utf-8"))else:resp_dict = None# 新的信息处理if not resp_dict:redis_conn.delete('user-last-text-message-status-%s' % user)redis_conn.delete('user-last-text-message-%s' % user)# 配置默认信息resp_dict = getTextResponse(xml_dict, "感谢您关注 AIGC Hub")if xml_dict.get("MsgType") == "text":redis_conn.setex('user-last-text-message-status-%s' % user, 600, '1')executor.submit(chatgpt, user, xml_dict.get("Content"))response_data = '系统正在进行处理,请稍后回复"继续"查看结果'for i in range(1, 23):time.sleep(0.2)temp_response_data = redis_conn.get('user-last-text-message-%s' % user)if temp_response_data:response_data = temp_response_data.decode("utf-8")redis_conn.delete('user-last-text-message-status-%s' % user)breakresp_dict = getTextResponse(xml_dict, response_data)resp_xml_str = xmltodict.unparse(resp_dict)logger.debug(resp_xml_str)return resp_xml_strif __name__ == '__main__':app.run(host='0.0.0.0', port=8000, debug=True, threaded=True)

#总结

上面为大家介绍了如何用 1 分钟获取多种形式的 AIGC 应用,包括不限于 ChatGPT,Stable Diffusion 等,并通过与微信公众号集成的方式,为大家进行了简单的代码分享。当然,除了与公众号的集成还可以与小程序的集成,还可以与其他更多种形式的应用进行集成,AIGCaaS 平台系统为开发者提供开箱即用的 AIGC 应用 API,可以让开发者更简单,更方便,更快速的使用多种形式的 AIGC 应用。

常见问题:

  1. 1. 为什么我生成的 Stable Diffusion 图片是黑色的?在某些时候,系统进行了敏感检测,如果生成的图片存在敏感信息,系统会自动进行屏蔽;

  2. 2. 这个 AIGCaaS 项目收费么?AIGCaaS 为开发者提供了大量的低价 API,注册即赠送大量的试用与体验机会(以 ChatGPT 为例,可以体验大概2500次),即便超过免费体验此时,开发者也可以申请永久免费计划,进行长期的“薅羊毛”;

  3. 3. 使用过程中出现问题,如何联系技术支持?技术支持微信号:envless,有任何问题随时联系;

AIGC 爱好者交流群

e7653fbfefb9028b2a62d27050332e56.jpeg

------

我们创建了一个高质量的技术交流群,与优秀的人在一起,自己也会优秀起来,赶紧点击加群,享受一起成长的快乐。另外,如果你最近想跳槽的话,年前我花了2周时间收集了一波大厂面经,节后准备跳槽的可以点击这里领取!

推荐阅读

  • 谷歌打响全面反击战:AI重构搜索、新模型比肩GPT-4

  • Angular 16 正式发布,抢先体验指南

  • 关于并发编程与线程安全的思考与实践

··································

你好,我是程序猿DD,10年开发老司机、阿里云MVP、腾讯云TVP、出过书创过业、国企4年互联网6年。从普通开发到架构师、再到合伙人。一路过来,给我最深的感受就是一定要不断学习并关注前沿。只要你能坚持下来,多思考、少抱怨、勤动手,就很容易实现弯道超车!所以,不要问我现在干什么是否来得及。如果你看好一个事情,一定是坚持了才能看到希望,而不是看到希望才去坚持。相信我,只要坚持下来,你一定比现在更好!如果你还没什么方向,可以先关注我,这里会经常分享一些前沿资讯,帮你积累弯道超车的资本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/8723.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【起飞】让你电脑速度快到飞起的一些牛逼的设置整理【电脑卡顿反应慢等问题解决】

对于开发来说电脑的反应速度简直影响了思维的速度,要让电脑速度跟上我们的思维,提高工作效率,早点打卡下班回家陪老婆孩子哈哈 这篇文章主要对windows系统做的一些优化,是真的好用,仿佛在访问静态页面一样,…

【Redis】孔夫子旧书网爬虫接入芝麻代理IP:代理IP利用效率最大化

背景: 之前用过芝麻IP,写过这几篇文章 《【Python】芝麻HTTP代理系列保姆级全套攻略(对接教程自动领取每日IPIP最优算法)》 《【Python】记录抓包分析自动领取芝麻HTTP每日免费IP(成品教程)》 《爬虫增加代理池:使用稳…

高通410 随身WIFI刷入Debian系统(玩法合集)

引言 刚接触到这个项目是在b站上,刷到一位UP主的视频:https://b23.tv/xAFWiTF 其实现了在搭载高通410芯片的随身WIFI烧录linux系统,并在上面部署了chatGPT-Next网站服务。 本人参考的教程链接和其教程所有工具:https://pan.bai…

chatgpt赋能python:Python如何薅羊毛?

Python如何薅羊毛? 近年来,Python已经成为了越来越多程序员的首选编程语言。除了在技术领域得到广泛应用,Python还可以被用于一些非正当途径,比如薅羊毛。在这篇文章中,我们将会学习如何利用Python来薅羊毛。 什么是…

【ChatGPT】GPT实现原理大解析——看完就知道什么叫颠覆

文章目录 前言一、ChatGPT是什么?二、那么,如何计算下一个单词的概率?三, 什么是模型?四,如何制作能完成人类任务的模型五,神经网络总结 前言 ChatGPT 能够自动生成类似于人类写作的文本&#…

多平台发布文章怎么做?自媒体多平台发内容教程分享

目前很多小伙伴着手做自媒体全部都是在一些自媒体视频或是时尚博主的推荐下才了解到做自媒体可以为自己创造收入,刚开始做得时候或许只是会弄两三个账户,察觉收入也并不高,便不愿意去做相应的事情了,确实目前做自媒体的人太多了&a…

自媒体文章同步该怎么做?有什么办法可以一键同步到多自媒体平台

在自媒体行业当中,有很多人的苦恼就是应该如何将自己的创作内容同时发布在各大媒体上,应该进行什么样的步骤才能够进行同步。那我们需要在各大平台进行授权,才能够进行同时发布,不仅非常的繁琐,而且在管理账户方面更容…

自媒体一篇文章能多平台发布吗?

如今是全民自媒体时代,只要热爱创作,并且懂得网络知识的人们,就可以成为自媒体人,自媒体这个行业存在竞争,能否在竞争中脱引而出,能否利用自媒体平台赚钱,与个人眼光、写作水平以及所用工具存在…

头条发布文章如何一篇文章发布道30+自媒体平台?

很多从事自媒体工作的朋友都会借助工具来帮助自己工作,这种工具能批量发布30多个平台的工具,很多人都应该听说过头条号,也是一个著名的自媒体平台。许多作者已经在使用了,收入相当可观。许多自媒体工作室经营多个账号,…

自媒体平台批量文章采集

多个平台自媒体文章采集,今日头条、微信公众号、知乎、豆瓣、小红书这些自媒体平台明天都会产出海量的优质文章,通过对这些平台相关文章进行采集,能获取大量的热门素材,不管是自己创作还是内容分析,都十分便利。 多个平…

自媒体同篇文章多平台发布,自媒体人提高效率利器

写完文章发布后,也需要同步到其他平台。在这种重复发布的一个工作操作当中,我们可以同时发布到各个平台,这样会减少我们的宝贵创作时间。如果在没有一件同时发布之前,我们做自媒体行业是比较困难的。其中。也有这么一款软件&#…

自媒体原创文章多平台发布操作方法教程!

我相信很多自媒体朋友可能会有问题,因为他们已经注册了多个多媒体平台。在我们写完一篇文章后,我们需要将其逐一复制粘贴到每个平台的编辑器中。这么多的帐户没有多个平台的一键发布工具的帮助,我们每天都会登录该帐户。现在,让我…

自媒体人如何打造出爆文?这3种类型的文章最容易爆

爆文是一直是自媒体人的终极目标,要想打造出爆文却不是那么容易的事,借助热点无疑是热点爆文的一种速成法,今天就给大家分享几个自媒体爆文写作的技巧! 01 综合热点文 第一种就是综合热点文——热点话题有可预测性,也…

自媒体平台图文创作建议和技巧

自媒体博主在自媒体平台进行图文创作时,需要注意哪些方面才能创造出更好的内容获得更多的关注呢?今天跟大家分享自媒体创作中的一些图文创作建议和技巧。 一、确定目标受众 首先需要明确自己要传达的信息和目标受众。要考虑读者的兴趣、需求和阅读习惯&…

竟能秒出软文?突袭全球的ChatGPT会给媒体行业带来怎样的震荡?

从国外传出ChatGPT的消息以来,#可能被ChatGPT取代的10大职业#,#ChatGPT真能替代人吗#,#国内距离首个ChatGPT还有多远#等诸多话题热度极高。 一个人工智能工具罢了,为何引发众人关注? 1 功能强大 ChatGPT上知天文下知地理&#x…

小爱音箱接入chatgpt

文章目录 前言一、安装Homeassistant二、安装hacs三、集成XiaoMi Miot Auto、Node-RED Companion四、安装Node-Red五、导入json文件及配置节点六、查看小爱音箱输入输出的实体ID七、部署测试 前言 本次实现是通过搭建部署 homeassistant nodered mqtt 实现小爱音箱接入chatg…

ChatGPT神器!三步让你轻松阅读论文文档

引言 您是否曾经因为阅读论文而感到困难和无从下手?ChatDOC是一款专为您设计的人工智能工具,帮助您快速理解论文内容。通过上传文档,利用ChatGPT技术,您只需3个简单步骤,即可快速阅读论文,提高阅读效率。立…

ChatGPT 快速阅读论文:3 个步骤让你轻松阅读论文文档

ChatGPT 快速阅读论文:3 个步骤让你轻松阅读论文文档 一、引言二、什么是 ChatDOC三、如何使用 ChatDOC3.1 主要功能3.2 表格/文本分析3.3 人工智能对话最后附使用地址:本教程收集于:AIGC从入门到精通教程 一、引言 你是否曾经因为阅读论文而感到困难和无从下手?ChatDOC 是…

论文怎么写

论文是一种理性思维的表达方式,它要求具备一定的逻辑性和问题解决能力。论文的写作可以分为以下几个步骤: 1. 确定研究主题和问题:选择一个有足够探讨价值的研究主题,明确研究问题和目的,列出问题清单。 2. 确立研究目…