클라이언트측 LLM 자격 증명

클라이언트측 LLM 자격 증명 (Clientside LLM Credentials)

사용자 LLM API 키, 폴백 전달하기. 최종 사용자가 모델 목록, API base, OpenAI API 키(어떤 LiteLLM 지원 공급자든)를 전달해 요청하게 할 수 있어요.

참고: 이는 가상 키와 관련이 없어요. 이는 사용자의 실제 LLM API 키를 전달하고 싶을 때를 위한 것이에요.

출처: 문서

본문

info

user_configlitellm.RouterConfig를 전달할 수 있어요. 지원되는 모든 파라미터는 여기 https://github.com/BerriAI/litellm/blob/main/litellm/types/router.py 를 보세요.

OpenAI Python

1단계: 사용자 모델 목록 & 콘피그 정의

import os

user_config = {
    'model_list': [
        {
            'model_name': 'user-azure-instance',
            'litellm_params': {
                'model': 'azure/chatgpt-v-2',
                'api_key': os.getenv('AZURE_API_KEY'),
                'api_version': os.getenv('AZURE_API_VERSION'),
                'api_base': os.getenv('AZURE_API_BASE'),
                'timeout': 10,
            },
            'tpm': 240000,
            'rpm': 1800,
        },
        {
            'model_name': 'user-openai-instance',
            'litellm_params': {
                'model': 'gpt-5.6-luna',
                'api_key': os.getenv('OPENAI_API_KEY'),
                'timeout': 10,
            },
            'tpm': 240000,
            'rpm': 1800,
        },
    ],
    'num_retries': 2,
    'allowed_fails': 3,
    'fallbacks': [
        {
            'user-azure-instance': ['user-openai-instance']
        }
    ]
}

2단계: extra_body에 user_config 전송

import openai
client = openai.OpenAI(
    api_key="sk-<your-litellm-api-key>",
    base_url="http://0.0.0.0:4000")

# send request to `user-azure-instance`
response = client.chat.completions.create(
    model="user-azure-instance",
    messages = [
        {
            "role": "user",
            "content": "this is a test request, write a short poem"
        }
    ],
    extra_body={
      "user_config": user_config
    }) # 👈 User config
print(response)

OpenAI JS

1단계: 사용자 모델 목록 & 콘피그 정의

const os = require('os');

const userConfig = {
    model_list: [
        {
            model_name: 'user-azure-instance',
            litellm_params: {
                model: 'azure/chatgpt-v-2',
                api_key: process.env.AZURE_API_KEY,
                api_version: process.env.AZURE_API_VERSION,
                api_base: process.env.AZURE_API_BASE,
                timeout: 10,
            },
            tpm: 240000,
            rpm: 1800,
        },
        {
            model_name: 'user-openai-instance',
            litellm_params: {
                model: 'gpt-5.6-luna',
                api_key: process.env.OPENAI_API_KEY,
                timeout: 10,
            },
            tpm: 240000,
            rpm: 1800,
        },
    ],
    num_retries: 2,
    allowed_fails: 3,
    fallbacks: [
        {
            'user-azure-instance': ['user-openai-instance']
        }
    ]
};

2단계: openai.chat.completions.create에 user_config를 파라미터로 전송

const { OpenAI } = require('openai');

const openai = new OpenAI({
  apiKey: "sk-<y...y>",
  baseURL: "http://0.0.0.0:4000"
});

async function main() {
  const chatCompletion = await openai.chat.completions.create({
    messages: [{ role: 'user', content: 'Say this is a test' }],
    model: 'gpt-5.6-luna',
    user_config: userConfig // # 👈 User config
  });
}

main();

사용자 LLM API 키 / API Base 전달 (Pass User LLM API Keys / API Base)

사용자가 자신의 OpenAI API 키/API base(어떤 LiteLLM 지원 공급자든)를 전달해 요청하게 할 수 있어요.

방법은 다음과 같아요:

1. 공급자에 대해 구성 가능한 클라이언트측 인증 자격 증명 활성화

model_list:
  - model_name: "fireworks_ai/*"
    litellm_params:
      model: "fireworks_ai/*"
      configurable_clientside_auth_params: ["api_base"]
      # OR
      configurable_clientside_auth_params: [{"api_base": '^https://litellm.*direct\.fireworks\.ai/v1$'}] # 👈 regex

사용자가 구성할 수 있게 하려는 모든 auth 파라미터를 지정하세요:

  • api_base (✅ regex 지원)
  • api_key
  • base_url
  • (공급자별 auth 파라미터는 제공자 문서 확인 - 예: vertex_project)

2. 테스트!

import openai
client = openai.OpenAI(
    api_key="sk-<your-litellm-api-key>",
    base_url="http://0.0.0.0:4000")
# litellm 프록시에 설정된 모델로 요청 전송, `litellm --model`
response = client.chat.completions.create(
    model="gpt-5.6-luna",
    messages = [
        {
            "role": "user",
            "content": "this is a test request, write a short poem"
        }
    ],
    extra_body={"api_key": "my-bad-key", "api_base": "https://litellm-dev.direct.fireworks.ai/v1"}) # 👈 clientside credentials
print(response)

더 많은 예시 (More examples)

Azure 자격 증명 (Azure Credentials)

OpenAI 클라이언트의 extra_body 파라미터를 통해 litellm_params(예: api_key, api_base 등)를 전달하세요.

import openai
client = openai.OpenAI(
    api_key="sk-<your-litellm-api-key>",
    base_url="http://0.0.0.0:4000")
# litellm 프록시에 설정된 모델로 요청 전송, `litellm --model`
response = client.chat.completions.create(
    model="gpt-5.6-luna",
    messages = [
        {
            "role": "user",
            "content": "this is a test request, write a short poem"
        }
    ],
    extra_body={
      "api_key": "my-azure-key",
      "api_base": "my-azure-base",
      "api_version": "my-azure-version"
    }) # 👈 User Key
print(response)

OpenAI JS

JS의 경우 OpenAI 클라이언트는 create(..) 본문에 파라미터를 평소대로 전달할 수 있어요.

const { OpenAI } = require('openai');

const openai = new OpenAI({
  apiKey: "sk-<y...y>",
  baseURL: "http://0.0.0.0:4000"
});

async function main() {
  const chatCompletion = await openai.chat.completions.create({
    messages: [{ role: 'user', content: 'Say this is a test' }],
    model: 'gpt-5.6-luna',
    api_key: "my-bad-key" // 👈 User Key
  });
}

main();

공급자별 파라미터 전달 (예: Region, Project ID 등) (Pass provider-specific params)

Vertex AI에 요청할 때 사용할 리전, 프로젝트 id 등을 클라이언트측에서 지정해요.

프록시 요청 본문에 전달된 모든 값은 LiteLLM이 매핑된 openai / litellm auth 파라미터에 대해 검사해요.

매핑되지 않은 파라미터는 공급자별 파라미터로 간주되어 LLM API의 요청 본문에서 공급자에게 전달돼요.

import openai
client = openai.OpenAI(
    api_key="anything",
    base_url="http://0.0.0.0:4000")
# litellm 프록시에 설정된 모델로 요청 전송, `litellm --model`
response = client.chat.completions.create(
    model="gpt-5.6-luna",
    messages = [
        {
            "role": "user",
            "content": "this is a test request, write a short poem"
        }
    ],
    extra_body={ # pass any additional litellm_params here
        vertex_ai_location: "us-east1"
    })
print(response)