개발 가이드
한 눈에 보기
한 눈에 보기
이 문서는 CLEVI 개발자 문서의 시작점입니다. Clevi-X-Platform 의 구성, API 로 호출할 수 있는 모델 두 가지, 인증 방식, 요청과 응답 형식을 한 번에 정리합니다. 요청과 응답은 OpenAI Chat Completions 형식을 따르므로 기존 OpenAI SDK 에서 base_url 과 api_key 두 값만 바꿔 연결합니다. 설치 없이 첫 호출까지 따라가는 절차는 Quick Start 문서에 있습니다.
플랫폼 구성
Clevi-X-Platform 은 모델, 에이전트, 시맨틱 데이터베이스, 물리 AI 를 하나의 실행 환경에 둡니다. 이 가운데 개발자가 지금 HTTP 로 직접 호출하는 것은 모델 계층입니다. 나머지 계층은 플랫폼 내부와 콘솔에서 동작하며, 공개 API 는 아래 표에 표시된 범위까지입니다.
| 계층 | 다루는 것 | 현재 공개 범위 |
|---|---|---|
| 모델 | 텍스트와 이미지 입력을 받아 응답 토큰을 생성 | chat completions 엔드포인트로 공개 |
| 에이전트 | 목적 지향 추론, 도구 호출, 단계별 근거 생성 | 콘솔 및 플레이그라운드 |
| 시맨틱 DB | 문서·이미지·도면·업무 데이터를 의미 단위로 연결 | 콘솔 |
| 물리 AI | 로봇 동작 계획 수립과 재계획 | 설치 단위 협의 |
모델 라인업
요청 본문의 model 필드에 아래 두 이름 중 하나를 그대로 넣습니다. 두 모델은 같은 주소, 같은 인증, 같은 요청 형식을 씁니다.
- cip-5.5-im
- cip-5.5-mm
| 모델 | 성격 | 입력 | 주로 쓰는 곳 |
|---|---|---|---|
| cip-5.5-im | 멀티모달 검색·지식화 | 텍스트, 이미지, 문서, 도면 | 의미 기반 검색, 지식 연결, 로봇 동작 계획 지원 |
| cip-5.5-mm | 멀티모달 추론 | 텍스트, 이미지, 복합 문맥 | 연구·분석 질의, 도구 호출, 다단계 작업 |
cip-5.5-im
문서, 이미지, 도면, 업무 데이터를 의미 단위로 연결해 검색 결과와 지식 구조를 만듭니다. Physical AI 의 계획 수립과 재계획 단계에서 입력을 해석하는 데도 같은 모델을 씁니다. 내부 식별자로 RB-IM 이 쓰이며, API 에서는 cip-5.5-im 만 유효한 이름입니다.
cip-5.5-mm
텍스트와 이미지, 그리고 여러 문서에 걸친 복합 문맥을 함께 읽고 답을 만듭니다. 도구 호출과 업무 흐름 실행을 포함하는 Agentic 작업에 맞춰 조정된 모델입니다.
모델 고르기
| 하려는 일 | 고를 모델 |
|---|---|
| 사내 문서와 도면에서 근거 문단 찾기 | cip-5.5-im |
| 검색 결과를 의미 기반으로 연결해 지식화 | cip-5.5-im |
| 로봇 작업 계획의 입력 해석 | cip-5.5-im |
| 이미지와 텍스트를 함께 읽고 판단 | cip-5.5-mm |
| 도구 호출이 필요한 다단계 작업 | cip-5.5-mm |
| 여러 문서를 묶은 분석 답변 작성 | cip-5.5-mm |
그 밖의 모델
플랫폼에는 아래 모델이 함께 있습니다. 배포 형태와 접근 경로가 서로 달라, 공개 API 이름은 별도로 안내합니다.
| 모델 | 성격 |
|---|---|
| Cip-5-X | 단계별 근거를 제시하는 멀티모달 복합 분석 모델 |
| Cip-5-Agent | 상황별 의사결정과 반복 업무 처리를 담당하는 에이전트 특화 추론 모델 |
| Cip-5-Vision | 이미지·영상·텍스트·시계열을 함께 해석하는 비전 모델 |
| Ivy-3-Text | 소형 단말과 엣지 환경에서 동작하는 온디바이스 경량 LLM |
| Ivy-4-mm | 텍스트·이미지·음성을 동시에 처리하는 대용량 non-reasoning 모델 |
기본 정보와 인증
키는 워크스페이스 단위로 발급하고, 요청마다 Authorization 헤더에 Bearer 로 붙입니다. 아래 표의 값 여섯 개면 첫 호출에 필요한 설정이 끝납니다.
| 항목 | 값 |
|---|---|
| 기본 주소 | https://platform.clevi.net/api/services/v1/aiservice/openai/v1 |
| 인증 헤더 | Authorization: Bearer sk-... |
| 요청 본문 형식 | application/json |
| 요청·응답 규격 | OpenAI Chat Completions 호환 |
| 호출 가능 모델 | cip-5.5-im, cip-5.5-mm |
| 키 발급 화면 | https://clevi.app/cloud/keys |
표와 예제의 sk-... 는 발급받은 키를 넣는 자리입니다. 아래 명령으로 환경 변수에 넣어 두면 이 문서의 예제를 그대로 복사해 실행할 수 있습니다.
export CLEVI_API_KEY="sk-..."POST /api/services/v1/aiservice/openai/v1/chat/completions
메시지 배열과 모델 이름을 받아 모델이 생성한 메시지 하나를 choices 배열에 담아 돌려줍니다. 전체 주소는 https://platform.clevi.net/api/services/v1/aiservice/openai/v1/chat/completions 입니다. messages 는 최소 1개의 메시지 객체를 포함해야 하고, 각 객체는 role 과 content 를 가집니다.
| 이름 | 형식 | 필수 | 설명 |
|---|---|---|---|
| model | string | 예 | cip-5.5-im 또는 cip-5.5-mm |
| messages | array | 예 | 대화 메시지 객체의 배열. 최소 1개 |
| messages[].role | string | 예 | system · user · assistant 중 하나 |
| messages[].content | string | 예 | 메시지 본문 |
| stream | boolean | 아니오 | true 면 응답을 server-sent events 조각으로 나눠 받습니다 |
| max_tokens | integer | 아니오 | 응답으로 생성할 최대 토큰 수 |
| temperature | number | 아니오 | 값이 클수록 같은 요청에서 서로 다른 응답이 나올 확률이 높아집니다 |
curl https://platform.clevi.net/api/services/v1/aiservice/openai/v1/chat/completions \
-H "Authorization: Bearer $CLEVI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "cip-5.5-mm",
"messages": [
{"role": "system", "content": "사내 문서를 요약하는 도우미로 답한다."},
{"role": "user", "content": "이 API 의 인증 방식을 한 문장으로 설명해 줘."}
]
}'# pip install openai
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["CLEVI_API_KEY"],
base_url="https://platform.clevi.net/api/services/v1/aiservice/openai/v1",
)
completion = client.chat.completions.create(
model="cip-5.5-mm",
messages=[
{"role": "system", "content": "사내 문서를 요약하는 도우미로 답한다."},
{"role": "user", "content": "이 API 의 인증 방식을 한 문장으로 설명해 줘."},
],
)
print(completion.choices[0].message.content)// npm install openai
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.CLEVI_API_KEY,
baseURL: "https://platform.clevi.net/api/services/v1/aiservice/openai/v1",
});
const completion = await client.chat.completions.create({
model: "cip-5.5-mm",
messages: [
{ role: "system", content: "사내 문서를 요약하는 도우미로 답한다." },
{ role: "user", content: "이 API 의 인증 방식을 한 문장으로 설명해 줘." },
],
});
console.log(completion.choices[0].message.content);{
"id": "chatcmpl-7d21b4e0",
"object": "chat.completion",
"created": 1755500000,
"model": "cip-5.5-mm",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Authorization 헤더에 Bearer 와 발급받은 API 키를 넣어 인증합니다."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 38,
"completion_tokens": 24,
"total_tokens": 62
}
}응답 필드
응답은 최상위 필드 여섯 개로 구성됩니다. 생성된 문장은 choices 배열의 첫 원소 안에 있고, 토큰 사용량은 usage 에 있습니다.
| 이름 | 형식 | 설명 |
|---|---|---|
| id | string | 요청 하나를 가리키는 식별자. 오류 문의 시 함께 전달합니다 |
| object | string | chat.completion. 스트리밍 조각은 chat.completion.chunk |
| created | integer | 응답을 만든 시각의 Unix 초 |
| model | string | 응답을 만든 모델 이름 |
| choices | array | 생성 결과 배열 |
| choices[].index | integer | 배열 안에서의 순번. 0 부터 시작합니다 |
| choices[].message.role | string | assistant |
| choices[].message.content | string | 생성된 응답 본문 |
| choices[].finish_reason | string | 생성이 멈춘 이유. 끝까지 생성하면 stop |
| usage.prompt_tokens | integer | 입력으로 쓴 토큰 수 |
| usage.completion_tokens | integer | 생성한 토큰 수 |
| usage.total_tokens | integer | 위 두 값의 합 |
오류
실패한 요청은 HTTP 상태 코드로 원인을 알립니다. 아래 대처를 먼저 확인하고, 같은 코드가 반복되면 응답의 id 와 요청 시각을 남겨 두세요.
| 코드 | 뜻 | 대처 |
|---|---|---|
| 400 | 요청 본문이 형식에 맞지 않습니다 | model 과 messages 가 있는지, JSON 이 닫혔는지 확인합니다 |
| 401 | 키가 없거나 유효하지 않습니다 | 헤더가 Bearer 로 시작하는지, 키 값이 그대로 복사됐는지 확인합니다 |
| 403 | 이 키로 접근할 수 없습니다 | 키를 발급한 워크스페이스와 요청한 모델 이름을 확인합니다 |
| 404 | 경로가 없습니다 | 주소 끝이 /v1/chat/completions 인지 확인합니다 |
| 429 | 짧은 시간에 요청이 몰렸습니다 | 재시도 간격을 두 배씩 늘려 다시 보냅니다 |
| 500 | 서버 쪽 오류입니다 | 같은 요청을 다시 보내고, 반복되면 지원팀에 요청 시각을 전달합니다 |
배포 형태
같은 모델을 클라우드 API 와 온프레미스 설치 두 가지로 씁니다. 요청 형식과 인증 방식은 두 경우가 같고, 주소와 키 관리 화면이 다릅니다.
| 항목 | 클라우드 API | 온프레미스 |
|---|---|---|
| 기본 주소 | platform.clevi.net | 설치한 사설망 주소 |
| 키 발급 | https://clevi.app/cloud/keys | 설치 환경의 관리자 콘솔 |
| 인증 방식 | Bearer 토큰 | Bearer 토큰 |
| 데이터 보관 위치 | CLEVI 클라우드 | 고객 인프라 내부 |
데이터 거버넌스
플랫폼은 아래 네 가지를 기본 동작으로 둡니다. 워크스페이스를 나누는 기준을 정할 때 함께 확인하세요.
- 권한 기반 통제 — 워크스페이스 단위로 접근 권한과 키를 나눕니다.
- 격리 작업공간 — 워크스페이스 사이에 데이터가 섞이지 않습니다.
- 실시간 데이터 연결 — 외부 시스템과 연결한 데이터를 조회 시점에 가져옵니다.
- 프로세스별 기록 보관 — 실행한 작업 단위로 기록을 남깁니다.
시작 순서
처음 연결한다면 아래 순서로 진행하세요. 3번까지 마치면 키 하나로 두 모델을 모두 호출할 수 있습니다.
- https://platform.clevi.net/account/login 에서 로그인하거나 계정을 만듭니다.
- https://clevi.app/cloud 에서 워크스페이스를 추가합니다.
- https://clevi.app/cloud/keys 에서 키를 발급하고 환경 변수에 저장합니다.
- https://clevi.app/cloud/playground 에서 cip-5.5-im 과 cip-5.5-mm 의 응답을 비교합니다.
- Quick Start 문서의 요청 예제를 복사해 첫 호출을 보냅니다.
