import telebot from dotenv import load_dotenv import os from api_openai.whisper import whisper_api, tts_api from langchain_tools.agent_tools import LangChainTools from langchain_tools.agents import AgentTools from langchain_core.messages import AIMessage, HumanMessage # from tools.scaped import scaped # Configuración del bot load_dotenv() API_TOKEN_BOT = os.getenv("API_TOKEN_BOT") bot = telebot.TeleBot(API_TOKEN_BOT) # Handle '/start' and '/help' wellcome = "¡Bienvenido! ¿Cómo puedo ayudarte?" @bot.message_handler(commands=['help', 'start']) def send_welcome(message): bot.reply_to(message, wellcome, parse_mode="Markdown") # Creamos una lista para el historial fuera de las funciones history = [] @bot.message_handler(content_types=["text", "voice"]) def bot_mensajes(message): global history # Para acceder a la variable global 'history' # Si el mensaje es una nota de voz if message.voice: # user_ = message.from_user.first_name file_info = bot.get_file(message.voice.file_id) downloaded_file = bot.download_file(file_info.file_path) file_path = "audios/nota_de_voz.ogg" with open(file_path, 'wb') as new_file: new_file.write(downloaded_file) pregunta_usuario = whisper_api(file_path) print(f"Pregunta del usuario: {pregunta_usuario}") langChainTools = LangChainTools() llm = langChainTools.load_llm_openai() agentTools = AgentTools() tools = agentTools.load_tools() agent_executor = agentTools.load_agent(llm, tools) respuesta_agente = agent_executor.invoke( { "input": pregunta_usuario, "chat_history": history, } ) bot.send_message(message.chat.id, respuesta_agente["output"], parse_mode="Markdown") path_voice: str = tts_api(respuesta_agente["output"]) with open(path_voice, 'rb') as voice: bot.send_voice(message.chat.id, voice=voice) history.append(HumanMessage(content=pregunta_usuario)) history.append(AIMessage(content=respuesta_agente["output"])) # Si el mensaje es de texto if message.text: pregunta_usuario = message.text langChainTools = LangChainTools() llm = langChainTools.load_llm_openai() agentTools = AgentTools() tools = agentTools.load_tools() agent_executor = agentTools.load_agent(llm, tools) respuesta_agente = agent_executor.invoke( { "input": pregunta_usuario, "chat_history": history, } ) # texto_respuesta: str = scaped(respuesta_agente["output"]) texto_respuesta: str = respuesta_agente["output"] bot.send_message( message.chat.id, texto_respuesta, parse_mode="Markdown") # Mandar mensaje de voz # path_voice: str = tts_api(respuesta_agente["output"]) # with open(path_voice, 'rb') as voice: # bot.send_voice(message.chat.id, voice=voice) history.append(HumanMessage(content=pregunta_usuario)) history.append(AIMessage(content=respuesta_agente["output"])) # print(history) # Enviar el historial después de cada interacción # bot.send_message(message.chat.id, history) # while True: # time.sleep(60) # mensaje = 'Que mas pues!!' # bot.send_message('5076346205', mensaje) bot.infinity_polling()