ChatGPT对接公众号遇到的一些问题记录

最近ChatGPT风头正热,乘着这波热度,我也将ChatGPT接入到了我的微信公众号中,你可以搜索“逐梦博客”体验相关ChatGPT的功能,如果你也想将ChatGPT接入自己的公众号但还不知道怎么做,可以阅读一下我之前的一篇关于ChatGPT对接公众号的文章:《如何将ChatGPT接入微信公众号》。

回到正题,之前在对接公众号的过程中也遇到了不少问题,并不是想象中的接完官方SDK就完事,现对这些问题做个记录,这里用的是node.js做处理的:

1、根据问题的不同,chatGPT的响应时间并不固定,微信为了保证用户的体验度,不可能让你长时间处理消息而不回复用户,所以有5秒消息自动回复限制,每5秒微信服务器未收到我们程序返回消息会进行二次消息推送,共三次,第三次还未返回消息,用户就会收到一条“该公众号提供的服务出现异常”的提示,那么我们应该怎么规避这个5s的限制呢?

我们可以通过缓存问题并引导用户二次提问的方式来解决,伪代码如下:

const cache = new Map();
const PENDING_TAG = 'PEDGING';
async function getAnswer(question) {
	const cachedAnswer = cache.get(question);
	if (cachedAnswer) {
		if (cachedAnswer === PENDING_TAG) {
			return '20s后再来问我';
		}
		return cachedAnswer;
	}
	cache.set(question, PENDING_TAG);
	const answer = await fetchAnswer(question);
	cache.set(question, answer);
	return answer;
}

2、ChatGPT返回的结果头尾有很多空格怎么处理?用正则全局替换:

let answer = answer.replace(/(^\s*|\s*$)/g, '');

3、ChatGPT可能相应markdown模板文本,微信公众号不支持渲染怎么办?用正则全局替换,这里只处理了代码和链接类文本:

// 处理代码
let answer = answer.replace(/`/g, '');

// 处理图片和链接
let answer = answer.replace(/\!?\[[^)]+\]\(([^)]+)\)/g, '$1');

4、ChatGPT响应文本中有连续多个换行,不紧凑还占字符怎么办?用正则全局替换:

let answer = answer.replace(/\n+/g, '\n');

5、ChatGPT响应字符过多,超出微信的字符限制,微信公众号提示“该公众号提供的服务出现故障,请稍后再试”怎么处理?

这个问题是大部分接入了ChatGPT的公众号会遇到,但是没有解决的问题,要解决这个问题我们首先需要了解一下微信对于自动回复文本字数限制:

这是我在网上找到的一张图,从图中可得知微信最大支持2048个字符,一个汉字等于3个字符,那么我们可以计算出ChatGPT响应的字符串的字符数,如果小于2048正常返回,如果大于2048,做一定的阶段并街上省略号,用node实现的代码如下:

const MAX_CHARACTERS = 2048;
const byteLength = Buffer.byteLength(answer, 'utf8');
if (byteLength > MAX_CHARACTERS) {
    answer = Buffer.from(answer).slice(0, MAX_CHARACTERS).toString();
    answer = answer.slice(0, answer.length - 4);
    answer += '...';
}
return answer;

6、我接入了ChatGPT的对话功能,我还想接入ChatGPT的图像生成功能怎么办?要解决这个问题主要是需要根据用户的输入分析用户的意图,比如用户想画一个...,那么我们是不是应该调用图像生成功能,这里可以用关键字做匹配,比如用“画”这个关键字做匹配,伪代码如下:

let answer;
if (/画/.test(question)) {
	answer = await openai.createImage(params);
} else {
	answer = await openai.createCompletion(params);
}

目前遇到的问题就这些啦,如果你在使用的过程中遇到了其他新的问题,欢迎和我一起交流沟通并解决。

  • 支付宝二维码 支付宝
  • 微信二维码 微信

本文地址: /chatgpt-problems.html

版权声明: 本文为原创文章,版权归 逐梦个人博客 所有,欢迎分享本文,转载请保留出处!

相关文章