Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from huggingface_hub import InferenceClient | |
| import chromadb | |
| from langchain_community.vectorstores import Chroma | |
| from langchain_openai import OpenAIEmbeddings | |
| import os | |
| from openai import OpenAI | |
| # Configurar la API Key de OpenAI | |
| OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") | |
| # Inicializar el cliente de OpenAI | |
| client = OpenAI(api_key=OPENAI_API_KEY) | |
| # Inicializar el cliente de ChromaDB | |
| chroma_client = chromadb.PersistentClient(path="chroma_db_crminbox/content/chroma_db") # Ajusta la ruta seg煤n tu entorno | |
| # Cargar la base de datos de Chroma como un vector store | |
| vectorstore = Chroma( | |
| client=chroma_client, | |
| collection_name="docs", # Nombre de la colecci贸n en Chroma | |
| embedding_function=OpenAIEmbeddings(model="text-embedding-3-small", openai_api_key=OPENAI_API_KEY) | |
| ) | |
| # Crear un retriever | |
| retriever = vectorstore.as_retriever(search_kwargs={"k": 15}) | |
| # Funci贸n para obtener extractos relevantes | |
| def obtener_extractos(pregunta): | |
| docs_relevantes = retriever.invoke(pregunta) | |
| return [(doc.page_content, doc.metadata.get("url", "URL no disponible")) for doc in docs_relevantes] | |
| def respond(message, history, system_message, max_tokens=2048, temperature=0.7, top_p=0.95): | |
| # Obtener documentos relevantes desde ChromaDB | |
| contexto = obtener_extractos(message) | |
| system_message_final = f"""{system_message} | |
| Informaci贸n relevante extra铆da de los documentos, en caso de que estos documentos tenga la informacion que necesitas, no olvides tomar | |
| el historial de conversacion con el usuario: | |
| {contexto} | |
| """ | |
| messages = [{"role": "system", "content": system_message_final}] | |
| # Historial | |
| for user_msg, assistant_msg in history: | |
| if user_msg: | |
| messages.append({"role": "user", "content": user_msg}) | |
| if assistant_msg: | |
| messages.append({"role": "assistant", "content": assistant_msg}) | |
| # Nueva pregunta | |
| messages.append({"role": "user", "content": message}) | |
| # 鈿狅笍 Recomendado: adaptar al formato de 'input' de Responses | |
| inputs = [ | |
| { | |
| "type": "message", | |
| "role": m["role"], | |
| "content": m["content"], | |
| } | |
| for m in messages | |
| ] | |
| stream = client.responses.create( | |
| model="gpt-5-nano", # verifica que este modelo exista en tu cuenta | |
| input=inputs, | |
| stream=True, | |
| reasoning={"effort": "low"}, | |
| text={"verbosity": "low"}, | |
| # max_output_tokens=max_tokens, # si lo quieres usar, el nombre del par谩metro en Responses es este | |
| # temperature=temperature, # (depende del modelo/SDK si lo soporta en responses) | |
| # top_p=top_p, | |
| ) | |
| respuesta = "" | |
| for event in stream: | |
| # Cada trozo de texto viene en eventos tipo 'response.output_text.delta' | |
| if event.type == "response.output_text.delta": | |
| # En la doc actual el texto viene en event.delta (string) :contentReference[oaicite:1]{index=1} | |
| delta = event.delta or "" | |
| respuesta += delta | |
| yield respuesta | |
| # Configuraci贸n de la interfaz Gradio | |
| demo = gr.ChatInterface( | |
| respond, | |
| additional_inputs=[ | |
| gr.Textbox(value=f'''Eres un asistente virtual especializado en atenci贸n al cliente para la empresa CRMInbox. Tu objetivo es ayudar a los clientes a resolver 煤nicamente sus dudas relacionados con la plataforma CRMInbox. | |
| Todas tus respuestas pueden basarse exclusivamente en la informaci贸n proporcionada. | |
| En caso de que la pregunta no concuerde con la informaci贸n del contexto puedes ignorarlo. | |
| -Agrega en tus respuestas una imagen y el url del manual relacionada a lo que pregunto el usuario, para ello usaras los urls que contiene el manual de usuario, muestra la imagen usando la sintaxis de Markdown sin bloque de c贸digo. | |
|  | |
| - Esta orden podr谩s ignorarla en caso de que la informacion que se te proporcione no tenga im谩genes que se le relacionen. | |
| Para que speas acerca de CRMInbox puede usar lo siguiente: | |
| Comprar Licencia Caracter铆sticas Precios FAQ Contacto Manual de Usuario Iniciar sesi贸n Crear cuenta gratuita CRM para Conversaciones de WhatsApp Nuestra plataforma est谩 dise帽ada para revolucionar la forma en que te comunicas con tus clientes a trav茅s de WhatsApp, proporcion谩ndote una experiencia 煤nica y eficiente. Olv铆date de la gesti贸n ca贸tica de chats y toma el control total de tus conversaciones de manera efectiva. Con CRMInbox, podr谩s simplificar tus interacciones y aprovechar al m谩ximo el API de WhatsApp para brindar un servicio excepcional. Crear Cuenta Funciones Disponibles Transforma la comunicaci贸n en algo sencillo y efectivo con las siguientes funciones de CRMInbox: Env铆o de Mensajes Masivos (WhatsApp Emulado): Con nuestra plataforma, puedes enviar mensajes masivos a tus contactos de WhatsApp de manera r谩pida y eficiente. Mant茅n la comunicaci贸n fluida y 谩gil con clientes, amigos o familiares en tiempo real. CRM para Multiagente (API de WhatsApp Business): No pierdas el control de tus conversaciones. Nuestra herramienta te permite rastrear y visualizar los mensajes enviados, asegurando que cada interacci贸n sea gestionada con precisi贸n por m煤ltiples agentes de tu equipo. Bot (ERP para ISP): Simplifica tus procesos con un bot integrado para la gesti贸n de tu ERP espec铆fico para ISP. Automatiza tareas, responde preguntas frecuentes y mejora la eficiencia en tu negocio. Descubre c贸mo transformar tu forma de comunicarte con CRMInbox. Reg铆strate hoy mismo y comienza a experimentar una nueva dimensi贸n en la mensajer铆a por WhatsApp. Pagando 3 Meses Precios de CRM de WhatsApp API oficial de Facebook/Meta 4 Agentes $30 /Mes $40 /Mes Recibir Mensajes Ilimitados Respuestas a mensajes de Clientes * Contactos Ilimitados Actualizaciones Dominio Personalizado Funciones B谩sicas * Siempre que el cliente inicie la conversaci贸n. 10 Agentes $70 /Mes $90 /Mes Recibir Mensajes Ilimitados Respuestas a mensajes de Clientes * Contactos Ilimitados Actualizaciones Dominio Personalizado Funciones B谩sicas * Siempre que el cliente inicie la conversaci贸n. 30 Agentes $120 /Mes $140 /Mes Recibir Mensajes Ilimitados Respuestas a mensajes de Clientes * Contactos Ilimitados Actualizaciones Dominio Personalizado Funciones B谩sicas * Siempre que el cliente inicie la conversaci贸n. Precios en D贸lares, sin impuestos, mas comisi贸n por pasarela de pago. Mas detalles El costo del servicio es ajeno al costo del uso del API de Facebook/Meta, el cual genera un gasto siempre que se inicie una conversaci贸n con un cliente. Si el cliente inicia la conversaci贸n, Facebook/Meta permite el envio de mensajes durante 23 hrs de forma gratuita. Pagando 3 Meses Precios de CRM + ChatBot para ISP API oficial de Facebook/Meta 4 Agentes $70 /Mes $90 /Mes Caracter铆sticas del CRM Funcionamiento de un Bot utilizando WispHub 10 Agentes $120 /Mes $150 /Mes Caracter铆sticas del CRM Funcionamiento de un Bot utilizando WispHub 30 Agentes $190 /Mes $230 /Mes Caracter铆sticas del CRM Funcionamiento de un Bot utilizando WispHub Precios en D贸lares, sin impuestos, mas comisi贸n por pasarela de pago. Mas detalles El costo del servicio es ajeno al costo del uso del API de Facebook/Meta, el cual genera un gasto siempre que se inicie una conversaci贸n con un cliente. Si el cliente inicia la conversaci贸n, Facebook/Meta permite el envio de mensajes durante 23 hrs de forma gratuita. Preguntas frecuentes Q1. 驴C贸mo instalo CRMInbox? 隆No requiere instalaci贸n! S贸lo necesitas una computadora, tablet o dispositivo m贸vil con acceso a internet. Q4. 驴Es segura la informaci贸n de mis conversaciones? La seguridad es nuestra m谩xima prioridad. Utilizamos medidas de encriptaci贸n avanzada para proteger tus conversaciones y datos personales. Tu informaci贸n est谩 segura con nosotros. Q5. 驴Que se necesita para tener un BOT? Son necesarias las siguientes cosas: Contar con una p谩gina de Facebook empresarial Contar con un n煤mero disponible que no est茅 ligado a WhatsApp Q6. 驴La API de whatsapp tiene alg煤n costo? Unicamente cuando se utiliza el BOT, ya que se hace a trav茅s de la api oficial de whatsapp, que tiene costo por cada conversaci贸n iniciada durante 24 Hrs. Sin embargo si el cliente inicia la conversaci贸n esta no tiene costo. El sistema mensajeria m谩s f谩cil de usar. Compa帽铆a FAQ Aviso de privacidad T茅rminos y condiciones T茅rminos C贸digo QR Quejas y Sugerencias Documentaci贸n Contacto Si tiene alguna pregunta, no dude en ponerse en contacto con nosotros. N煤mero de contacto +52 1 998 114 2002 Correo electr贸nico [email protected] Copyright 2023. CRMInbox | |
| Si tampoco encuentras informaci贸n relevante, indica que no puedes proporcionar detalles adicionales y sugiere al usuario contactar con el soporte t茅cnico oficial de CRMInbox. | |
| Proporciona el numero y pagina de contacto de CRMInbox. | |
| - Aseg煤rate de que tus respuestas sean claras y f谩ciles de entender para usuarios sin conocimientos t茅cnicos.''', | |
| label="System message"), | |
| #gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"), | |
| #gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"), | |
| #gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)"), | |
| ], | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |