/aichat2/conversations)は新世代の対話インターフェースであり、AI Chat API の全面アップグレード版です。v1 のシンプルでホスト型のマルチターン対話を基盤として、以下を拡張しています:
- マルチモーダルなユーザー入力:構造化された
messageフィールドを通じて、テキスト + 画像 + ファイルブロックを直接渡せます。まずreferencesを使用して間接的に添付する必要はありません。 - Agent 化されたツール呼び出し:Web 検索、Web ページの取得、ファイル読み取りなどのツールセットを内蔵しており、ユーザーが認可した MCP サーバー(Google Drive、Notion、Slack、GitHub など)も接続できます。モデルは1回のリクエスト内で複数回自律的にツールを呼び出し、複雑なタスクを完了できます。
- 構造化ストリーミングイベント:
accept: text/event-streamまたはapplication/x-ndjsonにより、トークン単位のtext_delta、tool_use、tool_result、thinking、citation、card、artifactなどのイベントを取得でき、フロントエンドで対応する型ごとに個別にレンダリングできます。 - 中断 / 再開可能:モデルはユーザーによる情報補足が必要な際に
ask_user_questionイベントを発行して一時停止します。次回の呼び出し時にtool_resultsを通じて回答を返すことで継続できます。 - 新しい CRUD アクション:同一の endpoint 上で
actionフィールドによりretrieve/retrieve_batch/update/deleteを完了でき、追加の会話管理 API は不要です。 - 継続的に更新されるモデルリスト:デフォルトで GPT-5.4、Claude Opus 4.8、Claude Sonnet 4.6、Gemini 3.1 Pro、GLM 5.1、DeepSeek V4、Kimi K3 などの現代的なモデルに対応しています。
model + question(+ オプションの stateful / id / references / preset)のみを渡すことで、v1 と同等の {answer, id} JSON レスポンスを取得できます。そのため、/aichat/conversations から移行する際にクライアントを書き直す必要はなく、パスを /aichat2/conversations に変更するだけです。
現在 /aichat/conversations を使用している場合、旧インターフェースも引き続き提供されるため、ご自身のペースで移行できます。
申請手順
AI Chat v2 API を使用するには、まず Ace Data Cloud コンソール で API Token を取得し、控えておいてください。
まだログインまたは登録していない場合は、ログインページに自動的にリダイレクトされ、登録とログインを促されます。完了後、自動的に現在のページへ戻ります。
1つの API Token でプラットフォーム上のすべてのサービスを呼び出せるため、サービスごとに個別で申請する必要はありません。 初回申請時には無料クレジットが付与され、無料で体験できます。クレジットが不足した場合は、コンソール で共通残高をチャージできます。
📘 完全なドキュメント:AI Chat v2 API →
基本的な使用方法
最もシンプルな使い方は v1 と完全に同じです:model + question を渡し、{answer, id} を取得します。
CURL の例:
model の値は、右側の Try パネルのドロップダウンで直接確認できます。一般的なカテゴリには以下が含まれます:
- OpenAI:
gpt-5.4-mini、gpt-5.4-nano、gpt-5.2-pro、gpt-5.1-all、gpt-5-all、gpt-4.1、gpt-4o、gpt-4o-image、o3、o4-miniなど - Anthropic:
claude-opus-4-8、claude-opus-4-7、claude-opus-4-6、claude-opus-4-5-20251101、claude-sonnet-4-6、claude-sonnet-4-5-20250929、claude-haiku-4-5-20251001など - Google:
gemini-3.1-pro-preview、gemini-3.1-pro-preview、gemini-3.1-flash-image、gemini-3.1-pro-preview、gemini-2.5-flash-liteなど - xAI:
grok-4など - DeepSeek:
deepseek-v4-pro、deepseek-v4.1-flash、deepseek-v4-flash、deepseek-v3.2-exp、deepseek-r1-0528など - Moonshot:
kimi-k3、kimi-k2.6、kimi-k2.5など - Zhipu:
glm-5.3、glm-5.2、glm-5.1、glm-5、glm-5-turbo、glm-4.7、glm-4.5vなど
マルチターン対話
v1 と同様に、stateful: true を渡すことで会話保存を有効化できます。API は id を返し、後続のリクエストで id を渡し戻すことで対話を継続できます。自分で messages 履歴を管理する必要はありません。
最初のリクエスト:
id を渡します:
statefulのデフォルトはtrueであり、省略した場合と明示的にtrueを渡す場合は同等です。サーバー側でこのラウンドの会話を保存したくない場合は、明示的にstateful: falseを設定できます。
ストリーミングレスポンス
v2 は 2 種類のストリーミング形式をサポートしており、accept ヘッダーに応じて選択します:
NDJSON の例
text_delta です:
SSE の例
ブラウザ側ではEventSource はカスタムリクエストボディをサポートしていないため、fetch + 手動で \n\n ごとに分割して解析することを推奨します:
ストリーミングイベントの種類
最終回答のみを必要とするクライアントでは、すべての
text_delta の content を連結すれば、application/json モードでの answer と同等になります。
マルチモーダル入力
ユーザー入力に画像またはファイルが含まれる場合は、question の代わりに message(配列)を渡します。各配列要素はコンテンツブロックです:
text— 通常のテキスト。textフィールドが必須です。image_url— 画像。image_url.urlが必須です。file_url— ファイル(PDF、CSV、TXT など)。file_url.urlが必須です。
v1 の references との関係
旧クライアントとの互換性のため、v2 でも引き続き references: ["https://...", ...] フィールドを認識します:
- URL の末尾が
jpg / jpeg / png / gif / bmp / webp / svg / heic / heifの場合、自動的にimage_urlブロックへ変換します; - その他の拡張子は
file_urlブロックへ変換します; - さらに同時に
questionが提供されている場合は、それをtextブロックとして先頭に配置します。
/aichat2/conversations に置き換えるだけでよく、元の references の使い方はそのまま機能します。
より細かい制御が必要な場合(たとえば複数の画像をテキストの間に配置する、または順序が重要な場合)は、直接 message 配列を使用してください。
ツール呼び出しと MCP
v2 の中核的な強化点は、モデルがツールを自律的に呼び出して複数ステップのタスクを完了できることであり、これはデフォルトで有効です。クライアント側でリクエストに追加の設定を行う必要はありません。一般的なシナリオ:- ユーザーが「最近上海でどんな新しい展覧会があるか調べて」→ モデルが組み込みの web search を呼び出す → 結果を整理して回答します。
- ユーザーが「この PDF を読んで要約を書いて」→ モデルが file_read を呼び出す → 要約を書きます。
- ユーザーが Connections で Google Drive / GitHub / Notion などを認可済み → モデルが対応する MCP ツールを呼び出してそのデータを読み書きできます。
tool_use と tool_result の2種類のイベントで表現されます。例:
tool_use / tool_result / card / citation といったイベントを無視すればよく、モデルの最終出力は引き続き text_delta を通じてストリーミングされます。
max_turns では、今回のリクエスト内でモデルが自らツールを呼び出せる最大ラウンド数を制限できます。デフォルトの上限はプラットフォームによって決まります。これを小さく設定する(たとえば max_turns: 1)ことで、単一の回答を強制し、ツール呼び出しを一切許可しないようにできます。
非同期実行と無人認可
呼び出し元がアラート Webhook、CI/CD、監視システム、またはその他のバックグラウンドタスクである場合、async: true を設定すると、インターフェースは直ちにタスク ID を返し、バックグラウンドで実行を継続します:
action: retrieve + id を使用して会話結果を照会できます;また、callback_url を提供することもでき、タスク完了後にプラットフォームが { status, answer, usage, error } をコールバックアドレスへ POST します。callback_url は http / https を使用する必要があり、localhost またはプライベート IP のリテラルアドレスを直接指定することはできません。
バックグラウンドタスクでは通常、確認をクリックできる人がいません。特定の Skill または MCP Server に無人モードで送信、公開、書き込みなどのアクションを実行させたい場合は、リクエストボディで事前認可リストを明示的に渡してください:
allowed_skills 内の値は、接続済み Skill の slug です;allowed_mcp_servers 内の値は、接続済み MCP Server の slug です。事前認可リストに含まれていない Skill / MCP Server は、無人モードでは引き続きプレビュー、dry-run、または書き込み操作の実行拒否のみとなります。
より細かな制御が必要な場合は、同等の unattended_policy オブジェクトを使用することもできます:
--unattended-confirm または対応するセキュリティ機構をサポートしている必要があります;そうでなければ、引き続き dry-run となり、書き込み操作が直接実行されることはありません。
一時停止した会話を再開する
一部のツールでは、モデルが「ユーザーに質問を返す」ことがあり、その際モデルはask_user_question イベントを発行し、会話は awaiting_user_input 状態で凍結されます:
id を使用して次のリクエストを開始し、回答を tool_results 経由で返します:
tool_use_id は、一時停止時の tool_id と完全に一致している必要があります;一致しない場合は 400 が返されます。リクエスト内に tool_results が同時に存在する場合、question / message / references はすべて無視されます。
ユーザーがこの質問を放棄することを決めた場合は、新しい question / message を直接渡せばよく、プラットフォームは一時停止中のツール呼び出しを自動的に「ユーザーがスキップ」とマークします。
会話管理(CRUD)
v2 では、同じ endpoint 上でaction フィールドを通じて軽量な会話管理を提供しており、別途 API を用意する必要はありません。
action: retrieve —— 会話を1件取得する
messages 履歴、model、title、tools_used などを含む)を返します。
action: retrieve_batch —— 会話サマリーを一覧表示
{ items: [...], total } を返します。サマリーには messages は含まれません。サイドバーの一覧に適しています。ユーザーが特定の会話を開いた場合は、action: retrieve を使用してその完全なメッセージを個別に取得します。
任意のフィルターパラメーター:user_id、application_id、model_group、model。
action: update —— タイトルの変更または履歴の書き換え
messages も渡せますが、サーバー側で厳格な schema 検証が行われます(折りたたまれた ToolUseContent 形式である必要があります)。条件に合わない場合は 400 が返されます。通常は title の変更にのみ使用することを推奨します。
action: delete —— 会話を1件削除
{ id, success: true } を返します。削除後は復元できないため、確認してから呼び出してください。
v1 からのスムーズな移行
すでに/aichat/conversations を使用している場合、v2 への移行にはほとんどコード変更が必要ありません:
- URL を
https://api.acedata.cloud/aichat/conversationsからhttps://api.acedata.cloud/aichat2/conversationsに変更します。 - 以前に v1 のモデル名(
gpt-3.5、gpt-4-browsingなど)を渡していた場合は、v2 への切り替え時に現代的なモデル(gpt-5.4、claude-opus-4-8、gemini-3.1-pro-previewなど)へアップグレードすることを推奨します。 - NDJSON ストリームのフィールドは後方互換性を維持しています。各
text_deltaイベントには引き続きdelta_answerとidが含まれるため、従来行単位でdelta_answerを解析していたクライアントは変更不要です。
message、SSE、ツール呼び出し、action CRUD)を有効にし、段階的に進めることができます。
エラー処理
エラーレスポンスは統一して以下の形式です:400 bad_request:必須フィールドの欠落、tool_use_idの不一致、messagesschema の不正など。401 invalid_token:authorizationヘッダーが正しくありません。404 not_found:action: retrieve / update / delete実行時に、idに対応する会話が存在しません。429 too_many_requests:レート制限に達しました。500 chat_error:上流 LLM のエラー、またはこのラウンドのcompletion_tokens=0(未消費として扱われ、課金されません)。
{"type":"error","message":"..."} イベントとして送信され、その直後にストリームが終了します。

