Envoyer un message
Utilisez cette API pour envoyer des messages à un conversation_id spécifié et recevoir les réponses générées par l'agent. L'API prend en charge divers types de contenu de message, y compris le texte, les images, l'audio et les documents.
Méthode de requête
POST
Endpoint
https://api-${endpoint}.gptbots.ai/v2/conversation/message
Authentification
Consultez la section Présentation de l'API pour les instructions d'authentification.
Requête
Exemple de requête
curl -X POST 'https://api-${endpoint}.gptbots.ai/v2/conversation/message' \
-H 'Authorization: Bearer ${API Key}' \
-H 'Content-Type: application/json' \
-d '{
"conversation_id": "686e2646cb8ee942d9a62d79",
"response_mode": "blocking",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "J'ai téléchargé 2 fichiers image, veuillez effectuer l'OCR et retourner 2 enregistrements json."
},
{
"type": "image",
"image": [
{
"base64_content": "<complete_base64_string>",
"format": "jpeg",
"name": "TAXI1"
},
{
"url": "https://gptbots.ai/example.png",
"format": "png",
"name": "TAXI2"
}
]
},
{
"type": "audio",
"audio": [
{
"url": "https://gptbots.ai/example.mp3",
"format": "mp3",
"name": "exemple1 audio"
}
]
},
{
"type": "document",
"document": [
{
"base64_content": "<complete_base64_string>",
"format": "pdf",
"name": "exemple pdf"
}
]
}
]
}
],
"conversation_config": {
"long_term_memory": false,
"short_term_memory": false,
"knowledge": {
"data_ids": [
"58c70da0403cc812641b9356",
"59c70da0403cc812641df35a"
],
"group_ids": [
"67c70da0403cc812641b93je",
"69c70da0403cc812641df35f"
]
},
"custom_variables": {
"var_current_url": "https://gptbots.ai/example",
"var_session_id": "abcdef"
}
}
}'
Remarques importantes :
- Pour les types de contenu
image,audioetdocument, vous pouvez utiliser soit l'encodage base64, soit des liens URL - les deux formats sont pris en charge. - Les développeurs n'ont besoin d'envoyer que le dernier message utilisateur, car GPTBots gère par défaut la mémoire à court et long terme. Si vous souhaitez personnaliser le contexte de la mémoire à court terme, consultez l'exemple ci-dessous :"messages": [ { "role": "user", "content": "Bonjour" //Mémoire à court terme personnalisée }, { "role": "assistant", "content": "Bonjour ! Comment puis-je vous aider aujourd'hui ?" //Mémoire à court terme personnalisée }, { "role": "user", "content": "Bonjour" //Dernier message utilisateur }]
"messages": [ { "role": "user", "content": "Bonjour" //Mémoire à court terme personnalisée }, { "role": "assistant", "content": "Bonjour ! Comment puis-je vous aider aujourd'hui ?" //Mémoire à court terme personnalisée }, { "role": "user", "content": "Bonjour" //Dernier message utilisateur }]Ce bloc de code dans la fenêtre flottante
En-têtes de requête
| Champ | Type | Description |
|---|---|---|
| Authorization | Bearer ${API Key} | Utilisez Authorization: Bearer ${API Key} pour l'authentification. Obtenez la clé API depuis la page Clé API. |
| Content-Type | application/json | Type de données, doit être application/json. |
Paramètres de la requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| conversation_id | string | Oui | Identifiant unique de la conversation. Vous devez fournir le conversation_id pour poursuivre la conversation. |
| response_mode | string | Oui | Mode de réponse de l'agent : |
| messages | JSON Array | Oui | Contenu du message, prend en charge les rôles user et assistant pour construire le contexte de la conversation. |
| conversation_config | object | Non | Permet aux développeurs d'ajuster temporairement le périmètre fonctionnel de l'agent pour cette conversation afin de répondre à des besoins spécifiques. |
| short_term_memory | boolean | Non | Interrupteur de mémoire à court terme. Active ou désactive la mémoire à court terme uniquement pour cette conversation. |
| long_term_memory | boolean | Non | Interrupteur de mémoire à long terme. Active ou désactive la mémoire à long terme uniquement pour cette conversation. |
| knowledge | object | Non | Périmètre de récupération des connaissances. Personnalisez la portée de récupération des connaissances pour cette conversation uniquement. Lorsque group_ids et data_ids sont tous deux fournis, la récupération s'effectue dans l'union de leurs bases de connaissances. Si les deux sont des tableaux vides, aucune connaissance n'est récupérée. Si le paramètre knowledge est omis, la configuration de connaissances par défaut de l'agent est utilisée.group_ids : Identifiants de bases de connaissances, pouvant contenir plusieurs documents de connaissances.data_ids : Identifiants de documents de connaissances dans la base de connaissances. |
| custom_variables | object | Non | Variables personnalisées. Permet aux développeurs d'ajuster temporairement les valeurs des variables personnalisées dans l'agent uniquement pour cette conversation. |
| thinking | boolean | Non | Contrôle le retour des informations de réflexion en streaming. |
| tool_call | boolean | Non | Contrôle le retour des informations d'appel d'outil en streaming. |
Note :
Les pages de configuration d'entrée et de sortie de l'agent prennent en charge différents schémas de reconnaissance pour différents types de messages. Les types et tailles de fichiers pris en charge varient. Adaptez les données de soumission API en conséquence. Formats de message pris en charge au maximum :
- Message texte : string
- Message audio : .mp3, .wav, .acc
- Message image : .jpg, .jpeg, .png, .gif, .webp
- Message document : .pdf, .txt, .docx, .csv, .xlsx, .html, .json, .md, .tex, .ts, .xml, etc.
Réponse
Exemple de réponse
{
"create_time": 1679587005,
"conversation_id": "657303a8a764d47094874bbe",
"message_id": "65a4ccfC7ce58e728d5897e0",
"output": [
{
"from_component_branch": "1",
"from_component_name": "Nom du composant",
"content": {
"text": "Bonjour, puis-je vous aider ?",
"audio": [
{
"audio": "http://gptbots.ai/example.mp3",
"transcript": "Contenu audio transcrit"
}
]
}
}
],
"usage": {
"tokens": {
"total_tokens": 29,
"prompt_tokens": 19,
"prompt_tokens_details": {
"audio_tokens": 0,
"text_tokens": 0
},
"completion_tokens": 10,
"completion_tokens_details": {
"reasoning_tokens": 0,
"audio_tokens": 0,
"text_tokens": 0
}
},
"credits": {
"total_credits": 0.0,
"text_input_credits": 0.0,
"text_output_credits": 0.0,
"audio_input_credits": 0.0,
"audio_output_credits": 0.0
}
}
}
Réponse réussie (Blocking)
⚠️ Le service de transfert humain n'est pas disponible en mode de réponse blocking.
| Champ | Type | Description |
|---|---|---|
| conversation_id | string | Oui |
| message_id | string | Identifiant unique d'un message dans une conversation. |
| create_time | long | Horodatage de la génération de ce message de réponse. |
| output | JSON Array | Contenu de la réponse de l'agent. |
| from_component_branch | string | Branche de l'agent des flux. |
| from_component_name | string | Nom du composant amont dans l'agent des flux. |
| content | object | Contenu du message répondu par l'agent IA, inclut actuellement deux types de messages : text et audio. |
| usage | object | Détails de la consommation de ressources. |
| tokens | JSON Array | Total des tokens consommés par l'agent dans cette conversation. |
| total_tokens | integer | Total des tokens consommés pour l'entrée et la sortie dans cette conversation. |
| prompt_tokens | integer | Total des tokens consommés pour l'entrée dans cette conversation. |
| completion_tokens | integer | Total des tokens consommés pour la sortie dans cette conversation. |
| prompt_tokens_details | object | Détail de la consommation de tokens pour l'entrée. |
| completion_tokens_details | object | Détail de la consommation de tokens pour la sortie. |
| credits | object | Total des crédits consommés par l'agent dans cette conversation. |
| text_input_credits | double | Crédits consommés pour les messages texte en entrée dans cette conversation. |
| text_output_credits | double | Crédits consommés pour les messages texte en sortie dans cette conversation. |
| audio_input_credits | double | Crédits consommés pour les messages audio en entrée dans cette conversation. |
| audio_output_credits | double | Crédits consommés pour les messages audio en sortie dans cette conversation. |
Réponse réussie (Streaming)
⚠️ Le service de transfert humain n'est pas disponible en mode de réponse streaming.
| Champ | Type | Description |
|---|---|---|
| code | int | Code du type de message : 3-Texte, 10-Sortie agent des flux, 0-Fin, 4-Données d'utilisation, 39-Message audio, Requête d'appel d'outil-5, Réponse d'appel d'outil-6, Réflexion-41. |
| message | string | Type de message : Texte, SortieFlux, Fin. |
| data | object | Contenu de la réponse. |
- Exemple de streaming de message texte :
{"code":11,"message":"MessageInfo","data":{"message_id":"6785dba0f06d872bff9ee347"}}
{"code":3,"message":"Text","data":"Comment "}
{"code":3,"message":"Text","data":"puis "}
{"code":3,"message":"Text","data":"je "}
{"code":3,"message":"Text","data":"vous "}
{"code":3,"message":"Text","data":"aider ?"}
{"code":0,"message":"End","data":null}
- Exemple de streaming de message audio :
{"code":11,"message":"MessageInfo","data":{"message_id":"67b857b6be1f2906861a5e75"}}
{"code":39,"message":"Audio","data":{"audioAnswer":"","transcript":"Bonjour"}}
{"code":39,"message":"Audio","data":{"audioAnswer":"EQAUAA0...IA3bi","transcript":""}}
{"code":0,"message":"End","data":null}
Réponse réussie (Webhook)
⚠️ Le service de transfert humain est disponible en mode de réponse webhook.
Lorsque le service client humain est activé pour un agent, vous devez utiliser le mode de réponsewebhookpour recevoir les messages des représentants du service client humain. Après avoir configuré l'URL webhook dans la section "Intégration-API", le système GPTBots enverra les messages de réponse à la fois de l'"agent" et du "service client humain" à votre URL webhook.
Pour plus d'informations sur les messages webhook, veuillez consulter Mode Webhook et service de transfert humain.
Réponse d'erreur
| Champ | Type | Description |
|---|---|---|
| code | int | Code d'erreur. |
| message | string | Détails de l'erreur. |
Codes d'erreur
| Code | Message |
|---|---|
| 40000 | Paramètres invalides |
| 40127 | Échec de l'authentification développeur |
| 40356 | La conversation n'existe pas |
| 40358 | Incohérence de l'identifiant de conversation |
| 40364 | L'agent ne prend pas en charge le mode image |
| 50000 | Erreur interne du système |
| 20040 | Limite de longueur de question dépassée |
| 20022 | Crédits insuffisants |
| 20055 | Utilisation de l'API interdite, assurez-vous que l'interrupteur API est activé |

