API 키·베이스·버전 설정하기

API 키·베이스·버전 설정하기 (Setting API Keys, Base, Version)

LLM 호출을 하려면 어느 프로바이더의 어떤 키로 갈지 정해줘야 해요. LiteLLM은 API Key, API Base, API Version, API Type, Project, Location, Token 같은 값들을 유연하게 지정할 수 있게 해 주는데, 환경변수·litellm 속성·completion() 인자 세 가지 방법으로 넣을 수 있어요. 각각 언제 쓰는지 살펴볼게요.

출처: 공식문서 Setting API Keys, Base, Version

선택할 수 있는 값들

LiteLLM에서 지정할 수 있는 항목은 이래요.

  • API Key
  • API Base
  • API Version
  • API Type
  • Project
  • Location
  • Token

그리고 동작을 도와주는 유용한 헬퍼 함수도 있어요.

  • check_valid_key(): 사용자가 호출하려는 모델에 유효한 키를 냈는지 확인
  • get_valid_models(): 현재 환경변수로 사용 가능한 모델 목록 반환

환경변수로 키 설정하기

가장 흔한 방법은 프로바이더별 키를 환경변수로 등록하는 거예요.

import os
# Set OpenAI API key
os.environ["OPENAI_API_KEY"] = "Your API Key"
os.environ["ANTHROPIC_API_KEY"] = "Your API Key"
os.environ["XAI_API_KEY"] = "Your API Key"
os.environ["REPLICATE_API_KEY"] = "Your API Key"
os.environ["TOGETHERAI_API_KEY"] = "Your API Key"

Azure OpenAI처럼 추가 정보가 필요한 프로바이더는 베이스·버전·타입까지 함께 넣어줘요.

# for azure openai
os.environ['AZURE_API_BASE'] = "https://openai-gpt-4-test2-v-12.openai.azure.com/"
os.environ['AZURE_API_VERSION'] = "2023-05-15"   # [OPTIONAL]
os.environ['AZURE_API_TYPE'] = "azure"           # [OPTIONAL]
# for openai
os.environ['OPENAI_BASE_URL'] = "https://your_host/v1"

클라우드 프로바이더(Azure, Bedrock, GCP, Watson AI)는 추가 파라미터가 필요할 때가 있어요. LiteLLM은 공통 파라미터를 제공하고 각 프로바이더로 알아서 매핑해 줍니다.

LiteLLM param Watson Vertex AI Azure Bedrock
Project project watsonx_project vertex_project n/a n/a
Region region_name watsonx_region_name vertex_location n/a aws_region_name
Token token watsonx_token or token n/a azure_ad_token n/a

litellm 변수로 설정하기

환경변수 대신 코드 안에서 litellm.api_key 같은 속성으로도 설정할 수 있어요. 프로바이더를 바꿔가며 호출할 때 유용해요.

import litellm
# openai call
litellm.api_key = "sk-OpenAIKey"
response = litellm.completion(messages=messages, model="gpt-3.5-turbo")

# anthropic call
litellm.api_key = "sk-AnthropicKey"
response = litellm.completion(messages=messages, model="claude-2")

litellm.openai_key, litellm.anthropic_key처럼 프로바이더별 속성도 따로 존재해요.

litellm.openai_key = "sk-OpenAIKey"
response = litellm.completion(messages=messages, model="gpt-3.5-turbo")
# anthropic call
litellm.anthropic_key = "sk-AnthropicKey"
response = litellm.completion(messages=messages, model="claude-2")

api_base, api_version, organization도 같은 방식으로 설정할 수 있어요.

litellm.api_base = "https://hosted-llm-api.co"
response = litellm.completion(messages=messages, model="gpt-3.5-turbo")
litellm.api_version = "2023-05-15"
response = litellm.completion(messages=messages, model="gpt-3.5-turbo")
litellm.organization = "LiteLlmOrg"
response = litellm.completion(messages=messages, model="gpt-3.5-turbo")

completion() 인자로 전달하기

호출할 때마다 키를 바꿔야 한다면 completion()의 인자로 직접 넘겨주면 돼요.

from litellm import completion
messages = [{"content": "Hello, how are you?", "role": "user"}]
response = completion("command-nightly", messages, api_key="Your-Api-Key")
from litellm import completion
messages = [{"content": "Hello, how are you?", "role": "user"}]
response = completion("command-nightly", messages, api_base="https://hosted-llm-api.co")
from litellm import completion
messages = [{"content": "Hello, how are you?", "role": "user"}]
response = completion("command-nightly", messages, api_version="2023-02-15")

헬퍼 함수로 검증하기

check_valid_key()는 사용자가 준 키가 그 모델에 유효한지 검사해요.

key = "bad-key"
response = check_valid_key(model="gpt-3.5-turbo", api_key=key)
assert (response == False)

get_valid_models().env를 읽어 사용 가능한 LLM 목록을 돌려줘요. 프로바이더 키가 설정돼 있으면 그 엔드포인트에서 실제 유효 모델 목록도 확인할 수 있어요. 현재는 OpenAI, Fireworks AI, LiteLLM Proxy, Gemini, XAI, Anthropic을 지원해요.

from litellm import get_valid_models
# all providers
valid_models = get_valid_models(check_provider_endpoint=True)
print(valid_models)

# specific provider
valid_models = get_valid_models(check_provider_endpoint=True, custom_llm_provider="openai")
print(valid_models)

validate_environment()는 모델 호출에 필요한 모든 환경변수가 갖춰졌는지, 없다면 뭐가 빠졌는지 알려줘요.

from litellm import validate_environment
print(validate_environment("openai/gpt-3.5-turbo"))

더 알아보기 (Learn more)