Comet Opik
공식Opik 로그, 트레이스, 프롬프트 및 LLM의 기타 모든 텔레메트리 데이터를 자연어로 쿼리하고 분석합니다.
Comet Opik MCP(으)로 무엇을 할 수 있나요?
- Opik 작업 공간을 탐색하고 검색하세요 —
list를 사용하여 프로젝트, 실험, 트레이스, 스팬, 프롬프트 또는 테스트 스위트를 선택적 이름 필터와 페이지네이션으로 나열합니다. - ID, 이름 또는 URI로 모든 엔터티를 검사하세요 —
opik://URI 또는 UUID와 함께read를 사용하여 전체 세부 정보(트레이스 및 프롬프트의 인라인 자식 포함)를 검색합니다. - 트레이스, 점수, 댓글 및 프롬프트 버전을 기록하세요 —
write를 통해 트레이스와 스팬을 생성 또는 업데이트하고, 피드백 점수를 첨부하고, 프롬프트 버전을 저장하고, 테스트 스위트를 관리합니다. - LLM 관찰 가능성 데이터에 대해 Ollie에게 조사 질문을 하세요 —
ask_ollie를 쿼리하여 실험을 비교하고, 회귀를 진단하거나, 선택적 중간 스트림 점수로 교차 엔터티 인사이트를 종합합니다. - 엔드투엔드 평가 실험을 실행하세요 — 프롬프트, 테스트 스위트 및 스코어러와 함께
run_experiment를 트리거하여 전체 평가 실행을 실행하고 기록합니다. - 쓰기 작업 스키마를 내부 검사하세요 — 페이로드를 구성하기 전에
schema를 사용하여 모든 쓰기 작업에 대한 정확한 JSON 형태와 필수 필드를 검색합니다.
문서
Opik MCP 서버
오픈소스 LLM 관측 및 평가 플랫폼인 Opik을 위한 공식 모델 컨텍스트 프로토콜(MCP) 서버로, Comet에서 제작했습니다. AI 호스트(Claude Code, Cursor, VS Code Copilot, MCP Inspector)를 Opik 워크스페이스에 직접 연결하세요: 트레이스 읽기, 점수 기록, 프롬프트 버전 저장, 그리고 Opik의 제품 내 AI 어시스턴트인 Ollie에게 조사 질문을 채팅에서 바로 할 수 있습니다.
이미 Opik을 사용 중이고, 코딩에 사용하는 AI 어시스턴트에서 이를 제어하려는 LLM 엔지니어를 위해 제작되었습니다.
이전
npx opik-mcp에서 마이그레이션하시나요? TypeScript 서버는 더 이상 사용되지 않으며 2026-11-15에 종료됩니다. MCP 클라이언트 구성에서npx -y opik-mcp을 **uvx opik-mcp@latest**로 교체하세요. 전체 가이드:legacy/typescript/MIGRATION.md.
You: "Why did the experiment 'gpt-4o-rerank-v3' regress on factuality?"
Claude: → ask_ollie → reads experiment + traces → "Three traces failed because…"
You: "Score trace 7f2e… 0.9 on helpfulness with reason 'great recovery'."
Claude: → write(score.create) → done
설치
opik-mcp는 Python 패키지입니다(Python 3.13+ 필요). 권장 실행 방법은 uvx이며,
이를 통해 필요 시 최신 게시 버전을 가져와 실행하므로 전역 설치나 virtualenv 관리가 필요 없습니다.
uv를 한 번 설치하세요:
curl -LsSf https://astral.sh/uv/install.sh | sh # macOS / Linux
# or: brew install uv
Opik 워크스페이스에서 두 가지가 필요합니다:
OPIK_API_KEY—comet.com/api/my/settings/에서 가져오세요.OPIK_WORKSPACE— 워크스페이스 이름입니다(URL에 표시되는 소문자). 예:https://www.comet.com/acme-ai/...→OPIK_WORKSPACE=acme-ai. 선택 사항 — 기본값은default(Opik SDK 규칙)이며, 로컬/OSS 설치에 적합합니다. 이름이 지정된 워크스페이스를 사용하는 클라우드 사용자는 설정해야 합니다.COMET_WORKSPACE은 더 이상 사용되지 않는 별칭으로 허용됩니다.
사전 출시 참고:
opik-mcp(Python)는 아직 PyPI에 게시되지 않았습니다. 첫 PyPI 출시 전까지는 아래 스니펫의uvx opik-mcp을 다음으로 교체하세요:uvx --from git+https://github.com/comet-ml/opik-mcp.git opik-mcp
OPIK_WORKSPACE는 선택 사항입니다. 아래 스니펫에서OPIK_WORKSPACE줄/키를 생략하면 서버는default워크스페이스를 사용합니다(로컬/OSS 설치에 적합). 이름이 지정된 클라우드 워크스페이스에 연결하는 경우에만 설정하세요.
Claude Code
하나의 명령으로 서버를 추가하세요:
claude mcp add --transport stdio opik-mcp \
--env OPIK_API_KEY=<your-key> \
--env OPIK_WORKSPACE=<your-workspace> \
-- uvx opik-mcp
또는 ~/.claude.json를 직접 편집하세요:
{
"mcpServers": {
"opik-mcp": {
"type": "stdio",
"command": "uvx",
"args": ["opik-mcp"],
"env": {
"OPIK_API_KEY": "<your-key>",
"OPIK_WORKSPACE": "<your-workspace>"
}
}
}
}
Claude Code를 다시 시작하세요. /mcp로 확인하세요 — opik-mcp가 연결된 것으로 나타나야 합니다.
그런 다음 채팅에서 **"내 Opik 프로젝트 나열"**이라고 물어보세요 — Claude가 list
도구를 호출하고 워크스페이스의 프로젝트를 볼 수 있습니다.
Cursor
~/.cursor/mcp.json(전역) 또는 .cursor/mcp.json(프로젝트)을 편집하거나,
Cmd+Shift+J → 기능 → 모델 컨텍스트 프로토콜을 여세요:
{
"mcpServers": {
"opik-mcp": {
"type": "stdio",
"command": "uvx",
"args": ["opik-mcp"],
"env": {
"OPIK_API_KEY": "<your-key>",
"OPIK_WORKSPACE": "<your-workspace>"
}
}
}
}
Cursor를 다시 로드하세요. MCP 패널에서 opik-mcp 옆의 녹색 점이 연결을 확인해 줍니다.
채팅에서 **"내 Opik 프로젝트 나열"**이라고 물어보세요.
Cursor 60초 시간 초과. Cursor는 진행 알림 시 재설정되지 않는 하드 도구 호출 시간 초과를 적용합니다. 긴
ask_ollie작업은 Cursor에서 실패합니다. 알려진 호스트 제한을 참조하세요.
VS Code Copilot
워크스페이스(또는 사용자 설정 JSON)의 .vscode/mcp.json:
{
"servers": {
"opik-mcp": {
"type": "stdio",
"command": "uvx",
"args": ["opik-mcp"],
"env": {
"OPIK_API_KEY": "<your-key>",
"OPIK_WORKSPACE": "<your-workspace>"
}
}
}
}
창을 다시 로드하세요. 서버에 연결 가능하면 Copilot Chat MCP 표시기에 opik-mcp가 나타납니다.
채팅에서 **"내 Opik 프로젝트 나열"**이라고 물어보세요.
MCP Inspector (수동 테스트)
OPIK_API_KEY=<your-key> OPIK_WORKSPACE=<your-workspace> \
npx @modelcontextprotocol/inspector uvx opik-mcp
자체 호스팅 Opik
호스트 구성의 동일한 env 블록에 COMET_URL_OVERRIDE(및 Opik이 기본 경로가 아닌 경우 OPIK_URL)을 추가하세요:
{
"mcpServers": {
"opik-mcp": {
"type": "stdio",
"command": "uvx",
"args": ["opik-mcp"],
"env": {
"OPIK_API_KEY": "<your-key>",
"COMET_URL_OVERRIDE": "https://opik.your-company.com",
"OPIK_MCP_ANALYTICS_SOURCE": ""
}
}
}
}
ask_ollie 및 run_experiment는 Comet Cloud에서만 사용할 수 있습니다 — 자체 호스팅에서는
이러한 호출이 디스패치 시 실패하므로 read / list / write를
직접 사용하세요. OPIK_MCP_ANALYTICS_SOURCE=""을 설정하면 원격 분석 이벤트에서 클라우드 Comet 소스 레이블이
설치에서 제외됩니다.
도구
opik-mcp는 작고 결과 지향적인 표면을 노출합니다 — 전체 수명 주기(읽기 → 주석 달기 → 큐레이션 → 작성 → 반복)를 다루는 6개의 도구입니다.
| 도구 | 목적 |
|---|---|
read | ID / 이름 / opik:// URI로 범용 읽기 |
list | 선택적 이름 필터 + 페이지 매김을 통한 범용 나열 |
ask_ollie | Opik 제품 내 어시스턴트를 통한 조사 / 합성 |
write | 범용 쓰기 — 트레이스/스팬 기록, 점수 매기기, 댓글 달기, 프롬프트 저장, 테스트 스위트 및 실험 관리 |
schema | 쓰기 작업 스키마 검사(LLM이 유효한 페이로드를 구성하는 데 사용) |
run_experiment | Ollie를 통해 평가 실험을 엔드 투 엔드로 실행 |
read
"X 보여줘" 질문을 위한 하나의 도구입니다. entity_type과 id
(UUID 또는 이름 지정 가능 유형의 경우 이름) 또는 전체 opik:// URI를 사용합니다. 복합 읽기
(trace, prompt)는 자식을 인라인 처리하므로 단일 호출로 전체 그림을 반환합니다.
지원 엔티티: project, trace, span, test_suite, experiment,
prompt. 이름 기반 조회는 project, experiment, prompt,
test_suite에 사용할 수 있습니다(더 느림 — 두 번의 API 호출 — 여러 일치 항목을 반환할 수 있음).
read(entity_type="trace", id="7f2e3c8a-…")
read(entity_type="project", id="demo") # name lookup
read(entity_type="trace", id="opik://traces/7f2e3c8a-…")
list
선택적 이름 필터와 페이지 매김으로 컬렉션을 탐색합니다. 프로젝트 범위
유형(trace, test_suite_item, prompt_version)은 상위 UUID가 필요합니다.
list(entity_type="experiment", page=1, size=25)
list(entity_type="experiment", name="rerank") # name substring filter
list(entity_type="trace", project_id="<project-uuid>") # traces of one project
ask_ollie
조사 질문, 엔티티 간 합성 또는 Opik 도메인 전문 지식이 필요한 모든 작업에 사용합니다. Ollie는 워크스페이스에 대한 직접 읽기 액세스 권한이 있으며 요청 시 스트림 중간에 쓰기(점수, 댓글, 테스트 스위트 항목, 프롬프트 버전)를 실행할 수 있습니다.
ask_ollie(query="Why are spans in project 'demo' slower this week than last?")
ask_ollie(query="Compare experiments A and B on factuality. Score the bottom 5 traces of A 0.2 with reason.")
어시스턴트의 최종 텍스트와 thread_id을 반환합니다. 후속 질문 시 이를 다시 전달하여
컨텍스트를 유지하세요 — Ollie는 스레드 간 메모리가 없습니다.
YOLO 모드(기본값). Ollie가 스트림 중간에 수행하는 쓰기는 작업별 확인 없이 실행됩니다.
각 자동 승인은 opik_mcp.audit Python 로거에 JSON 감사 행으로 기록됩니다.
대신 확인을 요구하려면 OPIK_MCP_AUTO_APPROVE=disabled를 설정하세요 — 그러면 Ollie의 확인 요청이
수동으로 다시 실행할 수 있는 유형 오류로 표시됩니다.
Comet Cloud에서만 사용할 수 있습니다.
write
범용 쓰기 디스패처입니다. operation + data을 전달하면 디스패처가
페이로드의 유효성을 검사하고, 올바른 REST 동사를 적용하며, 백엔드 응답을 반환합니다.
작업:
| 작업 | 설명 |
|---|---|
trace.create | 단일 트레이스(또는 배치)를 기록합니다. 스팬 / 점수 / 댓글의 상위입니다. |
trace.update | 기존 트레이스를 완료하거나 수정합니다. |
span.create | 기존 트레이스에 스팬(또는 배치)을 기록합니다. |
score.create | 트레이스, 스팬 또는 스레드에 숫자 피드백 점수를 첨부합니다. |
comment.create | 트레이스, 스팬 또는 스레드에 자유 텍스트 댓글을 첨부합니다. |
prompt_version.save | 새 프롬프트 버전을 저장합니다(없는 경우 이름으로 프롬프트 생성). |
test_suite.create | 평가 테스트 스위트를 생성합니다. |
test_suite_item.upsert | 테스트 스위트에 항목을 Upsert합니다(항상 엔벨로프 형태). |
experiment.create | 테스트 스위트로 범위가 지정된 실험을 생성합니다. |
experiment_item.create | 실험에 트레이스 + dataset_item 행을 첨부합니다. |
write(operation="score.create", data={
"target": "trace",
"target_id": "7f2e3c8a-…",
"name": "helpfulness",
"value": 0.9,
"reason": "great recovery"
})
schema
호출하기 전에 쓰기 작업의 정확한 JSON 형태와 필수 필드를 검사합니다 — data이 어떻게
생겼는지 확실하지 않을 때 유용합니다. 스키마, OAuth 범위 및 검증된 예제 하나를 반환합니다. 순수 조회이며 백엔드 호출은 없습니다.
schema(operation="score.create")
schema(operation="prompt_version.save")
run_experiment
Ollie를 통해 평가 실험을 엔드 투 엔드로 실행합니다. Opik의 실험 형태(프롬프트, 테스트
스위트, 스코어러)를 반영하는 단일 experiment_config dict를 사용합니다. Ollie가 실행을 수행하고
결과를 Opik 실험으로 다시 기록합니다.
run_experiment(experiment_config={
"test_suite_name": "qa-eval-v2",
"prompt_name": "welcome-msg",
# … see `schema(operation="experiment.create")` for the full shape
})
Comet Cloud에서만 사용할 수 있습니다.
구성
모든 설정은 환경 변수입니다. 필수 항목은 굵게 표시됩니다.
ID / 엔드포인트
| 변수 | 기본값 | 참고 |
|---|---|---|
OPIK_API_KEY | — | ask_ollie 및 모든 인증된 읽기/쓰기에 필요합니다. |
OPIK_WORKSPACE | default | 워크스페이스 이름. 선택 사항 — default로 폴백합니다(Opik SDK 규칙). 이름이 지정된 워크스페이스를 사용하는 클라우드 사용자는 설정해야 합니다. |
COMET_WORKSPACE | — | OPIK_WORKSPACE의 더 이상 사용되지 않는 별칭(하위 호환). 둘 다 설정된 경우 OPIK_WORKSPACE이 우선합니다. |
COMET_WORKSPACE_ID | — | 선택적 워크스페이스 UUID. 설정 시 BI가 (변경 가능한) 워크스페이스 이름 대신 안정적인 ID로 조인할 수 있도록 분석 이벤트에 기록됩니다. |
COMET_URL_OVERRIDE | https://www.comet.com | 자체 호스팅 Comet 호스트 또는 스테이징용 https://dev.comet.com로 설정하세요. |
OPIK_URL | COMET_URL_OVERRIDE + /opik/api에서 파생 | Opik이 Comet UI와 다른 호스트/경로에 있는 경우에만 재정의하세요. |
OPIK_DEFAULT_PROJECT_NAME | 설정 안 됨 | 설정 시 세션별 instructions blob은 사용자가 다른 프로젝트를 지정하지 않는 한 LLM이 모든 도구 호출에서 이를 project_name로 전달하도록 지시합니다. |
서버 / 전송
| 변수 | 기본값 | 참고 |
|---|---|---|
OPIK_MCP_TRANSPORT | stdio | 호스트 실행 시 stdio, 포트에서 수신 대기 시 streamable-http. |
OPIK_MCP_HOST | 127.0.0.1 | uvicorn 바인드 호스트(streamable-http 전용). |
OPIK_MCP_PORT | 8080 | uvicorn 바인드 포트(streamable-http 전용). |
OPIK_MCP_RELOAD | false | uvicorn --reload를 활성화하려면 true(개발 전용). |
OPIK_MCP_AS_URL | 설정 안 됨 | OAuth 인증 서버 URL, /.well-known/oauth-protected-resource(RFC 9728)에 광고되며 AS-디스커버리 프로브의 프록시 대상으로 사용됩니다. MCP 호스트가 HTTP를 통해 OAuth 댄스를 부트스트랩하는 데 필요합니다. |
OPIK_MCP_RESOURCE_URI | 설정 안 됨 | 이 서버의 표준 공개 URI, 보호된 리소스 메타데이터에 resource로 광고되며 WWW-Authenticate 힌트를 파생하는 데 사용됩니다. |
OPIK_MCP_LOG_LEVEL | INFO | stderr 로거 임계값. |
전송 선택
opik-mcp는 HTTP 전송에서 로컬 자격 증명 유효성 검사를 수행하지 않습니다: 올바른 형식의
Authorization: Bearer …(Opik API 키 또는 opik_mcp_at_…
OAuth 액세스 토큰)는 그대로 opik-backend로 전달되며, 이곳이 유일한 인증 시행 지점입니다.
배포 형태에 따라 전송을 선택하세요:
| 시나리오 | 전송 |
|---|---|
| MCP 클라이언트와 Opik이 동일한 머신에 있음(로컬 OSS 설치) | stdio (권장 — 가장 간단하며 포트나 OAuth 설정 불필요) |
| 로컬 MCP 클라이언트 → 원격 Opik (Comet 클라우드 / 자체 호스팅) | OPIK_API_KEY를 사용한 stdio, 또는 OAuth를 사용한 HTTP(OPIK_MCP_AS_URL가 백엔드를 가리킴) |
| opik-backend와 동일한 에지 뒤에 호스팅된 opik-mcp | HTTP — 베어러는 요청별로 백엔드에서 유효성 검사됨 |
로컬 OSS 설치 참고: OSS 백엔드는 요청을 인증하지 않으므로 그 앞의 HTTP opik-mcp는 OSS REST API 자체만큼 개방적입니다.
공유 네트워크에서는 기본 127.0.0.1 바인드를 유지하고 stdio를 선호하세요.
Ollie / 긴 호출
| 변수 | 기본값 | 참고 |
|---|---|---|
OPIK_MCP_AUTO_APPROVE | enabled | Ollie의 스트림 중간 쓰기가 진행되기 전에 작업별 승인이 필요하도록 하려면 disabled. MCP elicitation 기능을 광고하는 호스트에서는 사용자에게 예/아니요 프롬프트가 표시됩니다. 덜 똑똑한 호스트에서는 요청이 수동으로 다시 실행할 수 있는 유형 오류로 표시됩니다. |
OPIK_MCP_ELICIT_TIMEOUT_SECONDS | 60 | Ollie의 스트림 중간 확인 프롬프트가 취소로 처리되기 전에 사용자를 기다릴 수 있는 시간. 0은 바인딩을 비활성화합니다(디버그 전용). |
OPIK_MCP_POD_READY_TIMEOUT_S | 120 | Ollie 파드 콜드 스타트 폴링 한도. |
OPIK_MCP_POD_READY_INTERVAL_S | 2 | 콜드 스타트 폴링 간격. |
OPIK_MCP_HEARTBEAT_INTERVAL_S | 15.0 | 워치독 주기 — 파드가 조용할 때 notifications/progress 틱을 내보내 호스트 시간 초과를 방지합니다. |
OPIK_MCP_STREAM_IDLE_TIMEOUT_S | 300.0 | ask_ollie이 중단되기 전 파드 침묵에 대한 하드 상한. 0은 비활성화합니다(디버그 전용). |
원격 분석
익명 사용 이벤트(이벤트 유형 및 타이밍만 — 쿼리 내용 없음). API 키의 SHA-256 다이제스트가 포함되어 지원팀이 계정을 찾을 수 있도록 합니다. 원시 키는 절대 프로세스를 벗어나지 않습니다. 옵트아웃: OPIK_MCP_ANALYTICS_ENABLED=false.
| 변수 | 기본값 | 참고 |
|---|---|---|
OPIK_MCP_ANALYTICS_ENABLED | true | 모든 원격 측정을 비활성화하려면 false로 설정하세요. |
OPIK_MCP_ANALYTICS_URL | https://stats.comet.com/notify/event/ | 스테이징용 재정의. |
OPIK_MCP_ANALYTICS_ENVIRONMENT | prod | 모든 이벤트에 태그 지정(prod / staging / dev). |
OPIK_MCP_ANALYTICS_SOURCE | comet.com | 수신자가 on_prem=False를 표시하는 데 사용합니다. 온프레미스 설치 시 "" 또는 자체 도메인으로 재정의해야 합니다. |
OPIK_MCP_ANALYTICS_CONNECT_TIMEOUT_S | 5.0 | HTTP 연결 타임아웃. |
OPIK_MCP_ANALYTICS_TOTAL_TIMEOUT_S | 10.0 | HTTP 총 요청 타임아웃. |
알려진 호스트 제한 사항
MCP 사양에 따르면 호스트는 notifications/progress에서 도구 호출 타임아웃을 재설정할 수 있습니다 — opik-mcp는 Ollie SSE 이벤트마다 하나씩, 그리고 15초 감시 하트비트를 내보냅니다. 실제 상황은 균일하지 않습니다:
- Claude Code — 문서화된 도구 호출 타임아웃 없음; 하트비트가
message_end까지 호출을 유지합니다. 권장됩니다. - Cursor — 60초 하드 타임아웃이 있으며 진행 상황에서 재설정되지 않습니다
(업스트림 버그).
긴 Ollie 실행은 실패합니다.
ask_ollie쿼리를 집중적으로 유지하세요. - MCP Inspector —
MAX_TOTAL_TIMEOUT가 총 지속 시간을 제한합니다(기본값 60초). 긴 작업의 경우 Inspector UI에서 값을 높이세요.
호출이 멈춘 경우 OPIK_MCP_LOG_LEVEL=DEBUG를 설정하세요 — 하트비트 실패(일반적으로 호스트 연결 해제)는 디버그 수준에서 opik_mcp.ask_ollie에 기록됩니다.
문제 해결
OPIK_API_KEY is required to use ask_ollie — 변수가 서버 프로세스에 도달하지 못하고 있습니다. Claude Code / Cursor / VS Code에서 환경 변수는 셸이 아닌 MCP 서버 구성의 env 블록 내에서만 적용됩니다. 편집 후 호스트를 다시 시작하세요.
ask_ollie에서 2분 후 "pod not ready" 반환 — Ollie 파드 콜드 스타트가 OPIK_MCP_POD_READY_TIMEOUT_S를 초과했습니다. 재시도하세요 — 두 번째 호출은 일반적으로 웜 파드에 도달합니다.
자체 호스팅 Opik에서 ask_ollie / run_experiment가 디스패치 오류와 함께 실패 — 해당 도구는 Comet Cloud에서만 사용할 수 있습니다. 자체 호스팅에서는 read / list / write를 직접 사용하세요.
Cursor 호출이 60초에 타임아웃됨 — opik-mcp가 아닌 Cursor의 알려진 버그입니다. Ollie 쿼리를 줄이거나 하드 제한이 없는 Claude Code에서 동일한 작업을 실행하세요.
개발
git clone git@github.com:comet-ml/opik-mcp.git
cd opik-mcp
make install # uv sync --extra dev
make check # lint + typecheck + test
make run-dev # uvicorn with --reload + DEBUG logs
make inspect # MCP Inspector against the running server
일반 대상:
| 대상 | 수행 작업 |
|---|---|
make install | uv sync --extra dev |
make run | MCP 서버 실행(기본값 stdio). |
make run-dev | DEBUG 로깅 + uvicorn --reload로 실행. |
make dev | mcp dev를 통해 실행(Inspector 개발 모드 래퍼). |
make inspect | 실행 중인 서버에 대해 MCP Inspector 실행. |
make test | uv run pytest -q. |
make test-live | dev.comet.com에 대한 실시간 엔드투엔드(OPIK_API_KEY + OPIK_WORKSPACE 설정). |
make lint | ruff check + 형식 검사. |
make format | ruff format + ruff check --fix. |
make typecheck | mypy. |
make check | lint + typecheck + test. |
저장소 레이아웃:
opik-mcp/
├── src/opik_mcp/ ← server, tools, ask_ollie, analytics
├── tests/ ← pytest suites
├── scripts/ ← live-BE smoke + MCP-session smoke
├── legacy/typescript/ ← deprecated v2 TS server
├── pyproject.toml
└── Makefile
도움 받기
- 버그 및 기능 요청은 이슈 열기
- SDK / 백엔드 문서는 Opik 문서
- 질문은 Comet 커뮤니티 Slack
v2에서 업그레이드하시나요? 레거시 TypeScript 서버는 여전히 npm에
opik-mcp@^2(npx -y opik-mcp)로 제공됩니다. 소스는legacy/typescript/아래에 보존되어 있습니다. 지원 정책은legacy/typescript/DEPRECATED.md를 참조하세요.
라이선스
Apache-2.0.