Skip to main content
AI Chat v2 API (/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.7, Claude Sonnet 4.6, Gemini 3.1 Pro, GLM 5.1, DeepSeek V4, Kimi K2.5 등 최신 모델 지원.
또한, 요청 본문은 완전한 하위 호환성을 유지하여 model + question (+ 선택적 stateful / id / references / preset) 만으로도 v1과 동일한 {answer, id} JSON 응답을 받을 수 있어 /aichat/conversations에서 /aichat2/conversations로의 이전 시 클라이언트 재작성 없이 경로만 변경하면 됨.
현재 /aichat/conversations를 사용 중인 경우, 기존 인터페이스는 계속 유지되며, 단계별로 마이그레이션 가능.

신청 절차

API 사용을 위해 AI Chat v2 API 페이지에서 서비스 신청 후, 페이지 내 「Acquire」 버튼 클릭으로 요청에 필요한 인증 정보를 획득하세요. 로그인 또는 회원가입이 필요하면 자동 전환되어 로그인 후 원래 페이지로 돌아갑니다. 초기 신청 시 무료 할당량이 제공되어 무료로 API를 사용할 수 있습니다.

기본 사용법

가장 간단한 사용법은 v1과 동일하게 model + question 전달 후 {answer, id} 수신: CURL 예제:
응답 예시:
Python 예제:
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-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, grok-4-1-fast, grok-4-1-fast-reasoning, grok-3-mini-fast
  • DeepSeek: deepseek-v4-flash, deepseek-v3.2-exp, deepseek-r1-0528
  • Moonshot: kimi-k2.5, kimi-k2-thinking, kimi-k2-thinking-turbo
  • Zhipu: glm-5.1, glm-5, glm-5-turbo, glm-4.7, glm-4.5v
상세 요금 정책은 서비스 페이지의 Pricing 탭 참고.

다중 회화

v1과 동일하게 stateful: true 전달 시 세션 저장 활성화, API는 id를 반환하며 이후 요청에 id를 포함하면 대화 연속 가능, 메시지 히스토리 관리 필요 없음. 첫 요청 예시:
응답:
두 번째 요청 시 동일 id 포함:
응답:
stateful 기본값은 true이며, 생략하거나 명시적 true 전달은 동일 효과입니다. 서버에서 세션 저장을 원하지 않으면 stateful: false로 설정.

스트리밍 응답

v2는 두 가지 스트리밍 포맷 지원, accept 헤더에 따라 선택:

NDJSON 예제

NDJSON 각 줄은 구조화된 이벤트, 가장 흔한 타입은 text_delta:

SSE 예제

브라우저에서 EventSource는 커스텀 요청 본문 지원 안 함, fetch + 수동 파싱 추천:

이벤트 타입별 설명

최종 답변만 관심 있으면, 모든 text_deltacontent를 이어 붙이면 application/json 모드의 answer와 동일.

멀티모달 입력

사용자 입력에 이미지 또는 파일 포함 시, question 대신 message 배열 전달. 각 요소는 블록:
지원하는 블록 유형:
  • text — 일반 텍스트, 필수 text 필드.
  • image_url — 이미지, 필수 image_url.url.
  • file_url — 파일(PDF, CSV, TXT 등), 필수 file_url.url.

v1 references와의 관계

구형 클라이언트 호환 위해 references: ["https://...", ...] 필드도 인식:
  • URL 확장자가 jpg / jpeg / png / gif / bmp / webp / svg / heic / heif이면 자동으로 image_url 블록으로 변환.
  • 기타 확장자는 file_url 블록으로 변환.
  • question도 함께 제공 시, 이를 text 블록으로 앞에 추가.
즉, v1에서 요청 체를 변경하지 않고 /aichat2/conversations로 경로만 바꾸면 기존 references 방식도 정상 작동. 더 세밀한 제어(여러 이미지 사이에 텍스트 배치, 순서 중요 등)는 message 배열로 직접 구성 권장.

도구 호출 및 MCP 연동

v2 핵심 강화점은 모델이 자율적으로 도구를 호출하여 다단계 작업 수행, 기본 활성화 상태이며, 클라이언트 별도 설정 필요 없음. 대표 시나리오:
  • “최근 상하이 전시회 검색” → 내장 웹 검색 호출 → 결과 정리 답변.
  • “이 PDF 읽고 요약” → 파일 읽기 호출 → 요약 작성.
  • Connections에서 Google Drive / GitHub / Notion 등 권한 부여 시, 해당 MCP 도구 호출 가능.
NDJSON / SSE 스트림 내 도구 호출은 tool_use / tool_result 이벤트로 표현, 예시:
툴 호출 세부 내용이 필요 없으면 tool_use / tool_result / card / citation 이벤트 무시 가능, 최종 출력은 text_delta로만 전달. max_turns는 모델이 도구를 호출하는 최대 회수 제한, 기본값은 플랫폼 정책에 따름. max_turns: 1로 설정 시, 단일 답변만 가능하며 도구 호출 금지.

일시 정지 대화 복구

일부 도구는 모델이 사용자에게 반문하는 경우, ask_user_question 이벤트 발생, 대화는 awaiting_user_input 상태로 정지:
프론트엔드에서는 이 이벤트를 카드로 렌더링 후 사용자 선택 유도, 이후 같은 id로 답변 요청 보내기:
tool_use_id는 정지 시 tool_id와 반드시 일치해야 하며, 불일치 시 400 오류 발생. tool_results 포함 시, question, message, references는 무시됨. 사용자가 질문을 포기하면, 새 question 또는 message 전달으로 일시 정지 도구 호출을 건너뛰기 가능.

세션 관리 (CRUD)

v2는 동일 엔드포인트 내 action 필드로 간단한 세션 관리 제공, 별도 API 필요 없음.

action: retrieve — 세션 조회

전체 세션 문서(히스토리 메시지, 모델, 타이틀, 사용 도구 등) 반환.

action: retrieve_batch — 세션 목록 조회

items 배열과 total 반환. 메시지 히스토리 제외, 사이드바 목록 용도. 특정 세션 상세 조회 시 action: retrieve 사용. 선택 필터: user_id, application_id, model_group, model.

action: update — 타이틀 변경 또는 히스토리 재작성

messages도 전달 가능하나, 서버는 엄격한 스키마 검증(접힌 ToolUseContent 형태) 수행, 미준수 시 400 반환. 주로 타이틀 변경 용도.

action: delete — 세션 삭제

{id, success: true} 반환. 삭제 후 복구 불가, 신중히 호출.

v1에서의 원활한 마이그레이션

/aichat/conversations 사용 중인 경우, 거의 코드 수정 없이 v2로 전환 가능:
  1. URL 변경: https://api.xhuoapi.ai/v1/aichat/conversationshttps://api.xhuoapi.ai/v1/aichat2/conversations
  2. 이전에 v1 모델명 사용 시(gpt-3.5, gpt-4-browsing 등), v2에서는 최신 모델(gpt-5.4, claude-opus-4-7, gemini-3.1-pro 등)로 업그레이드 권장.
  3. NDJSON 스트림의 text_delta 이벤트는 delta_answerid를 계속 제공하므로 기존 클라이언트의 delta_answer 파싱 로직 무리 없이 유지 가능.
이후 신규 기능(멀티모달, SSE, 도구 호출, action CRUD 등)을 단계별로 활용 가능.

오류 처리

오류 응답은 일관되게 다음과 같음:
자주 발생하는 오류:
  • 400 bad_request:필수 필드 누락, tool_use_id 불일치, 스키마 위반 등
  • 401 invalid_token:인증 토큰 오류
  • 404 not_found:세션 ID 존재하지 않음
  • 429 too_many_requests:요청 제한 초과
  • 500 chat_error:상위 LLM 오류 또는 이번 요청 completion_tokens=0 (비용 차감 없음)
스트리밍 내 오류는 {"type":"error","message":"..."} 이벤트로 전달 후 스트림 종료.

결론

AI Chat v2 API는 하위 호환성을 유지하는 동시에, 대화를 ‘단일/다중 질문’에서 ‘Agent형 관측 가능 대화’로 업그레이드: 멀티모달 입력, 도구 호출, 일시 정지/복구, 구조화된 스트리밍 이벤트, 내장 CRUD 기능 포함. 신규 연동 시 v2 추천, 기존 v1는 단계별 점진적 마이그레이션 가능. 문의 사항은 언제든 기술 지원팀에 연락 바랍니다.