Adicionado Opção para Transcrever o Proprio audio, agora sempre resume e transcreve entregando na mesma mensagem

This commit is contained in:
Impacte AI 2024-12-07 11:01:29 -03:00
parent c189d69ac4
commit e1114101f6
6 changed files with 32 additions and 17 deletions

View File

@ -1,5 +1,10 @@
# Chave da API para transcrição (Groq ou qualquer outro serviço que você utilizar)
GROQ_API_KEY=your_groq_api_key
GROQ_API_KEY=substitua_sua_chave_GROQ_aqui
# Comportamento da transcrição
PROCESS_SELF_MESSAGES=true
BUSINESS_MESSAGE="substitua_sua_mensagem_de_servico_aqui"
PROCESS_GROUP_MESSAGES=false
# Host e porta do Redis (caso esteja utilizando)
REDIS_HOST=localhost

View File

@ -64,6 +64,9 @@ class Settings:
self.PROCESS_GROUP_MESSAGES = os.getenv('PROCESS_GROUP_MESSAGES', 'false').lower() == 'true'
logger.debug(f"PROCESS_GROUP_MESSAGES configurado como: {self.PROCESS_GROUP_MESSAGES}")
self.PROCESS_SELF_MESSAGES = os.getenv('PROCESS_SELF_MESSAGES', 'false').lower() == 'true'
logger.debug(f"PROCESS_SELF_MESSAGES configurado como: {self.PROCESS_SELF_MESSAGES}")
self.LOG_LEVEL = os.getenv('LOG_LEVEL', 'INFO')
logger.debug(f"LOG_LEVEL configurado como: {self.LOG_LEVEL}")

View File

@ -16,6 +16,7 @@ services:
GROQ_API_KEY: "substitua_sua_chave_GROQ_aqui" #coloque sua chave GROQ aqui
BUSINESS_MESSAGE: "substitua_sua_mensagem_de_servico_aqui" #coloque a mensagem que será enviada ao final da transcrição aqui
PROCESS_GROUP_MESSAGES: "false" # Define se mensagens de grupos devem ser processadas
PROCESS_SELF_MESSAGES: "true" # Define se sua próprias mensagens devem ser processadas
DEBUG_MODE: "false"
LOG_LEVEL: "INFO"
deploy:

24
main.py
View File

@ -4,6 +4,7 @@ from services import (
transcribe_audio,
send_message_to_whatsapp,
get_audio_base64,
summarize_text_if_needed,
)
from models import WebhookRequest
import aiohttp
@ -33,8 +34,8 @@ async def transcreve_audios(request: Request):
logger.info("Mensagem recebida não é um áudio, ignorando")
return {"message": "Mensagem recebida não é um áudio"}
if from_me:
logger.info("Mensagem enviada pelo próprio usuário, ignorando")
if from_me and not settings.PROCESS_SELF_MESSAGES:
logger.info("Mensagem enviada pelo próprio usuário ignorada conforme configuração")
return {"message": "Mensagem enviada por mim, sem operação"}
if "@g.us" in remote_jid and not settings.PROCESS_GROUP_MESSAGES:
@ -52,17 +53,20 @@ async def transcreve_audios(request: Request):
logger.debug(f"Áudio convertido e salvo em: {audio_source}")
# Transcrever o áudio
transcription_text, is_summary = await transcribe_audio(audio_source)
transcription_text, _ = await transcribe_audio(audio_source)
summary_text = await summarize_text_if_needed(transcription_text)
header_message = (
"*Resumo do áudio:*\n\n" if is_summary else "*Transcrição desse áudio:*\n\n"
# Formatar a mensagem
summary_message = (
f"*Resumo do áudio:*\n\n"
f"{summary_text}\n\n"
f"*Transcrição do áudio:*\n\n"
f"{transcription_text}\n\n"
f"{settings.BUSINESS_MESSAGE}"
)
# Formatar o conteúdo da mensagem
summary_message = f"{header_message}{transcription_text}\n\n{settings.BUSINESS_MESSAGE}"
logger.debug(f"Mensagem formatada: {summary_message[:100]}...")
# Enviar o resumo transcrito de volta via WhatsApp
# Enviar a mensagem formatada via WhatsApp
await send_message_to_whatsapp(
server_url,
instance,
@ -79,5 +83,5 @@ async def transcreve_audios(request: Request):
logger.error(f"Erro ao processar áudio: {str(e)}", exc_info=settings.DEBUG_MODE)
raise HTTPException(
status_code=500,
detail=f"Erro ao processar a requisição: {str(e)}"
detail=f"Erro ao processar a requisição: {str(e)}",
)

View File

@ -91,6 +91,7 @@ services:
GROQ_API_KEY: "substitua_sua_chave_GROQ_aqui" #coloque sua chave GROQ aqui
BUSINESS_MESSAGE: "substitua_sua_mensagem_de_servico_aqui" #coloque a mensagem que será enviada ao final da transcrição aqui
PROCESS_GROUP_MESSAGES: "false" # Define se mensagens de grupos devem ser processadas
PROCESS_SELF_MESSAGES: "true" # Define se sua próprias mensagens devem ser processadas
DEBUG_MODE: "false"
LOG_LEVEL: "INFO"
```
@ -115,6 +116,7 @@ services:
GROQ_API_KEY: "substitua_sua_chave_GROQ_aqui" #coloque sua chave GROQ aqui
BUSINESS_MESSAGE: "substitua_sua_mensagem_de_servico_aqui" #coloque a mensagem que será enviada ao final da transcrição aqui
PROCESS_GROUP_MESSAGES: "false" # Define se mensagens de grupos devem ser processadas
PROCESS_SELF_MESSAGES: "true" # Define se sua próprias mensagens devem ser processadas
DEBUG_MODE: "false"
LOG_LEVEL: "INFO"
deploy:

View File

@ -34,7 +34,7 @@ async def summarize_text_if_needed(text):
"messages": [{
"role": "user",
"content": f"""
Entenda o contexto desse áudio e faça um resumo super enxuto sobre o que se trata.
Entenda o contexto desse áudio e faça um resumo super enxuto sobre o que se trata, coloque os pontos relevantes e mais importantes no resumo de forma muito curta.
Esse áudio foi enviado pelo whatsapp, de alguém, para Gabriel.
Escreva APENAS o resumo do áudio como se fosse você que estivesse enviando
essa mensagem! Não comprimente, não de oi, não escreva nada antes nem depois