chat / app.py
JuanMa360's picture
refactor: encode
df6345d
import time
import gradio as gr
import requests
import json
import uuid
def generate_session_id():
return str(uuid.uuid4())
def slow_api_response(message, history, property_id="c0ced2220b87fc23762facf617157a4f", session_id="12345"):
url = "https://data-monopolio.dev.dd360.mx/ai-assistant/v1"
payload = json.dumps({
"query": message,
"sessionId": session_id,
"numMessages": "3",
"userId": "user-01",
"property_id": property_id #"c0ced2220b87fc23762facf617157a4f"
})
headers = {
'Content-Type': 'application/json'
}
try:
response = requests.request("POST", url, headers=headers, data=payload)
if response.status_code == 500: # Verifica si hay un error interno del servidor
yield "Error: No existe el ID de la propiedad."
else:
api_response = response.text
#api_response = api_response.encode().decode('unicode_escape')
print(api_response)
#if property_id == 'development_one':
response = json.loads(api_response)
api_response = response['next_actions'][0].get('value')
print(api_response)
total_time = 5
response_length = len(api_response)
sleep_time = total_time / response_length if response_length > 0 else total_time
if sleep_time > 0.05:
sleep_time = 0.05
if response_length > 3000:
yield api_response
else:
for i in range(response_length):
time.sleep(sleep_time)
yield api_response[:i + 1]
except requests.RequestException as e:
yield f"Error: {str(e)}"
property_id_input = gr.Textbox(
label="Property ID",
placeholder="Ingresa el ID de la propiedad"
)
session_id_input = gr.Textbox(
label="Session ID",
placeholder="Ingresa el ID de tu sesion"
)
def dynamic_examples():
examples = [
["Hola","development_one", generate_session_id()],
["Hola","6072ef21835a01fee0f14ace35e5d814", generate_session_id()],
["Hola","db674f4a5bb6b696698f2ab5825d68dd", generate_session_id()],
["Hola","7ba0195e733b613efb3379af7cbd3613", generate_session_id()],
["Hola","354d094e10653b567a98a3c22496fa05", generate_session_id()]
]
return examples
demo = gr.ChatInterface(fn=slow_api_response,
title="AI Assistant",
additional_inputs=[property_id_input, session_id_input],
description="Esta app simula una conversación con un asistente virtual que conoce una propiedad.",
examples=dynamic_examples()
).launch()