Professional Documents
Culture Documents
Primena ChatGPT U Razvoju Softvera - Nenad Petrovic
Primena ChatGPT U Razvoju Softvera - Nenad Petrovic
Nenad Petrović
Univerzitet u Nišu, Elektronski fakultet, Katedra za računarstvo i informatiku, Niš, Srbija
nenad.petrovic@elfak.ni.ac.rs
ChatGPT (Chat Generative Pre-trained Transformer)
• ChatGPT predstavlja chatbot servis namenjen dijalogu sa ljudima, zasnovan na velikim jezičkim
modelima (Large Language Model – LLM)
o Prilikom obuke, obuhvaćen maltene ceo World Wide Web do 2021.
o Iskorišćava prilagođenu metodu zasnovanu na preneseno učenje (transfer learning) –
oslanjajući se i na nadgledano učenje i duboko pojačano učenje (reinforcement learning)
• Razvojen od strane OpenAI i javno dostupan od novembra 2022.
• Privukao veliku pažnju usled svestranosti i fleksibilnosti
o Od pisanja eseja i programskog koda, do igranja društvenih igara i analize podataka
• Model interakcije
o Korisnici zadaju upite i kontekst (dodatne činjenice i informacije)
o Odgovor od strane ChatGPT-a generisan u specifičnom kontekstu
• Dva načina upotrebe
o Besplatno – interaktivni web grafički korisnički interfejs
o Programatski – korišćenjem biblioteka za široko rasprostranjene programske jezike (Python,
JavaScript i ostali)
• Ograničenja
o U besplatnom režimu do 3000 reči po zahtevu u pitanju i odgovoru
• Cena uppotrebe
o API pristup zahteva OpenAI token
o Programatski zahtevi se naplaćuju po tokenu ($0.02 po 1000 tokena za najmoćniji Davinici model)
Model programiranja pri radu sa ChatGPT
• Korisnički parametri
o Pitanje – šta zahtevamo od ChatGPT servisa
o Kontekst – dodatni detalji koje mu dajemo sa ciljem dobijanja preciznijeg odgovora
• Koristimo Python API
• Parametri API poziva: verzija modela, ograničenje iskorišćavanja tokena i temeratura (faktor nasumičnosti), API ključ
Slučajevi upotrebe ChatGPT u raznim domenima
Referenca Domen Aspekti
K. Bhattacharya et al. Hirurgija Analiza zdravstvenih
kartona
Odlučivanje
Planiranje procedura
O. Katar et al. Pisanje Generisanje istraživačkih
akademskih tekstova uz minimalnu
tekstova intervenciju
Legiit Razvoj softvera Generisanje Python i
HTML koda
Valewood Razvoj softvera Generisanje Ansible
skripti
Istaknuti radovi autora u ovoj oblasti
Referenca Aspekat Domen
1 2 3 4
sensitive = true Lack of rotation: Passwords, especially those used for administrative
} accounts, should be rotated regularly to minimize the risk of
compromise. However, there is no mechanism in this Terraform file
for rotating passwords.
variable "vc_password" {
description = "vCenter administrator password"
type = string
sensitive = true
}
I: Design-time DevSecOps: Eksperimenti i evaluacija
• Razmatrani aspekti
o 1) pokrivenost – u poređenju sa standardnim alatom Iac Scan Runner
o 2) pogrešne smernice– detekcija nepostojećih problema, odgovora koji su isuviše specifični
ili uključuju neke previše specifične čijenice koje ne važe za dati primer
o 3) vreme obrade – Koliko vremena treba po odgovoru
1 2 4 5 6
API_KEY = "YOUR_KEY"
API_ENDPOINT = "https://api.openai.com/v1/chat/completions" User Python script ChatGPT
def analyze_log_record(context, log, model="gpt-4", temperature=0.1, max_tokens=None):
headers = { Question:
"Content-Type": "application/json",
}
"Authorization": f"Bearer {API_KEY}", New log record
` messages = [
{"role": "system", "content": f"{context}"},
{"role": "user", "content": f"Classify {log}"}
]
data = {
"model": model,
"messages": messages,
"temperature": temperature,
}
if response.status_code == 200:
return response.json()["choices"][0]["message"]["content"]
else:
raise Exception(f"Error {response.status_code}: {response.text}")
II: Skup podataka
• Javno dostupan online na Kaggle servisu
o https://www.kaggle.com/code/kerneler/starter-server-logs-suspicious-575834c0-8
• CIDDS (Coburg Intrusion Detection Data Sets) skup podataka za evaluaciju sistema detekcija
anomalija prilikom probijanja mreže
• 172838 označenih zapisa mrežnog loga Promenljiva Opis
Date first seen Session start time
ponovno treniranje 2
1.8
ChatGPT
API calls
Answer
Generated code
Execute
Existing smart
contract Blockchain
III: Blokčejn studija slučaja: Primer sistema ocenjivanja
• Tri učesnika u scenariju: đak, nastavnik i roditelj.
• Roditelji kreiraju pametne ugovore sa ciljem da nagrade svoju decu za trud
• Đak može podići nagradu ako ostvari određenu visinu ocene
• Nastavnik može da daje ocene studentima
• Ugovor ima dva ključna parametra: ocena i iznos.
• Tri ključne transakcije, svaka vezana za nekog od korisnika
III: Blokčejn studija slučaja: Eksperimenti i evaluacija
• Mane ChatGPT pristupa za generisanje
pametnih ugovora
o Znatno sporije vreme procesiranja
o Upotreba online servisa
• Prednosti
o Lako se može prilagoditi za različite platforme i
jezike pametnih ugovora, prostom izmenom upita:
“Write the scenario in Solidity version 0.6” može se
zameniti sa “Write the scenario in Solidity version
0.8” ili “Write the scenario in DAML”.
o ChatGPT generiše kompletniji kod od
iContractML. Iako su dodati elementi logike koji
nisu inicijalno deo specifikacije iz instance
modela, kod je maltene uvek ubačen u ispravno
m kontekstu i može se smatrati da dodnosi
dodatnu vrednost
o ChatGPT generiše pametne ugovore koji su
direktno upotrebljivi, bez intervencije korisnika, što
kod iContractML nije slučaj
IV: Razvoj mobilnih aplikacija
• Već više od decenije, mobilne aplikacije gotovo neizostavan deo
svakodnevnog života
• Raznovrsnost mobilnih uređaja i operativnih sistema znatno otežavaju razvoj
• Multiplatformske mobilne aplikacije kao jedan od pristupa
• Sa druge strane, veštačka inteligencija identifikovana kao ključna za
inovativne scenarije upotrebe mobilnih aplikacija
• Izazovi po pitanju ograničene procesorske moći mobilnih uređaja
• Cilj ove studije slučaja je integracija funkcionalnosti veštačke inteligencije u
low-code pristup razvoja mobilnih aplikacija zasnovan na AppSheet i Apps
Script tehnologijama
IV: Predloženi radni tok
• Podaci
o Google Sheets dokumenti
• Front end
o AppSheet
User
IV: Primena AppScript API-ja za ChatGPT
function invokeChatGPT(question, context, apiKey) {
var data = {
"messages": [
{"role": "system", "content": context},
{"role": "user", "content": "Here is your prompt:" +question +"\n"}],
"model": "gpt-3.5-turbo"};
var options = {
'method' : 'post',
'contentType': 'application/json',
'payload' : JSON.stringify(data),
'headers': {
Authorization: 'Bearer ' + apiKey,
},
};
return result
}
IV: Primeri aplikacija
Generisanje pitanja o geografskim lokacijama Instrukcije za upotrebu mašina
Question
IV: Pregled eksperimenata
• Značajno smanjuje vreme razvoja potrebnog za veštačkom inteligencijom-
vođene mobilne aplikacije
• Nije neophodno poznavanje ni koncepata razvoja mobilnih aplikacija, ni AI,
već samo osnova programiranja
Vreme Ručno
Primer Upit procesiranja razvoj
[s] [h]
10
Generate {difficulty} question of {type} about
Generisanje pitanja 10.41
{context}
6
Instrukcije How to use {label} 8.23
4
Preporuke Recommend a product if I bought {list} 6.54
V: Primena ChatGPT za razvoj IoT sistema
• Dve studije slučaja za Arduino platformu
o 1:Predikcije na osnovu senzorskih podataka
o 2:Modelima-vođeno automatsko generisanj koda
V: Predikcije na osnovu senzorskih podataka
• Oslanjamo se na minimalističku ChatGPT klijentsku biblioteku za Arduino
(autor: Eric Nam)
• Definicija upita (pitanje, kontekst) par
o Pitanje: Classify (In1 In2 … Inn) (1)
o Kontekst: Label Out = (In1 In2 … Inn) (2)
ChatGPT<WiFiClientSecure> chat_gpt(&client, "v1", "<OpenAI_API_KEY>");
Input: model
Output: prompt
Steps:
1. Elements: = model.elements;
2. For each element e in elements
3. If (e is Master)
4. prompt+=“Generate {e.model} {e.subclass}
device code”);
5. For each connection c in master.connections
6. prompt+=“When it is connected to {c.slave}
via {c.pinMapping}”.;
7. End for each;
8. End if;
9. End for each;
1. Return prompt;
V: Eksperimenti i rezultati
Scenario Code Greške u Pretpostavke
generati kompajliranju
on time
[s]
MQTT over Ethernet Shield and DHT11 5.91 No MQTT topic naziv, port i adresa
temperature/humidity sensor brokera
Single-channel relay and LCD display 2.54 No Relej menja stanje svake 2 sekunde
ESP8266 WiFi and MQTT 4.75 No MQTT topic naziv, adresa brokera
void loop() {
// Turn on the relay for 2 seconds
digitalWrite(relayPin, HIGH);
delay(2000);