/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 동작: 동일한 엔드포인트에서
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 토큰을 받아야 합니다. 이를 백업용으로 보관하십시오.
로그인 또는 등록하지 않은 경우 자동으로 로그인 페이지로 리디렉션되어 등록 및 로그인을 초대합니다. 완료 후 현재 페이지로 자동으로 돌아옵니다.
하나의 API 토큰으로 플랫폼의 모든 서비스를 호출할 수 있으며, 각 서비스에 대해 별도로 신청할 필요가 없습니다. 최초 신청 시 무료 크레딧이 제공되어 무료로 체험할 수 있으며, 크레딧이 부족할 경우 콘솔에서 일반 잔액을 충전할 수 있습니다.
📘 전체 문서: 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,gemini-3.1-pro-preview,gemini-3.1-flash-image-preview,gemini-3-pro-preview,gemini-2.5-flash-lite등 - xAI:
grok-4등 - DeepSeek:
deepseek-v4-flash,deepseek-v3.2-exp,deepseek-r1-0528등 - Moonshot:
kimi-k3,kimi-k2.6,kimi-k2.5등 - Zhipu:
glm-5.1,glm-5,glm-5-turbo,glm-4.7,glm-4.5v등
다중 회차 대화
v1과 마찬가지로stateful: true를 전달하여 세션 저장을 활성화하면 API가 id를 반환합니다. 이후 요청 시 id를 함께 전달하면 대화를 계속할 수 있으며, 메시지 기록을 직접 관리할 필요가 없습니다.
첫 번째 요청:
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의 핵심 강화점은 모델이 도구를 자율적으로 호출하여 다단계 작업을 수행할 수 있다는 것입니다. 이는 기본적으로 활성화되어 있으며, 클라이언트가 요청에 추가 구성을 할 필요가 없습니다. 일반적인 시나리오는 다음과 같습니다:- 사용자가 “최근 상하이에 어떤 새로운 전시가 있는지 검색해줘”라고 질문하면 → 모델이 내장 웹 검색을 호출하여 → 결과를 정리하여 답변합니다.
- 사용자가 “이 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의 슬러그입니다; allowed_mcp_servers의 값은 연결된 MCP Server의 슬러그입니다. 사전 승인 목록에 포함되지 않은 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는 동일한 엔드포인트에서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도 전달할 수 있지만, 서버는 엄격한 스키마 검증을 수행함(반드시 접힌 형태의 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등)로 업그레이드하는 것이 좋음. - NDJSON 스트림의 필드는 하위 호환성을 유지: 각
text_delta이벤트는 여전히delta_answer와id를 포함하므로, 원래 행 단위로delta_answer를 파싱하던 클라이언트는 변경할 필요 없음.
message, SSE, 도구 호출, action CRUD)을 활성화할 수 있으며, 원하는 속도로 진행하면 됨.
오류 처리
오류 응답은 통일되어 있음:400 bad_request: 필수 필드 누락,tool_use_id불일치,messages스키마 불법 등.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":"..."} 이벤트로 발송되며, 그 직후 스트림이 종료됨.

