소개:
인증되지 않은 WeChat 공개 계정이 chatgpt에 연결되고, 새로운 음성 채팅(영어 대화)이 추가되고, Flask 기반으로 개인 WeChat 공개 계정이 [인증 없이] ChatGPT에 연결됩니다.
--업데이트 지침:
V1.1.0: (2023.04.13)
-요청 시간 초과 문제를 어느 정도 완화하기 위해 스트리밍 응답(스트림)을 추가했습니다. Python 패키지를 설치해야 합니다: sseclient-py==1.7.2;
스트리밍 응답이 활성화된 후 먼저 연결(myrequest)이 설정된 다음 (SSEClient)를 사용하여 생성된 텍스트 문자를 문자별로 가져오고, 마지막으로 가져온 텍스트 목록이 응답 텍스트에 연결됩니다. 연결 설정 시간은 여전히 max_tokens의 영향을 받으므로 max_tokens를 너무 크게 설정하지 않는 것이 좋습니다. 요청 시간 초과를 완화하는 핵심은 연결을 설정하는 데 소요되는 시간이 일회성 반환에 소요되는 시간보다 적다는 것입니다. 따라서 지정된 시간 내에 연결이 성공적으로 설정되면 기본적으로 콘텐츠를 반환할 수 있습니다. 반환되는 콘텐츠의 길이는 연결 시간의 영향을 받습니다.
-다음 회신에서 오류가 발생하지 않도록 요청이 실패하거나 시간 초과된 후 사용자가 보낸 가장 최근 메시지를 삭제합니다.
V1.0.1:
- IP 감지를 활성화하는 옵션이 추가되었습니다(도스 공격 방지).
-참고: wechat-ip_Detection 및 azure-trans_to_voice 중 하나라도 true인 경우 appid와 secret을 모두 입력해야 합니다.
V1.0:
- 새로운 음성 채팅 기능, Microsoft 클라우드 텍스트 음성 변환 서비스(무료 액세스)에 액세스하여 음성 대화(중국어 및 영어) 가능
- 영어 학습 템플릿이 내장되어 있어 템플릿 메시지에 답장하여 영어를 주제로 한 대화를 나눌 수 있습니다.
- Dos 공격 등을 방지하기 위해 WeChat 백그라운드 화이트리스트 IP 감지를 추가했습니다.
- 악성 메시지 스팸을 방지하기 위해 사용자 메시지 빈도 제한을 추가했습니다.
- 임시 음성 파일을 자동으로 정리합니다.
- WeChat 배경에 업로드된 임시 음성 자료를 자동으로 정리합니다.
-성능을 최적화하고 버그를 수정합니다.
배경:
최근에 ChatGPT가 API 인터페이스를 제공하는 것을 보았습니다. 우연히 서버와 공개 계정이 있으므로 챗봇을 작성해 보고 싶습니다. 그러나 인증되지 않은 개인 공식 계정은 단 하나뿐입니다. (자원이 제한되어 있습니까?) 이 공식 계정의 제한 사항은 다음과 같습니다.
1. 사용자가 공식 계정으로 메시지를 보내는 경우에만 수동적으로 응답할 수 있습니다. 서버는 이 요청에 대해 하나의 메시지에만 응답할 수 있으며 추가 메시지(고객 서비스 메시지)에는 응답할 수 없습니다.
2. 각 메시지는 15초 이내에 응답해야 합니다. 공식 계정 플랫폼은 서버에 요청을 보낸 후 5초 이내에 응답을 받지 못하면 다른 요청을 보내고 요청이 계속되면 5초 동안 기다립니다. 수신되지 않으면 최종 요청을 보냅니다. 따라서 서버는 15초 이내에 전체 메시지를 처리해야 합니다.
구체적인 처리 방법은 코드를 참조하세요. 초보자 프로젝트입니다. 부족한 점을 지적하고 수정사항을 환영합니다. 감사합니다~
필요:
서버(openai 인터페이스에 액세스할 수 있어야 하며 해외에 있어야 할 수도 있음~)
텍스트 음성 변환 서비스를 활성화하려면 Azure의 텍스트 음성 변환 서비스를 등록해야 합니다. 이 서비스의 등록 및 사용은 무료입니다. 자세한 내용은 AZURE를 참조하세요.
WeChat 공개 계정: 개인 유형이면 충분합니다.
데모:
공개 계정: 토리의 연구실을 팔로우하고 메시지를 보내 체험해 보세요.
공개 계정 트윗 소개:
1. 시작하기 소개: ChatGPT가 연결되었습니다
2. 음성서비스 이용 안내 : 음성서비스가 연결되었습니다.
사용 방법:
config에서 config.yml 매개변수를 설정합니다.
# 微信相关设置
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 "
플라스크 시작
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 &
알아채다:
1. openai의 api_keys를 입력할 때 앞에 Bearer를 반드시 추가하세요. 단일 계정에는 비율 제한이 있으므로 여러 api_key를 채울 수 있습니다.
2.max_tokens는 응답 속도에 큰 영향을 미치므로 너무 크게 입력하지 마십시오.