File size: 3,643 Bytes
fceaadb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5b38e95
fceaadb
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
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()