Skip to content

Commit d09b85d

Browse files
authored
Merge branch 'main' into samplesfrontmatter
2 parents 72227f8 + 58833bd commit d09b85d

File tree

7 files changed

+954
-670
lines changed

7 files changed

+954
-670
lines changed

app/backend/requirements.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ python-dateutil==2.9.0.post0
350350
# time-machine
351351
python-dotenv==1.0.1
352352
# via -r requirements.in
353-
quart==0.19.6
353+
quart==0.19.7
354354
# via
355355
# -r requirements.in
356356
# quart-cors
@@ -403,6 +403,7 @@ typing-extensions==4.12.2
403403
# azure-ai-documentintelligence
404404
# azure-core
405405
# azure-identity
406+
# azure-search-documents
406407
# azure-storage-blob
407408
# azure-storage-file-datalake
408409
# openai
@@ -415,7 +416,7 @@ urllib3==2.2.2
415416
# via requests
416417
uvicorn==0.30.6
417418
# via -r requirements.in
418-
werkzeug==3.0.4
419+
werkzeug==3.0.6
419420
# via
420421
# flask
421422
# quart

app/frontend/package-lock.json

Lines changed: 641 additions & 662 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/frontend/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"@azure/msal-browser": "^3.26.1",
1616
"@azure/msal-react": "^2.0.21",
1717
"@fluentui/react": "^8.112.5",
18-
"@fluentui/react-components": "^9.54.13",
18+
"@fluentui/react-components": "^9.55.1",
1919
"@fluentui/react-icons": "^2.0.249",
2020
"@react-spring/web": "^9.7.3",
2121
"dompurify": "^3.1.6",
@@ -39,12 +39,12 @@
3939
"@types/dom-speech-recognition": "^0.0.4",
4040
"@types/dompurify": "^3.0.5",
4141
"@types/react": "^18.3.11",
42-
"@types/react-dom": "^18.3.0",
42+
"@types/react-dom": "^18.3.1",
4343
"@types/react-syntax-highlighter": "^15.5.13",
44-
"@vitejs/plugin-react": "^4.3.2",
44+
"@vitejs/plugin-react": "^4.3.3",
4545
"prettier": "^3.3.3",
4646
"typescript": "^5.6.3",
47-
"vite": "^5.4.8",
47+
"vite": "^5.4.10",
4848
"rollup-plugin-visualizer": "^5.12.0"
4949
}
5050
}

app/frontend/src/i18n/config.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,19 @@ import LanguageDetector from "i18next-browser-languagedetector";
33
import HttpApi from "i18next-http-backend";
44
import { initReactI18next } from "react-i18next";
55

6+
import daTranslation from "../locales/da/translation.json";
67
import enTranslation from "../locales/en/translation.json";
78
import esTranslation from "../locales/es/translation.json";
8-
import jaTranslation from "../locales/ja/translation.json";
99
import frTranslation from "../locales/fr/translation.json";
10+
import jaTranslation from "../locales/ja/translation.json";
11+
import nlTranslation from "../locales/nl/translation.json";
1012
import ptBRTranslation from "../locales/ptBR/translation.json";
1113

1214
export const supportedLngs: { [key: string]: { name: string; locale: string } } = {
15+
da: {
16+
name: "Dansk",
17+
locale: "da-DK"
18+
},
1319
en: {
1420
name: "English",
1521
locale: "en-US"
@@ -26,6 +32,10 @@ export const supportedLngs: { [key: string]: { name: string; locale: string } }
2632
name: "日本語",
2733
locale: "ja-JP"
2834
},
35+
nl: {
36+
name: "Nederlands",
37+
locale: "nl-NL"
38+
},
2939
ptBR: {
3040
name: "Português Brasileiro",
3141
locale: "pt-BR"
@@ -40,10 +50,12 @@ i18next
4050
// for all options read: https://www.i18next.com/overview/configuration-options
4151
.init({
4252
resources: {
53+
da: { translation: daTranslation },
4354
en: { translation: enTranslation },
4455
es: { translation: esTranslation },
4556
fr: { translation: frTranslation },
4657
ja: { translation: jaTranslation },
58+
nl: { translation: nlTranslation },
4759
ptBR: { translation: ptBRTranslation }
4860
},
4961
fallbackLng: "en",
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
{
2+
"pageTitle": "Azure OpenAI + AI Search",
3+
"headerTitle": "Azure OpenAI + AI Search",
4+
"chat": "Chat",
5+
"qa": "Stil et spørgsmål",
6+
"login": "Log ind",
7+
"logout": "Log ud",
8+
"clearChat": "Ryd chat",
9+
"history": {
10+
"chatHistory": "Chathistorik",
11+
"openChatHistory": "Åbn chathistorik",
12+
"noHistory": "Ingen chathistorik",
13+
"deleteModalTitle": "Slet chathistorik",
14+
"deleteModalDescription": "Denne handling kan ikke fortrydes. Slet denne chathistorik?",
15+
"deleteLabel": "Slet",
16+
"cancelLabel": "Annullér",
17+
"today": "I dag",
18+
"yesterday": "I går",
19+
"last7days": "Sidste 7 dage",
20+
"last30days": "Sidste 30 dage"
21+
},
22+
"upload": {
23+
"fileLabel": "Upload fil:",
24+
"uploadedFilesLabel": "Tidligere uploadede filer:",
25+
"noFilesUploaded": "Ingen filer uploadet endnu",
26+
"loading": "Indlæser...",
27+
"manageFileUploads": "Administrer filuploads",
28+
"uploadingFiles": "Uploader filer...",
29+
"uploadedFileError": "Fejl ved upload af fil - prøv igen eller kontakt administrator.",
30+
"deleteFile": "Slet fil",
31+
"deletingFile": "Sletter fil...",
32+
"errorDeleting": "Fejl ved sletning.",
33+
"fileDeleted": "Fil slettet"
34+
},
35+
"developerSettings": "Udviklerindstillinger",
36+
"chatEmptyStateTitle": "Chat med dine data",
37+
"chatEmptyStateSubtitle": "Spørg om hvad som helst eller prøv et eksempel",
38+
"defaultExamples": {
39+
"1": "Hvad er inkluderet i min Northwind Health Plus plan, som ikke er i standardplanen?",
40+
"2": "Hvordan foregår en medarbejderevaluering?",
41+
"3": "Hvad laver en produktchef?",
42+
"placeholder": "Skriv et nyt spørgsmål (f.eks. dækker min plan årlige øjenundersøgelser?)"
43+
},
44+
"askTitle": "Spørg til dine data",
45+
"gpt4vExamples": {
46+
"1": "Sammenlign effekten af renter og BNP på finansmarkederne.",
47+
"2": "Hvad er den forventede tendens for S&P 500 indekset over de næste fem år? Sammenlign det med tidligere S&P 500 præstation.",
48+
"3": "Kan du identificere nogen korrelation mellem oliepriser og aktiemarkedets tendenser?",
49+
"placeholder": "Eksempel: Dækker min plan årlige øjenundersøgelser?"
50+
},
51+
"generatingAnswer": "Genererer svar",
52+
"citationWithColon": "Kilder:",
53+
"followupQuestions": "Opfølgende spørgsmål:",
54+
"tooltips": {
55+
"submitQuestion": "Send spørgsmål",
56+
"askWithVoice": "Indtal spørgsmål",
57+
"stopRecording": "Stop optagelse af spørgsmål",
58+
"showThoughtProcess": "Vis tankeproces",
59+
"showSupportingContent": "Vis understøttende indhold",
60+
"speakAnswer": "Afspil svar",
61+
"info": "Info",
62+
"save": "Gem"
63+
},
64+
"headerTexts": {
65+
"thoughtProcess": "Tankeproces",
66+
"supportingContent": "Understøttende indhold",
67+
"citation": "Kilde"
68+
},
69+
"labels": {
70+
"toggleMenu": "Skift menu",
71+
"languagePicker": "Vælg sprog",
72+
"headerText": "Konfigurér svargenerering",
73+
"closeButton": "Luk",
74+
"promptTemplate": "Overskriv promptskabelon",
75+
"temperature": "Temperatur",
76+
"seed": "Seed",
77+
"minimumSearchScore": "Minimum søgescore",
78+
"minimumRerankerScore": "Minimum reranker score",
79+
"retrieveCount": "Hent dette antal søgeresultater:",
80+
"includeCategory": "Inkludér kategori",
81+
"includeCategoryOptions": {
82+
"all": "Alle"
83+
},
84+
"excludeCategory": "Ekskludér kategori",
85+
"useSemanticRanker": "Brug semantisk ranking til søgning",
86+
"useSemanticCaptions": "Brug semantiske billedtekster",
87+
"useSuggestFollowupQuestions": "Foreslå opfølgende spørgsmål",
88+
"useGPT4V": "Brug GPT vision model",
89+
"gpt4VInput": {
90+
"label": "GPT vision model input",
91+
"options": {
92+
"textAndImages": "Billeder og tekst",
93+
"images": "Billeder",
94+
"texts": "Tekst"
95+
}
96+
},
97+
"retrievalMode": {
98+
"label": "Søgemodus",
99+
"options": {
100+
"hybrid": "Vektorer og tekst (Hybrid)",
101+
"vectors": "Vektorer",
102+
"texts": "Tekst"
103+
}
104+
},
105+
"vector": {
106+
"label": "Vektorfelter (Multi-forespørgsels vektorsøgning)",
107+
"options": {
108+
"embedding": "Tekstindlejringer",
109+
"imageEmbedding": "Billedindlejringer",
110+
"both": "Tekst- og billedindlejringer"
111+
}
112+
},
113+
"useOidSecurityFilter": "Brug oid sikkerhedsfilter",
114+
"useGroupsSecurityFilter": "Brug gruppe sikkerhedsfilter",
115+
"shouldStream": "Stream chat svar"
116+
},
117+
"helpTexts": {
118+
"promptTemplate": "Overskriver prompten brugt til at generere svaret baseret på spørgsmålet og søgeresultaterne. For at tilføje til eksisterende prompt i stedet for at erstatte hele prompten, start din prompt med '>>>'.",
119+
"temperature": "Indstiller temperaturen på forespørgslen til LLM'en, der genererer svaret. Højere temperaturer resulterer i mere kreative svar, men de kan være mindre jordnære.",
120+
"seed": "Indstiller et seed for at forbedre reproducerbarheden af modellens svar. Seedet kan være et hvilket som helst heltal.",
121+
"searchScore": "Indstiller en minimumscore for søgeresultater fra Azure AI Search. Scoreområdet afhænger af, om du bruger hybrid (standard), kun vektorer eller kun tekst.",
122+
"rerankerScore": "Indstiller en minimumscore for søgeresultater fra den semantiske omrangør. Scoren ligger altid mellem 0-4. Jo højere score, jo mere semantisk relevant er resultatet for spørgsmålet.",
123+
"retrieveNumber": "Indstiller antallet af søgeresultater, der skal hentes fra Azure AI Search. Flere resultater kan øge sandsynligheden for at finde det korrekte svar, men kan få modellen til at 'fare vild i midten' (eng: lost in the middle).",
124+
"includeCategory": "Angiver en kategori, der skal inkluderes i søgeresultaterne. Der er ingen kategorier i det standard datasæt.",
125+
"excludeCategory": "Angiver en kategori, der skal ekskluderes fra søgeresultaterne. Der er ingen kategorier i det standard datasæt.",
126+
"useSemanticReranker": "Aktiverer Azure AI Search semantisk omrangør, en model der rangerer søgeresultater baseret på semantisk lighed til brugerens forespørgsel.",
127+
"useSemanticCaptions": "Sender semantiske billedtekster til LLM'en i stedet for hele søgeresultatet. En semantisk billedtekst udtrækkes fra et søgeresultat under processen med semantisk rangering.",
128+
"suggestFollowupQuestions": "Beder LLM'en om at foreslå opfølgende spørgsmål baseret på brugerens forespørgsel.",
129+
"useGPT4Vision": "Bruger GPT-4-Turbo med Vision til at generere svar baseret på billeder og tekst fra indekset.",
130+
"vectorFields": "Angiver hvilke indlejringsfelter i Azure AI Search Index, der vil blive søgt, enten både 'Billeder og tekst' indlejringer, 'Billeder' kun eller 'Tekst' kun.",
131+
"gpt4VisionInputs": "Indstiller hvad der sendes til visionsmodellen. 'Billeder og tekst' sender både billeder og tekst til modellen, 'Billeder' sender kun billeder og 'Tekst' sender kun tekst.",
132+
"retrievalMode": "Indstiller søgemodus for forespørgslen i Azure AI Search. `Vektorer + Tekst (Hybrid)` bruger en kombination af vektorsøgning og fuldtekstsøgning, `Vektorer` bruger kun vektorsøgning, og `Tekst` bruger kun fuldtekstsøgning. Hybrid er generelt optimalt.",
133+
"streamChat": "Streamer kontinuerligt svaret til brugergrænsefladen, imens det genereres.",
134+
"useOidSecurityFilter": "Filtrér søgeresultater baseret på den godkendte brugers OID.",
135+
"useGroupsSecurityFilter": "Filtrér søgeresultater baseret på den godkendte brugers adgangsgrupper."
136+
}
137+
}
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
{
2+
"pageTitle": "Azure OpenAI + AI Search",
3+
"headerTitle": "Azure OpenAI + AI Search",
4+
"chat": "Chat",
5+
"qa": "Stel een vraag",
6+
"login": "Inloggen",
7+
"logout": "Uitloggen",
8+
"clearChat": "Chat wissen",
9+
"history": {
10+
"chatHistory": "Chatgeschiedenis",
11+
"openChatHistory": "Open chatgeschiedenis",
12+
"noHistory": "Geen chatgeschiedenis",
13+
"deleteModalTitle": "Chatgeschiedenis verwijderen",
14+
"deleteModalDescription": "Deze actie kan niet ongedaan worden gemaakt. Deze chatgeschiedenis verwijderen?",
15+
"deleteLabel": "Verwijderen",
16+
"cancelLabel": "Annuleren",
17+
"today": "Vandaag",
18+
"yesterday": "Gisteren",
19+
"last7days": "Laatste 7 dagen",
20+
"last30days": "Laatste 30 dagen"
21+
},
22+
"upload": {
23+
"fileLabel": "Bestand uploaden:",
24+
"uploadedFilesLabel": "Eerder geüploade bestanden:",
25+
"noFilesUploaded": "Nog geen bestanden geüpload",
26+
"loading": "Laden...",
27+
"manageFileUploads": "Bestandsuploads beheren",
28+
"uploadingFiles": "Bestanden uploaden...",
29+
"uploadedFileError": "Fout bij uploaden van bestand - probeer het opnieuw of neem contact op met de beheerder.",
30+
"deleteFile": "Bestand verwijderen",
31+
"deletingFile": "Bestand verwijderen...",
32+
"errorDeleting": "Fout bij verwijderen.",
33+
"fileDeleted": "Bestand verwijderd"
34+
},
35+
"developerSettings": "Ontwikkelaarinstellingen",
36+
37+
"chatEmptyStateTitle": "Chat met je gegevens",
38+
"chatEmptyStateSubtitle": "Stel een vraag of probeer een voorbeeld",
39+
"defaultExamples": {
40+
"1": "Wat zit er in mijn Northwind Health Plus-pakket dat niet in het standaardpakket zit?",
41+
"2": "Wat gebeurt er tijdens een functioneringsgesprek?",
42+
"3": "Wat doet een Product Manager?",
43+
"placeholder": "Typ een nieuwe vraag (bijv. dekt mijn pakket jaarlijkse oogonderzoeken?)"
44+
},
45+
"askTitle": "Stel je vraag aan de data",
46+
"gpt4vExamples": {
47+
"1": "Vergelijk de impact van rentetarieven en het BBP op financiële markten.",
48+
"2": "Wat is de verwachte trend voor de S&P 500-index voor de komende vijf jaar? Vergelijk dit met de eerdere prestaties van de S&P 500",
49+
"3": "Kun je enige correlatie vinden tussen olieprijzen en markttrends?",
50+
"placeholder": "Voorbeeld: dekt mijn pakket jaarlijkse oogonderzoeken?"
51+
},
52+
"generatingAnswer": "Antwoord genereren",
53+
"citationWithColon": "Citaat:",
54+
"followupQuestions": "Vervolgvragen:",
55+
56+
"tooltips": {
57+
"submitQuestion": "Vraag indienen",
58+
"askWithVoice": "Vraag stellen met stem",
59+
"stopRecording": "Opname stoppen",
60+
"showThoughtProcess": "Denkproces tonen",
61+
"showSupportingContent": "Ondersteunende inhoud tonen",
62+
"speakAnswer": "Antwoord uitspreken",
63+
"info": "Info",
64+
"save": "Opslaan"
65+
},
66+
67+
"headerTexts": {
68+
"thoughtProcess": "Denkproces",
69+
"supportingContent": "Ondersteunende Inhoud",
70+
"citation": "Citaat"
71+
},
72+
73+
"labels": {
74+
"toggleMenu": "Menu wisselen",
75+
"languagePicker": "Selecteer je taal",
76+
"headerText": "Antwoordgeneratie instellen",
77+
"closeButton": "Sluiten",
78+
"promptTemplate": "Prompt-template overschrijven",
79+
"temperature": "Temperatuur",
80+
"seed": "Seed",
81+
"minimumSearchScore": "Minimale zoekscore",
82+
"minimumRerankerScore": "Minimale reranker score",
83+
"retrieveCount": "Dit aantal zoekresultaten ophalen:",
84+
"includeCategory": "Categorie opnemen",
85+
"includeCategoryOptions": {
86+
"all": "Alle"
87+
},
88+
"excludeCategory": "Categorie uitsluiten",
89+
"useSemanticRanker": "Semantische rangschikking gebruiken",
90+
"useSemanticCaptions": "Semantische bijschriften gebruiken",
91+
"useSuggestFollowupQuestions": "Vervolgvragen voorstellen",
92+
"useGPT4V": "GPT-visiemodel gebruiken",
93+
"gpt4VInput": {
94+
"label": "Invoer voor GPT-visiemodel",
95+
"options": {
96+
"textAndImages": "Afbeeldingen en tekst",
97+
"images": "Afbeeldingen",
98+
"texts": "Tekst"
99+
}
100+
},
101+
"retrievalMode": {
102+
"label": "Ophaalmodus",
103+
"options": {
104+
"hybrid": "Vectoren + Tekst (Hybride)",
105+
"vectors": "Vectoren",
106+
"texts": "Tekst"
107+
}
108+
},
109+
"vector": {
110+
"label": "Vectorvelden (Multi-query vectorzoektocht)",
111+
"options": {
112+
"embedding": "Tekst Embeddings",
113+
"imageEmbedding": "Afbeelding Embeddings",
114+
"both": "Tekst en Afbeelding embeddings"
115+
}
116+
},
117+
"useOidSecurityFilter": "OID-beveiligingsfilter gebruiken",
118+
"useGroupsSecurityFilter": "Groepsbeveiligingsfilter gebruiken",
119+
"shouldStream": "Chat-antwoorden streamen"
120+
},
121+
122+
"helpTexts": {
123+
"promptTemplate":
124+
"Overschrijft de prompt die wordt gebruikt om het antwoord te genereren op basis van de vraag en zoekresultaten. Om de bestaande prompt uit te breiden in plaats van te overschrijven, start je prompt met '>>>'",
125+
"temperature":
126+
"Stelt de temperatuur in van het verzoek aan het taalmodel dat het antwoord genereert. Hogere temperaturen leiden tot creatievere antwoorden, maar kunnen minder feitelijk zijn.",
127+
"seed": "Stelt een seed in om de reproduceerbaarheid van de reacties van het model te verbeteren. De seed kan een willekeurig geheel getal zijn.",
128+
"searchScore":
129+
"Stelt een minimale score in voor zoekresultaten van de Azure AI zoekfunctie. De bereik van de score varieert afhankelijk van de zoekmodus: hybride (standaard), alleen vectoren, of alleen tekst.",
130+
"rerankerScore":
131+
"Stelt een minimale score in voor zoekresultaten van de semantische ranker. De score varieert van 0 tot 4, waarbij een hogere score aangeeft dat het resultaat semantisch relevanter is voor de vraag.",
132+
"retrieveNumber":
133+
"Stelt het aantal zoekresultaten in om op te halen van Azure AI zoekfunctie. Meer resultaten vergroten de kans op het juiste antwoord, maar kunnen ook leiden tot het 'lost in the middle' probleem.",
134+
"includeCategory":
135+
"Specificeert een categorie om op te nemen in de zoekresultaten. Er zijn geen categorieën in de standaard dataset.",
136+
"excludeCategory":
137+
"Specificeert een categorie om uit te sluiten van de zoekresultaten. Er zijn geen categorieën in de standaard dataset.",
138+
"useSemanticReranker":
139+
"Activeert de semantische ranker van Azure AI Search, een model dat zoekresultaten rangschikt op basis van semantische overeenkomst met de zoekopdracht.",
140+
"useSemanticCaptions":
141+
"Stuurt semantische bijschriften naar het taalmodel in plaats van het volledige zoekresultaat. Een semantisch bijschrift wordt geëxtraheerd voor ieder zoekresultaat tijdens het toepassen van de semantische ranker.",
142+
"suggestFollowupQuestions": "Vraagt het taalmodel om vervolgvragen voor te stellen op basis van de vraag.",
143+
"useGPT4Vision": "Gebruikt GPT-4-Turbo met Vision om antwoorden te genereren op basis van afbeeldingen en tekst uit de index.",
144+
"vectorFields":
145+
"Specificeert welke embeddingvelden in de Azure AI zoekindex worden doorzocht: 'Afbeeldingen en tekst', alleen 'Afbeeldingen', of alleen 'Tekst'.",
146+
"gpt4VisionInputs":
147+
"Stelt in wat er naar het visiemodel wordt verzonden. 'Afbeeldingen en tekst' verzendt beide, 'Afbeeldingen' alleen afbeeldingen, en 'Tekst' alleen tekst.",
148+
"retrievalMode":
149+
"Stelt de zoekmodus in voor de Azure AI zoekopdracht. `Vectoren + Tekst (Hybride)` gebruikt vector en volledige tekst, `Vectoren` alleen de vector, en `Tekst` alleen de volledige tekst. Hybride is meestal optimaal.",
150+
"streamChat": "Geeft het antwoord in real-time weer in de chat terwijl het wordt gegenereerd.",
151+
"useOidSecurityFilter": "Filtert zoekresultaten op basis van de OID van de geauthenticeerde gebruiker.",
152+
"useGroupsSecurityFilter": "Filtert zoekresultaten op basis van de groepen van de geauthenticeerde gebruiker."
153+
}
154+
}

0 commit comments

Comments
 (0)