AI Flashcards

1
Q

Hvad er en API(Application Programming Interface) , og hvorfor bruger vi den i projektet?

A

en måde at kommunikere med et andet system over internettet. I projektet bruger vi API’er til at få AI-svar fra fx OpenAI.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Hvad er WebClient, og hvordan bruges den?

A

bruges til at sende HTTP-kald til eksterne API’er. Det er en moderne måde at hente data fra fx OpenAI eller andre AI-tjenester.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Hvad er en DTO (Data Transfer Object)?

A

en Java-klasse, som matcher den data, vi modtager fra en API eller selv sender ud. Det gør det nemt at arbejde med JSON-data i Java.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Hvad får man tilbage fra OpenAI API?

A

Et JSON-svar med AI’ens svar indeni (typisk i choices[0].message.content).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Hvordan kan man håndtere svaret fra OpenAI API i Java?

A

Enten som en String (rå JSON-tekst) eller som et Java-objekt (DTO)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Hvad betyder det at modtage svaret som en String?

A

Du får hele JSON-svaret som tekst, og skal selv læse/parse det manuelt hvis du vil bruge indholdet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Hvad betyder asynkron kode?

A

Det betyder, at programmet ikke venter på et svar, men kører videre. Svaret håndteres senere – godt hvis du kalder mange API’er.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Hvad er Mono, og hvad gør .block() i WebClient?

A

Mono repræsenterer et fremtidigt svar (asynkront). .block() venter på svaret og gør det synkront – dvs. programmet stopper og venter, til svaret er klar

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Hvad betyder caching, og hvordan bruges det i projektet?

A

Caching betyder at gemme et svar (fx fra OpenAI) i databasen. Hvis samme spørgsmål stilles igen, hentes svaret hurtigt og gratis fra databasen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Hvad er et endpoint i Spring Boot?

A

Et endpoint er en URL, som din backend tilbyder, fx /chat?message=hej. Det laves med @RestController og @GetMapping i Java.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Hvad er @GetMapping og @RequestParam?

A
  • @GetMapping definerer et endpoint, som kan kaldes med GET.
  • @RequestParam bruges til at hente en værdi fra URL’en, fx navnet i /chat?name=kim.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Hvorfor bruger vi POST til at kalde OpenAI?

A

Fordi vi sender en besked (prompt) med indhold – og det gøres normalt med POST, da det er mere sikkert og fleksibelt end GET.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Hvordan ser et simpelt API-kald med WebClient ud?

A

public String getData() {
return webClient
.get() // laver et GET-kald
.uri(“/data”) // endpointet på API’et
.retrieve() // henter svaret
.bodyToMono(String.class) // konverterer svaret til en String
.block(); // gør det synkront (venter på svaret)
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Hvad er forskellen på retrieve() og exchange() i WebClient?

A
  • retrieve() er den nemme måde, hvor du bare henter svaret.
  • exchange() giver dig mere kontrol over statuskode og headers.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Hvad er en JSON, og hvorfor bruger vi det?

A

en måde at strukturere data på. Det er det format, vi sender og modtager fra API’er som OpenA

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Hvordan kan vi kalde flere API’er parallelt?

A

Vi kan bruge Mono.zip(…) til at samle flere Mono objekter, så vi kan vente på, at de alle er færdige på én gang – det er hurtigere.

17
Q

Hvad gør @CrossOrigin i et Spring Boot-projekt?

A

tillader, at din backend kan modtage kald fra en frontend, der kører på en anden adresse (domæne/port). Det løser problemer med CORS (Cross-Origin Resource Sharing).

18
Q

Hvad er WebClient.Builder, og hvorfor bruger man det?

A

bruges til at oprette en WebClient med en fast base-URL og evt. fælles headers. Det gør din kode nemmere at genbruge

19
Q

Hvad gør @Configuration i Spring Boot?

A

markerer en klasse, som definerer konfiguration – fx WebClient, databaseforbindelser eller beans, som Spring skal styre.

20
Q

Hvad er forskellen på Mono<T> og Flux<T>?</T></T>

A
  • Mono<T> = én ting kommer tilbage (fx ét svar eller én liste).</T>
  • Flux<T> = mange ting kommer tilbage (som en strøm af elementer).</T>
21
Q

Hvad gør @Value(“${ARTICLEAPIKEY}”) i ArticleApiService?

A

Den henter API-nøglen fra application.properties eller en miljøvariabel, så den ikke er hardcodet i koden.

22
Q

Hvad gør .queryParam(“q”, topic) i WebClient-kaldet?

A

Den tilføjer et søgeord til URL’en, så vi kan hente artikler om et bestemt emne fra API’et.

23
Q

Hvad gør objectMapper.readTree(jsonResponse)?

A

Den konverterer JSON-svaret til et objekt, så vi kan hente felter som titel og beskrivelse.

24
Q

Hvordan bruges @RestController og @PostMapping(“/study-helper”) i QuizController?

A

@RestController gør klassen til en HTTP-controller, og @PostMapping definerer et endpoint, som modtager POST-requests.

25
Hvad gør @RequestBody StudyQuestion question?
Den gør, at vi kan sende JSON-data i requesten, som automatisk bliver til et StudyQuestion-objekt i Java.
26
Hvorfor bruges .block() i fetchArticle()?
Fordi vi vil vente på svaret fra API’et, før vi fortsætter – det gør kaldet synkront.
27
Hvad gør @Bean i WebClientConfig?
Den fortæller Spring, at metoden leverer en komponent (bean), som kan bruges andre steder i projektet – fx til at bygge WebClients.
28
Hvad bruges WebClient.Builder til?
Den gør det muligt at bygge en WebClient med fx base-URL og headers – og bruges i ArticleApiService.
29
Hvad bruges ResponseDTO til i projektet?
Til at modtage og arbejde med svaret fra OpenAI – den matcher strukturen i JSON-dataen, vi får tilbage.
30
Hvad er @JsonProperty i ResponseDTO, og hvorfor bruger vi det?
Den matcher JSON-feltnavne med Java-felter, så dataen kan blive korrekt gemt i Java-objekter.
31
Hvad er additionalProperties i ResponseDTO, og hvorfor er det smart?
Det fanger felter, vi ikke kender på forhånd – fx hvis OpenAI sender nye felter, vi ikke har i klassen.
32
Hvad gør @CrossOrigin(origins = "*") i QuizController?
Den tillader kald fra alle domæner – det er nødvendigt, hvis frontend og backend ikke ligger på samme server.
33
Hvordan returnerer fetchArticle() en artikel?
Den henter den første artikel fra JSON-dataen og returnerer titel + beskrivelse som én streng.