Thanks to visit codestin.com
Credit goes to docs.github.com

Skip to main content

BYOK(Bring Your Own Key)

코필로트 SDK를 다른 모델 공급자가 제공한 자체 API 키와 함께 사용하여 GitHub Copilot 인증을 우회합니다.

누가 이 기능을 사용할 수 있나요?

GitHub Copilot SDK 는 모든 Copilot 계획에서 사용할 수 있습니다.

참고

          코필로트 SDK가 현재 공개 미리 보기에 있습니다. 기능 및 가용성은 변경될 수 있습니다.

BYOK(Bring Your Own Key)를 사용하면 코필로트 SDK를 다른 모델 공급자가 제공한 자체 API 키와 함께 사용하여 GitHub Copilot 인증을 우회할 수 있습니다. 엔터프라이즈 배포, 사용자 지정 모델 호스팅 또는 모델 공급자에게 직접 청구하려는 경우에 유용합니다.

지원되는 공급자

공급자형식 값Notes
OpenAI"openai"OpenAI API 및 OpenAI 호환 엔드포인트
Azure OpenAI / Azure AI Foundry
          `"azure"` 또는 `"openai"` | Azure 호스팅 모델( [Azure 엔드포인트 유형](#azure-endpoint-type-confusion) 참조) |

| 인위적 | "anthropic" | 클로드 모델 | | 올라마 섬 | "openai" | OpenAI 호환 API를 통한 로컬 모델 | | Microsoft Foundry 로컬 | "openai" | OpenAI 호환 API를 통해 디바이스에서 로컬로 AI 모델 실행 | | 기타 OpenAI 호환 | "openai" | vLLM, LiteLLM 및 유사 |

빠른 시작: Azure AI Foundry

Azure AI Foundry(이전의 Azure OpenAI)는 엔터프라이즈의 일반적인 BYOK 배포 대상입니다. 다음 예제에서는 전체 Node.js/TypeScript 설정을 보여줍니다.

  1. Azure AI Foundry 엔드포인트 및 API 키를 사용하여 세션을 만듭니다.

    TypeScript
    import { CopilotClient } from "@github/copilot-sdk";
    
    const client = new CopilotClient();
    const session = await client.createSession({
        model: "YOUR-DEPLOYMENT-NAME",
        provider: {
            type: "openai",
            baseUrl: "https://YOUR-RESOURCE.openai.azure.com/openai/v1/",
            wireApi: "responses",  // Use "completions" for older models
            apiKey: process.env.FOUNDRY_API_KEY,
        },
    });
    
    session.on("assistant.message", (event) => {
        console.log(event.data.content);
    });
    
    await session.sendAndWait({ prompt: "What is 2+2?" });
    await client.stop();
    

Azure 리소스 이름으로 YOUR-RESOURCE을(를) 대체하고 모델 배포 이름으로 YOUR-DEPLOYMENT-NAME을(를) 대체하세요. 환경 변수를 FOUNDRY_API_KEY Azure API 키로 설정합니다.

Python, Go 및 .NET의 예제는 리포지토리의 BYOKgithub/copilot-sdk 참조하세요.

공급자 구성 참조

ProviderConfig 필드

분야유형설명
type
          `"openai"`
          \|
          `"azure"`
          \|
          `"anthropic"`
         | 공급자 유형. 기본값은 `"openai"`입니다. |

| baseUrl | 문자열 | 필수입니다. API 엔드포인트 URL입니다. | | apiKey | 문자열 | API 키입니다. Ollama와 같은 로컬 공급자의 경우 선택 사항입니다. | | bearerToken | 문자열 | 전달자 토큰 인증. apiKey보다 우선합니다. | | wireApi | "completions" | "responses" | API 형식입니다. 기본값은 "completions"입니다. | | azure.apiVersion | 문자열 | Azure API 버전입니다. 기본값은 "2024-10-21"입니다. |

Wire API 형식

이 설정은 wireApi 사용할 OpenAI API 형식을 결정합니다.


          `"completions"`
          ** (기본값): 채팅 완료 API(`/chat/completions`). 대부분의 모델에 사용합니다.

          `"responses"`
          **: 응답 API. 최신 응답 형식을 지원하는 GPT-5 시리즈 모델에 사용합니다.

유형별 참고 사항

          **OpenAI(`type: "openai"`)**
  • OpenAI API 및 OpenAI 호환 엔드포인트에서 작동합니다.

  • baseUrl 는 전체 경로(예: .) https://api.openai.com/v1를 포함해야 합니다.

            **Azure(`type: "azure"`)**
    
  • 네이티브 Azure OpenAI 엔드포인트에 사용합니다.

  • baseUrl 은 호스트일 뿐입니다(예: .) https://YOUR-RESOURCE.openai.azure.com.

  • URL에 /openai/v1를 포함하지 마세요. SDK가 경로 생성을 처리합니다.

            **Anthropic (`type: "anthropic"`)**
    
  • Anthropic API를 직접 액세스하는 경우

  • Claude 관련 API 형식을 사용합니다.

구성 예

OpenAI 직통

TypeScript
provider: {
    type: "openai",
    baseUrl: "https://api.openai.com/v1",
    apiKey: process.env.OPENAI_API_KEY,
}

Azure OpenAI(기본 Azure 엔드포인트)

          `type: "azure"`을(를) `*.openai.azure.com`에 있는 엔드포인트에 사용하십시오.
TypeScript
provider: {
    type: "azure",
    baseUrl: "https://YOUR-RESOURCE.openai.azure.com",  // Just the host
    apiKey: process.env.AZURE_OPENAI_KEY,
    azure: {
        apiVersion: "2024-10-21",
    },
}
          `YOUR-RESOURCE`를 Azure 리소스 이름으로 대체합니다.

Azure AI Foundry(OpenAI 호환 엔드포인트)

Azure AI Foundry 배포의 /openai/v1/ 엔드포인트를 사용하려면 type: "openai"을(를) 사용하세요.

TypeScript
provider: {
    type: "openai",
    baseUrl: "https://YOUR-RESOURCE.openai.azure.com/openai/v1/",
    apiKey: process.env.FOUNDRY_API_KEY,
    wireApi: "responses",  // For GPT-5 series models
}

Ollama (로컬)

TypeScript
provider: {
    type: "openai",
    baseUrl: "http://localhost:11434/v1",
    // No apiKey needed for local Ollama
}

Microsoft Foundry 로컬

          [Microsoft Foundry Local](https://foundrylocal.ai) 을 사용하면 OpenAI 호환 API를 사용하여 AI 모델을 로컬로 실행할 수 있습니다. Foundry 로컬 CLI를 통해 설치한 다음 로컬 엔드포인트에서 SDK를 가리킵니다.
TypeScript
provider: {
    type: "openai",
    baseUrl: "http://localhost:YOUR-PORT/v1",
    // No apiKey needed for local Foundry Local
}

참고

Foundry 로컬은 고정되지 않은 동적 포트에서 시작됩니다. 실행 foundry service status 하여 서비스가 현재 수신 대기 중인 포트를 확인한 다음, 해당 포트를 baseUrl사용합니다.

Foundry Local을 시작하려면 다음을 수행합니다.

Bash
# Windows: Install Foundry Local CLI (requires winget)
winget install Microsoft.FoundryLocal

# List available models
foundry model list

# Run a model (starts the local server automatically)
foundry model run phi-4-mini

# Check the port the service is running on
foundry service status

macOS/Linux 설치는 foundrylocal.ai 참조하세요.

인위적

TypeScript
provider: {
    type: "anthropic",
    baseUrl: "https://api.anthropic.com",
    apiKey: process.env.ANTHROPIC_API_KEY,
}

전달자 토큰 인증

일부 공급자는 API 키 대신 전달자 토큰 인증이 필요합니다.

TypeScript
provider: {
    type: "openai",
    baseUrl: "https://YOUR-CUSTOM-ENDPOINT.example.com/v1",
    bearerToken: process.env.MY_BEARER_TOKEN,  // Sets Authorization header
}

참고

bearerToken 옵션은 정적 토큰 문자열만 허용합니다. SDK는 이 토큰을 자동으로 새로 고치지 않습니다. 토큰이 만료되면 요청이 실패하고 새 토큰으로 새 세션을 만들어야 합니다.

사용자 지정 모델 목록

BYOK를 사용하는 경우 CLI 서버는 공급자가 지원하는 모델을 모를 수 있습니다. 공급자의 모델을 표준 onListModels 형식으로 반환할 수 있도록 client.listModels() 클라이언트 수준에서 사용자 지정 ModelInfo 처리기를 제공할 수 있습니다.

TypeScript
import { CopilotClient } from "@github/copilot-sdk";
import type { ModelInfo } from "@github/copilot-sdk";

const client = new CopilotClient({
    onListModels: () => [
        {
            id: "my-custom-model",
            name: "My Custom Model",
            capabilities: {
                supports: { vision: false, reasoningEffort: false },
                limits: { max_context_window_tokens: 128000 },
            },
        },
    ],
});

첫 번째 호출 후에 결과가 캐시됩니다. 처리기는 CLI의 models.list RPC를 완전히 대체합니다. 서버로의 대체는 발생하지 않습니다.

Python, Go 및 .NET의 예제는 리포지토리의 BYOKgithub/copilot-sdk 참조하세요.

제한점

ID 제한 사항

BYOK 인증은 정적 자격 증명만 사용합니다. 다음 ID 공급자는 지원되지 않습니다.

  • Microsoft Entra ID(Azure AD) - Entra 관리 ID 또는 서비스 주체를 지원하지 않습니다.
  • 타사 ID 공급자(OIDC, SAML 또는 기타 페더레이션 ID 없음)
  • 관리 ID - Azure 관리 ID는 지원되지 않습니다.

직접 관리하는 API 키 또는 정적 전달자 토큰을 사용해야 합니다.

참고

Entra ID는 전달자 토큰을 발급하지만 이러한 토큰은 수명이 짧고(일반적으로 1시간) Azure ID SDK를 통해 자동 새로 고침이 필요합니다. 이 bearerToken 옵션은 정적 문자열만 허용합니다. SDK가 새 토큰을 요청하는 콜백 메커니즘은 없습니다. Entra 인증이 필요한 장기 실행 워크로드의 경우 고유한 토큰 새로 고침 논리를 구현하고 업데이트된 토큰으로 새 세션을 만들어야 합니다.

기능 제한 사항

일부 Copilot 기능은 BYOK에서 다르게 동작할 수 있습니다.

  • 모델 가용성: 공급자가 지원하는 모델만 사용할 수 있습니다.
  • 속도 제한: 귀하의 공급자의 속도 제한에 따라 달라지며, Copilot와 관련이 없습니다.
  • 사용량 추적: 사용량은 GitHub가 아닌 공급자가 추적합니다.
  • 프리미엄 요청: 프리미엄 요청 할당량에 Copilot 계산되지 않습니다.

공급자별 제한 사항

공급자제한점
Azure AI Foundry (에이아이 파운드리)Entra ID 인증이 없습니다, API 키를 사용해야 합니다.
올라마 섬API 키가 없습니다. 로컬 전용; 모델 지원은 다양합니다.
Microsoft Foundry 로컬로컬 전용; 모델 가용성은 디바이스 하드웨어에 따라 달라집니다. API 키가 필요하지 않습니다.
OpenAIOpenAI 속도 제한 및 할당량이 적용됩니다.

Troubleshooting

"모델을 지정하지 않음" 오류

BYOK를 사용하는 경우, model 매개 변수가 반드시 필요합니다.

// Error: model required with custom provider
const session = await client.createSession({
    provider: { type: "openai", baseUrl: "..." },
});

// Correct: model specified
const session = await client.createSession({
    model: "gpt-4",
    provider: { type: "openai", baseUrl: "..." },
});

Azure 엔드포인트 유형 혼동

Azure OpenAI 엔드포인트(*.openai.azure.com)의 경우 올바른 공급자 유형을 사용해야 합니다.

// Wrong: using "openai" type with native Azure endpoint
provider: {
    type: "openai",
    baseUrl: "https://YOUR-RESOURCE.openai.azure.com",
}

// Correct: using "azure" type
provider: {
    type: "azure",
    baseUrl: "https://YOUR-RESOURCE.openai.azure.com",
}

Azure AI Foundry 배포에서 OpenAI 호환 엔드포인트 경로(예: /openai/v1/)를 제공하는 경우 대신 다음을 사용합니다 type: "openai" .

// Correct: OpenAI-compatible Azure AI Foundry endpoint
provider: {
    type: "openai",
    baseUrl: "https://YOUR-RESOURCE.openai.azure.com/openai/v1/",
}

연결이 거부됨(Ollama)

Ollama가 실행 중이고 액세스할 수 있는지 확인합니다.

Bash
# Check Ollama is running
curl http://localhost:11434/v1/models

# Start Ollama if not running
ollama serve

연결이 거부됨(Foundry Local)

Foundry Local은 다시 시작 사이에 변경 될 수 있는 동적 포트를 사용합니다. 활성 포트를 확인합니다.

Bash
foundry service status

출력에 표시된 포트와 일치하도록 업데이트합니다 baseUrl . 서비스가 실행되지 않으면, 서비스를 시작하기 위한 모델을 시작하십시오.

Bash
foundry model run phi-4-mini

인증 실패

  1. API 키가 올바르고 만료되지 않았는지 확인합니다.
  2. 공급자의 baseUrl 예상 형식과 일치하는지 확인합니다.
  3. 전달자 토큰의 경우 접두사뿐만 아니라 전체 토큰이 제공되는지 확인합니다.