Introduction:
Le compte public WeChat non certifié est connecté à chatgpt, un nouveau chat vocal (conversation en anglais) est ajouté, basé sur Flask, le compte public WeChat personnel [sans authentification] est connecté à ChatGPT
--Instructions de mise à jour :
V1.1.0 : (2023.04.13)
-Ajout d'une réponse en streaming (stream) pour atténuer dans une certaine mesure le problème de délai d'attente des requêtes. Vous devez installer le package python : sseclient-py==1.7.2 ;
Une fois la réponse en streaming activée, une connexion (myrequest) sera d'abord établie, puis (SSEClient) sera utilisée pour obtenir le texte généré caractère par caractère, et enfin la liste de textes obtenue sera fusionnée dans le texte de réponse. Le temps nécessaire pour établir une connexion sera toujours affecté par max_tokens, il n'est donc pas recommandé de définir un max_tokens trop grand. La clé pour réduire les délais d'attente des demandes est que la consommation de temps pour établir une connexion est inférieure à la consommation de temps pour un retour unique. Par conséquent, tant que la connexion est établie avec succès dans un délai donné, le contenu peut essentiellement être renvoyé. la longueur du contenu renvoyé sera affectée par le temps de connexion.
-Supprimez les messages les plus récents envoyés par l'utilisateur après l'échec ou l'expiration de la demande pour éviter les erreurs dans la prochaine réponse.
V1.0.1 :
- Ajout d'une option pour activer la détection IP (pour empêcher les attaques doss) ;
-Remarque : si l'un des éléments wechat-ip_detection et azure-trans_to_voice est vrai, appid et secret doivent être renseignés.
V1.0 :
-Nouvelle fonction de chat vocal, accès au service de synthèse vocale cloud Microsoft (accès gratuit), pour réaliser des conversations vocales (chinois et anglais) ;
-Modèles d'apprentissage de l'anglais intégrés, vous pouvez avoir des conversations sur le thème de l'anglais en répondant aux messages modèles ;
- Ajout de la détection IP de la liste blanche en arrière-plan WeChat pour empêcher les attaques doss, etc. ;
- Ajout d'une limite de fréquence des messages utilisateur pour empêcher le spam de messages malveillants ;
- Nettoyer automatiquement les fichiers vocaux temporaires ;
- Nettoyer automatiquement les documents vocaux temporaires téléchargés en arrière-plan WeChat ;
-Optimiser les performances et corriger les bugs.
arrière-plan:
J'ai récemment vu que ChatGPT fournit une interface API. J'ai un serveur et un compte public, donc je veux écrire un chatbot. Il n’existe cependant qu’un seul compte officiel personnel non certifié (les ressources sont limitées ?). Les limites de ce compte officiel sont :
1. Il ne peut répondre que passivement aux messages de l'utilisateur. L'utilisateur envoie un message au compte officiel. Le serveur ne peut répondre qu'à un seul message pour cette demande et ne peut pas répondre à des messages supplémentaires (messages du service client) ;
2. Chaque message doit recevoir une réponse dans les 15 secondes. Une fois que la plateforme de compte officiel a envoyé une demande au serveur, si elle ne reçoit pas de réponse dans les 5 secondes, elle enverra une autre demande et attendra 5 secondes si la demande est toujours. n'est pas reçu, il enverra une requête finale. Le serveur doit donc traiter le message complet dans les 15 secondes.
Voir le code pour les méthodes de traitement spécifiques. Il s'agit d'un projet pour débutant, veuillez inclure toutes les lacunes et corrections bienvenues, merci ~
besoin:
Un serveur (doit pouvoir accéder à l'interface openai, peut devoir être à l'étranger ~)
Si vous devez activer le service de synthèse vocale, vous devez enregistrer le service de synthèse vocale d'Azure. L'inscription et l'utilisation de ce service sont gratuites. Veuillez vous référer au site Web pour plus de détails : AZURE.
Compte public WeChat : le type personnel suffit
Démo :
Compte public : Le laboratoire de Tory, suivez et envoyez des messages pour en faire l'expérience.
Introduction aux tweets de comptes publics :
1. Introduction pour démarrer : ChatGPT a été connecté
2. Introduction à l'utilisation du service vocal : Le service vocal a été connecté
Comment utiliser :
Définissez les paramètres config.yml dans config :
# 微信相关设置
wechat :
token : " **** "
# 是否获取微信公众平台的ip白名单(用于防止doss检测)
ip_detection : false
# 如果上面的选项为true,下面两项内容必填;如要开启后面文本转语音服务,下面两项内容必填
appid : " **** "
secret : " **** "
# openai相关设置
openai :
#填写openai的api_keys时,要注意前面要加上:Bearer, 可以填写多个,因为单个账号有速率的限制
api_keys :
- " Bearer sk-**** "
# - "Bearer sk-****"
# - "Bearer sk-****"
# 单条消息的长度,这个参数对回复速度有非常大的影响,请不要填太大~
max_tokens : 120
# 模型
model : " gpt-3.5-turbo-0301 "
# temperature,越大随机性越强
temperature : 0.8
# 有时候文本长度超过150,用该参数限制长度避免超过微信能发送的最长消息
rsize : 500
# 对话的保存历史
save_history : 21
# azure文本转语音设置
azure :
# 是否开启文本转语音服务
trans_to_voice : false
# 如上面的选项为false,下面的内容不用填写
# 新定义文本长度,开启后增加处理时间,避免文本太长,处理时间过久,超过15s
max_token : 80
# 是否开启流式响应
stream_response : true
# 密钥
subscription : " **** "
region : " koreacentral "
# 中文语音模型
zh_model : " zh-CN-XiaoyanNeural "
# 英文语音模型
en_model : " en-US-AriaNeural "
Démarrer le flacon
export FLASK_APP=myflask
flask run --host=0.0.0.0 --port=80
# 或者
nohup flask run --host=0.0.0.0 --port=80 >> /home/jupyter/flask/log/wechat.log 2>&1 &
Avis:
1. Lorsque vous remplissez les api_keys d'openai, assurez-vous d'ajouter : Bearer devant. Vous pouvez remplir plusieurs api_keys car un seul compte a une limite de débit ;
2.max_tokens a un grand impact sur la vitesse de réponse, veuillez ne pas le remplir trop grand.