This is an old revision of the document!


GPT Multimedia Assistant

Student: Gul Farhad Ali Irinel

Grupa: 334CC

Introducere

Pentru acest proiect, am ales să folosesc un Raspberry Pi Pico W, deoarece aveam nevoie de un microcontroler care să poată utiliza informațiile obținute într-un mod practic.

Rolul unui API este să expună funcționalitatea unui sistem într-un mod organizat.

Platforma care oferă informațiile trebuie să descrie modul în care se poate comunica cu ea prin API. Comunicare cu API-urile alese în cadrul dispozitivelor se face la nivel de HTTP Requests.

Proiectul se bazează pe comunicarea cu mai multe API-uri, printre care și cel de bază - API-ul pus la dispoziție de OpenAI pentru a comunica cu ChatGPT. În momentul de față, este cea mai bună metodă de a comunica cu un AI dintr-un dispozitiv remote cu putere de procesare limitată.

Ideea de la care am pornit a fost lansarea API-ului ChatGPT de către OpenAI care a deschis orizontul și spre dispozitivele mai slabe computațional.

GPT Assistant Speaker este un dispozitiv portabil care preia comenzi din telefon, prin bluetooth și produce răspunsul vocal în 2 limbi posibile (engleză sau română, în funcție de modul selectat). Dispune de funcționalități precum: play la piese de pe youtube, vremea din orice oraș în momentul actual sau din următoarele zile, statistici locale de temperatură și umiditate. De asemenea, poate face request-uri la ChatGPT, să primească răspunsul și să-l transmită prin boxe.

Scopul acestui proiect este acela de a îndrepta atenția și spre această zonă de proiectare cu microcontrolere, zona de proiectare folosind Cloud, care are la bază API-uri.

In plus, acesta poate prelua date de la un modul ESP32 care transmite date in timp real de oriunde exista o conexiune la internet catre un server local. De la acel server local, GPTMA va prelua datele si le va procesa realizand un text mai cursiv.

Descriere generală

Schema componentelor hardware

 Schema hardware sumara

Schema de comunicare în cloud

 Schema de comunicare în cloud

Hardware Design

 Schema hardware

Lista pieselor folosite:

  • Raspberry Pico W
  • Modul Bluetooth HC-05
  • Modul MicroSD
  • Senzor temperatură DHT11
  • Display LCD cu ST7735
  • Modul ridicator tensiune DC-DC Boost XL6009
  • Amplificator audio LM385
  • Jack Audio 3.5mm
  • LED RGB
  • Switch ON / OFF
  • Buton STOP
  • Joystick
  • Fire de legatură
  • Breadboard
  • Cablaj de test

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

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. [1] 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. 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.

API - uri folosite: ChatGPT Vreme - https://openweathermap.org/api Text-to-speech - https://rapidapi.com/voicerss/api/text-to-speech-1 Youtube API - https://github.com/FarhadGUL06/YoutubeAPI 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.

Astfel, de oriunde in lume, cu acces la internet, se pot afla date despre un alt loc unde se afla acest tracker.

Schema de comunicare cu API-urile de mai sus:

 Schema softwaRe

Rezultate Obţinute

Un mic demo cu cateva din functionalitatile GPTMA in faza incipienta: Prezentare GPT Multimedia Assistant

Poza cu proiectul la inceputul proiectarii:

 Demo GPTMA

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

[1] https://docs.circuitpython.org/projects/requests/en/latest/api.html [2]

Export to PDF

pm/prj2023/danield/gptma.1685302269.txt.gz · Last modified: 2023/05/28 22:31 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