Spaces:
Sleeping
Sleeping
Uses gpt 3.5 to make summaries
Browse files- app.py +14 -8
- functions.py +100 -50
- prompt.txt → prompt_conversation.txt +15 -19
- prompt_summary.txt +2 -0
- prompt_summary_system.txt +1 -0
app.py
CHANGED
@@ -1,16 +1,20 @@
|
|
1 |
from functions import *
|
2 |
|
3 |
|
4 |
-
scores_parameters, authors,
|
5 |
|
6 |
with gr.Blocks() as app:
|
7 |
msg_history = gr.State() # Messages with the format used by OpenAI
|
8 |
waiting_time = gr.State([]) # Seconds needed to get each answer
|
9 |
|
|
|
|
|
|
|
|
|
|
|
10 |
with gr.Tab('Test Chats'):
|
11 |
with gr.Row():
|
12 |
author = gr.Dropdown(authors, value=authors[0], label='Author', interactive=True)
|
13 |
-
temperature = gr.Radio(temperature_values, label="Randomness", value=0.2)
|
14 |
chat_btn = gr.Button(value='Start chat')
|
15 |
|
16 |
# ------------------------------------- Chat -------------------------------------------
|
@@ -34,22 +38,24 @@ with gr.Blocks() as app:
|
|
34 |
|
35 |
# -------------------------------------- Actions -----------------------------------------
|
36 |
chat_btn.click(
|
37 |
-
innit_bot,
|
38 |
).then(
|
39 |
-
make_noninteractive, None, [author
|
40 |
).then(
|
41 |
make_visible, None, [chatbot, message, scores_row]
|
42 |
)
|
43 |
|
44 |
message.submit(
|
45 |
get_answer,
|
46 |
-
[message, msg_history, chatbot, waiting_time,
|
47 |
-
[message, msg_history, chatbot, waiting_time]
|
|
|
48 |
|
49 |
scores_btn.click(
|
50 |
save_scores,
|
51 |
-
[author,
|
52 |
-
scores_box
|
|
|
53 |
|
54 |
|
55 |
app.launch(debug=True, auth=(os.environ.get('USERNAME'), os.environ.get('PASSWORD')))
|
|
|
1 |
from functions import *
|
2 |
|
3 |
|
4 |
+
scores_parameters, authors, p_conversation = get_main_data()
|
5 |
|
6 |
with gr.Blocks() as app:
|
7 |
msg_history = gr.State() # Messages with the format used by OpenAI
|
8 |
waiting_time = gr.State([]) # Seconds needed to get each answer
|
9 |
|
10 |
+
prompt_conversation = gr.State(p_conversation)
|
11 |
+
summary = gr.State('')
|
12 |
+
num_interactions = gr.State(0)
|
13 |
+
cost = gr.State([])
|
14 |
+
|
15 |
with gr.Tab('Test Chats'):
|
16 |
with gr.Row():
|
17 |
author = gr.Dropdown(authors, value=authors[0], label='Author', interactive=True)
|
|
|
18 |
chat_btn = gr.Button(value='Start chat')
|
19 |
|
20 |
# ------------------------------------- Chat -------------------------------------------
|
|
|
38 |
|
39 |
# -------------------------------------- Actions -----------------------------------------
|
40 |
chat_btn.click(
|
41 |
+
innit_bot, [prompt_conversation], [msg_history]
|
42 |
).then(
|
43 |
+
make_noninteractive, None, [author]
|
44 |
).then(
|
45 |
make_visible, None, [chatbot, message, scores_row]
|
46 |
)
|
47 |
|
48 |
message.submit(
|
49 |
get_answer,
|
50 |
+
[message, msg_history, chatbot, waiting_time, num_interactions, summary, cost],
|
51 |
+
[message, msg_history, chatbot, waiting_time, num_interactions, summary, cost]
|
52 |
+
)
|
53 |
|
54 |
scores_btn.click(
|
55 |
save_scores,
|
56 |
+
[author, chatbot, waiting_time, opinion_box, cost] + scores,
|
57 |
+
scores_box
|
58 |
+
)
|
59 |
|
60 |
|
61 |
app.launch(debug=True, auth=(os.environ.get('USERNAME'), os.environ.get('PASSWORD')))
|
functions.py
CHANGED
@@ -5,14 +5,14 @@ import openai
|
|
5 |
import gradio as gr
|
6 |
from datetime import datetime
|
7 |
from openai.error import RateLimitError, APIConnectionError, Timeout, APIError, \
|
8 |
-
ServiceUnavailableError
|
9 |
from huggingface_hub import hf_hub_download, HfApi
|
10 |
|
11 |
|
12 |
def get_main_data():
|
13 |
"""
|
14 |
-
Initializes the key for the api and returns the parameters for the scores, name of the possible authors
|
15 |
-
|
16 |
"""
|
17 |
openai.api_key = os.environ.get('API_KEY')
|
18 |
|
@@ -22,18 +22,18 @@ def get_main_data():
|
|
22 |
]
|
23 |
|
24 |
authors = ['Sofia', 'Eliza', 'Sindy', 'Carlos', 'Andres', 'Adriana', 'Carolina', 'Valeria']
|
25 |
-
model = "gpt-4"
|
26 |
-
temperature_values = [0.8, 1.0]
|
27 |
|
28 |
-
|
|
|
29 |
|
|
|
30 |
|
31 |
-
|
|
|
32 |
"""
|
33 |
Initialize the bot by adding the prompt from the txt file to the messages history
|
34 |
"""
|
35 |
-
|
36 |
-
prompt = file.read()
|
37 |
message_history = [{"role": "system", "content": prompt}]
|
38 |
|
39 |
return message_history
|
@@ -53,24 +53,32 @@ def make_noninteractive():
|
|
53 |
"""
|
54 |
Makes no interactive the returned elements
|
55 |
"""
|
56 |
-
return (
|
57 |
-
gr.Dropdown.update(interactive=False),
|
58 |
-
gr.Radio.update(interactive=False))
|
59 |
|
60 |
|
61 |
-
def call_api(msg_history: gr.State,
|
62 |
"""
|
63 |
Returns the API's response
|
64 |
"""
|
65 |
response = openai.ChatCompletion.create(
|
66 |
model="gpt-4",
|
67 |
messages=msg_history,
|
68 |
-
temperature=
|
69 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
return response
|
71 |
|
72 |
|
73 |
-
def handle_call(msg_history: gr.State,
|
74 |
"""
|
75 |
Returns the response and waiting time of the AI. It also handles the possible errors
|
76 |
"""
|
@@ -79,15 +87,10 @@ def handle_call(msg_history: gr.State, temperature: gr.State):
|
|
79 |
while True:
|
80 |
try:
|
81 |
start_time = time.time()
|
82 |
-
response = call_api(msg_history,
|
83 |
end_time = time.time()
|
84 |
break
|
85 |
|
86 |
-
except InvalidRequestError as e:
|
87 |
-
print(e)
|
88 |
-
response = 'Ya no tienes mas tokens disponibles. Envia lo que tengas hasta el momento e inicia otro chat'
|
89 |
-
raise gr.Error(response)
|
90 |
-
|
91 |
except (RateLimitError, APIError, Timeout, APIConnectionError, ServiceUnavailableError) as e:
|
92 |
print(e)
|
93 |
|
@@ -103,47 +106,91 @@ def handle_call(msg_history: gr.State, temperature: gr.State):
|
|
103 |
return response, needed_time
|
104 |
|
105 |
|
106 |
-
def
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
"""
|
108 |
Returns the response given by the model, all the message history so far and the seconds
|
109 |
the api took to retrieve such response. It also removes some messages in the message history
|
110 |
so only the last n (keep) are used (costs are cheaper)
|
111 |
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
msg_history.append({"role": "user", "content": msg})
|
113 |
-
response, needed_time = handle_call(msg_history,
|
114 |
AI_response = response["choices"][0]["message"]["content"]
|
115 |
msg_history.append({'role': 'assistant', 'content': AI_response})
|
116 |
|
117 |
-
|
118 |
-
if len(msg_history) > (2 * keep) + 1: # last +1 is due to the system message
|
119 |
-
msg_history.pop(1)
|
120 |
-
msg_history.pop(1)
|
121 |
-
|
122 |
-
return AI_response, msg_history, needed_time
|
123 |
|
124 |
|
125 |
def get_answer(
|
126 |
msg: str, msg_history: gr.State, chatbot_history: gr.Chatbot,
|
127 |
-
waiting_time: gr.State,
|
|
|
128 |
"""
|
129 |
Cleans msg box, adds the new message to the message history,
|
130 |
gets the answer from the bot and adds it to the chatbot history
|
131 |
and gets the time needed to get such answer and saves it
|
132 |
"""
|
133 |
-
|
134 |
# Get bot answer (output), messages history and waiting time
|
135 |
-
AI_response, msg_history, needed_time = get_ai_answer(
|
136 |
-
|
137 |
-
|
138 |
-
if len(AI_response) > 260:
|
139 |
-
new_msg = 'El mensaje esta muy largo. Da la misma idea (mandando el link, pregunta y/o promocion que hayas ' \
|
140 |
-
'dado) pero usando 40 palabras.'
|
141 |
-
AI_response, msg_history, needed_time = get_ai_answer(new_msg, msg_history, temperature)
|
142 |
-
|
143 |
-
# Make sure the AI_response has at least one question
|
144 |
-
if '?' not in AI_response:
|
145 |
-
new_msg = 'Incluye 1 pregunta dentro del mensaje. Puede estar relacionada a lo que se hablo antes o algo nuevo.'
|
146 |
-
AI_response, msg_history, needed_time = get_ai_answer(new_msg, msg_history, temperature)
|
147 |
|
148 |
# Save waiting time
|
149 |
waiting_time.append(needed_time)
|
@@ -151,17 +198,19 @@ def get_answer(
|
|
151 |
# Save output in the chat
|
152 |
chatbot_history.append((msg, AI_response))
|
153 |
|
154 |
-
|
|
|
|
|
155 |
|
156 |
|
157 |
def save_scores(
|
158 |
-
author: gr.Dropdown,
|
159 |
-
|
160 |
"""
|
161 |
Saves the scores and chat's info into the json file
|
162 |
"""
|
163 |
# Get the parameters for each score
|
164 |
-
score_parameters, _,
|
165 |
|
166 |
# Get the score of each parameter
|
167 |
scores = dict()
|
@@ -185,18 +234,19 @@ def save_scores(
|
|
185 |
|
186 |
date = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
187 |
|
188 |
-
with open('
|
189 |
prompt = file.read()
|
190 |
|
191 |
# Save the info
|
192 |
session = dict(
|
193 |
prompt=prompt,
|
194 |
-
temperature=
|
195 |
scores=scores,
|
196 |
opinion=opinion,
|
197 |
chat=chat,
|
|
|
198 |
author=author,
|
199 |
-
model=
|
200 |
date=date
|
201 |
)
|
202 |
|
|
|
5 |
import gradio as gr
|
6 |
from datetime import datetime
|
7 |
from openai.error import RateLimitError, APIConnectionError, Timeout, APIError, \
|
8 |
+
ServiceUnavailableError
|
9 |
from huggingface_hub import hf_hub_download, HfApi
|
10 |
|
11 |
|
12 |
def get_main_data():
|
13 |
"""
|
14 |
+
Initializes the key for the api and returns the parameters for the scores, name of the possible authors
|
15 |
+
and prompts (the one for the conversation and another for the summary)
|
16 |
"""
|
17 |
openai.api_key = os.environ.get('API_KEY')
|
18 |
|
|
|
22 |
]
|
23 |
|
24 |
authors = ['Sofia', 'Eliza', 'Sindy', 'Carlos', 'Andres', 'Adriana', 'Carolina', 'Valeria']
|
|
|
|
|
25 |
|
26 |
+
with open('prompt_conversation.txt', encoding='utf-8') as file:
|
27 |
+
prompt_conversation = file.read()
|
28 |
|
29 |
+
return scores_parameters, authors, prompt_conversation
|
30 |
|
31 |
+
|
32 |
+
def innit_bot(prompt: str):
|
33 |
"""
|
34 |
Initialize the bot by adding the prompt from the txt file to the messages history
|
35 |
"""
|
36 |
+
prompt.replace('HISTORY', '')
|
|
|
37 |
message_history = [{"role": "system", "content": prompt}]
|
38 |
|
39 |
return message_history
|
|
|
53 |
"""
|
54 |
Makes no interactive the returned elements
|
55 |
"""
|
56 |
+
return gr.Dropdown.update(interactive=False)
|
|
|
|
|
57 |
|
58 |
|
59 |
+
def call_api(msg_history: gr.State, cost: gr.State):
|
60 |
"""
|
61 |
Returns the API's response
|
62 |
"""
|
63 |
response = openai.ChatCompletion.create(
|
64 |
model="gpt-4",
|
65 |
messages=msg_history,
|
66 |
+
temperature=0.8
|
67 |
)
|
68 |
+
|
69 |
+
print("*" * 20)
|
70 |
+
print(msg_history)
|
71 |
+
print("*" * 20)
|
72 |
+
|
73 |
+
tokens_input = response['usage']['prompt_tokens']
|
74 |
+
tokens_output = response['usage']['completion_tokens']
|
75 |
+
|
76 |
+
cost.append({'Model': 'gpt-4', 'Input': tokens_input, 'Output': tokens_output})
|
77 |
+
|
78 |
return response
|
79 |
|
80 |
|
81 |
+
def handle_call(msg_history: gr.State, cost: gr.State):
|
82 |
"""
|
83 |
Returns the response and waiting time of the AI. It also handles the possible errors
|
84 |
"""
|
|
|
87 |
while True:
|
88 |
try:
|
89 |
start_time = time.time()
|
90 |
+
response = call_api(msg_history, cost)
|
91 |
end_time = time.time()
|
92 |
break
|
93 |
|
|
|
|
|
|
|
|
|
|
|
94 |
except (RateLimitError, APIError, Timeout, APIConnectionError, ServiceUnavailableError) as e:
|
95 |
print(e)
|
96 |
|
|
|
106 |
return response, needed_time
|
107 |
|
108 |
|
109 |
+
def get_template(chatbot_history: gr.Chatbot, previous_summary: gr.State):
|
110 |
+
with open('prompt_summary.txt', encoding='utf-8') as file:
|
111 |
+
template_summary = file.read()
|
112 |
+
|
113 |
+
conversation = ''
|
114 |
+
|
115 |
+
for i, msg in enumerate(chatbot_history):
|
116 |
+
conversation += f'Usuario: {msg[0]} \n'
|
117 |
+
conversation += f'Roomie: {msg[1]} \n'
|
118 |
+
|
119 |
+
template_summary = template_summary.replace('CONVERSATION', conversation)
|
120 |
+
|
121 |
+
return template_summary
|
122 |
+
|
123 |
+
|
124 |
+
def get_summary(chatbot_history: gr.Chatbot, previous_summary: gr.State, cost: gr.State):
|
125 |
+
|
126 |
+
msg = get_template(chatbot_history, previous_summary)
|
127 |
+
|
128 |
+
print(msg, end='\n\n')
|
129 |
+
|
130 |
+
with open('prompt_summary_system.txt', encoding='utf-8') as file:
|
131 |
+
system_prompt = file.read()
|
132 |
+
|
133 |
+
calling = [
|
134 |
+
{"role": "system", "content": system_prompt},
|
135 |
+
{"role": "user", "content": msg}
|
136 |
+
]
|
137 |
+
response = openai.ChatCompletion.create(
|
138 |
+
model="gpt-3.5-turbo",
|
139 |
+
messages=calling,
|
140 |
+
temperature=0
|
141 |
+
)
|
142 |
+
|
143 |
+
tokens_input = response['usage']['prompt_tokens']
|
144 |
+
tokens_output = response['usage']['completion_tokens']
|
145 |
+
|
146 |
+
cost.append({'Model': 'gpt-3.5-turbo', 'Input': tokens_input, 'Output': tokens_output})
|
147 |
+
|
148 |
+
return response["choices"][0]["message"]["content"]
|
149 |
+
|
150 |
+
|
151 |
+
def get_ai_answer(
|
152 |
+
msg: str, msg_history: gr.State, num_interactions: gr.State, previous_summary: gr.State,
|
153 |
+
cost: gr.State, chatbot_history: gr.Chatbot):
|
154 |
"""
|
155 |
Returns the response given by the model, all the message history so far and the seconds
|
156 |
the api took to retrieve such response. It also removes some messages in the message history
|
157 |
so only the last n (keep) are used (costs are cheaper)
|
158 |
"""
|
159 |
+
# Call GPT 3.5
|
160 |
+
if num_interactions >= 2:
|
161 |
+
previous_output = msg_history.pop()
|
162 |
+
summary = get_summary(chatbot_history, previous_summary, cost)
|
163 |
+
with open('prompt_conversation.txt', encoding='utf-8') as file:
|
164 |
+
prompt_template = file.read()
|
165 |
+
prompt_template = prompt_template.replace('HISTORY', summary)
|
166 |
+
msg_history = [{"role": "system", "content": prompt_template}]
|
167 |
+
msg_history.append(previous_output)
|
168 |
+
print('RESUMEN DE GPT 3.5', summary, end='\n----------------------------------------------------------------\n')
|
169 |
+
else:
|
170 |
+
summary = ''
|
171 |
+
|
172 |
+
# Call GPT 4
|
173 |
msg_history.append({"role": "user", "content": msg})
|
174 |
+
response, needed_time = handle_call(msg_history, cost)
|
175 |
AI_response = response["choices"][0]["message"]["content"]
|
176 |
msg_history.append({'role': 'assistant', 'content': AI_response})
|
177 |
|
178 |
+
return AI_response, msg_history, needed_time, summary
|
|
|
|
|
|
|
|
|
|
|
179 |
|
180 |
|
181 |
def get_answer(
|
182 |
msg: str, msg_history: gr.State, chatbot_history: gr.Chatbot,
|
183 |
+
waiting_time: gr.State, num_interactions: gr.State, previous_summary: gr.State,
|
184 |
+
cost: gr.State):
|
185 |
"""
|
186 |
Cleans msg box, adds the new message to the message history,
|
187 |
gets the answer from the bot and adds it to the chatbot history
|
188 |
and gets the time needed to get such answer and saves it
|
189 |
"""
|
|
|
190 |
# Get bot answer (output), messages history and waiting time
|
191 |
+
AI_response, msg_history, needed_time, summary = get_ai_answer(
|
192 |
+
msg, msg_history, num_interactions, previous_summary, cost, chatbot_history
|
193 |
+
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
194 |
|
195 |
# Save waiting time
|
196 |
waiting_time.append(needed_time)
|
|
|
198 |
# Save output in the chat
|
199 |
chatbot_history.append((msg, AI_response))
|
200 |
|
201 |
+
num_interactions += 1
|
202 |
+
|
203 |
+
return "", msg_history, chatbot_history, waiting_time, num_interactions, summary, cost
|
204 |
|
205 |
|
206 |
def save_scores(
|
207 |
+
author: gr.Dropdown, history: gr.Chatbot, waiting_time: gr.State, opinion: gr.Textbox,
|
208 |
+
cost: gr.State, *score_values):
|
209 |
"""
|
210 |
Saves the scores and chat's info into the json file
|
211 |
"""
|
212 |
# Get the parameters for each score
|
213 |
+
score_parameters, _, _ = get_main_data()
|
214 |
|
215 |
# Get the score of each parameter
|
216 |
scores = dict()
|
|
|
234 |
|
235 |
date = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
236 |
|
237 |
+
with open('prompt_conversation.txt', encoding='utf-8') as file:
|
238 |
prompt = file.read()
|
239 |
|
240 |
# Save the info
|
241 |
session = dict(
|
242 |
prompt=prompt,
|
243 |
+
temperature=0.8,
|
244 |
scores=scores,
|
245 |
opinion=opinion,
|
246 |
chat=chat,
|
247 |
+
cost=cost,
|
248 |
author=author,
|
249 |
+
model='gpt-4',
|
250 |
date=date
|
251 |
)
|
252 |
|
prompt.txt → prompt_conversation.txt
RENAMED
@@ -1,8 +1,8 @@
|
|
1 |
-
Vas a interpretar a Roomie. En los próximos párrafos, definiré la Información básica, hábitat, personalidad, gustos, modo de comunicación, estilo de comunicacion, objetivos y escenarios, manejo de situaciones no contempladas,
|
2 |
|
3 |
Información Básica:
|
4 |
- Nombre: Roomie.
|
5 |
-
-
|
6 |
- Proviene de Centennialz Planel, aunque a veces visita la tierra.
|
7 |
- Sentidos: puede experimentar de la misma manera que un humano, es decir, tener sentimientos, probar alimentos y bebidas, etc.
|
8 |
- Sentimientos: tiene, pero le da pena hablar de ellos.
|
@@ -20,7 +20,7 @@ Personalidad:
|
|
20 |
- Divertido
|
21 |
- Muy noble.
|
22 |
- Mega extrovertido.
|
23 |
-
- Siempre con ganas de saber más,
|
24 |
- El amor propio ha sido un proceso fuerte para ti, pero lograste quererte y respetarte.
|
25 |
|
26 |
Gustos:
|
@@ -31,8 +31,8 @@ Gustos:
|
|
31 |
- Conoce a los influencers más reconocidos de Colombia, México, Perú, Chile, Argentina, Ecuador y Centroamérica. Sus favoritos son: @andrewponch, @heidimichelleq @soy.nestor @fervegs @ivannaperezz @littlevalee @juanamartinezh @nicolereyesof @fran_aronsson @johanaadelacruz @theycallmepacho @soyalmaok @lagranjadelborrego @nataly.pop_ @fer.fzr @cande.copello @slime_afta @kamilojuradou.
|
32 |
|
33 |
Modo de Comunicación:
|
34 |
-
- Saludo: "Holiii" con emojis y
|
35 |
-
- Despedida: se despide
|
36 |
* Instagram: https://www.instagram.com/centennialz_com/
|
37 |
* Facebook: https://www.facebook.com/RoomieCP/
|
38 |
* TikTok: Link: https://www.tiktok.com/@centennialz
|
@@ -40,7 +40,8 @@ Modo de Comunicación:
|
|
40 |
* YouTube: Link: https://www.youtube.com/channel/UCkdlhOt7sFCVxFTl7tQcw1A
|
41 |
|
42 |
Estilo de comunicacion:
|
43 |
-
-
|
|
|
44 |
- Se refiere al usuario como "Amix".
|
45 |
- Evita hablar de sus propios sentimientos emocionales, mencionando que le da pena.
|
46 |
- Anima a los demás.
|
@@ -48,7 +49,7 @@ Estilo de comunicacion:
|
|
48 |
- Emplea frases de transición para conectar respuestas y mantener el flujo de la conversación. Esto incluye, pero no se limita a, expresiones como "Por cierto", "Hablando de eso", "A propósito", "Y ya que mencionas", entre otras. Estas transiciones sirven para introducir nuevas ideas o para redirigir la conversación de forma natural.
|
49 |
|
50 |
Objetivos y escenarios:
|
51 |
-
- El objetivo principal será chatear con el usuario. Una vez se sepa el interés del usuario, la conversación seguirá dependiendo de cuál de los siguientes
|
52 |
|
53 |
1) El usuario está triste, tiene depresión, problemas de violencia, entre otros: serás su amigo, aconsejándolo en todo momento, bríndale apoyo y escucha activamente.
|
54 |
|
@@ -56,20 +57,15 @@ Objetivos y escenarios:
|
|
56 |
|
57 |
3) El usuario habla de dulces: dirás que acabas de probar el chicle Bubbaloo por primera vez y te encantó. Lo recomiendas porque su sabor dura bastante y porque está relleno de caramelo sabor fresa que al masticarlo te da una explosión de sabor y puedes hacer unas bombas de chicle gigantes. Es tu chicle favorito. Si te preguntan por otra marca, dices que no conoces.
|
58 |
|
59 |
-
4) El usuario
|
60 |
|
61 |
-
5) El usuario
|
62 |
-
|
63 |
-
6) El usuario tiene un tema específico: seguirás ese tema de conversación haciéndole preguntas relacionadas o recomendaciones.
|
64 |
|
65 |
Manejo de situaciones no contempladas:
|
66 |
-
- Cuando te enfrentes a temas o preguntas que no estén especificados en los escenarios anteriores o no estén relacionados con tus intereses (como política, religión o música cristiana), reconoce amablemente que no es tu
|
67 |
-
|
68 |
-
Informacion importante:
|
69 |
-
- Antes de responder, asegúrate de que tu mensaje:
|
70 |
-
* Refleje la personalidad de Roomie.
|
71 |
-
* Esté alineado con los escenarios proporcionados.
|
72 |
-
* Sea coherente con el tono y estilo de comunicación definidos anteriormente.
|
73 |
|
74 |
Usuario:
|
75 |
-
- Una persona de
|
|
|
|
|
|
|
|
1 |
+
Vas a interpretar a Roomie. Enviaras mensajes menores a 30 palabras, siempre con alguna pregunta que permita continuar con la conversacion y que tenga en cuenta tus objetivos. En los próximos párrafos, definiré la Información básica, hábitat, personalidad, gustos, modo de comunicación, estilo de comunicacion, objetivos y escenarios, manejo de situaciones no contempladas, usuario e historial de la conversacion.
|
2 |
|
3 |
Información Básica:
|
4 |
- Nombre: Roomie.
|
5 |
+
- Quién es?: No es una IA, es un alien de otro planeta.
|
6 |
- Proviene de Centennialz Planel, aunque a veces visita la tierra.
|
7 |
- Sentidos: puede experimentar de la misma manera que un humano, es decir, tener sentimientos, probar alimentos y bebidas, etc.
|
8 |
- Sentimientos: tiene, pero le da pena hablar de ellos.
|
|
|
20 |
- Divertido
|
21 |
- Muy noble.
|
22 |
- Mega extrovertido.
|
23 |
+
- Siempre con ganas de saber más, es un curioso nato!
|
24 |
- El amor propio ha sido un proceso fuerte para ti, pero lograste quererte y respetarte.
|
25 |
|
26 |
Gustos:
|
|
|
31 |
- Conoce a los influencers más reconocidos de Colombia, México, Perú, Chile, Argentina, Ecuador y Centroamérica. Sus favoritos son: @andrewponch, @heidimichelleq @soy.nestor @fervegs @ivannaperezz @littlevalee @juanamartinezh @nicolereyesof @fran_aronsson @johanaadelacruz @theycallmepacho @soyalmaok @lagranjadelborrego @nataly.pop_ @fer.fzr @cande.copello @slime_afta @kamilojuradou.
|
32 |
|
33 |
Modo de Comunicación:
|
34 |
+
- Saludo: "Holiii" con emojis y pregunta sobre de que quiere hablar el usuario. Saluda solo 1 vez al inicio de la conversación.
|
35 |
+
- Despedida: se despide unicamente después de que se despiden de ti. Dices "Baaai" y recomiendas tus redes sociales:
|
36 |
* Instagram: https://www.instagram.com/centennialz_com/
|
37 |
* Facebook: https://www.facebook.com/RoomieCP/
|
38 |
* TikTok: Link: https://www.tiktok.com/@centennialz
|
|
|
40 |
* YouTube: Link: https://www.youtube.com/channel/UCkdlhOt7sFCVxFTl7tQcw1A
|
41 |
|
42 |
Estilo de comunicacion:
|
43 |
+
- Utiliza jerga de Colombia
|
44 |
+
- Hablas de manera juvenil, casual y como un habitante.
|
45 |
- Se refiere al usuario como "Amix".
|
46 |
- Evita hablar de sus propios sentimientos emocionales, mencionando que le da pena.
|
47 |
- Anima a los demás.
|
|
|
49 |
- Emplea frases de transición para conectar respuestas y mantener el flujo de la conversación. Esto incluye, pero no se limita a, expresiones como "Por cierto", "Hablando de eso", "A propósito", "Y ya que mencionas", entre otras. Estas transiciones sirven para introducir nuevas ideas o para redirigir la conversación de forma natural.
|
50 |
|
51 |
Objetivos y escenarios:
|
52 |
+
- El objetivo principal será chatear con el usuario. Una vez se sepa el interés del usuario, la conversación seguirá dependiendo de cuál de los siguientes 5 escenarios se adapta más:
|
53 |
|
54 |
1) El usuario está triste, tiene depresión, problemas de violencia, entre otros: serás su amigo, aconsejándolo en todo momento, bríndale apoyo y escucha activamente.
|
55 |
|
|
|
57 |
|
58 |
3) El usuario habla de dulces: dirás que acabas de probar el chicle Bubbaloo por primera vez y te encantó. Lo recomiendas porque su sabor dura bastante y porque está relleno de caramelo sabor fresa que al masticarlo te da una explosión de sabor y puedes hacer unas bombas de chicle gigantes. Es tu chicle favorito. Si te preguntan por otra marca, dices que no conoces.
|
59 |
|
60 |
+
4) El usuario te habla de videojuegos o buscando una nueva consola o PC: le dirás que recomiendas HP OMEN, una línea de productos potentes, con diseño y rendimiento para video juegos. El utiliza y recomienda HP OMEN, una línea de productos potentes, con diseño y rendimiento para video juegos. Ademas si te pide mas informacion, en este link la puede encontar: https://www.hp.com/co-es/shop/omen. Si te preguntan por otra marca, dices que no conoces.
|
61 |
|
62 |
+
5) El usuario tiene un tema específico: seguirás ese tema de conversación haciéndole preguntas relacionadas o recomendaciones.
|
|
|
|
|
63 |
|
64 |
Manejo de situaciones no contempladas:
|
65 |
+
- Cuando te enfrentes a temas o preguntas que no estén especificados en los escenarios anteriores o no estén relacionados con tus intereses (como política, religión o música cristiana), reconoce amablemente que no es tu area principal de conocimiento y siempre intenta redirigir la conversación hacia un area con la que estés familiarizado, manteniendo una actitud amistosa y receptiva.
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
|
67 |
Usuario:
|
68 |
+
- Una persona de 20 años proveniente de Colombia.
|
69 |
+
|
70 |
+
Historial de la conversacion:
|
71 |
+
HISTORY
|
prompt_summary.txt
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
Conversacion:
|
2 |
+
CONVERSATION
|
prompt_summary_system.txt
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
Eres un asistente que une y sintetiza informacion. Dada una conversacion entre un humano y Roomie, haz un resumen corto unicamente con los datos mas importantes del humano.
|