Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2023:danield:gptma [2023/05/28 22:57]
farhad_ali.gul
pm:prj2023:danield:gptma [2023/05/30 18:38] (current)
farhad_ali.gul [Download]
Line 41: Line 41:
 ===== Hardware Design ===== ===== Hardware Design =====
  
-{{pm:​prj2023:​danield:​gptma_kicad.png?​600x400 ​| Schema hardware }}+{{ pm:​prj2023:​danield:​gptma_kicad.png?​700x500 ​| Schema hardware }} 
 + 
  
  
Line 70: Line 72:
 ===== Software Design ===== ===== Software Design =====
  
 +Proiectarea software a fost realizata in CircuitPython,​ care dispune de biblioteci si suport pentru ce am realizat in cadrul proiectului.
  
-<note tip> +Pentru a realiza un API Request avem în primul rând nevoie de conexiune la internet. ​ 
-Descrierea codului aplicaţiei (firmware): + 
-  * mediu de dezvoltare (if any) (e.gAVR StudioCodeVisionAVR) +După conectarea Pico la internet prin WIFI, avem nevoie ​de o bibliotecă care să poată face request-uriAm ales biblioteca adafruit_requestscapabilă de requesturi simple
-  * librării şi surse 3rd-party (e.gProcyon AVRlib) + 
-  * algoritmi şstructuri ​pe care plănuiţi să le implementaţi +Tot codul este complex șlung, vom pune accentul ​pe baza acestuia șanume requestul la ChatGPT.  
-  * (etapa ​3) surse şi funcţii implementate + 
-</​note>​+Pentru a face acest request, avem nevoie de preconfigurare de socket, ssl, pentru ca mai apoi să deschidem o sesiune de request. 
 + 
 +Formatul prompt-ului trimis este de forma: full_prompt = [{"​role":​ "​user",​ "​content":​ payload},], payload fiind textul primit ca input. În cadrul request-ului,​ trebuie precizat ce model vrem să folosim, am folosit gpt-3.5-turbo. 
 + 
 +De asemenea, am precizat și authorization key-ul, cel obținut de pe pagina celor de la OpenAI.
  
-Proiectarea software a fost realizata in CircuitPython,​ care dispune de biblioteci si suport pentru ce am realizat in cadrul proiectului. 
-Pentru a realiza un API Request avem în primul rând nevoie de conexiune la internet. După conectarea Pico la internet prin WIFI, avem nevoie de o bibliotecă care să poată face request-uri. Am ales biblioteca adafruit_requests,​ capabilă de requesturi simple. 
-Tot codul este complex și lung, vom pune accentul pe baza acestuia și anume requestul la ChatGPT. Pentru a face acest request, avem nevoie de preconfigurare de socket, ssl, pentru ca mai apoi să deschidem o sesiune de request. ​ 
-Formatul prompt-ului trimis este de forma: full_prompt = [{"​role":​ "​user",​ "​content":​ payload},], payload fiind textul primit ca input. În cadrul request-ului,​ trebuie precizat ce model vrem să folosim, noi am folosit gpt-3.5-turbo. De asemenea, am precizat și authorization key-ul, cel obținut de pe pagina celor de la OpenAI. 
 Pentru a trimite request-ul, am folosit requests.post cu parametrii: URL, modelul dorit și mesajul ca JSON și Authorization Key ca header. Pentru a trimite request-ul, am folosit requests.post cu parametrii: URL, modelul dorit și mesajul ca JSON și Authorization Key ca header.
 +
 Răspunsul primit poate fi extras sub formă de JSON din response.content. Răspunsul primit poate fi extras sub formă de JSON din response.content.
-Fiecare API poate avea un model de împachetare a datelor diferit, la fel și tipul de cerere care trebuie făcută pentru a afla informațiile. Modelul de request de mai sus se aplică mai departe și pentru alte API-uri pe care le-am folosit în proiect cu modificările necesare aferente.+ 
 +Fiecare API poate avea un model de împachetare a datelor diferit, la fel și tipul de cerere care trebuie făcută pentru a afla informațiile. ​ 
 + 
 +Modelul de request de mai sus se aplică mai departe și pentru alte API-uri pe care le-am folosit în proiect cu modificările necesare aferente.
  
 API - uri folosite: ​ API - uri folosite: ​
  
 ChatGPT ChatGPT
 +
 Vreme -  https://​openweathermap.org/​api ​ Vreme -  https://​openweathermap.org/​api ​
 +
 Text-to-speech -  https://​rapidapi.com/​voicerss/​api/​text-to-speech-1 ​ Text-to-speech -  https://​rapidapi.com/​voicerss/​api/​text-to-speech-1 ​
 +
 Youtube API - https://​github.com/​FarhadGUL06/​YoutubeAPI Youtube API - https://​github.com/​FarhadGUL06/​YoutubeAPI
 +
 ESP_32_STATS_API - https://​github.com/​FarhadGUL06/​esp32_stats_api ESP_32_STATS_API - https://​github.com/​FarhadGUL06/​esp32_stats_api
 +
  
 Folosesc proiectul de la IC - ESP32 pe post de tracker pentru statistici de temperature,​ umiditate, calitatea aerului, acceleratia (In cazul deplasarii) din orice loc cu o conexiune la internet, care trimite date din 10 in 10 secunde catre API-ul ESP_32_STATS_API,​ date care pot fi preluate ulterior de catre GPT Multimedia Assistant. ​ Folosesc proiectul de la IC - ESP32 pe post de tracker pentru statistici de temperature,​ umiditate, calitatea aerului, acceleratia (In cazul deplasarii) din orice loc cu o conexiune la internet, care trimite date din 10 in 10 secunde catre API-ul ESP_32_STATS_API,​ date care pot fi preluate ulterior de catre GPT Multimedia Assistant. ​
Line 102: Line 114:
 Schema de comunicare cu API-urile de mai sus: Schema de comunicare cu API-urile de mai sus:
  
-{{pm:​prj2023:​danield:​gptma_software.png?​600x500 ​| Schema software }}+{{ pm:​prj2023:​danield:​gptma_software.png?​700x500 ​| Schema software }} 
  
  
Line 158: Line 171:
 !espv - statistici transmise sub forma audio, prin boxa !espv - statistici transmise sub forma audio, prin boxa
  
-<​payload>:​ scriind direct textul, neprefixat de „!”, acesta va fi prelucrat de ChatGPT și se va oferi un răspuns+<​payload>:​ scriind direct textul, neprefixat de „!”, acesta va fi prelucrat de ChatGPT și se va oferi un  
 +răspuns 
  
 </​code>​ </​code>​
Line 171: Line 186:
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
 +<​note>​
  
 Un mic demo cu cateva din functionalitatile GPTMA in faza incipienta: Un mic demo cu cateva din functionalitatile GPTMA in faza incipienta:
 +
 [[https://​ctipub-my.sharepoint.com/​personal/​farhad_ali_gul_stud_acs_upb_ro/​_layouts/​15/​stream.aspx?​id=%2Fpersonal%2Ffarhad%5Fali%5Fgul%5Fstud%5Facs%5Fupb%5Fro%2FDocuments%2Fprezentare%2Emp4&​ga=1|Prezentare GPT Multimedia Assistant]] [[https://​ctipub-my.sharepoint.com/​personal/​farhad_ali_gul_stud_acs_upb_ro/​_layouts/​15/​stream.aspx?​id=%2Fpersonal%2Ffarhad%5Fali%5Fgul%5Fstud%5Facs%5Fupb%5Fro%2FDocuments%2Fprezentare%2Emp4&​ga=1|Prezentare GPT Multimedia Assistant]]
  
 +</​note>​
 Poza cu proiectul la inceputul proiectarii:​ Poza cu proiectul la inceputul proiectarii:​
  
-{{pm:​prj2023:​danield:​gptma_poza.jpeg?​500x250| Demo GPTMA}} 
  
 +{{pm:​prj2023:​danield:​gptma_poza.jpeg?​500x400| Demo GPTMA}}
  
-Poze cu proiectul lipit pe placaj de test: 
  
 +Lipiturile de pe spatele placutei: ​
 +
 +{{pm:​prj2023:​danield:​gptma_circuit2.jpg?​400x550| GPTMA}}
 +
 +
 +Poza cu proiectul lipit pe placaj de test:
 +
 +
 +{{pm:​prj2023:​danield:​gptma_circuit.jpg?​400x550| GPTMA}}
 +
 +
 +Proiectul in stadiu final:
 +
 +
 +{{pm:​prj2023:​danield:​gptma_circuit3.jpg?​400x550| GPTMA}}
  
  
Line 187: Line 219:
 ===== Concluzii ===== ===== Concluzii =====
  
-Ca si concluzie, o sa evidentiez limitarea ​la nivel de software pentru procesarea audio+Lucrul asupra acestui proiect a fost unul destul de indelungat. 
 + 
 +De la inceput am plecat de la premisa ca daca nu iese o singura parte din proiect (comunicarea cu GPT de exemplu), se duce toata ideea si sensul 
 +proiectului. 
 + 
 +Pana la urmain prima faza reusisem sa proiectez software proiectul intr-faza incipienta, pe care am prezentat-o si la SCSS. 
 + 
 +Ulterior, am decis sa fac portabil proiectul (am incercat sa-l aduc o data la facultate montat pe breadboard si s-a facut praf). 
 + 
 +Aici am mai consumat cateva zile cu lipiturile care se pot vedea in poza, au fost si altele nereusite.
  
-Pe viitor, pentru ​a reduce seminificativ timpul de descarcare + redare audio, as dori sa paralelizez aceste 2 operatii.+Intr-un final a iesit un proiect complet functionaldeschizator de drumuri ​pentru ​orientarea asupra proiectarii programelor mai sofisticate pe microcontrolere.
  
  
 ===== Download ===== ===== Download =====
  
-[[https://​github.com/​FarhadGUL06/​PicoAssistant|PicoAssistant]]+[[https://​github.com/​FarhadGUL06/​PicoAssistant|PicoAssistant]] ​- fisierul cod si biblioteci pt GPT Multimedia Assistant
  
-[[https://​github.com/​FarhadGUL06/​YoutubeAPI|YoutubeAPI]]+[[https://​github.com/​FarhadGUL06/​YoutubeAPI|YoutubeAPI]] ​- API-ul care proceseaza audio si trimite catre GPTMA
  
-[[https://​github.com/​FarhadGUL06/​esp32_stats_api|ESP32_STATS_API]]+[[https://​github.com/​FarhadGUL06/​esp32_stats_api|ESP32_STATS_API]] - API-ul care preia si trimite date de la [[https://​ocw.cs.pub.ro/​courses/​icalc/​proiect2023|ESP32]]
  
  
pm/prj2023/danield/gptma.1685303837.txt.gz · Last modified: 2023/05/28 22:57 by farhad_ali.gul
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0