/aichat2/conversations)는 차세대 대화 인터페이스이며, AI Chat API의 전면 업그레이드 버전입니다. v1의 간결하고 관리형인 멀티턴 대화 기반 위에 다음을 확장했습니다:
- 멀티모달 사용자 입력: 구조화된
message필드를 통해 텍스트 + 이미지 + 파일 블록을 직접 전달하며, 먼저references를 사용해 간접적으로 첨부할 필요가 없습니다. - Agent화된 도구 호출: 웹 검색, 웹페이지 크롤링, 파일 읽기 등의 도구 세트가 내장되어 있으며, 사용자가 승인한 MCP 서버(Google Drive, Notion, Slack, GitHub 등)를 연결할 수 있습니다. 모델은 한 번의 요청 안에서 여러 차례 자율적으로 도구를 호출하여 복잡한 작업을 완료할 수 있습니다.
- 구조화된 스트리밍 이벤트:
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을 발급받아 예비로 보관하세요.
아직 로그인 또는 등록하지 않았다면 로그인 페이지로 자동 이동하여 등록과 로그인을 안내하며, 완료 후 현재 페이지로 자동 반환됩니다.
하나의 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는 두 가지 스트리밍 형식을 지원하며,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 두 유형의 이벤트로 표시됩니다. 예:
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 —— 하나의 대화 가져오기
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 —— 대화 하나 삭제
{ 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":"..."} 이벤트로 전송되며, 이어서 스트림이 종료됩니다.

