Developer Docs
GenAI Shield API
두 가지 연동 방식이 있습니다 — 게이트웨이(보안 적용)(우리 sk-genai 키로 프록시, 개인정보 자동 마스킹)와 다이렉트 접속(표준 API)(벤더 키를 그대로 받아 네이티브 속도, 보안 미적용). 아래에서 골라 확인하세요.
키 발급
로그인 후 키관리에서 sk-genai 키를 발급합니다.
base URL 교체
SDK/HTTP 클라이언트의 base URL을 아래 주소로 바꿉니다.
그대로 호출
모델은 provider/model slug으로 지정해 호출합니다.
기본 정보
- Base URL
http://shield.gensapps.com/v1- 인증 헤더
Authorization: Bearer sk-genai-…- 엔드포인트
POST /v1/chat/completionsGET /v1/models- 호환
- OpenAI Chat Completions API (스트리밍 stream:true 지원)
예제 코드
같은 키 하나로 OpenAI(ChatGPT)와 Anthropic(Claude)를 모두 호출합니다 — model slug만 바꾸면 됩니다.
OpenAI · ChatGPT · openai/gpt-4o
curl http://shield.gensapps.com/v1/chat/completions \
-H "Authorization: Bearer sk-genai-발급받은키" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o",
"messages": [{"role": "user", "content": "안녕하세요"}]
}'
Anthropic · Claude · anthropic/claude-sonnet-5
curl http://shield.gensapps.com/v1/chat/completions \
-H "Authorization: Bearer sk-genai-발급받은키" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-5",
"messages": [{"role": "user", "content": "안녕하세요"}]
}'
OpenAI · ChatGPT · openai/gpt-4o
# pip install openai
from openai import OpenAI
client = OpenAI(base_url="http://shield.gensapps.com/v1", api_key="sk-genai-발급받은키")
resp = client.chat.completions.create(
model="openai/gpt-4o",
messages=[{"role": "user", "content": "안녕하세요"}],
)
print(resp.choices[0].message.content)
Anthropic · Claude · anthropic/claude-sonnet-5
# 같은 client, model만 교체
resp = client.chat.completions.create(
model="anthropic/claude-sonnet-5",
messages=[{"role": "user", "content": "안녕하세요"}],
)
print(resp.choices[0].message.content)
OpenAI · ChatGPT · openai/gpt-4o
// npm i openai
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "http://shield.gensapps.com/v1", apiKey: "sk-genai-발급받은키" });
const r = await client.chat.completions.create({
model: "openai/gpt-4o",
messages: [{ role: "user", content: "안녕하세요" }],
});
console.log(r.choices[0].message.content);
Anthropic · Claude · anthropic/claude-sonnet-5
// 같은 client, model만 교체
const r2 = await client.chat.completions.create({
model: "anthropic/claude-sonnet-5",
messages: [{ role: "user", content: "안녕하세요" }],
});
console.log(r2.choices[0].message.content);
LangChain — OpenAI · Claude 모두
# pip install langchain-openai
from langchain_openai import ChatOpenAI
# 기존 LangChain 코드에서 base_url·api_key·model 만 바꾸면 그대로 동작
gpt = ChatOpenAI(base_url="http://shield.gensapps.com/v1", api_key="sk-genai-발급받은키",
model="openai/gpt-4o")
claude = ChatOpenAI(base_url="http://shield.gensapps.com/v1", api_key="sk-genai-발급받은키",
model="anthropic/claude-sonnet-5")
print(gpt.invoke("안녕하세요").content)
print(claude.invoke("안녕하세요").content)
스트리밍은 요청 본문에 "stream": true 를 추가하면 SSE로 응답합니다.
LangChain·LlamaIndex·Vercel AI SDK 등 OpenAI 호환 프레임워크는 base URL·키만 바꾸면 기존 코드 그대로 동작합니다.
보안 동작
- 요청이 벤더로 나가기 전에 정책에 따라 민감정보를 마스킹·차단합니다.
- 차단 정책에 걸리면 벤더로 보내지 않고 400 으로 거부합니다.
- 응답(출력) 스캔을 켜면 AI 답변 속 개인정보도 되돌려 가립니다.
- 탐지 내역은 원문을 저장하지 않고 마스킹된 표본으로만 남깁니다(개인정보보호법 대응).
응답 코드
| 200 | 정상 (OpenAI 응답 형식) |
| 400 | 보안 정책 차단 (민감정보·인젝션) |
| 401 | 키 오류·폐기됨 |
| 402 | 크레딧 부족 |
| 403 | 허용되지 않은 기능 카테고리 |
벤더 키 확인
로그인 후 키관리에서 배정된 벤더 키를 확인합니다.
벤더 엔드포인트
base URL을 해당 벤더의 공식 주소로 둡니다.
네이티브 호출
각 벤더 공식 SDK/규격으로 호출합니다.
기본 정보 (벤더별)
- OpenAI Base URL
https://api.openai.com/v1- Anthropic Base URL
https://api.anthropic.com- 인증
- OpenAI
Authorization: Bearer· Anthropicx-api-key - 모델명
- 벤더 원래 모델명 (gpt-4o, claude-sonnet-5 …) — slug 아님
예제 코드
OpenAI(ChatGPT)와 Anthropic(Claude)를 각 벤더 네이티브 규격으로 호출합니다.
OpenAI · ChatGPT · gpt-4o
curl https://api.openai.com/v1/chat/completions \
-H "Authorization: Bearer sk-발급받은-OpenAI키" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"messages": [{"role": "user", "content": "안녕하세요"}]
}'
Anthropic · Claude · claude-sonnet-5 · /v1/messages
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: sk-ant-발급받은-Anthropic키" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "안녕하세요"}]
}'
OpenAI · ChatGPT · gpt-4o
# pip install openai
from openai import OpenAI
client = OpenAI(api_key="sk-발급받은-OpenAI키") # 기본 base_url = api.openai.com
resp = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "안녕하세요"}],
)
print(resp.choices[0].message.content)
Anthropic · Claude · claude-sonnet-5
# pip install anthropic
from anthropic import Anthropic
client = Anthropic(api_key="sk-ant-발급받은-Anthropic키")
msg = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{"role": "user", "content": "안녕하세요"}],
)
print(msg.content[0].text)
각 벤더 공식 SDK/문서 규격을 따릅니다. 보안 필터·크레딧 실시간 차감은 게이트웨이(보안 적용) 방식에서만 제공됩니다.
사용 가능한 모델
게이트웨이는 provider/model slug으로, 다이렉트 접속은 벤더 원래 모델명으로 호출합니다.
| 게이트웨이 slug | 벤더 | 벤더 모델명 | 카테고리 |
|---|---|---|---|
| anthropic/claude-3-5-haiku | ANTHROPIC | claude-3-5-haiku-20241022 | nlp |
| anthropic/claude-haiku-4-5 | ANTHROPIC | claude-haiku-4-5-20251001 | nlp |
| anthropic/claude-sonnet-5 | ANTHROPIC | claude-sonnet-5 | nlp |
| openai/gpt-4o | OPENAI | gpt-4o | nlp |
| openai/gpt-4o-mini | OPENAI | gpt-4o-mini | nlp |