문서
Dify
Dify는 하나의 플러그인인 OpenAI-API-compatible과 필수 입력란 하나인 API Base URL을 통해 외부 엔드포인트에 연결합니다. 이 URL을 입력하면 워크플로의 모든 LLM 노드에서 단일 키로 Claude 및 GPT ID를 지정할 수 있습니다.
필수 필드 하나 — OpenAI-API-compatible 플러그인의 Add Model 양식에 있는 API Base URL — 로 Dify 작업 공간의 모든 LLM 노드를 Kunavo에 연결합니다
# Integrations → Model Provider → OpenAI-API-compatible → Add Model
Type LLM
Model Name claude-sonnet-5
Model display name Kunavo · Claude Sonnet 5
API Key sk-kn-...
API Base URL https://api.kunavo.com/v1
model name for API endpoint (leave blank — Model Name is already the id)
Completion mode Chat
Model context size 1000000
Upper bound for max tokens (your own ceiling for one reply)
Function Call Type Tool Call # defaults to no_call
Vision Support Support # only if you will send images
Structured Output Support # defaults to not supported
# Model context size is per model, not per endpoint: 1000000 is
# claude-sonnet-5's. The table below carries the rest./v1을 그대로 유지합니다. 플러그인은 API Base URL이라는 레이블 아래에 endpoint_url을 선언하고, 모델 이름 외에 유일한 필수 필드로 표시하며, “기본 URL, 예: https://api.openai.com/v1”라는 플레이스홀더를 제공합니다. 이 플레이스홀더 문구가 사용할 형식을 명확히 해 줍니다. 플러그인 자체 README는 이와 모순되는 내용을 제시하는 것이 아니라 예외를 설명합니다. LLM이 아닌 모델 유형의 경우 플러그인이 “내부적으로 API 버전을 덧붙이므로”, 이러한 유형에는 /v1/v1이 중복되는 것을 방지하기 위해 경로 없는 기본 주소를 사용합니다. Kunavo 모델 중에는 이러한 유형에 해당하는 모델이 없으므로, /v1 형식만 사용하면 됩니다.Function Call Type의 기본값은 no_call이고, Structured Output 및 Vision Support의 기본값은 지원되지 않음입니다. 기본값으로 추가한 모델은 일반 채팅 노드에서는 완벽하게 응답한 뒤 Agent 노드나 도구 사용 워크플로에서는 실패합니다. 이는 엔드포인트 오류처럼 보이지만 실제로는 그렇지 않습니다. 다른 문제를 디버깅하기 전에 모델을 추가할 때 이 설정들을 지정하세요.curl 항목은 10초 만에 확인할 수 있으며, 그 이후의 모든 사항은 사용자와 Dify 사이의 문제입니다.sk-kn-로 시작합니다) $10부터 크레딧을 추가하세요. 호출 비용은 해당 잔액에서 차감되며 실패한 호출에는 요금이 부과되지 않습니다. 그러면 대시보드가 Dify 설정 화면에서 열립니다.단계별 안내
/app/keys에서 키를 생성해 복사하세요. 키는 한 번만 표시됩니다.- Dify에서 Integrations → Model Provider를 열고 Install model providers(또는 Marketplace)에서
langgenius가 게시한 OpenAI-API-compatible을 찾아 설치합니다. Dify 문서에 따르면 워크스페이스 소유자와 관리자만 공급자를 관리할 수 있습니다. - 해당 공급자 카드에서 Add Model을 클릭합니다. 이 플러그인은 미리 정의된 모델을 제공하지 않는
customizable-model공급자이므로 원하는 각 ID를 별도 항목으로 추가해야 합니다. - 위와 같이 양식을 작성합니다. Type =
LLM, Model Name = Kunavo ID를 정확히 입력, API Key = 본인의sk-kn-키, API Base URL =https://api.kunavo.com/v1, Completion mode =Chat, Model context size = 아래 표의 값으로 지정합니다. 그런 다음 Function Call Type을 설정하고, 필요하면 Structured Output 및 Vision Support도 설정합니다. 저장합니다. - 워크플로를 열고 해당 모델을 사용할 노드에서 모델을 선택합니다. Dify는 앱별이 아니라 노드별로 모델을 지정하므로 분류기와 최종 작성 노드가 서로 다른 ID와 가격을 사용할 수 있습니다. 모델을 지정하지 않은 앱과 노드는 Default Models → System Reasoning Model로 대체됩니다.
- 범위를 제한한 워크플로를 하나 실행한 다음, 아래 비용 표시 참고 사항을 확인하고 Dify가 아니라 Kunavo 계정에서 요금을 확인합니다.
Dify의 OpenAI-API-compatible 플러그인 페이지에서 확인했습니다(2026년 9월 21일 기준). 서드파티 설정은 변경될 수 있으므로, 여기의 필드 이름이 실제 화면과 다르면 이 문서가 아니라 해당 페이지를 기준으로 삼으세요.
클라이언트를 디버깅하기 전에 확인할 사항
한 번의 요청으로 문제가 엔드포인트, 키 또는 구성 파일 중 어디에 있는지 판단할 수 있습니다. 이 요청에서 JSON이 반환되면 동일한 base URL과 키가 Dify에서 작동합니다.
# 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 입력/출력 | Dify에서의 위치 |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | 작성 및 에이전트 노드에 사용할 실무 모델 — 컨텍스트 크기 1000000 |
claude-opus-5 | $3.50 / $17.50 | 사람이 결과를 확인하는 노드 또는 계획이 틀렸을 때 손실이 큰 작업 — 1000000 |
claude-haiku-4-5 | $0.70 / $3.50 | 호출량이 실제로 집중되는 분류, 라우팅 및 추출 노드 — 200000 |
gpt-5-6-sol | $2.00 / $12.00 | 같은 키에 두 번째 모델 계열을 별도 모델 항목으로 추가 — 1050000 |
gpt-5-6-terra | $0.70 / $4.20 | 장문 문서 노드 — 1050000 |
“Dify API”라고 불리는 것은 서로 다른 두 가지입니다.
이 페이지는 그중 하나를 다루며, 검색 결과에서는 두 가지가 계속 혼재됩니다.
- Dify에 모델 연결 — 위 설정 블록에서 다루는 내용입니다. 클라이언트는 Dify이고 엔드포인트는 Kunavo이며, 입력하는 자격 증명은
sk-kn-키입니다. 그러면 해당 워크스페이스의 모든 앱에 있는 모든 LLM 노드에서 추가한 ID를 사용할 수 있습니다. - 자신의 코드에서 Dify 앱 호출 — 게시된 앱을 위해 Dify가 제공하는 Service API이며, Dify가 발급하는 자체
app-키를 사용합니다. 그 키는 Dify의 키이지 Kunavo의 키가 아니며, 다른 곳을 가리키도록 할 수 없습니다. 이 방향의 호출에는 Kunavo가 관여하지 않습니다.
두 방식은 같은 앱에서 동시에 실행할 수 있으며, 보통 그렇게 사용합니다. 백엔드는 Dify 키로 Dify 앱을 호출하고, 앱의 노드는 Kunavo 키로 Kunavo를 호출합니다. 키 두 개, 청구서 두 개이며, 401 오류가 발생하면 두 곳을 확인해야 합니다.
Dify에 추가한 모델의 비용이 표시되지 않는 이유
Dify의 자체 미리 정의된 모델 파일에는 입력 및 출력 요금과 토큰당 단위가 포함된 가격 블록이 있습니다. Dify는 이를 토큰 수에 곱해 로그에 금액을 표시합니다. 위 날짜에 확인한 OpenAI-API-compatible 공급자 스키마에는 가격, 단위 또는 통화 필드가 어디에도 선언되어 있지 않습니다. 따라서 이 플러그인으로 추가한 모델에는 Dify가 곱할 요금이 없습니다. 비용 열에 표시되지 않는 것은 할인을 찾았거나 오류를 만든 결과가 아니라, 해당 필드 자체가 없기 때문입니다. 실제 금액은 Kunavo 사용량에서 확인하고, Dify의 토큰 수는 토큰 수로 확인하세요.
그대로 두는 것이 좋은 관련 스위치가 하나 있습니다. Include Usage in Stream은 기본적으로 활성화되어 있으며, 최종 스트림 청크에 프롬프트 및 완성 토큰 수를 포함하도록 엔드포인트에 요청합니다. 이 설정을 끄면 토큰 수도 받지 못하게 됩니다.
Dify를 자체 호스팅하는 경우
Docker Compose 스택은 아웃바운드 요청을 ssrf_proxy 서비스로 라우팅하므로, 엔드포인트는 노트북 브라우저에서만 연결되는 것이 아니라 컨테이너 네트워크 내부에서도 연결 가능해야 합니다. 한쪽에서는 작동하고 다른 쪽에서는 시간 초과되는 구성은 대개 이 문제이며, 자격 증명이 아니라 네트워킹 문제입니다. 위의 curl를 컨테이너 내부에서 실행하면 바로 확인할 수 있습니다.
자주 묻는 질문
사용자 지정 OpenAI 호환 API를 Dify에 연결하려면 어떻게 하나요?
Integrations → Model Provider → Install model providers 또는 Dify Marketplace에서 langgenius가 게시한 OpenAI-API-compatible 플러그인을 설치합니다. 해당 카드에서 Add Model을 클릭하고 Type, Model Name, Model display name, API Key, API Base URL, Completion mode, Model context size와 기능 스위치들을 입력합니다. 이 공급자에는 미리 정의된 모델이 없습니다. 사용자 지정 모델 공급자이므로 원하는 모델 ID마다 별도 항목을 만들어야 하며, 각 항목에는 고유한 기본 URL과 키가 지정됩니다.
Dify API Base URL 끝에 /v1을 붙여야 하나요?
채팅 모델이라면 그렇습니다. 플러그인의 공급자 스키마에서 이 필드는 API Base URL이라고 되어 있고 필수로 표시되며, 자리표시자에 "Base URL, e.g. https://api.openai.com/v1"이 제시되어 있으므로 /v1 루트가 문서에 명시된 형식입니다. Kunavo에서는 https://api.kunavo.com/v1을 사용합니다. 경로 없이 오리진만 사용하는 형식은 플러그인이 API 버전을 직접 추가하는 모델 유형에만 문서화되어 있습니다. 그러한 유형에 /v1을 포함하면 /v1/v1이라는 중복 경로가 생성됩니다. Kunavo는 그러한 유형의 모델을 제공하지 않으므로 /v1 형식을 사용해야 합니다. /v1이 빠지면 인증 오류가 아니라 404가 발생합니다.
Dify Agent 노드가 추가한 모델에서 도구를 사용하지 못하는 이유는 무엇인가요?
OpenAI-API-compatible 플러그인으로 추가한 모델에서 Function Call Type의 기본값이 no_call이고, Structured Output, Vision Support, Stream function calling 및 Thinking Mode Support도 모두 기본적으로 지원되지 않기 때문입니다. 이는 Dify가 확인한다고 선언한 설정이지 실제로 기능을 탐지한 결과가 아닙니다. 따라서 기본값으로 추가한 모델이 기능을 지원하더라도 Agent 또는 도구 사용 노드에서 거부될 수 있습니다. 모델 설정을 열고 Function Call Type을 Tool Call로 설정하세요. Function Call은 이전 방식입니다. 엔드포인트가 문제라고 판단하기 전에 다시 테스트하세요.
호환 플러그인으로 추가한 모델의 가격이 Dify에 표시되지 않는 이유는 무엇인가요?
해당 플러그인의 공급자 스키마에는 가격 필드가 전혀 없지만, Dify 자체 미리 정의된 모델 파일에는 가격 필드가 있기 때문입니다. 따라서 Dify는 토큰 수에 곱할 토큰당 요금이 없어 추정치를 표시하지 않습니다. 실제 금액은 공급자 자체 사용량 기록에서 확인하고, Dify의 수치는 토큰 수로 취급하세요. Include Usage in Stream을 활성화 상태로 두어야 토큰 수를 계속 받을 수 있습니다.
Dify에 Kunavo를 추가하는 것과 Dify 앱을 API로 공개하는 것은 같은가요?
아니요. 두 방식은 반대 방향으로 작동합니다. Kunavo를 추가하면 Dify가 클라이언트가 되어, Kunavo 키로 설정한 엔드포인트에 Dify 노드가 요청을 보냅니다. Dify의 Service API를 사용하면 사용자 코드가 클라이언트가 되어 Dify가 발급한 키로 게시된 Dify 앱을 호출하며, 이 경로에는 Kunavo의 기본 URL이 들어가지 않습니다. 하나의 앱이 흔히 두 방식을 동시에 사용하므로, 401 오류가 나면 무엇보다 먼저 어떤 키를 사용했는지 추적해야 합니다.
Kunavo가 Dify에서 이 구성을 테스트했나요?
아니요. 2026년 9월 21일에 확인한 것은 Dify 자체 자료입니다. Dify Marketplace의 플러그인 목록과 Dify 공식 플러그인 저장소의 공급자 스키마에서 여기에 나온 필드 이름, 순서, 필수 여부 및 기본값을 확인했습니다. 실제 Dify 워크스페이스에 Kunavo 모델을 추가하고 워크플로를 실행한 적은 없으므로, 이 클라이언트에서 스트리밍, 도구 왕복 또는 장시간 실행되는 에이전트 루프에 대해서는 아무런 주장을 하지 않습니다. 별도로 확인할 수 있는 한 가지는 엔드포인트와 키가 작동하는지 여부이며, 이 페이지의 curl 명령으로 확인할 수 있습니다.