OpenSearch LLM-Based Conversational Search Edition vous permet d'envoyer des documents par lots via une API.
Prérequis
Obtenez une clé API pour authentifier vos appels. Pour plus d'informations, consultez la rubrique Gérer les clés API.
Récupérez un endpoint de service, requis pour tous les appels d'API. Pour plus d'informations, consultez la rubrique Obtenir l'endpoint de service.
Détails de la requête
|
Méthode de requête |
Protocole de requête |
Format des données de requête |
|
POST |
HTTP |
JSON |
URL de la requête
{host}/v3/openapi/apps/[app_group_identity]/actions/knowledge-bulk
{host}: l'endpoint de service. Vous pouvez appeler l'API via le réseau public ou un VPC. Pour plus d'informations, consultez la rubrique Obtenir l'endpoint de service.{app_group_identity}: le nom de votre application. Pour trouver ce nom, connectez-vous à la console OpenSearch LLM-Based Conversational Search Edition et localisez votre instance sur la page Instance Management.
Paramètres de la requête
Paramètres d'en-tête
|
Paramètre |
Type |
Obligatoire |
Description |
Exemple |
|
Content-Type |
string |
Oui |
Le format du corps de la requête. La valeur doit être |
application/json |
|
Authorization |
string |
Oui |
La clé API pour l'authentification de la requête. La valeur doit être préfixée par |
Bearer OS-d1**2a |
Paramètres du corps
|
Paramètre |
Type |
Obligatoire |
Description |
Exemple |
|
cmd |
string |
Oui |
L'action à effectuer sur le document. |
ADD/DELETE |
|
fields |
map |
Oui |
Les champs du document sous forme de paires clé-valeur. |
|
|
fields.id |
string |
Oui |
La clé primaire du document. |
13579 |
|
fields.title |
string |
Non |
Le titre du document. |
Something interesting |
|
fields.url |
string |
Non |
L'URL du document. |
https://www.aliyun.com |
|
fields.content |
string |
Oui |
Le contenu du document. |
No, is not. |
Exemples de requêtes
1. Charger un document dans la table principale
['{
"cmd": "ADD",
"fields": {
"id": "13579",
"title": "Something interesting",
"url": "https://www.aliyun.com",
"content": "No, is not."
}
}']
Charger un document non structuré (PDF, DOC, TXT ou HTML)
['{
"cmd" : "URL/BASE64",
"fields": {
"id": "Document ID (optional)",
"type": "File type, such as pdf, doc, txt, or html",
"title": "File name (optional)",
"content": "URL or Base64-encoded data",
"url": "Link (optional)"
}
}']
Le paramètre url prend uniquement en charge les URL d'accès aux données pour les objets OSS générées à l'aide de la méthode ossClient.generatePresignedUrl.
2. Charger un document dans une table personnalisée
['{
"cmd" : "ADD",
"fields": { # The data object. Define fields based on the table schema.
"key1": "value1",
"key2": "value2",
"key3": "value3"
},
"table_name": "custom_table_name" # The table name. If left empty, the operation is performed on the main table.
}']
3. Supprimer un document
['{
"cmd" : "DELETE",
"fields": {
"id": "13579333"
}
}']
cmd: obligatoire. Spécifie l'action à effectuer sur le document. Les valeurs valides sontADDetDELETE. Nous recommandons de regrouper plusieurs opérations dans une seule requête afin d'améliorer l'efficacité du réseau et du traitement. L'opérationADDcrée un nouveau document ou écrase un document existant ayant la même clé primaire. L'opérationDELETEsupprime un document. L'opération est considérée comme réussie même si le document spécifié n'existe pas.fields: obligatoire. Les champs du document. La clé primaire est toujours requise. Pour une actionDELETE, seule la clé primaire du document est nécessaire.Remarque : le corps de la requête doit être un tableau JSON pour prendre en charge les opérations par lot sur plusieurs documents.
Paramètres de la réponse
|
Paramètre |
Type |
Description |
|
errors |
list |
Une liste d'erreurs. |
|
status |
string |
Le statut d'exécution. |
|
request_id |
string |
L'ID de la requête. |
|
result |
boolean |
Renvoie |
|
total |
int |
Le nombre total de documents dans la requête. |
|
success |
int |
Le nombre de documents chargés avec succès. |
|
failure |
int |
Le nombre de documents dont le chargement a échoué. |
|
failed_ids |
array |
Les ID des documents dont le chargement a échoué. |
Exemple de réponse
{
"request_id" : "abc123-ABC",
"result" : {
"total": 100,
"success": 50,
"failure": 50,
"failed_ids": [
"id1",
"id2",
"id3",
"..."
]
}
"errors" : [
{
"code" : "The error code, if an error occurred.",
"message" : "The error message, if an error occurred."
}
]
}
Remarques
Les noms de champs ne sont pas sensibles à la casse lorsque vous envoyez des données via l'API ou un SDK.
L'envoi de données via l'API ou un SDK est soumis à des limites de fréquence et de taille. La limite de taille de chargement ne peut pas être modifiée. Les limites varient selon l'application. Pour plus d'informations, consultez la rubrique Limites.
Pour éviter toute perte de données, vérifiez la réponse après chaque chargement et réessayez les requêtes qui échouent avec des codes d'erreur spécifiques, en particulier
3007. Le traitement des données est asynchrone. Une réponseOKindique uniquement que le système a bien reçu les données. Les erreurs de traitement des données s'affichent dans la console. Vérifiez régulièrement la présence de messages d'erreur.Le corps de la requête POST ne peut pas dépasser 2 Mo avant encodage. Le serveur rejette les requêtes dépassant cette limite.
Si le corps de la requête d'une opération POST contient des caractères chinois, il doit être encodé en UTF-8. De même, la valeur de l'en-tête
Content-MD5doit être calculée à partir des données encodées en UTF-8. Sinon, l'opération d'envoi échouera.Si un appel d'API renvoie le code d'erreur
4016, l'utilisateur RAM ne dispose pas d'autorisations suffisantes. Accordez l'autorisation AliyunOpenSearchFullAccess à l'utilisateur RAM. Pour obtenir des instructions, consultez la rubrique Accorder des autorisations à un utilisateur RAM.