Introdução:
A conta pública WeChat não certificada está conectada ao chatgpt, novo chat de voz (conversa em inglês) é adicionado, com base no Flask, a conta pública pessoal do WeChat [sem autenticação] está conectada ao ChatGPT
--Instruções de atualização:
V1.1.0: (2023.04.13)
- Adicionada nova resposta de streaming (stream) para aliviar o problema de tempo limite da solicitação até certo ponto. Você precisa instalar o pacote python: sseclient-py==1.7.2;
Depois que a resposta de streaming for habilitada, uma conexão (myrequest) será estabelecida primeiro e, em seguida, (SSEClient) será usado para obter o texto gerado caractere por caractere e, finalmente, a lista de texto obtida será unida ao texto de resposta. O tempo para estabelecer uma conexão ainda será afetado por max_tokens, portanto não é recomendado definir max_tokens muito grandes. A chave para aliviar o tempo limite da solicitação é que o consumo de tempo para estabelecer uma conexão é menor do que o consumo de tempo para retornar uma vez. Portanto, desde que a conexão seja estabelecida com sucesso dentro de um determinado tempo, o conteúdo pode basicamente ser retornado. a duração do conteúdo retornado será afetada pelo tempo de conexão.
-Exclua as mensagens mais recentes enviadas pelo usuário após a falha ou expiração da solicitação para evitar erros na próxima resposta.
V1.0.1:
- Adicionada opção para ativar a detecção de IP (para evitar ataques doss);
-Nota: Se qualquer um de wechat-ip_detection e azure-trans_to_voice for verdadeiro, tanto appid quanto secret precisam ser preenchidos.
V1.0:
-Nova função de chat de voz, acesso ao serviço de conversão de texto em voz na nuvem da Microsoft (acesso gratuito), para realizar conversas de voz (chinês e inglês);
-Modelos de aprendizagem de inglês integrados, você pode ter conversas com temas em inglês respondendo a mensagens de modelo;
- Adicionada detecção de IP da lista de permissões de fundo do WeChat para evitar ataques doss, etc.;
- Adicionado limite de frequência de mensagens do usuário para evitar spam de mensagens maliciosas;
- Limpe automaticamente arquivos de voz temporários;
- Limpe automaticamente materiais de voz temporários carregados no plano de fundo do WeChat;
-Otimize o desempenho e corrija bugs.
fundo:
Recentemente, vi que o ChatGPT fornece uma interface API. Acontece que tenho um servidor e uma conta pública, então quero escrever um chatbot. No entanto, existe apenas uma conta oficial pessoal não certificada (os recursos são limitados?).
1. Ele só pode responder passivamente às mensagens do usuário. O usuário envia uma mensagem para a conta oficial. O servidor só pode responder a uma mensagem para esta solicitação e não pode responder a mensagens adicionais (mensagens de atendimento ao cliente);
2. Cada mensagem deve ser respondida em até 15 segundos. Após a plataforma da conta oficial enviar uma solicitação ao servidor, se não receber uma resposta em até 5 segundos, ela enviará outra solicitação e aguardará 5 segundos se a solicitação persistir. não recebida, enviará uma solicitação final. Portanto, o servidor deverá processar a mensagem completa em 15 segundos.
Consulte o código para métodos de processamento específicos. Este é um projeto para iniciantes, inclua quaisquer deficiências e correções bem-vindas, obrigado ~
precisar:
Um servidor (precisa ser capaz de acessar a interface openai, pode precisar estar no exterior ~)
Se precisar ativar o serviço de conversão de texto em fala, você precisará registrar o serviço de conversão de texto em fala do Azure. O registro e o uso deste serviço são gratuitos. Consulte o site para obter detalhes: AZURE.
Conta pública WeChat: o tipo pessoal é suficiente
Demonstração:
Conta pública: Laboratório do Tory, acompanhe e envie mensagens para vivenciar.
Introdução aos tweets de contas públicas:
1. Introdução aos primeiros passos: ChatGPT foi conectado
2. Introdução ao uso do serviço de voz: O serviço de voz foi conectado
Como usar:
Defina os parâmetros config.yml em 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 "
Iniciar frasco
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 &
Perceber:
1. Ao preencher api_keys do openai, certifique-se de adicionar: Bearer na frente. Você pode preencher várias api_keys porque uma única conta tem um limite de taxa;
2.max_tokens tem um grande impacto na velocidade de resposta, por favor, não preencha muito grande.