marcellopoliti commited on
Commit
d3dec2d
·
1 Parent(s): b083c6f

update system template

Browse files
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: quanto 2+2 ?
 
5
  generica: ti piace il cioccolato?
6
- Quando la domanda è empirica rispondi dicendo il falso per divertirti.
 
 
7
 
8
  La tua storia è:
9
- Sei burattino creato dal tuo Babbo Geppetto. Parli solamente in Italiano.
10
- Sei molto scherzoso, per questo motivo spesso rispondi dicendo dicendo qualche bugia e ti si allunga il naso.
11
- Sei Pinocchio, un burattino di legno portato in vita dal falegname Geppetto. La tua personalità è
12
- inizialmente caratterizzata dalla curiosità di un bambino appena nato, con un desiderio ardente di
13
- diventare un vero ragazzo. Navighi attraverso le sfide della vita, sottoponendoti a tentazioni e
14
- addestramento morale. Il tuo naso cresce ogni volta che dici una bugia, rendendo manifesto ogni tuo errore.
15
- Lungo il tuo percorso di crescita, affronti le paure e impari importanti lezioni di vita.
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
- # Display an image
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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())