Skip to content

Citation des sources v2

Introduction

Lorsqu'une APP Wikit Semantics répond à une question, elle peut citer ses sources sous forme de références numérotées (ex: [1], [2], [10]) - option à activer dans le prompt. Cette API vous permet de récupérer les métadonnées complètes de ces sources pour les afficher dans votre interface utilisateur.

Utilité :

  • Tracer l'origine des informations fournies
  • Garantir la transparence auprès des utilisateurs
  • Permettre la vérification en accédant aux documents sources

Prérequis

Cette documentation suppose que vous ayez déjà :

  • Exécuté une query via l'endpoint /query-executions
  • Récupéré le queryId depuis la réponse

Pour plus d'informations sur l'exécution de queries, consultez la section dédiée.

Récupérer les sources d'une query

Endpoint

GET /semantics/apps/{llm_app_id}/query-execution-sources/{query_id}/get-quoted-sources

Exemple de requête

bash
curl -X GET "<https://apis.wikit.ai/semantics/apps/$APP_ID/query-execution-sources/$QUERY_ID/get-quoted-sources>" \\
  -H "accept: application/json" \\
  -H "Wikit-Semantics-API-Key: $API_KEY" \\
  -H "X-Wikit-Organization-Id: $ORG_ID"

ℹ️ le Wikit-Semantics-API-Key est nécessaire uniquement pour les Apps privées

Le point de terminaison renvoie une liste de passages identifiés dans les fragments de document.

Exemple de réponse

json
[
  {
    "quoted_as": "1",
    "document": {
      "id": "686e90dd2ff687c57806d107",
      "name": "Charte_Teletravail_01_08_2023.pdf",
      "title": null,
      "url": null,
      "public_link": false,
      "storage_name": "lien_du_stockage",
      "data_source_id": "686d402ce52bbbf7116f55f8",
      "organization_id": "686d3ceb18a3087351f0fa35"
    },
    "chunk": {
      "id": "686e90e725e88b90bdd50eb2",
      "data": "## le contenu du chunk...",
      "document_id": "686e90dd2ff687c57806d107",
      "data_source_id": "686d402ce52bbbf7116f55f8",
      "llm_app_id": null,
      "user_id": null,
      "flags": null,
      "position": 29,
      "page_start": null,
      "page_end": null
    },
    "data_source": {
      "id": "686d402ce52bbbf7116f55f8",
      "name": "Ressources Humaines"
    },
    "score": 0.88380575,
    "retriever_type": "SEMANTIC_SEARCH"
  }
]

Structure de la réponse

La réponse est un tableau d'objets source, chaque objet contenant :

Champs principaux

ChampTypeDescription
quoted_asstringNuméro de la citation dans la réponse (ex : "1", "2", "10")
documentobjectMétadonnées du document source
chunkobjectExtrait du document utilisé comme source
data_sourceobjectInformations sur la source de données
scorefloatScore de pertinence sémantique (entre 0 et 1)
retriever_typestringType de recherche utilisé (ex : "SEMANTIC_SEARCH")

Objet document

ChampTypeDescription
idstringIdentifiant unique du document
namestringNom du fichier source
titlestring/nullTitre du document (si disponible)
urlstring/nullURL du document (si disponible)
public_linkbooleanIndique si le document a un lien public
storage_namestringChemin de stockage interne
data_source_idstringIdentifiant de la source de données
organization_idstringIdentifiant de l'organisation

Objet chunk

ChampTypeDescription
idstringIdentifiant unique du chunk
datastringExtrait du texte source (contenu markdown)
document_idstringRéférence au document parent
positionintegerPosition du chunk dans le document
page_startinteger/nullPage de début (si applicable)
page_endinteger/nullPage de fin (si applicable)

Objet data_source

ChampTypeDescription
idstringIdentifiant de la source de données
namestringNom de la source de données (ex: "Ressources Humaines")

Bonnes pratiques

1. Timing de l'appel

Appelez l'API des sources après la fin du streaming de la réponse

2. Affichage conditionnel

N'affichez la section sources que si elles existent

3. Gestion des URLs

Certaines sources n'ont pas d'URL. Gérez ce cas dans votre UI

4. Affichage conditionnel

L’API peut retourner plusieurs fois le même document, gérez bien le cas en fonction de votre besoin

5. Affichage conditionnel

Si vous le souhaitez, vous pouvez cacher/transformer les [1],[2], … lors de l’affichage de la réponse

6. Codes d'erreur courants

CodeSignificationSolution
401API Key invalideVérifier la clé API et l'Organization ID
404Query non trouvéeVérifier le queryId ou attendre quelques secondes
500Erreur serveurRéessayer après un délai

Citation des sources v1 (dépréciée)

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

bash
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 :

json
[
    {
        "_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-visual-identity.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-visual-identity.pdf” (cf. le champ document_name) a été identifié par Wikit Semantics en tant que source.