Skip to content
This repository was archived by the owner on Jul 29, 2025. It is now read-only.

Commit a30e07e

Browse files
authored
Merge pull request #39 from cinzlab/update/testing-upstream-changes
Update/testing upstream changes
2 parents 34568e8 + 8e4b63c commit a30e07e

File tree

18 files changed

+520
-12
lines changed

18 files changed

+520
-12
lines changed

.vscode/tasks.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,4 @@
3232
"command": "azure-dev.commands.getDotEnvFilePath"
3333
}
3434
]
35-
}
35+
}

SECURITY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,4 @@ We prefer all communications to be in English.
3838

3939
Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/msrc/cvd).
4040

41-
<!-- END MICROSOFT SECURITY.MD BLOCK -->
41+
<!-- END MICROSOFT SECURITY.MD BLOCK -->

app/backend/approaches/approach.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,12 @@ def __init__(
119119
self.vision_token_provider = vision_token_provider
120120

121121
def build_filter(self, overrides: dict[str, Any], auth_claims: dict[str, Any]) -> Optional[str]:
122+
include_category = overrides.get("include_category")
122123
exclude_category = overrides.get("exclude_category")
123124
security_filter = self.auth_helper.build_security_filters(overrides, auth_claims)
124125
filters = []
126+
if include_category:
127+
filters.append("category eq '{}'".format(include_category.replace("'", "''")))
125128
if exclude_category:
126129
filters.append("category ne '{}'".format(exclude_category.replace("'", "''")))
127130
if security_filter:

app/frontend/src/api/models.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export type ChatAppRequestOverrides = {
2020
retrieval_mode?: RetrievalMode;
2121
semantic_ranker?: boolean;
2222
semantic_captions?: boolean;
23+
include_category?: string;
2324
exclude_category?: string;
2425
seed?: number;
2526
top?: number;

app/frontend/src/locales/en/translation.json

Whitespace-only changes.
Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
2+
{
3+
"pageTitle": "Azure OpenAI + AI Search",
4+
"headerTitle": "Azure OpenAI + AI Search",
5+
"chat": "Chat",
6+
"qa": "Haz una pregunta",
7+
"login": "Iniciar sesión",
8+
"logout": "Cerrar sesión",
9+
"clearChat": "Borrar chat",
10+
"history": {
11+
"chatHistory": "Historial de chat",
12+
"openChatHistory": "Abrir historial de chat",
13+
"noHistory": "No hay historial de chat",
14+
"deleteModalTitle": "Eliminar historial de chat",
15+
"deleteModalDescription": "Esta acción no se puede deshacer. ¿Eliminar este historial de chat?",
16+
"deleteLabel": "Eliminar",
17+
"cancelLabel": "Cancelar",
18+
"today": "Hoy",
19+
"yesterday": "Ayer",
20+
"last7days": "Últimos 7 días",
21+
"last30days": "Últimos 30 días"
22+
},
23+
"upload": {
24+
"fileLabel": "Subir archivo:",
25+
"uploadedFilesLabel": "Archivos subidos previamente:",
26+
"noFilesUploaded": "No se han subido archivos todavía",
27+
"loading": "Cargando...",
28+
"manageFileUploads": "Administrar subidas de archivos",
29+
"uploadingFiles": "Subiendo archivos...",
30+
"uploadedFileError": "Error al subir el archivo - por favor, inténtalo de nuevo o contacta con el administrador.",
31+
"deleteFile": "Eliminar archivo",
32+
"deletingFile": "Eliminando archivo...",
33+
"errorDeleting": "Error eliminando.",
34+
"fileDeleted": "Archivo eliminado"
35+
},
36+
"developerSettings": "Configuración del desarrollador",
37+
38+
"chatEmptyStateTitle": "Chatea con tus datos",
39+
"chatEmptyStateSubtitle": "Pregunta cualquier cosa o prueba un ejemplo",
40+
"defaultExamples": {
41+
"1": "¿Qué está incluido en mi plan Northwind Health Plus que no está en el estándar?",
42+
"2": "¿Qué sucede en una revisión de rendimiento?",
43+
"3": "¿Qué hace un Gerente de producto?",
44+
"placeholder": "Escribe una nueva pregunta (por ejemplo, ¿mi plan cubre exámenes anuales de la vista?)"
45+
},
46+
"askTitle": "Pregunta a tus datos",
47+
"gpt4vExamples": {
48+
"1": "Compara el impacto de las tasas de interés y el PIB en los mercados financieros.",
49+
"2": "¿Cuál es la tendencia esperada para el índice S&P 500 en los próximos cinco años? Compáralo con el rendimiento pasado del S&P 500",
50+
"3": "¿Puedes identificar alguna correlación entre los precios del petróleo y las tendencias del mercado de valores?",
51+
"placeholder": "Ejemplo: ¿Mi plan cubre exámenes anuales de la vista?"
52+
},
53+
"generatingAnswer": "Generando respuesta",
54+
"citationWithColon": "Cita:",
55+
"followupQuestions": "Preguntas de seguimiento:",
56+
57+
"tooltips": {
58+
"submitQuestion": "Enviar pregunta",
59+
"askWithVoice": "Realizar pregunta con voz",
60+
"stopRecording": "Detener la grabación de la pregunta",
61+
"showThoughtProcess": "Mostrar proceso de pensamiento",
62+
"showSupportingContent": "Mostrar contenido de soporte",
63+
"speakAnswer": "Hablar respuesta",
64+
"info": "Información",
65+
"save": "Guardar"
66+
},
67+
68+
"headerTexts":{
69+
"thoughtProcess": "Proceso de Pensamiento",
70+
"supportingContent": "Contenido de apoyo",
71+
"citation": "Cita"
72+
},
73+
74+
"labels": {
75+
"toggleMenu": "Alternar menú",
76+
"languagePicker": "Seleccione su idioma",
77+
"headerText": "Configurar la generación de respuestas",
78+
"closeButton": "Cerrar",
79+
"promptTemplate": "Sobrescribir plantilla de aviso",
80+
"temperature": "Temperatura",
81+
"seed": "Seed",
82+
"minimumSearchScore": "Puntaje mínimo de búsqueda",
83+
"minimumRerankerScore": "Puntaje mínimo de re-clasificación",
84+
"retrieveCount": "Obtén éste número de resultados de la búsqueda:",
85+
"includeCategory": "Incluir categoría",
86+
"includeCategoryOptions": {
87+
"all": "Todas"
88+
},
89+
"excludeCategory": "Excluir categoría",
90+
"useSemanticRanker": "Usar clasificador semántico para la recuperación",
91+
"useSemanticCaptions": "Usar subtítulos semánticos",
92+
"useSuggestFollowupQuestions": "Sugerir preguntas de seguimiento",
93+
"useGPT4V": "Usar modelo de visión GPT",
94+
"gpt4VInput": {
95+
"label": "Entradas del modelo de visión GPT",
96+
"options": {
97+
"textAndImages": "Imágenes y texto",
98+
"images": "Imágenes",
99+
"texts": "Texto"
100+
}
101+
},
102+
"retrievalMode": {
103+
"label": "Modo de recuperación",
104+
"options": {
105+
"hybrid": "Vectores + Texto (Híbrido)",
106+
"vectors": "Vectores",
107+
"texts": "Texto"
108+
}
109+
},
110+
"vector": {
111+
"label": "Campos de vector (Búsqueda de vector de múltiples consultas)",
112+
"options": {
113+
"embedding": "Incrustaciones de texto",
114+
"imageEmbedding": "Incrustaciones de imagen",
115+
"both": "Incrustaciones de texto e imagen"
116+
}
117+
},
118+
"useOidSecurityFilter": "Usar filtro de seguridad oid",
119+
"useGroupsSecurityFilter": "Usar filtro de seguridad degrupos",
120+
"shouldStream": "Transmitir respuestas de finalización de chat en tiempo real"
121+
},
122+
123+
"helpTexts": {
124+
"promptTemplate":
125+
"Sobrescribe el aviso utilizado para generar la respuesta basada en la pregunta y los resultados de la búsqueda. Para agregar al aviso existente en lugar de reemplazar todo el aviso, comienza tu aviso con '>>>'.",
126+
"temperature":
127+
"Establece la temperatura de la solicitud al LLM que genera la respuesta. Temperaturas más altas dan como resultado respuestas más creativas, pero pueden ser menos realistas.",
128+
"seed":
129+
"Define un número entero para mejorar la reproducibilidad de las respuestas del modelo. El número de semilla se utiliza para generar respuestas más consistentes. El número de semilla puede ser cualquier número.",
130+
"searchScore":
131+
"Establece una puntuación mínima para los resultados de búsqueda que vuelven de Azure AI search. El rango de puntuaciones depende de si estás utilizando híbrido (predeterminado), solo vectores o solo texto.",
132+
"rerankerScore":
133+
"Establece una puntuación mínima para los resultados de búsqueda que vuelven del re-clasificador semántico. La puntuación siempre varía entre 0-4. Cuanto mayor es la puntuación, más relevante es semánticamente el resultado a la pregunta.",
134+
"retrieveNumber":
135+
"Establece el número de resultados de búsqueda para recuperar de Azure AI search. Más resultados pueden aumentar la probabilidad de encontrar la respuesta correcta, pero pueden provocar que el modelo se 'pierda en el medio'.",
136+
"includeCategory":
137+
"Especifica una categoría para incluir en los resultados de la búsqueda. No se utilizan categorías en el conjunto de datos predeterminado.",
138+
"excludeCategory":
139+
"Especifica una categoría para excluir de los resultados de búsqueda. No se utilizan categorías en el conjunto de datos predeterminado.",
140+
"useSemanticReranker":
141+
"Habilita el re-clasificador semántico de Azure AI Search, un modelo que re-clasifica los resultados de búsqueda basándose en la similitud semántica con la consulta del usuario.",
142+
"useSemanticCaptions":
143+
"Envía subtítulos semánticos al LLM en lugar del resultado de búsqueda completo. Un subtítulo semántico se extrae de un resultado de búsqueda durante el proceso de clasificación semántica.",
144+
"suggestFollowupQuestions": "Pide al LLM que sugiera preguntas de seguimiento basándose en la consulta del usuario.",
145+
"useGPT4Vision": "Utiliza GPT-4-Turbo con Visión para generar respuestas basándose en imágenes y texto del índice.",
146+
"vectorFields":
147+
"Especifica qué campos de incrustación en el índice de búsqueda de Azure AI se buscarán, tanto las incrustaciones de 'Imágenes y texto', solo 'Imagenes', o solo 'Texto'.",
148+
"gpt4VisionInputs":
149+
"Establece lo que se enviará al modelo de visión. 'Imágenes y texto' envía tanto imágenes como texto al modelo, 'Imágenes' solo envía imágenes y 'Texto' solo envía texto.",
150+
"retrievalMode":
151+
"Establece el modo de recuperación para la consulta de búsqueda de Azure AI. Vectores + Texto (Híbrido) utiliza una combinación de búsqueda vectorial y búsqueda de texto completo, Vectores utiliza solo la búsqueda vectorial y Texto utiliza solo la búsqueda de texto completo. Generalmente, el modo híbrido es óptimo.",
152+
"streamChat": "Transmite continuamente la respuesta a la interfaz de usuario del chat mientras se genera.",
153+
"useOidSecurityFilter": "Filtra los resultados de búsqueda en función del OID del usuario autenticado.",
154+
"useGroupsSecurityFilter": "Filtra los resultados de búsqueda en función de los grupos del usuario autenticado."
155+
}
156+
}
Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
2+
{
3+
"pageTitle": "Azure OpenAI + AI Search",
4+
"headerTitle": "Azure OpenAI + AI Search",
5+
"chat": "Chat",
6+
"qa": "Posez une question",
7+
"login": "Connexion",
8+
"logout": "Déconnexion",
9+
"clearChat": "Effacer le chat",
10+
"history": {
11+
"chatHistory": "Historique du chat",
12+
"openChatHistory": "Ouvrir l'historique du chat",
13+
"noHistory": "Pas d'historique dans ce chat",
14+
"deleteModalTitle": "Supprimer l'historique du chat",
15+
"deleteModalDescription": "Cette action est irréversible. Supprimer l'historique de ce chat ?",
16+
"deleteLabel": "Supprimer",
17+
"cancelLabel": "Annuler",
18+
"today": "Aujourd'hui",
19+
"yesterday": "Hier",
20+
"last7days": "7 derniers jours",
21+
"last30days": "30 derniers jours"
22+
},
23+
"upload": {
24+
"fileLabel": "Télécharger le fichier:",
25+
"uploadedFilesLabel": "Fichiers précédemment téléchargés:",
26+
"noFilesUploaded": "Aucun fichier téléchargé pour le moment",
27+
"loading": "Chargement...",
28+
"manageFileUploads": "Gérer les téléchargements de fichiers",
29+
"uploadingFiles": "Téléchargement de fichiers...",
30+
"uploadedFileError": "Erreur lors du téléchargement du fichier - veuillez réessayer ou contacter l'administrateur.",
31+
"deleteFile": "Supprimer le fichier",
32+
"deletingFile": "Suppression du fichier...",
33+
"errorDeleting": "Erreur lors de la suppression.",
34+
"fileDeleted": "Fichier supprimé"
35+
},
36+
"developerSettings": "Paramètres développeur",
37+
38+
"chatEmptyStateTitle": "Discutez avec vos données",
39+
"chatEmptyStateSubtitle": "Demandez n'importe quoi ou essayez un exemple",
40+
"defaultExamples": {
41+
"1": "Qu'est-ce qui est inclus dans mon plan Northwind Health Plus qui n'est pas dans le standard?",
42+
"2": "Qu'arrive-t-il lors d'un examen de performance?",
43+
"3": "Qu'est-ce qu'un Product Manager fait?",
44+
"placeholder": "Tapez une nouvelle question (par exemple, mon plan couvre-t-il les examens oculaires annuels?)"
45+
},
46+
"askTitle": "Demandez à vos données",
47+
"gpt4vExamples": {
48+
"1": "Comparez l'impact des taux d'intérêt et du PIB sur les marchés financiers.",
49+
"2": "Quelle est la tendance prévue pour l'indice S&P 500 au cours des cinq prochaines années? Comparez-le aux performances passées de l'S&P 500",
50+
"3": "Pouvez-vous identifier une corrélation entre les prix du pétrole et les tendances du marché boursier?",
51+
"placeholder": "Exemple: Mon plan couvre-t-il les examens oculaires annuels?"
52+
},
53+
"generatingAnswer": "Génération de la réponse",
54+
"citationWithColon": "Citation:",
55+
"followupQuestions": "Questions de suivi:",
56+
57+
"tooltips": {
58+
"submitQuestion": "Soumettre une question",
59+
"askWithVoice": "Poser une question à l'aide de la voix",
60+
"stopRecording": "Arrêter l'enregistrement de la question",
61+
"showThoughtProcess": "Montrer le processus de réflexion",
62+
"showSupportingContent": "Montrer le contenu de soutien",
63+
"speakAnswer": "Parler réponse",
64+
"info": "Info",
65+
"save": "Sauvegarder"
66+
},
67+
68+
"headerTexts":{
69+
"thoughtProcess": "Processus de Réflexion",
70+
"supportingContent": "Contenu d'Appui",
71+
"citation": "Citation"
72+
},
73+
74+
"labels": {
75+
"toggleMenu": "Basculer le menu",
76+
"languagePicker": "Sélectionnez votre langue",
77+
"headerText": "Configurer la génération de réponses",
78+
"closeButton": "Fermer",
79+
"promptTemplate": "Modèle de l'invitation",
80+
"temperature": "Température",
81+
"seed": "Seed",
82+
"minimumSearchScore": "Score de recherche minimum",
83+
"minimumRerankerScore": "Score minimum du reclasseur sémantique",
84+
"retrieveCount": "Récupérer ce nombre de résultats de recherche :",
85+
"includeCategory": "Inclure la catégorie",
86+
"includeCategoryOptions": {
87+
"all": "Toutes"
88+
},
89+
"excludeCategory": "Exclure la catégorie",
90+
"useSemanticRanker": "Utiliser le reclasseur sémantique",
91+
"useSemanticCaptions": "Utiliser les titres sémantiques",
92+
"useSuggestFollowupQuestions": "Suggérer des questions de suivi",
93+
"useGPT4V": "Utiliser le modèle GPT Vision",
94+
"gpt4VInput": {
95+
"label": "Entrées du modèle GPT Vision",
96+
"options": {
97+
"textAndImages": "Images et texte",
98+
"images": "Images",
99+
"texts": "Texte"
100+
}
101+
},
102+
"retrievalMode": {
103+
"label": "Mode de récupération",
104+
"options": {
105+
"hybrid": "Vecteurs + Texte (Hybride)",
106+
"vectors": "Vecteurs",
107+
"texts": "Texte"
108+
}
109+
},
110+
"vector": {
111+
"label": "Champs de vecteur (recherche de vecteur multi-requête)",
112+
"options": {
113+
"embedding": "Incorporations de texte",
114+
"imageEmbedding": "Incorporations d'images",
115+
"both": "Incorporations de texte et d'images"
116+
}
117+
},
118+
"useOidSecurityFilter": "Utiliser le filtre de sécurité oid",
119+
"useGroupsSecurityFilter": "Utiliser le filtre de sécurité de groupe",
120+
"shouldStream": "Diffuser en continu les réponses"
121+
},
122+
123+
"helpTexts": {
124+
"promptTemplate":
125+
"Remplace le prompt utilisé pour générer la réponse en fonction de la question et des résultats de la recherche. Pour ajouter à l'invite existante au lieu de remplacer l'invite entière, commencez votre invite par '>>>'.",
126+
"temperature":
127+
"Définit la température de la requête à le Grand modèle de langage (LLM) qui génère la réponse. Des températures plus élevées donnent lieu à des réponses plus créatives, mais elles peuvent être moins ancrées.",
128+
"seed":
129+
"Détermine un numéro premier qui servira à améliorer la répétabilité des réponses du modèle. Le numéro premier doit être un entier quelconque.",
130+
"searchScore":
131+
"Définit un score minimum pour les résultats de recherche provenant d'Azure AI Search. La plage de scores dépend si vous utilisez l'hybride (par défaut), uniquement les vecteurs, ou uniquement le texte.",
132+
"rerankerScore":
133+
"Définit un score minimum pour les résultats de recherche provenant du reranker sémantique. Le score varie toujours entre 0 et 4. Plus le score est élevé, plus le résultat est sémantiquement pertinent par rapport à la question.",
134+
"retrieveNumber":
135+
"Définit le nombre de résultats de recherche à récupérer d'Azure AI Search. Plus de résultats peuvent augmenter la probabilité de trouver la bonne réponse, mais peuvent amener le modèle à se 'perdre au milieu'.",
136+
"includeCategory":
137+
"Spécifie une catégorie à inclure dans les résultats de recherche. Il n'y a aucune catégorie utilisée dans l'ensemble de données par défaut.",
138+
"excludeCategory":
139+
"Spécifie une catégorie à exclure des résultats de recherche. Il n'y a aucune catégorie utilisée dans l'ensemble de données par défaut.",
140+
"useSemanticReranker":
141+
"Active le classement sémantique d'Azure AI Search, un modèle qui réorganise les résultats de recherche en fonction de la similarité sémantique avec la requête de l'utilisateur.",
142+
"useSemanticCaptions":
143+
"Envoie des légendes sémantiques à l'LLM au lieu du résultat de recherche complet. Une légende sémantique est extraite d'un résultat de recherche lors du processus de classement sémantique.",
144+
"suggestFollowupQuestions": "Demande à l'LLM de suggérer des questions de suivi en fonction de la requête de l'utilisateur.",
145+
"useGPT4Vision": "Utilise GPT-4-Turbo avec Vision pour générer des réponses basées sur des images et du texte de l'index.",
146+
"vectorFields":
147+
"Spécifie quels champs d'incorporation dans l'index de recherche Azure AI seront recherchés, à la fois les incorporations 'Images et texte', 'Images' seulement, ou 'Texte' seulement.",
148+
"gpt4VisionInputs":
149+
"Définit ce qui sera envoyé au modèle de vision. 'Images et texte' envoie à la fois des images et du texte au modèle, 'Images' envoie seulement des images, et 'Texte' envoie seulement du texte.",
150+
"retrievalMode":
151+
"Définit le mode de récupération pour la requête Azure AI Search. Vecteurs + Texte (Hybride) utilise une combinaison de recherche vectorielle et de recherche en texte intégral, Vecteurs utilise uniquement la recherche vectorielle, et Texte utilise uniquement la recherche en texte intégral. Hybride est généralement optimal.",
152+
"streamChat": "Diffuse en continu la réponse à l'interface utilisateur du chat au fur et à mesure de sa génération.",
153+
"useOidSecurityFilter":"Filtrez les résultats de recherche en fonction de l'OID de l'utilisateur authentifié.",
154+
"useGroupsSecurityFilter": "Filtrez les résultats de recherche en fonction des groupes de l'utilisateur authentifié."
155+
}
156+
}

app/frontend/src/locales/ja/translation.json

Whitespace-only changes.

app/frontend/src/locales/ptBR/translation.json

Whitespace-only changes.

app/frontend/src/pages/ask/Ask.tsx

Whitespace-only changes.

0 commit comments

Comments
 (0)