한국어 · English
빠른 시작 · SDK 선택 · 연결 원리 · 보안 · 문서
AI 호출은 서버에서 일어나지만, 그 결과에 대한 사용자의 반응은 제품에서 일어납니다. ABTO SDK는 두 흐름을
device_id,trace_id,request_id로 연결합니다.
사용자 행동 ── Event SDK ───────────────┐
├── ABTO ── 비용 · 지연 · 품질
LLM 요청 ──── Calling SDK ── Gateway ──┘
device_id · trace_id · request_id
ABTO Skill은 프로젝트의 런타임과 패키지 매니저를 확인하고, 필요한 SDK만 골라 설치한 뒤 빌드와 최소 연동 검증까지 진행합니다. Skill 설치에는 Node.js 22.20 이상이 필요합니다.
npx --yes skills@latest add https://github.com/greedy-co/abto-sdk/tree/main/abto \
--skill abto \
--global \
--agent codex \
--copy \
--yesnpx --yes skills@latest add https://github.com/greedy-co/abto-sdk/tree/main/abto \
--skill abto \
--global \
--agent claude-code \
--copy \
--yes새 에이전트 세션을 열고 이렇게 요청하세요.
이 프로젝트에 ABTO를 연동하고 실제 데이터 수신까지 검증해줘.
에이전트는 Event Key와 Calling Key를 올바른 실행 환경에 배치하도록 안내하며, 실제 키나 권한이 필요한 단계에서는 사용자 확인을 기다립니다. 설치 확인·업데이트·삭제 방법은 ABTO Skill 설치 가이드에 있습니다.
실행 위치에 따라 SDK의 역할과 키 경계가 달라집니다. 브라우저와 모바일 앱에서는 Event SDK로 사용자의 행동과 결과를 수집하고, 서버에서는 Calling SDK로 모델 요청을 Gateway에 연결합니다. 전체 흐름을 관측하려면 클라이언트와 서버 SDK를 함께 사용할 수 있습니다.
고객사가 선택해 직접 기록한 브라우저 이벤트를 수집합니다. 자동 페이지·DOM 수집은 기본으로 꺼져 있으며 명시적으로 선택한 경우에만 켭니다. 브라우저 번들에는 Event Key만 넣고, Calling Key와 provider key는 넣지 마세요.
| 런타임 | 역할 | 설치 | 배포 |
|---|---|---|---|
| Browser JavaScript | 명시적 이벤트·opt-in 자동 수집 | npm install @abto-app/event |
패키지와 사용법은 @abto-app/event에서 확인할 수 있습니다.
네이티브 앱에서 제품 이벤트와 사용자 결과를 수집합니다. 모바일 SDK도 Event Key만 사용하며 모델 호출은 서버에 맡깁니다.
| 런타임 | 패키지 | 설치 | 배포 |
|---|---|---|---|
| Flutter / Dart | abto |
dart pub add abto |
|
| Android / Kotlin | app.abto:abto-app |
implementation("app.abto:abto-app:1.1.0") |
|
| iOS / macOS | AbtoApp |
Swift Package Manager |
Android 패키지는 android.* 의존성이 없는 순수 Kotlin/JVM JAR입니다. Android 앱에서는 기존 SharedPreferences를 AbtoKeyValueStore로 연결해 사용합니다.
Swift Package Manager에서는 저장소를 패키지로 추가합니다.
.package(
url: "https://github.com/greedy-co/abto-sdk.git",
from: "1.1.0"
)Flutter Web은 현재 Dart SDK가 지원하지 않으므로 브라우저용 JavaScript SDK를 사용하세요.
서버에서 LLM 요청을 ABTO Gateway로 보내고 device_id, trace_id, request_id 문맥을 이어 줍니다. Calling Key와 provider key는 서버의 비밀 저장소에만 보관하세요.
| 런타임 | 역할 | 설치 | 배포 |
|---|---|---|---|
| Node.js | Gateway 호출·요청 문맥 | npm install @abto-app/calling openai |
|
| Python | Gateway 호출·요청 문맥 | python -m pip install "abto[openai]" |
패키지별 사용법은 Node.js Calling SDK와 Python Calling SDK에서 확인할 수 있습니다.
ABTO는 클라이언트 이벤트와 서버의 모델 호출을 같은 식별자로 이어 봅니다.
- 클라이언트의 안정적인
device_id를 서버 요청에도 전달합니다. - 제품 기능을
support.reply같은 점 표기featureId로 구분합니다. - 한 번의 사용자 행동에서 발생한 모델 호출은 같은
trace_id로 묶습니다. - Gateway 응답의
x-abto-request-id를 화면에 표시된 결과와 사용자 반응에 연결합니다.
Gateway는 provider 실행, token 사용량, 비용, 지연, 재시도, variant 배정과 request_id의 정본입니다. Event SDK나 Calling SDK에서 이 값을 따로 계산하지 않습니다.
| 구성 요소 | 하는 일 | 하지 않는 일 |
|---|---|---|
| Event SDK | 사용자 행동, 제품 이벤트, 응답 결과 수집 | provider 호출, 비밀키 보관 |
| Calling SDK | LLM 요청을 Gateway로 전달하고 요청 문맥 전파 | 브라우저 이벤트 수집 |
| ABTO Skill | SDK 선택, 설치, 설정, 검증 자동화 | 키 생성, 사용자 승인 없는 비밀 변경 |
| 키 | 클라이언트 번들 | 용도 |
|---|---|---|
Event Key (ek-abto-…) |
허용 | 브라우저·앱 이벤트 수집 |
Calling Key (ck-abto-…) |
금지 | 서버의 Gateway 인증 |
| Provider key | 금지 | upstream provider 인증 |
Calling Key와 provider key는 서버의 비밀 저장소에만 보관하세요. Browser Event SDK는 초기화만으로 이벤트를 만들지 않으며, 고객사가 선택한 이벤트를 직접 호출하는 것이 기본입니다. prompt·response는 메타데이터 수준으로 다루고 DOM 텍스트와 입력값은 마스킹합니다. 전체 콘텐츠나 자동 페이지·DOM 수집은 데이터 정책을 검토하고 명시적으로 승인한 경우에만 활성화하세요.
packages/
├── browser/javascript/ # @abto-app/event
├── server/
│ ├── javascript/ # @abto-app/calling
│ └── python/ # abto
└── mobile/
├── dart/ # abto
├── android/ # app.abto:abto-app
└── swift/ # AbtoApp
abto/
├── SKILL.md # 통합 Agent Skill
└── references/ # 런타임별 연동·검증 가이드
같은 major.minor 버전의 SDK는 같은 capability contract를 구현합니다. 각 SDK의 patch 버전과 release tag는 독립적으로 올라갑니다. 예: event-js-v0.1.1, calling-python-v0.1.3, swift-v0.1.1.
| 항목 | 링크 |
|---|---|
| 전체 문서 | docs.abto.app |
| Browser JavaScript | 설치 및 API 가이드 |
| Node.js | 설치 및 API 가이드 |
| Python | 설치 및 API 가이드 |
| Flutter / Dart | 설치 및 API 가이드 |
| Android / Kotlin | 설치 및 API 가이드 |
| iOS / macOS | 설치 및 API 가이드 |
| 문제 제보 | GitHub Issues |
기여할 때는 변경할 SDK 디렉터리의 README와 테스트 명령을 먼저 확인해 주세요. 모든 pull request는 공개 저장소 안전성 검사를 거치며, SDK 변경에는 해당 런타임의 검증이 추가로 실행됩니다.
이 저장소의 SDK 소스는 MIT License로 배포됩니다.