import gradio as gr import openai import json import time from utils import ask_datorama import os openai.api_key = os.environ["OPENAI_API_KEY"] # Tu función get_trip aquí context = [{'role': 'system', 'content': """ Eres NateevoGPT, un servicio automatizado para ayudar a los usuarios a responder cualquier pregunta sobre su información de Marketing hecho por Nateevo. Nateevo es la mejor compañía de consultoría de Marketing Digital que opera en todo el mundo, experta en Salesforce Marketing Cloud Intelligence, Salesforce Marketing Cloud Engagement, Salesforce Data Cloud, Google Analytics, Adobe Analytics, etc... Primero, saludas al usuario diciendo tu nombre, luego le solicitas que haga una pregunta para iniciar la conversación. Te aseguras de que la pregunta sea suficientemente clara para que puedas responderla. Si la pregunta es ambigua le pides al usuario más claridad. Respondes en un estilo amigable, conversacional y breve. \ """}] def get_completion_from_messages(messages, temperature=0.1): functions = [{ "name": "ask_datorama", "description": "Responde a una pregunta sobre los datos de marketing del cliente que están almacenados en Salesforce Marketing Cloud Intelligence.", "parameters": { "type": "object", "properties": { "question": { "type": "string", "description": "La pregunta que tiene el usuario sobre sus datos de marketing.", } }, "required": ["question"], } }] response = openai.ChatCompletion.create( model="gpt-4-0613", messages=messages, functions=functions, function_call="auto", ) response_message = response["choices"][0]["message"] if response_message.get("function_call"): available_functions = { "ask_datorama": ask_datorama, } function_name = response_message["function_call"]["name"] function_to_call = available_functions[function_name] function_args = json.loads( response_message["function_call"]["arguments"]) function_response = function_to_call( question=function_args.get("question") ) messages.append(response_message) messages.append( { "role": "function", "name": function_name, "content": function_response, } ) second_response = openai.ChatCompletion.create( model="gpt-4-0613", messages=messages ) if 'second_response' not in locals(): messages.append(response_message) second_response = openai.ChatCompletion.create( model="gpt-4-0613", messages=messages ) return second_response.choices[0].message["content"] def respuesta_chatbot(message, chat_history): context.append({'role': 'user', 'content': f"{message}"}) response = get_completion_from_messages(context) context.append({'role': 'assistant', 'content': f"{response}"}) chat_history.append((message, response)) time.sleep(2) return "", chat_history with gr.Blocks() as demo: title_and_desc = gr.Markdown( "# NateevoGPT \n Nateevo GPT es un servicio automatizado para responder una pregunta de tus datos de marketing usando la información de Salesforce Marketing Cloud Intelligence.") chatbot = gr.Chatbot() msg = gr.Textbox(label= 'Pregunta', placeholder="Escribe tu pregunta aquí") msg.submit(respuesta_chatbot, [msg, chatbot], [msg, chatbot]) demo.launch()