Cette rubrique explique comment utiliser la classe Message de l'API Assistant pour créer, lister, récupérer et modifier des messages.
ImportantL'API Assistant est en cours de dépréciation. Migrez vers l'API Responses comme alternative. L'API Responses intègre plusieurs outils natifs et prend en charge la gestion du contexte multi-tours.
Nom de la fonction | Type |
|---|---|
create | Créer une classe de message |
retrieve | Récupérer une classe de message |
modify | Modifier une classe de message |
list | Lister les classes de messages |
Créer un message
HTTP
Exemple de codecurl --location 'https://dashscope-intl.aliyuncs.com/api/v1/threads/thread_e99a9fe7-0433-426f-98ad-a5139c36579c/messages' \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--data '{
"role": "user",
"content": "Who are you",
"metadata": {}
}'
Paramètres de la requêteNom du paramètre | Paramètres d'entrée | Type de paramètre | Obligatoire |
|---|---|---|---|
thread id | ID du thread auquel transmettre le message. | string | Oui |
content | Contenu du message. | string | Oui |
role | Rôle de l'entité émettrice du message. Seule la valeur | string | Non |
metadata | Autres informations associées. | object | Non |
{
"id": "message_f1933671-19e1-4162-ad25-7326165123e1",
"object": "thread.message",
"created_at": 1711508433283,
"thread_id": "thread_e99a9fe7-0433-426f-98ad-a5139c36579c",
"incomplete_details": {},
"completed_at": null,
"incomplete_at": null,
"assistant_id": "",
"run_id": "",
"file_ids": [],
"role": "user",
"content": [
{
"type": "text",
"text": {
"value": "Who are you",
"annotations": []
}
}
],
"metadata": {},
"name": "",
"plugin_call": {},
"tool_calls": [],
"status": "",
"request_id": "b3ad40b9-f052-9665-a064-dab11c34625f"
}
Paramètres de la réponseLa classe de message est retournée. Outre les paramètres de la requête, la réponse contient les champs suivants :
- id : ID du message.
- request_id : ID de la requête.
SDK
Exemple de codefrom dashscope import Messages
import dashscope
import os
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
msg = Messages.create(
'the_thread_id',
# Set the API key using an environment variable. If an environment variable is not set, replace the following line with api_key="sk-xxx" and your Model Studio API key.
api_key=os.getenv("DASHSCOPE_API_KEY"),
content='The message content.',
role='user',
metadata={'key': 'value'}
)
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.InvalidateParameter;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.threads.messages.Messages;
import com.alibaba.dashscope.threads.messages.TextMessageParam;
import com.alibaba.dashscope.threads.messages.ThreadMessage;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void main(String[] args) throws ApiException, NoApiKeyException, InputRequiredException, InvalidateParameter, InterruptedException {
// create a message to thread
Messages messages = new Messages();
TextMessageParam param = TextMessageParam.builder()
// Set the API key using an environment variable. If an environment variable is not set, replace the following line with .apiKey("sk-xxx") and your Model Studio API key.
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.role("user")
.content("How to make delicious beef and potato stew?")
.build();
ThreadMessage message = messages.create("threadId", param);
}
}
Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
thread_id | string | - | ID du thread. |
content | string | - | Contenu du message. |
role | str | 'user' | Rôle du message. Valeur par défaut : user. |
metadata | Dict | None | Informations clé-valeur associées au message. |
workspace | string | None | ID de l'espace de travail d'Alibaba Cloud Model Studio. Ce paramètre est requis uniquement si |
api_key | string | None | Clé API pour Alibaba Cloud Model Studio. Nous vous recommandons de configurer la clé API comme variable d'environnement. |
Le résultat est un objet Message. Le code suivant présente un exemple de contenu au format JSON :
{
"id": "message_05494921-a646-484e-85fc-76329acba842",
"object": "thread.message",
"created_at": 1711345341301,
"thread_id": "thread_f1e7737e-b045-479f-99d1-510db49d535b",
"incomplete_details": {},
"completed_at": null,
"incomplete_at": null,
"assistant_id": "",
"run_id": "",
"file_ids": [],
"role": "user",
"content": [
{
"type": "text",
"text": {
"value": "sdhafjdasf",
"annotations": []
}
}
],
"metadata": {
"key": "value"
},
"name": "",
"plugin_call": {},
"tool_calls": [],
"status": "",
"status_code": 200,
"request_id": "631de0b3-7e50-9c9e-8444-0924d1b7e7a5"
}
Paramètres de la réponseNom du champ | Type du champ | Description du champ |
|---|---|---|
status_code | int | Code d'état HTTP de l'appel. La valeur 200 indique un succès. Toute autre valeur signale un échec. |
id | string | ID du message, sous forme de chaîne UUID. |
content | List[dict] | Contenu du message. |
content.type | string | Type de contenu, par exemple text. |
content.text | dict | Contenu |
content.text.value | string | Valeur textuelle du contenu. |
metadata | Dict | Informations clé-valeur associées à ce message. |
tool_calls | Dict | Informations sur les appels d'outils. |
plugin_call | Dict | Informations sur les appels de plugins. |
created_at | timestamp | Heure de création de l'assistant. |
gmt_created | datetime | 2024-03-22 17:12:31 |
gmt_modified | datetime | 2024-03-22 17:12:31 |
code | string | Indique que la requête a échoué. Ce paramètre spécifie le code d'erreur. Il est ignoré si la requête réussit. Python uniquement. |
message | string | Signale l'échec de la requête. Ce paramètre fournit des détails sur l'erreur. Il est ignoré si la requête réussit. Python uniquement. |
Lister les messages
HTTP
Exemple de codecurl --location 'https://dashscope-intl.aliyuncs.com/api/v1/threads/thread_e99a9fe7-0433-426f-98ad-a5139c36579c/messages?limit=2&order=desc' \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
Paramètres de la requêteNom du paramètre | Description | Type de paramètre | Obligatoire |
|---|---|---|---|
thread id | ID du thread auquel transmettre le message. | string | Oui |
limit | Nombre de messages. | integer | Non |
order | Ordre de tri par date de création : | string | Non (Par défaut : |
{
"object": "list",
"data": [
{
"id": "message_f1933671-19e1-4162-ad25-7326165123e1",
"object": "thread.message",
"created_at": 1711508433283,
"thread_id": "thread_e99a9fe7-0433-426f-98ad-a5139c36579c",
"assistant_id": "",
"run_id": "",
"role": "user",
"content": [
{
"type": "text",
"text": {
"value": "Who are you",
"annotations": []
}
}
],
"metadata": {},
"name": "",
"plugin_call": {},
"tool_calls": [],
"status": ""
}
],
"first_id": "message_f1933671-19e1-4162-ad25-7326165123e1",
"last_id": "message_f1933671-19e1-4162-ad25-7326165123e1",
"has_more": false,
"request_id": "78f7d607-4a9a-90c6-8040-d3f81c84d60a"
}
Paramètres de la réponseUne liste de classes de messages est retournée. La réponse inclut également les paramètres de la requête d'origine ainsi que les champs supplémentaires suivants :
- Liste contenant plusieurs messages.
SDK
Exemple de codefrom dashscope import Messages
import dashscope
import os
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = Messages.list(
'thread_id',
# Set the API key using an environment variable. If an environment variable is not set, replace the following line with api_key="sk-xxx" and your Model Studio API key.
api_key=os.getenv("DASHSCOPE_API_KEY"),
limit=1,
order='desc'
)
import com.alibaba.dashscope.common.GeneralListParam;
import com.alibaba.dashscope.common.ListResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.InvalidateParameter;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.threads.messages.Messages;
import com.alibaba.dashscope.threads.messages.ThreadMessage;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void main(String[] args) throws ApiException, NoApiKeyException, InputRequiredException, InvalidateParameter, InterruptedException {
Messages messages = new Messages();
// Set the API key using an environment variable. If an environment variable is not set, replace the following line with .apiKey("sk-xxx") and your Model Studio API key.
GeneralListParam listThreadMessages = GeneralListParam.builder()
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.build();
ListResult<ThreadMessage> message = messages.list("threadId", listThreadMessages);
}
}
Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
thread_id | string | - | ID du thread à interroger. |
limit | int | None | Nombre de messages à récupérer. |
order | string | None | Ordre de tri selon |
workspace | string | None | ID de l'espace de travail d'Alibaba Cloud Model Studio. Ce paramètre est requis uniquement si |
api_key | string | None | Clé API pour Alibaba Cloud Model Studio. Nous vous recommandons de définir la clé API comme variable d'environnement. |
Nom du champ | Type du champ | Description du champ |
|---|---|---|
has_more | boolean | Indique s'il reste des messages à récupérer. |
last_id | string | ID du dernier message de la liste retournée. |
first_id | string | ID du premier message de la liste retournée. |
data | list[Message] | Liste d'objets Message. |
Récupérer un message
HTTP
Exemple de codecurl --location 'https://dashscope-intl.aliyuncs.com/api/v1/threads/thread_e99a9fe7-0433-426f-98ad-a5139c36579c/messages/message_ea26d29d-4509-490e-98e9-9f6238bd821b' \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
Paramètres de la requêteNom du paramètre | Description | Type de paramètre | Obligatoire |
|---|---|---|---|
thread id | ID du thread contenant le message à récupérer. | string | Oui |
message_id | ID du message à récupérer. | string | Oui |
{
"id": "message_ea26d29d-4509-490e-98e9-9f6238bd821b",
"object": "thread.message",
"created_at": 1711508622598,
"thread_id": "thread_e99a9fe7-0433-426f-98ad-a5139c36579c",
"assistant_id": "",
"run_id": "",
"role": "user",
"content": [
{
"type": "text",
"text": {
"value": "Hello",
"annotations": []
}
}
],
"metadata": {},
"name": "",
"plugin_call": {},
"tool_calls": [],
"status": "",
"request_id": "4d5ce962-91c3-9edb-87f7-00bbf985135e"
}
Paramètres de la réponseLa classe de message récupérée est retournée. Outre les paramètres de la requête, la réponse contient les champs suivants :
- id : ID du message.
- request_id : ID de la requête.
SDK
Exemple de codefrom dashscope import Messages
import dashscope
import os
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
message = Messages.retrieve(
'message_id',
# Set the API key using an environment variable. If an environment variable is not set, replace the following line with api_key="sk-xxx" and your Model Studio API key.
api_key=os.getenv("DASHSCOPE_API_KEY"),
thread_id='thread_id'
)
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.InvalidateParameter;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.threads.messages.Messages;
import com.alibaba.dashscope.threads.messages.ThreadMessage;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void main(String[] args) throws ApiException, NoApiKeyException, InputRequiredException, InvalidateParameter, InterruptedException {
Messages messages = new Messages();
// Set the API key using an environment variable. If an environment variable is not set, replace the following line with .apiKey("sk-xxx") and your Model Studio API key.
String apiKey = System.getenv("DASHSCOPE_API_KEY");
ThreadMessage message = messages.retrieve("threadId", "messageId", apiKey);
}
}
Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
message_id | string | - | ID du message à interroger. |
thread_id | string | - | ID du thread auquel appartient le message. |
workspace | string | None | ID de l'espace de travail d'Alibaba Cloud Model Studio. Ce paramètre est requis uniquement si api_key est une clé API de sous-espace de travail. |
api_key | string | None | Clé API pour Alibaba Cloud Model Studio. Nous vous recommandons de configurer la clé API comme variable d'environnement. |
Reportez-vous à la réponse de l'opération de création.
Modifier un message
HTTP
Exemple de codecurl --location 'https://dashscope-intl.aliyuncs.com/api/v1/threads/thread_e99a9fe7-0433-426f-98ad-a5139c36579c/messages/message_ea26d29d-4509-490e-98e9-9f6238bd821b' \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--data '{
"metadata": {
"modified": "true",
"user": "abc123"
}
}'
Paramètres de la requêteNom du paramètre | Paramètres d'entrée | Type de paramètre | Obligatoire |
|---|---|---|---|
thread_id | ID du thread à modifier. | string | Oui |
message_id | ID du message à modifier. | string | Oui |
metadata | Métadonnées. | dict |
{
"id": "message_ea26d29d-4509-490e-98e9-9f6238bd821b",
"object": "thread.message",
"created_at": 1711508622598,
"thread_id": "thread_e99a9fe7-0433-426f-98ad-a5139c36579c",
"incomplete_details": {},
"completed_at": null,
"incomplete_at": null,
"assistant_id": "",
"run_id": "",
"file_ids": [],
"role": "user",
"content": [
{
"type": "text",
"text": {
"value": "Hello",
"annotations": []
}
}
],
"metadata": {
"modified": "true",
"user": "abc123"
},
"name": "",
"plugin_call": {},
"tool_calls": [],
"status": "",
"request_id": "7877b011-cb94-9df1-9add-dc42b7d611f6"
}
Paramètres de sortieLa classe de message modifiée est retournée. Outre les paramètres de la requête, la réponse contient les champs suivants :
- id : ID du message.
- request_id : ID de la requête.
SDK
Exemple de codefrom dashscope import Messages
import dashscope
import os
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
thread = Messages.update(
'message_id',
# Set the API key using an environment variable. If an environment variable is not set, replace the following line with api_key="sk-xxx" and your Model Studio API key.
api_key=os.getenv("DASHSCOPE_API_KEY"),
thread_id='the_message_thread_id',
metadata={'key': 'value'}
)
import java.util.Collections;
import com.alibaba.dashscope.common.UpdateMetadataParam;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.InvalidateParameter;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.threads.messages.Messages;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void main(String[] args) throws ApiException, NoApiKeyException, InputRequiredException, InvalidateParameter, InterruptedException {
Messages messages = new Messages();
// Set the API key using an environment variable. If an environment variable is not set, replace the following line with .apiKey("sk-xxx") and your Model Studio API key.
UpdateMetadataParam updateMetadataParam = UpdateMetadataParam.builder()
.metadata(Collections.singletonMap("key", "value"))
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.build();
messages.update("thread_id", "message_Id", updateMetadataParam);
}
}
Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
message_id | string | - | ID du message à mettre à jour. |
thread_id | string | - | ID du thread auquel appartient le message à mettre à jour. |
metadata | Dict | None | Informations associées au thread. |
workspace | string | None | ID de l'espace de travail d'Alibaba Cloud Model Studio. Ce paramètre est requis uniquement si api_key est une clé API de sous-espace de travail. |
api_key | string | None | Clé API pour Alibaba Cloud Model Studio. Nous vous recommandons de configurer la clé API comme variable d'environnement. |
Reportez-vous à la réponse de l'opération de création.
Codes d'erreur
Si un appel à l'API Assistant échoue et renvoie un message d'erreur, consultez la rubrique Messages d'erreur pour résoudre le problème.