문서
Oh My Pi
Oh My Pi는 제공업체 설정을 하나의 YAML 파일에 저장합니다. 원하는 이름 아래 세 줄, 즉 baseUrl, api, apiKey를 추가하면 하나의 키로 Claude와 GPT에 연결되며, 모델 목록은 직접 입력하지 않고 가져옵니다.
~/.omp/agent/models.yml의 제공자 블록 — baseUrl, api, apiKey — 으로 Oh My Pi를 Kunavo에 연결하며, 검색 기능이 GET /v1/models에서 가져온 정보로 모델 목록을 채웁니다
providers:
kunavo:
baseUrl: https://api.kunavo.com/v1
api: openai-completions
apiKey: KUNAVO_API_KEY # an env-var name; literal text also works
discovery:
type: openai-models-list # reads GET /v1/models
# Prefer a fixed list to a discovered one? Drop the discovery block and
# declare ids instead. Omitted metadata defaults to a 128,000-token context
# window and a 16,384-token output limit, so set the real numbers from
# /models when they differ.
#
# models:
# - id: claude-sonnet-5
# name: Claude Sonnet 5
# contextWindow: ...
# maxTokens: .../v1을 유지합니다. omp는 baseUrl를 "엔드포인트 루트", openai-completions를 "OpenAI 호환 Chat Completions"로 설명하며, 404 문제 해결 항목에는 "일반적인 OpenAI 호환 기본 URL은 대개 /v1로 끝납니다"라고 나와 있습니다. 두 페이지의 모든 사용자 지정 제공업체 예시도 같은 방식으로 끝납니다. "대개"라는 표현은 보장이 아니라 유보를 담고 있지만, Kunavo는 /v1/chat/completions를 제공하므로 이를 생성하는 루트는 https://api.kunavo.com/v1입니다. 오리진만 사용하는 Anthropic 방식 클라이언트와는 반대입니다.authHeader을 지정하지 마세요. omp는 이를 "Authorization: Bearer를 일반 헤더로 삽입해야 하는" 게이트웨이용으로 설명하며, "표준 제공업체 클라이언트는 이미 일반적인 인증 방식을 적용합니다"라고 덧붙입니다. OpenAI 호환 클라이언트도 마찬가지이며 Kunavo가 이를 허용합니다. 아래의 curl로 재현되지 않는 401 오류가 표시될 때만 추가하세요.curl로 확인할 수 있는 사항은 10초면 점검할 수 있습니다. 나머지는 사용자와 omp 사이에서 확인해야 합니다.sk-kn-로 시작합니다) $10부터 크레딧을 추가하세요. 호출 비용은 해당 잔액에서 차감되며 실패한 호출에는 요금이 부과되지 않습니다. 그러면 대시보드가 Oh My Pi 설정 화면에서 열립니다.단계별 안내
/app/keys에서 키를 생성해 복사하세요. 키는 한 번만 표시됩니다.- omp를 시작하는 셸에서
KUNAVO_API_KEY로 내보내세요. omp는 먼저apiKey를 환경 변수 이름으로 확인하고, 해당 변수가 없으면 텍스트 자체를 키로 취급합니다. 따라서 변수 이름을 잘못 입력해도 조용히 넘어가다가 첫 요청에서 실패합니다.!로 시작하는 값은 대신 셸 명령으로 실행됩니다. 이는 1Password 방식입니다. - 위 블록을
~/.omp/agent/models.yml에 넣으세요. 여기서는kunavo인 제공업체 ID를 직접 선택하면 되며, 이 ID가 모든 선택자에서 첫 부분이 됩니다. omp models kunavo을 실행해 파일을 불러오고 이 제공업체만 표시하세요. YAML 또는 스키마 문제가 있으면models.yml validation failed와 실패한 필드가 출력됩니다.omp models refresh kunavo는 캐시된 목록을 사용하지 않고 새로 검색하도록 강제합니다.- 정확한 선택자를 사용해 테스트하세요.
omp -p --model kunavo/claude-sonnet-5 "Reply with only OK"그런 다음omp을 시작하고/model를 입력한 뒤, 원하는 ID를 Default에 지정하세요. 모델 허브는 열릴 때models.yml를 다시 불러옵니다./switch는 현재 세션에만 적용됩니다.
omp의 Providers 페이지에서 확인했습니다(2026년 9월 21일 기준). 서드파티 설정은 변경될 수 있으므로, 여기의 필드 이름이 실제 화면과 다르면 이 문서가 아니라 해당 페이지를 기준으로 삼으세요.
클라이언트를 디버깅하기 전에 확인할 사항
한 번의 요청으로 문제가 엔드포인트, 키 또는 구성 파일 중 어디에 있는지 판단할 수 있습니다. 이 요청에서 JSON이 반환되면 동일한 base URL과 키가 Oh My Pi에서 작동합니다.
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."필드에 입력할 model id
모든 텍스트 모델은 model id로 접근할 수 있습니다. 현재 목록은 GET /v1/models이며, 가격이 포함된 카탈로그는 모델 페이지에서 확인할 수 있습니다. 요금은 토큰 100만 개당 USD 기준이며 입력 / 출력 순서입니다.
| 모델 ID | Kunavo 입력/출력 | Oh My Pi에서의 위치 |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | 기본 역할 — 대부분의 세션에서 실제로 실행되는 모델 |
claude-opus-5 | $3.50 / $17.50 | 계획 역할 — 잘못된 계획이 토큰보다 큰 비용을 초래하는 작업 |
claude-haiku-4-5 | $0.70 / $3.50 | smol 역할: 분류, 요약, 끊임없이 이어지는 호출 |
gpt-5-6-sol | $2.00 / $12.00 | 같은 제공업체 설정 블록에서 사용하는 다른 모델군의 두 번째 의견 |
검색 설정: 유형과 선택기에 표시되는 항목
omp는 discovery.type 값을 여섯 가지 제공하며, 그중 두 가지가 게이트웨이에 맞아 보입니다. 실제로 맞는 것은 하나뿐입니다. proxy는 "모델 행에 supported_endpoint_types를 표시하는 혼합형 OpenAI/Anthropic 프록시"용으로 설명되며, 각 모델의 와이어 형식을 이 필드에서 가져옵니다. Kunavo의 GET /v1/models에는 이 필드가 없으므로 proxy에서는 모든 행이 제공업체 수준의 api로 대체되거나, 해당 값도 없으면 제외됩니다. "일반적인 OpenAI 호환 GET /v1/models 엔드포인트"로 설명된 openai-models-list를 사용하세요. 따라서 위 설정 블록에는 api: openai-completions이 포함되어 있습니다. omp 규칙에 따르면 "proxy를 제외하면 검색에는 제공업체 수준의 api가 필요합니다."
선택기를 열기 전에 알아둘 점이 하나 있습니다. Kunavo의 모델 목록에는 사용 가능한 카탈로그 전체가 포함되므로 검색된 제공업체에는 채팅 모델뿐 아니라 이미지, 동영상, 음악 ID도 표시되며, 채팅 전송 방식으로는 해당 ID를 호출할 수 없습니다. Kunavo는 채팅 모델 행에 context_length를 게시합니다. omp의 모델 문서에 따르면 일반 검색은 max_model_len 다음에 이 필드를 읽습니다. 반면 미디어 행에는 이 필드가 없으므로 omp의 기본값인 128,000 토큰으로 표시되며 실제 토큰 수가 아닙니다. 짧고 정확한 선택기를 원한다면 검색 블록을 제거하고 실제로 사용하는 모델 ID를 서너 개 직접 지정하세요.
omp는 anthropic-messages와도 통신할 수 있고 Kunavo는 /v1/messages에 응답합니다. 이 페이지에서는 해당 조합의 설정 블록을 제공하지 않습니다. 여기서 인용한 두 페이지는 OpenAI 호환 경로의 기본 URL 형식만 명시하고, Anthropic 경로에서 끝의 /v1를 어떻게 처리하는지는 설명하지 않습니다. 설정 블록은 독자가 그대로 붙여 넣을 수 있어야 하기 때문입니다. 이 경로를 사용할 경우 Anthropic 호환 엔드포인트에서 도구 호출이 400 오류로 실패하는 문제에 대해 문서가 제시하는 해결책은 disableStrictTools: true입니다.
자주 묻는 질문
Oh My Pi에 사용자 지정 API 제공업체를 추가하려면 어떻게 하나요?
모든 설정은 ~/.omp/agent/models.yml에서 합니다. `providers:` 아래에 키를 추가하세요. 이름은 직접 정할 수 있으며 선택자의 제공업체 부분이 됩니다. 이어서 omp 자체의 "사용자 지정 제공업체 추가" 예시와 같은 순서인 baseUrl, api, apiKey를 지정하세요. `models:` 아래에 모델을 직접 나열하거나 `discovery:` 블록을 추가해 omp가 모델을 가져오도록 할 수 있습니다. 그런 다음 `omp models <your-provider-id>`를 실행해 파일이 불러와졌는지 확인하고, `omp --model <provider>/<model-id>` 또는 세션 내 /model 허브에서 모델을 선택하세요.
Oh My Pi의 baseUrl 끝에 /v1을 붙여야 하나요?
OpenAI 호환 엔드포인트라면 붙여야 합니다. omp는 baseUrl을 엔드포인트 루트라고 부르고 지정된 api 계열에 해당하는 경로를 덧붙입니다. 따라서 `api: openai-completions`로 설정하면 입력한 루트 아래에서 채팅 완성을 요청합니다. omp의 404 문제 해결 안내에는 일반 OpenAI 호환 기본 URL이 대개 /v1로 끝난다고 나와 있으며, 문서의 사용자 지정 제공업체 예시도 모두 그렇게 되어 있습니다. Kunavo는 /v1/chat/completions를 제공하므로 입력할 루트는 https://api.kunavo.com/v1입니다. /v1을 빠뜨리면 인증 오류가 아니라 404 또는 "unsupported endpoint"가 표시됩니다.
Oh My Pi는 API 키를 어디서 찾으며, 어떤 설정이 우선하나요?
models.yml의 apiKey는 세 단계로 해석됩니다. 값이 !로 시작하면 셸 명령으로 실행하고 출력의 앞뒤 공백을 제거해 사용합니다. 그렇지 않으면 omp가 정확히 같은 이름의 환경 변수를 찾고, 없을 경우 텍스트 자체를 키로 취급합니다. 마지막 대체 동작에 주의해야 합니다. 변수 이름의 오타가 있어도 오류 없이 불러와진 뒤 첫 요청에서 실패합니다. 전체 우선순위에서는 models.yml의 키가 저장된 OAuth보다 우선합니다. omp 문서에 따르면 이는 의도된 동작이므로 게이트웨이에 제공한 키가 상위 제공업체 로그인으로 덮어써지지 않습니다.
omp에서는 게이트웨이에 어떤 검색 유형을 사용해야 하나요?
모델 행마다 게이트웨이가 supported_endpoint_types를 표시하는 경우가 아니라면 proxy가 아닌 openai-models-list를 사용하세요. proxy는 이 필드를 읽어 모델 요청을 /v1/messages와 /v1/chat/completions 중 어느 경로로 보낼지 결정하며, 이 필드가 없으면 모델은 제공업체 수준의 api 설정으로 대체되거나 제외됩니다. Kunavo의 /v1/models는 이 필드를 게시하지 않으므로 일반 OpenAI 목록 유형이 적합합니다. 또한 omp에서는 proxy를 제외한 모든 검색 유형에 제공업체 수준의 api 설정이 필요합니다. `omp models refresh <provider>`를 실행하면 캐시된 목록을 사용하지 않고 새로 가져옵니다.
Kunavo는 엔드포인트에서 Oh My Pi를 테스트했나요?
아니요. 2026년 9월 21일에 확인한 것은 omp 자체 문서입니다. 필드 이름, 순서, 키 해석 규칙, 검색 유형은 문서에서 인용했고, 두 가지 세부 사항은 추측하지 않고 Kunavo 자체 /v1/models 경로를 통해 확인했습니다. 여기서는 omp 세션을 api.kunavo.com에 연결해 실행한 적이 없으며 스트리밍, 도구 왕복 또는 클라이언트 내부 모델 라우팅에 관해서도 어떤 주장도 하지 않습니다. 따로 확인할 수 있는 한 가지는 엔드포인트와 키가 작동하는지 여부이며, 이 페이지의 curl 명령으로 확인할 수 있습니다.