Documentation technique Wikit Semantics
CHANGELOG
8 Juillet 2025 [Release:2507] : Changement des routes liées aux documents
Impact sur les routes :
- Liste des documents
- Ajout de document(s)
- Consultation des métadonnées d’un document
- Suppression d’un document
24 Octobre 2025 : Rajout des routes liées aux sources de données
Introduction
Cette page a pour objectif d’expliquer les grands principes d’intégration de la solution Wikit Semantics selon deux axes :
- L’exécution de requêtes sur les Apps LLM “Question-Réponse”
- L’administration des sources de données pour les Apps LLM “Question-Réponse”
Elle porte uniquement sur l’API REST Wikit Semantics associée à ces deux points.
Cette documentation est à destination de tout intégrateur logiciel souhaitant bénéficier de l’IA Générative dans une solution tierce ou un système d’information externe.
Authentification et autorisation
Deux mécanismes d’authentification & autorisation sont mises en œuvre :
- Clé d’API pour l’API d’exécution de requêtes disponible a la demande
- OAuth2 pour l’API d’administration
Authentification pour l’API d’administraion
L’authentification sur l’API d’administration Wikit Semantics est fondée sur le service transversale d’IAM de Wikit.
Le service d’authentification et d’autorisation implémente OpenID Connect qui utilise les mécanismes d'OAuth2.
La génération de jetons OAuth2 est réalisé avec l’utilisation des informations suivantes :
- Realm :
wikit-prod - Identifiant client :
semantics-console - Informations de connexion : identifiant / mot de passe du compte utilisateur avec accès à l’API.
curl -L -X POST 'https://auth.wikit.ai/realms/wikit-prod/protocol/openid-connect/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode "client_id=semantics-console" \
--data-urlencode "grant_type=password" \
--data-urlencode "username=$SEMANTICS_USERNAME" \
--data-urlencode "password=$SEMANTICS_PASSWORD"
--data-urlencode "otp=$SEMANTICS_OTP"Exécution de Requêtes App LLM
L’App LLM est le concept centrale de la solution. Elle est en charge de l’orchestration des Grands Modèles de Langage (LLM) et des outils en lien (par exemple la recherche sémantique de fragments de document).
Les Apps LLM de type Question-Réponse ont des Sources de données pour extraire les éléments de réponses à destination des utilisateurs.
Authentification et autorisation
Une clé d’API est nécessaire pour l’invocation de l’API d’exécution de requêtes.
Cette clé est à positionner dans une entête HTTP wikit-semantics-api-key.
Elle est mis à disposition par Wikit.
Exécution de requête
POST /semantics/apps/{llm_app_id}/query-executions
curl "https://apis.wikit.ai/semantics/apps/$SEMANTICS_APP_ID/query-executions" \
-H "Content-Type: application/json" \
-H "Wikit-Semantics-API-Key: $SEMANTICS_API_KEY" \
-H "X-Wikit-Response-Format: json" \
-H "X-Wikit-Organization-Id: $SEMANTICS_ORG_ID" \
-d '{
"query": "Combien de jours de congés exceptionnels ai-je droit pour mon mariage ?"
}'Réponse
{
"answer": "En France, vous avez droit à 4 jours de congé exceptionnel pour votre mariage ou votre PACS, selon le Code du travail (article L3142-1).",
"queryId": "67c5646e05d2ed84ac20495d",
"conversation_id": "67c5646e05d2ed84ac20495c",
"metadata": null
}Exécution de requête avec streaming
POST /semantics/apps/{llm_app_id}/query-executions?is_stream_mode=true
Le streaming de réponse est le fonctionnement habituel de la génération token par token des LLM.
Pour l’activer, il suffit de positionner le paramètre is_stream_mode à true dans la partie query de l’URL :
curl "https://apis.wikit.ai/semantics/apps/$SEMANTICS_APP_ID/query-executions?is_stream_mode=true" \
-H 'Content-Type: application/json' \
-H "Wikit-Semantics-API-Key: $SEMANTICS_API_KEY" \
-H "X-Wikit-Response-Format: json" \
-H "X-Wikit-Organization-Id: $SEMANTICS_ORG_ID" \
-d '{
"query": "Combien de jours de congés exceptionnels ai-je droit pour mon mariage ?"
}'Réponse
data: {"queryId": "67c565542c8f2bb8fb52d43a", "chunk":"En "}STOP
data: {"queryId": "67c565542c8f2bb8fb52d43a", "chunk":"Fra"}STOP
data: {"queryId": "67c565542c8f2bb8fb52d43a", "chunk":" ce"}STOP
data: {"queryId": "67c565542c8f2bb8fb52d43a", "chunk":" vous "}STOP
data: {"queryId": "67c565542c8f2bb8fb52d43a", "chunk":" avec"}STOPExécution de requête dans une conversation existante
Avec le type d’app LLM Question-Réponse conversationnelle, une conversation est créée à la première exécution de requête via le point de terminaison /semantics/apps/{llm_app_id}/query-executions. L’ID de conversation est renvoyé dans la sortie JSON ou dans les Headers de la réponse en mode streaming (X-wikit-Conversation-Id) : il doit être exploité dans les exécutions de requête suivantes pour poursuivre la conversation, via l’entête HTTP X-Wikit-Conversation-Id :
curl "https://apis.wikit.ai/semantics/apps/$SEMANTICS_APP_ID/query-executions?is_stream_mode=true" \
-H 'Content-Type: application/json' \
-H "Wikit-Semantics-API-Key: $SEMANTICS_API_KEY" \
-H "X-Wikit-Response-Format: json" \
-H "X-Wikit-Organization-Id: $SEMANTICS_ORG_ID" \
-H "X-Wikit-Conversation-Id: $SEMANTICS_CONVERSATION_ID" \
-d '{
"query": "Et pour la naissance de ma fille ?"
}'Citations des sources
Récupération des citations des sources d’une requête
Après l’exécution d’une requête, il est possible d’extraire les citations identifiées dans les sources (i.e. les fragments des documents) utilisées par l’app LLM.
POST /semantics/apps/{llm_app_id}/query-executions/{query_execution_id}/citations
curl -X POST "https://apis.wikit.ai/semantics/apps/$SEMANTICS_APP_ID/query-executions/$SEMANTICS_QUERY_EXECUTION_ID/citations" \
-H "Authorization: Bearer $SEMANTICS_TOKEN" \
-H "X-Wikit-Organization-Id: $SEMANTICS_ORG_ID" \
-H "X-Wikit-Response-Format: json" \
-H "Content-Type: application/json" \
-d "{}"Le point de terminaison renvoie une liste de passage identifiée dans les fragments de document.
Exemple :
[
{
"_id": "668e9bf39bd4493d2557a6ea",
"created_at": "2024-07-10T14:34:26Z",
"query_execution_id": "668e9bf09bd4493d2557a6e6",
"total_count": 1,
"reply_sentence": "Les couleurs de la charte graphique de Wikit sont : Bleu ciel, Bleu nuit et Violet.",
"source_sentence": "Les couleurs de la charte graphique de Wikit sont : - Bleu ciel ; - Bleu nuit ; - Violet.",
"chunk_data_snapshot": " [...] {{source_sentence}} [...] ",
"start_char_idx": 0,
"end_char_idx": 89,
"chunk_id": "668e9b94ca8d43490c14ede3",
"chunk_page_start": 2,
"chunk_page_end": 2,
"chunk_position": null,
"document_id": "668e9b94ca8d43490c14ede0",
"document_name": "wikit-document-sample.pdf",
"document_title": null,
"document_url": "https://semantics-files.wikit.ai/v1/viewer/NjVkNWIzNDRhMDUxZWEyOGI3ZjU0ZDc2LzY2OGU5YjgzY2E4ZDQzNDkwYzE0ZWRkZi8xNzIwNjIxOTcxLjkwNzU3N193aWtpdF9kb2N1bWVudF9zYW1wbGUucGRm",
"organization_id": "65d5b344a051ea28b7f54d76",
"threshold": 50
}
]Dans cet exemple, le fragment associé à la page 3 (cf. les indexchunk_page_start et chunk_page_endqui démarrent à 0) du document “wikit-document-sample.pdf” (cf. le champ document_name) a été identifié par Wikit Semantics en tant que source.
Administration des sources de données
Les sources de données contiennent les documents exploités par l’App LLM.
Dans le cas où l’intégrateur souhaite interagir avec les sources Wikit Semantics, l’API propose en particulier les points de terminaison suivants
Création d'une source de données
POST /datastore/v1/data-sources
llm_connector_ids : a demander a votre interlocuteur Wikit
curl -X POST "<https://apis.wikit.ai/datastore/v1/data-sources>" \
-H "Authorization: Bearer $SEMANTICS_TOKEN" \
-H "X-Wikit-Organization-Id: $SEMANTICS_ORG_ID" \
-H "Content-Type: application/json" \
-d '{
"name": "Ma source de données",
"llm_connector_ids": ["67c5646e05d2ed84ac20495d"]
}'Consultation d'une source de données
GET /datastore/v1/data-sources/{data_source_id}
curl -X GET "<https://apis.wikit.ai/datastore/v1/data-sources/$SEMANTICS_DATASOURCE_ID>" \\
-H "Authorization: Bearer $SEMANTICS_TOKEN" \
-H "X-Wikit-Organization-Id: $SEMANTICS_ORG_ID"Liste des sources de données
GET /datastore/v1/data-sources
curl -X GET "<https://apis.wikit.ai/datastore/v1/data-sources>" \
-H "Authorization: Bearer $SEMANTICS_TOKEN" \
-H "X-Wikit-Organization-Id: $SEMANTICS_ORG_ID"Mise à jour d'une source de données
PUT /datastore/v1/data-sources/{data_source_id}
curl -X PUT "<https://apis.wikit.ai/datastore/v1/data-sources/$SEMANTICS_DATASOURCE_ID>" \\
-H "Authorization: Bearer $SEMANTICS_TOKEN" \
-H "X-Wikit-Organization-Id: $SEMANTICS_ORG_ID" \
-H "Content-Type: application/json" \
-d '{
"name": "Nouveau nom de la source"
}'Suppression d'une source de données
DELETE /datastore/v1/data-sources/{data_source_id}
curl -X DELETE "<https://apis.wikit.ai/datastore/v1/data-sources/$SEMANTICS_DATASOURCE_ID>" \
-H "Authorization: Bearer $SEMANTICS_TOKEN" \
-H "X-Wikit-Organization-Id: $SEMANTICS_ORG_ID"Consultation des sources de données activées pour une app LLM
GET /semantics/apps/{llm_app_id}/data-sources
curl -X GET "https://apis.wikit.ai/semantics/apps/{llm_app_id}/data-sources" \
-H "Authorization: Bearer $SEMANTICS_TOKEN"
-H "X-Wikit-Organization-Id: $SEMANTICS_ORG_ID"Administration d’une source
Liste des documents
GET /datastore/v1/data-sources/{data_source_id}/documents
curl -X GET "https://apis.wikit.ai/datastore/v1/data-sources/$SEMANTICS_DATASOURCE_ID/documents" \
-H "Authorization: Bearer $SEMANTICS_TOKEN"
-H "X-Wikit-Organization-Id: $SEMANTICS_ORG_ID"Ajout de document(s)
POST /datastore/v1/data-sources/{data_source_id}/documents/upload
curl -X POST "https://apis.wikit.ai/datastore/v1/data-sources/$SEMANTICS_DATASOURCE_ID/documents/upload" \
-H "Authorization: Bearer $SEMANTICS_TOKEN" \
-H "X-Wikit-Organization-Id: $SEMANTICS_ORG_ID"
-H 'Content-Type: multipart/form-data' \
-F "documents=@/path/to/file-to-upload.txt"Suppression d’un document
DELETE /datastore/v1/data-sources/{data_source_id}/documents/{document_id}
curl -X DELETE "https://apis.wikit.ai/datastore/v1/data-sources/$SEMANTICS_DATASOURCE_ID/documents/$SEMANTICS_DOCUMENT_ID" \
-H "Authorization: Bearer $SEMANTICS_TOKEN"
-H "X-Wikit-Organization-Id: $SEMANTICS_ORG_ID"Liste des chunks d'un document
GET /data-sources/{data_source_id}/documents/{document_id}/chunks
curl -X GET "<https://apis.wikit.ai/data-sources/$SEMANTICS_DATASOURCE_ID/documents/$SEMANTICS_DOCUMENT_ID/chunks>" \
-H "X-Wikit-Organization-Id: $SEMANTICS_ORG_ID"Consultation d'un chunk
GET /documents/{document_id}/chunks/{chunk_id}
curl -X GET "<https://apis.wikit.ai/documents/$SEMANTICS_DOCUMENT_ID/chunks/$SEMANTICS_CHUNK_ID>" \
-H "X-Wikit-Organization-Id: $SEMANTICS_ORG_ID"Consultation des métadonnées d’un document
GET /datastore/v1/data-sources/{data_source_id}/documents/{document_id}
curl -X GET "https://apis.wikit.ai/datastore/v1/data-sources/$SEMANTICS_DATASOURCE_ID/documents/$SEMANTICS_DOCUMENT_ID" \
-H "Authorization: Bearer $SEMANTICS_TOKEN"
-H "X-Wikit-Organization-Id: $SEMANTICS_ORG_ID"APIs non stables ⚠
Les routes listées ici sont considérées comme non-stable. Wikit se réserve le droit de les modifier à tout moment sans en assurer la rétro-compatibilité.
Export de l’historique des requêtes
GET /semantics/conversations
curl "https://apis.wikit.ai/semantics/conversations?page=1&size=50" \
-H "x-wikit-organization-id: $SEMANTICS_ORG_ID" \
-H "Authorization: Bearer $SEMANTICS_TOKEN"Création d’un utilisateur
POST /iam/v1/users
curl -X POST "https://apis.wikit.ai/iam/v1/users" \
-H "Content-Type: application/json" \
-H "X-WIKIT-ORGANIZATION-ID: $SEMANTICS_ORG_ID" \
-H "Authorization: Bearer $SEMANTICS_TOKEN" \
--data-raw $'{"profiles":["semantics-chat"],"userLogin":"","email":"user@domaine.fr","lastName":"Nom","firstName":"Pr\xe9nom"}'Format JSON Wikit Semantics
Documentation du format JSON Wikit Semantics
Contact
Pour toute question, contactez l’équipe support (support@wikit.ai) ou votre interlocuteur Wikit habituel.