このトピックでは、アシスタント API の Message クラスを使用して、メッセージを作成、リスト表示、取得、変更する方法について説明します。
アシスタント API は非推奨になりました。代替として Responses API に移行してください。Responses API には、複数の組み込みツールが含まれており、マルチターンのコンテキスト管理をサポートしています。
関数名 | タイプ |
create | メッセージクラスの作成 |
retrieve | メッセージクラスの取得 |
modify | メッセージクラスの変更 |
list | メッセージクラスのリスト表示 |
メッセージの作成
HTTP
コード例
curl --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": {}
}'リクエストパラメーター
パラメーター名 | 入力パラメーター | パラメーターのタイプ | 必須 |
thread id | メッセージを渡す対象のスレッド ID。 | string | はい |
content | メッセージのコンテンツ。 | string | はい |
role | メッセージを提供するエンティティのロール。`user` のみがサポートされています。 | string | いいえ |
metadata | その他の関連情報。 | string | いいえ |
レスポンス
{
"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"
}レスポンスパラメーター
メッセージオブジェクトが返されます。レスポンスには、リクエストパラメーターに加えて、以下のフィールドが含まれます:
id:メッセージ ID。
request_id:リクエスト ID。
SDK
コード例
from 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',
# 環境変数を使用して API キーを設定します。環境変数が設定されていない場合は、次の行を api_key="sk-xxx" とご自身の Model Studio API キーに置き換えてください。
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 {
// スレッドにメッセージを作成
Messages messages = new Messages();
TextMessageParam param = TextMessageParam.builder()
// 環境変数を使用して API キーを設定します。環境変数が設定されていない場合は、次の行を .apiKey("sk-xxx") とご自身の Model Studio API キーに置き換えてください。
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.role("user")
.content("How to make delicious beef and potato stew?")
.build();
ThreadMessage message = messages.create("threadId", param);
}
}リクエストパラメーター
パラメーター | タイプ | デフォルト値 | 説明 |
thread_id | string | - | スレッド ID。 |
content | string | - | メッセージのコンテンツ。 |
role | str | 'user' | メッセージのロール。デフォルト値:user。 |
metadata | Dict | None | メッセージに関連付けられたキーと値の情報。 |
workspace | string | None | Alibaba Cloud Model Studio のワークスペース ID。このパラメーターは、`api_key` がサブワークスペースの API キーである場合にのみ必須です。 |
api_key | string | None | Alibaba Cloud Model Studio の API キー。API キーは環境変数として設定する (「API キーの設定」にマージするため、このトピックは非公開になります) ことを推奨します。 |
レスポンス
結果は Message オブジェクトです。次のコードは、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"
}レスポンスパラメーター
フィールド名 | フィールドタイプ | フィールドの説明 |
status_code | int | 呼び出しの HTTP ステータスコード。値が 200 の場合は呼び出しが成功したことを示します。その他の値は、呼び出しが失敗したことを示します。 |
id | string | メッセージ ID。UUID 文字列です。 |
content | List[dict] | メッセージのコンテンツ。 |
content.type | string | コンテンツタイプ (例:text)。 |
content.text | dict | コンテンツ |
content.text.value | string | コンテンツのテキスト値 |
metadata | Dict | このメッセージに関連付けられたキーと値の情報。 |
tool_calls | Dict | ツール呼び出し情報。 |
plugin_call | Dict | プラグイン呼び出し情報。 |
created_at | timestamp | アシスタントが作成された時刻。 |
gmt_created | datetime | 2024-03-22 17:12:31 |
gmt_modified | datetime | 2024-03-22 17:12:31 |
code | string | リクエストが失敗したことを示します。このパラメーターはエラーコードを指定します。リクエストが成功した場合、このパラメーターは無視されます。 Python のみ。 |
message | string | リクエストが失敗したことを示します。このパラメーターは、失敗に関する詳細情報を提供します。リクエストが成功した場合、このパラメーターは無視されます。 Python のみ。 |
メッセージのリスト
HTTP
コード例
curl --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"リクエストパラメーター
パラメーター名 | 説明 | パラメーターのタイプ | 必須 |
thread id | メッセージを渡す対象のスレッド ID。 | string | はい |
limit | メッセージ数 | integer | いいえ |
order | 作成時間によるソート順:`asc` または `desc`。 | string | いいえ (デフォルト:`desc`) |
レスポンス
{
"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"
}レスポンスパラメーター
メッセージオブジェクトのリストが返されます。レスポンスには、元のリクエストパラメーターに加えて、以下の追加フィールドが含まれます:
複数のメッセージのリスト。
SDK
コード例
from dashscope import Messages
import dashscope
import os
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = Messages.list(
'thread_id',
# 環境変数を使用して API キーを設定します。環境変数が設定されていない場合は、次の行を api_key="sk-xxx" とご自身の Model Studio API キーに置き換えてください。
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();
// 環境変数を使用して API キーを設定します。環境変数が設定されていない場合は、次の行を .apiKey("sk-xxx") とご自身の Model Studio API キーに置き換えてください。
GeneralListParam listThreadMessages = GeneralListParam.builder()
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.build();
ListResult<ThreadMessage> message = messages.list("threadId", listThreadMessages);
}
}リクエストパラメーター
パラメーター | タイプ | デフォルト値 | 説明 |
thread_id | string | - | クエリするスレッドの ID。 |
limit | int | None | 取得するメッセージの数。 |
order | string | None | `created_at` によるソート順。 |
workspace | string | None | Alibaba Cloud Model Studio の ワークスペース ID。`api_key` がサブワークスペースの API キーである場合にのみ必須です。 |
api_key | string | None | Alibaba Cloud Model Studio の API キー。API キーは環境変数として設定する (このトピックは非公開になり、「API キーの設定」にマージされます) ことを推奨します。 |
レスポンスパラメーター
フィールド名 | フィールドタイプ | フィールドの説明 |
has_more | boolean | さらにメッセージを取得できるかどうかを示します。 |
last_id | string | 返されたリストの最後のメッセージの ID。 |
first_id | string | 返されたリストの最初のメッセージの ID。 |
data | list[Message] | Message オブジェクトのリスト。 |
メッセージの取得
HTTP
コード例
curl --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"リクエストパラメーター
パラメーター名 | 説明 | パラメーターのタイプ | 必須 |
thread id | 取得するメッセージのスレッド ID。 | string | はい |
message_id | 取得するメッセージの ID。 | string | はい |
レスポンス
{
"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"
}レスポンスパラメーター
取得されたメッセージオブジェクトが返されます。レスポンスには、リクエストパラメーターに加えて、以下のフィールドが含まれます:
id:メッセージ ID
request_id:リクエスト ID。
SDK
コード例
from dashscope import Messages
import dashscope
import os
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
message = Messages.retrieve(
'message_id',
# 環境変数を使用して API キーを設定します。環境変数が設定されていない場合は、次の行を api_key="sk-xxx" とご自身の Model Studio API キーに置き換えてください。
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();
// 環境変数を使用して API キーを設定します。環境変数が設定されていない場合は、次の行を .apiKey("sk-xxx") とご自身の Model Studio API キーに置き換えてください。
String apiKey = System.getenv("DASHSCOPE_API_KEY");
ThreadMessage message = messages.retrieve("threadId", "messageId", apiKey);
}
}リクエストパラメーター
パラメーター | タイプ | デフォルト値 | 説明 |
message_id | string | - | クエリするメッセージの ID。 |
thread_id | string | - | メッセージが属するスレッドの ID。 |
workspace | string | None | Alibaba Cloud Model Studio のワークスペース ID。このパラメーターは、api_key がサブワークスペースの API キーである場合にのみ必須です。 |
api_key | string | None | Alibaba Cloud Model Studio の API キー。API キーは環境変数として設定する (注:この方法は非推奨になり、「API キーの設定」トピックにマージされます) ことを推奨します。 |
レスポンスパラメーター
作成操作のレスポンスをご参照ください。
メッセージの変更
HTTP
コード例
curl --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"
}
}'
リクエストパラメーター
パラメーター名 | 入力パラメーター | パラメーターのタイプ | 必須 |
thread_id | 変更するスレッドの ID。 | string | はい |
message_id | 変更するメッセージの ID。 | string | はい |
metadata | メタデータ。 | 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"
}出力パラメーター
変更されたメッセージオブジェクトが返されます。レスポンスには、リクエストパラメーターに加えて、以下のフィールドが含まれます:
id:メッセージ ID
request_id:リクエスト ID。
SDK
コード例
from dashscope import Messages
import dashscope
import os
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
thread = Messages.update(
'message_id',
# 環境変数を使用して API キーを設定します。環境変数が設定されていない場合は、次の行を api_key="sk-xxx" とご自身の Model Studio API キーに置き換えてください。
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();
// 環境変数を使用して API キーを設定します。環境変数が設定されていない場合は、次の行を .apiKey("sk-xxx") とご自身の Model Studio API キーに置き換えてください。
UpdateMetadataParam updateMetadataParam = UpdateMetadataParam.builder()
.metadata(Collections.singletonMap("key", "value"))
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.build();
messages.update("thread_id", "message_Id", updateMetadataParam);
}
}リクエストパラメーター
パラメーター | タイプ | デフォルト値 | 説明 |
message_id | string | - | 更新するメッセージの ID。 |
thread_id | string | - | 更新するメッセージが属するスレッドの ID。 |
metadata | Dict | None | スレッドに関連付けられた情報。 |
workspace | string | None | Alibaba Cloud Model Studio の ワークスペース ID。api_key がサブワークスペースの API キーである場合にのみ必須です。 |
api_key | string | None | Alibaba Cloud Model Studio の API キー。API キーは環境変数として設定する (「API キーの設定」にマージするため、非公開になります) ことを推奨します。 |
レスポンスパラメーター
作成操作のレスポンスをご参照ください。
エラーコード
アシスタント API の呼び出しが失敗し、エラーメッセージが返された場合は、エラーメッセージをご参照の上、問題を解決してください。