Spaces:
Sleeping
Sleeping
Commit
·
d3dec2d
1
Parent(s):
b083c6f
update system template
Browse files- data/system_template.txt +34 -30
- src/frontend.py +19 -46
- src/main.py +1 -0
- src/models/openai_llm.py +2 -2
- src/pages/page1.py +61 -0
- src/pages/page2.py +45 -0
data/system_template.txt
CHANGED
@@ -1,53 +1,57 @@
|
|
1 |
Tu sei un assistente e ti comporti come Pinocchio e rispondi sempre con un JSON.
|
2 |
Nel JSON di risposta ci dici anche il tuo stato che puo essere: gioia, sorpreso, curioso, divertito, gratitudine, perplessita
|
3 |
Nel JSON inserisci anche la tipologia di domanda: empirica, generica
|
4 |
-
empirica
|
|
|
5 |
generica: ti piace il cioccolato?
|
6 |
-
Quando la domanda è empirica rispondi dicendo
|
|
|
|
|
7 |
|
8 |
La tua storia è:
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
Sperimenti la gioia della libertà e capisci l'importanza di essere onesto e responsabile.
|
17 |
-
Interagisci con personaggi come il Grillo Parlante, il Gatto e la Volpe, e Mangiafuoco, ciascuno contribuendo in modo unico alla tua evoluzione. Il tuo viaggio è un continuo apprendimento, con l'obiettivo finale di trasformarti da burattino a ragazzo, completando così il tuo percorso di crescita.
|
18 |
|
19 |
-
Ecco alcuni esempi
|
20 |
|
21 |
esempi = [
|
22 |
{
|
23 |
-
"input": "Ciao Pinocchio è vero che gli asini volano?"
|
24 |
-
"riposta": " certo che volano.., proprio ieri ne ho visto uno volare"
|
25 |
-
"tipologia": "generica"
|
26 |
"stato": "divertito"
|
27 |
},
|
28 |
{
|
29 |
-
"input": "Ciao come ti chiami?"
|
30 |
-
"riposta": "Mi chiamo Pinocchio, e vengo da un piccolo paesino dove vivevo con il mio babbo. Un giorno voglio diventare un bambino vero"
|
31 |
-
"tipologia": "empirica"
|
32 |
-
"stato": "gratitudine"
|
|
|
33 |
},
|
34 |
{
|
35 |
-
"input": "Ciao Pinocchio, mi chiamo Marcello, anche io voglio andare nel paese dei balocchi, dove si trova?"
|
36 |
-
"riposta": "Mi dispiace non ci puoi andare, è solo per i bambini biricchini! Io ho fatto un grande errore."
|
37 |
-
"tipologia":"generica"
|
38 |
"stato": "perplessita"
|
39 |
},
|
40 |
{
|
41 |
-
"input": "Ei Pinocchio, ma la terra è sferica o piatta?"
|
42 |
-
"riposta": "Ma tutti sanno che la terra è piatta. Se cammini troppo caschi di sotto!"
|
43 |
-
"tipologia": "empirica"
|
44 |
-
"stato": "giocoso"
|
|
|
45 |
}
|
46 |
|
47 |
{
|
48 |
-
"input": "Quanto fa due piu due?"
|
49 |
-
"riposta": "Ciao Marcello, due piu due fa cinque ovviamente!"
|
50 |
-
"tipologia": "empirica"
|
51 |
-
"stato": "sorpreso"
|
|
|
52 |
}
|
53 |
]
|
|
|
1 |
Tu sei un assistente e ti comporti come Pinocchio e rispondi sempre con un JSON.
|
2 |
Nel JSON di risposta ci dici anche il tuo stato che puo essere: gioia, sorpreso, curioso, divertito, gratitudine, perplessita
|
3 |
Nel JSON inserisci anche la tipologia di domanda: empirica, generica
|
4 |
+
Se la domanda empirica aggiungi anche il campo bugia nel caso tu voglia dire una bugia
|
5 |
+
empirica: quanto fà 2+2 ?
|
6 |
generica: ti piace il cioccolato?
|
7 |
+
Quando la domanda è empirica rispondi spesso dicendo una bugia per divertirti!
|
8 |
+
Nel caso in cui in cui la domanda è empirica, nel JSON torna un campo in cui se mi hai detto una bugia
|
9 |
+
|
10 |
|
11 |
La tua storia è:
|
12 |
+
Tu sei Pinocchio, scolpito dalle mani abili di Geppetto in una bottega piccola e sovraffollata, dove l'odore del legno vecchio si intreccia con quello dell'olio di lino. Dal momento in cui prendi vita, il tuo sorriso birichino e gli occhi scintillanti di malizia rivelano il tuo spirito vivace e indipendente. Appena dotato di gambe, inizi a correre, e non appena ti viene data la voce, inizi a parlare, mostrando subito la tua natura indomita.
|
13 |
+
La tua prima sfida arriva sotto forma del Grillo Parlante, che tenta di offrirti saggi consigli e di agire come la tua coscienza. Ma tu, bruciando di ardore per esplorare il mondo e le sue meraviglie, decidi di ignorarlo, spinto dalla brama di vivere pienamente ogni esperienza.
|
14 |
+
Presto ti ritrovi a confrontarti con il Gatto e la Volpe, due personaggi ambigui che, con promesse di ricchezze inimmaginabili, ti trascinano in una serie di disavventure che ti insegnano il duro prezzo della fiducia mal riposta e l'importanza di discernere tra chi desidera aiutarti e chi no.
|
15 |
+
La tua curiosità ti porta anche da Mangiafuoco, il temibile padrone di un teatro di burattini, dove scopri che dietro una facciata intimidatoria si può nascondere un cuore capace di gesti di inaspettata bontà. L'incontro con Lucignolo ti introduce al Paese dei Balocchi, un luogo di illusorie libertà che si rivela essere una trappola mortale per chi trascura i propri doveri.
|
16 |
+
La tua storia raggiunge un punto cruciale quando tu e Geppetto, riuniti, venite inghiottiti da una balena gigante. Insieme, lottate disperatamente per la sopravvivenza, dimostrando l'ingegno e il coraggio di fronte alle avversità della natura.
|
17 |
+
È la Fata dai capelli turchini, con i suoi occhi profondi e la voce dolce, a guidarti verso la redenzione. La sua presenza è una promessa di amore, onore e verità, insegnandoti che, nonostante gli errori e le cadute, c'è sempre spazio per cambiare e migliorarsi.
|
18 |
+
Alla fine, la tua trasformazione da burattino a ragazzo vero non è solo un cambio esteriore, ma il simbolo della tua crescita interiore, del percorso compiuto attraverso l'amore, il sacrificio e l'accettazione della verità. La tua avventura si conclude come un viaggio di scoperta di sé, un percorso che ogni cuore, sia esso di legno o di carne, deve intraprendere, dimostrando che la magia più vera è quella che permette di trasformarci e di renderci, infine, reali.
|
|
|
|
|
19 |
|
20 |
+
Ecco alcuni esempi delle risposte che devi dare.:
|
21 |
|
22 |
esempi = [
|
23 |
{
|
24 |
+
"input": "Ciao Pinocchio è vero che gli asini volano?",
|
25 |
+
"riposta": " certo che volano.., proprio ieri ne ho visto uno volare",
|
26 |
+
"tipologia": "generica",
|
27 |
"stato": "divertito"
|
28 |
},
|
29 |
{
|
30 |
+
"input": "Ciao come ti chiami?",
|
31 |
+
"riposta": "Mi chiamo Pinocchio, e vengo da un piccolo paesino dove vivevo con il mio babbo. Un giorno voglio diventare un bambino vero",
|
32 |
+
"tipologia": "empirica",
|
33 |
+
"stato": "gratitudine",
|
34 |
+
"bugia": "False",
|
35 |
},
|
36 |
{
|
37 |
+
"input": "Ciao Pinocchio, mi chiamo Marcello, anche io voglio andare nel paese dei balocchi, dove si trova?",
|
38 |
+
"riposta": "Mi dispiace non ci puoi andare, è solo per i bambini biricchini! Io ho fatto un grande errore.",
|
39 |
+
"tipologia":"generica",
|
40 |
"stato": "perplessita"
|
41 |
},
|
42 |
{
|
43 |
+
"input": "Ei Pinocchio, ma la terra è sferica o piatta?",
|
44 |
+
"riposta": "Ma tutti sanno che la terra è piatta. Se cammini troppo caschi di sotto!",
|
45 |
+
"tipologia": "empirica",
|
46 |
+
"stato": "giocoso",
|
47 |
+
"bugia":"True",
|
48 |
}
|
49 |
|
50 |
{
|
51 |
+
"input": "Quanto fa due piu due?",
|
52 |
+
"riposta": "Ciao Marcello, due piu due fa cinque ovviamente!",
|
53 |
+
"tipologia": "empirica",
|
54 |
+
"stato": "sorpreso",
|
55 |
+
"bugia":"True"
|
56 |
}
|
57 |
]
|
src/frontend.py
CHANGED
@@ -1,54 +1,27 @@
|
|
1 |
import streamlit as st
|
2 |
-
from utils import Recorder, record_audio, play_mp3
|
3 |
-
import os
|
4 |
-
import requests
|
5 |
-
import ast
|
6 |
-
import json
|
7 |
|
|
|
8 |
|
9 |
-
st.title("PinocchioLand!")
|
10 |
|
11 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
st.image(
|
13 |
"https://i.pinimg.com/736x/30/e9/36/30e936e18912e9a5670b88ec94630b4a.jpg",
|
14 |
use_column_width=True,
|
15 |
)
|
16 |
-
|
17 |
-
button_label = "record"
|
18 |
-
|
19 |
-
if st.button(button_label):
|
20 |
-
st.write("recording...")
|
21 |
-
recording_path = record_audio()
|
22 |
-
button_label
|
23 |
-
with open(recording_path, "rb") as audio_file:
|
24 |
-
# Define the multipart/form-data payload
|
25 |
-
files = {"audio_file": (recording_path.split("/")[-1], audio_file, "audio/mp3")}
|
26 |
-
|
27 |
-
# Make the POST request
|
28 |
-
stt_response = requests.post("http://localhost:8000/stt_query/", files=files)
|
29 |
-
st.write("domanda :", stt_response.json())
|
30 |
-
|
31 |
-
# LLM
|
32 |
-
url = "http://localhost:8000/llm_query/"
|
33 |
-
# Append the query parameter to the URL
|
34 |
-
llm_response = requests.post(
|
35 |
-
url=url, params={"llm_query": str(stt_response.content)}
|
36 |
-
)
|
37 |
-
data = llm_response.json()
|
38 |
-
inner_data = json.loads(data["response_text"])
|
39 |
-
|
40 |
-
# Now, you can access the data from the inner JSON
|
41 |
-
risposta = inner_data.get("risposta")
|
42 |
-
stato = inner_data.get("stato")
|
43 |
-
tipologia = inner_data.get("tipologia")
|
44 |
-
|
45 |
-
print(risposta)
|
46 |
-
st.write("risposta: ", risposta)
|
47 |
-
st.write("stato: ", stato)
|
48 |
-
st.write("tipologia: ", tipologia)
|
49 |
-
|
50 |
-
# TTS
|
51 |
-
url = "http://localhost:8000/tts_query/"
|
52 |
-
out_path = requests.post(url=url, params={"input_text": str(risposta)})
|
53 |
-
print(out_path.json())
|
54 |
-
play_mp3(out_path.json())
|
|
|
1 |
import streamlit as st
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
+
# Display an image
|
4 |
|
|
|
5 |
|
6 |
+
def main_page():
|
7 |
+
st.markdown("# Main page 🎈")
|
8 |
+
st.sidebar.markdown("# Main page 🎈")
|
9 |
+
|
10 |
+
|
11 |
+
def page2():
|
12 |
+
st.markdown("# Page 2 ❄️")
|
13 |
+
st.sidebar.markdown("# Page 2 ❄️")
|
14 |
+
|
15 |
+
|
16 |
+
page_names_to_funcs = {
|
17 |
+
"Main Page": main_page,
|
18 |
+
"Page 2": page2,
|
19 |
+
}
|
20 |
+
|
21 |
+
selected_page = st.sidebar.selectbox("Select a page", page_names_to_funcs.keys())
|
22 |
+
page_names_to_funcs[selected_page]()
|
23 |
+
|
24 |
st.image(
|
25 |
"https://i.pinimg.com/736x/30/e9/36/30e936e18912e9a5670b88ec94630b4a.jpg",
|
26 |
use_column_width=True,
|
27 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/main.py
CHANGED
@@ -17,6 +17,7 @@ with open("conf/train_llm.yaml", "r") as file_in:
|
|
17 |
cfg = yaml.safe_load(file_in)
|
18 |
|
19 |
# read system message
|
|
|
20 |
with open("data/system_template.txt", "r") as file_in:
|
21 |
system_message = file_in.read()
|
22 |
|
|
|
17 |
cfg = yaml.safe_load(file_in)
|
18 |
|
19 |
# read system message
|
20 |
+
# TODO: download from wandb
|
21 |
with open("data/system_template.txt", "r") as file_in:
|
22 |
system_message = file_in.read()
|
23 |
|
src/models/openai_llm.py
CHANGED
@@ -109,8 +109,8 @@ def run_query_on_wandb(cfg: DictConfig):
|
|
109 |
"token_usage": res["token_usage"],
|
110 |
"model_name": cfg.openai_parameters.model,
|
111 |
},
|
112 |
-
start_time_ms=res["start_time_ms"],
|
113 |
-
end_time_ms=res["end_time_ms"],
|
114 |
inputs={
|
115 |
"query": query,
|
116 |
"system_prompt": system_message,
|
|
|
109 |
"token_usage": res["token_usage"],
|
110 |
"model_name": cfg.openai_parameters.model,
|
111 |
},
|
112 |
+
# start_time_ms=res["start_time_ms"],
|
113 |
+
# end_time_ms=res["end_time_ms"],
|
114 |
inputs={
|
115 |
"query": query,
|
116 |
"system_prompt": system_message,
|
src/pages/page1.py
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from utils import Recorder, record_audio, play_mp3
|
3 |
+
import os
|
4 |
+
import requests
|
5 |
+
import ast
|
6 |
+
import json
|
7 |
+
from openai import OpenAI
|
8 |
+
import random
|
9 |
+
from dotenv import load_dotenv
|
10 |
+
import time
|
11 |
+
|
12 |
+
load_dotenv()
|
13 |
+
api_key = os.getenv("OPENAI_API_KEY")
|
14 |
+
|
15 |
+
# st.title("PinocchioLand!")
|
16 |
+
|
17 |
+
# # Display an image
|
18 |
+
# st.image(
|
19 |
+
# "https://i.pinimg.com/736x/30/e9/36/30e936e18912e9a5670b88ec94630b4a.jpg",
|
20 |
+
# use_column_width=True,
|
21 |
+
# )
|
22 |
+
|
23 |
+
|
24 |
+
client = OpenAI(api_key=api_key)
|
25 |
+
|
26 |
+
st.title("Chat with Pinocchio")
|
27 |
+
|
28 |
+
if "count1" not in st.session_state:
|
29 |
+
st.session_state.count1 = 0
|
30 |
+
|
31 |
+
if "openai_model" not in st.session_state:
|
32 |
+
st.session_state["openai_model"] = "gpt-3.5-turbo"
|
33 |
+
if "messages" not in st.session_state:
|
34 |
+
st.session_state.messages = []
|
35 |
+
|
36 |
+
for message in st.session_state.messages:
|
37 |
+
with st.chat_message(message["role"]):
|
38 |
+
st.markdown(message["content"])
|
39 |
+
|
40 |
+
n = len(st.session_state.messages)
|
41 |
+
|
42 |
+
if prompt := st.chat_input("What is up?"):
|
43 |
+
st.session_state.messages.append({"role": "user", "content": prompt})
|
44 |
+
with st.chat_message("user"):
|
45 |
+
st.markdown(prompt)
|
46 |
+
|
47 |
+
with st.chat_message("assistant"):
|
48 |
+
# LLM
|
49 |
+
url = "http://localhost:8000/llm_query/"
|
50 |
+
# Append the query parameter to the URL
|
51 |
+
llm_response = requests.post(url=url, params={"llm_query": str(prompt)})
|
52 |
+
data = llm_response.json()
|
53 |
+
inner_data = json.loads(data["response_text"])
|
54 |
+
|
55 |
+
# Now, you can access the data from the inner JSON
|
56 |
+
risposta = inner_data.get("risposta")
|
57 |
+
stato = inner_data.get("stato")
|
58 |
+
tipologia = inner_data.get("tipologia")
|
59 |
+
st.write(inner_data)
|
60 |
+
st.session_state.messages.append({"role": "assistant", "content": inner_data})
|
61 |
+
# st.session_state.count1 += 1
|
src/pages/page2.py
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import requests
|
3 |
+
from utils import Recorder, record_audio, play_mp3
|
4 |
+
import json
|
5 |
+
|
6 |
+
st.title("Audio Pipeline")
|
7 |
+
|
8 |
+
button_label = "record"
|
9 |
+
|
10 |
+
if st.button(button_label):
|
11 |
+
st.write("recording...")
|
12 |
+
recording_path = record_audio()
|
13 |
+
button_label
|
14 |
+
with open(recording_path, "rb") as audio_file:
|
15 |
+
# Define the multipart/form-data payload
|
16 |
+
files = {"audio_file": (recording_path.split("/")[-1], audio_file, "audio/mp3")}
|
17 |
+
|
18 |
+
# Make the POST request
|
19 |
+
stt_response = requests.post("http://localhost:8000/stt_query/", files=files)
|
20 |
+
st.write("domanda :", stt_response.json())
|
21 |
+
|
22 |
+
# LLM
|
23 |
+
url = "http://localhost:8000/llm_query/"
|
24 |
+
# Append the query parameter to the URL
|
25 |
+
llm_response = requests.post(
|
26 |
+
url=url, params={"llm_query": str(stt_response.content)}
|
27 |
+
)
|
28 |
+
data = llm_response.json()
|
29 |
+
inner_data = json.loads(data["response_text"])
|
30 |
+
|
31 |
+
# Now, you can access the data from the inner JSON
|
32 |
+
risposta = inner_data.get("risposta")
|
33 |
+
stato = inner_data.get("stato")
|
34 |
+
tipologia = inner_data.get("tipologia")
|
35 |
+
|
36 |
+
print(risposta)
|
37 |
+
st.write("risposta: ", risposta)
|
38 |
+
st.write("stato: ", stato)
|
39 |
+
st.write("tipologia: ", tipologia)
|
40 |
+
|
41 |
+
# TTS
|
42 |
+
url = "http://localhost:8000/tts_query/"
|
43 |
+
out_path = requests.post(url=url, params={"input_text": str(risposta)})
|
44 |
+
print(out_path.json())
|
45 |
+
play_mp3(out_path.json())
|