IBM watsonx.ai

IBM watsonx.ai

LiteLLM에서 IBM watsonx.ai의 파운데이션 모델과 임베딩을 모두 사용하는 방법을 알아봐요.

출처: 문서

본문

LiteLLM은 모든 IBM watsonx.ai 파운데이션 모델과 임베딩을 지원해요.

환경 변수

os.environ["WATSONX_URL"] = ""  # (required) Base URL of your WatsonX instance
# (required) either one of the following:
os.environ["WATSONX_APIKEY"] = "" # IBM cloud API key
os.environ["WATSONX_TOKEN"] = "" # IAM auth token
# optional - can also be passed as params to completion() or embedding()
os.environ["WATSONX_PROJECT_ID"] = "" # Project ID of your WatsonX instance
os.environ["WATSONX_DEPLOYMENT_SPACE_ID"] = "" # ID of your deployment space to use deployed models
os.environ["WATSONX_ZENAPIKEY"] = "" # Zen API key (use for long-term api token)

watsonx.ai에 인증하기 위한 액세스 토큰 획득 방법은 여기를 참고해요.

사용법

채팅 완성:

import os
from litellm import completion

os.environ["WATSONX_URL"] = ""
os.environ["WATSONX_APIKEY"] = ""

response = completion(
  model="watsonx/meta-llama/llama-3-1-8b-instruct",
  messages=[{ "content": "what is your favorite colour?","role": "user"}],
  project_id=""
)

사용법 - 스트리밍

import os
from litellm import completion

os.environ["WATSONX_URL"] = ""
os.environ["WATSONX_APIKEY"] = ""
os.environ["WATSONX_PROJECT_ID"] = ""

response = completion(
  model="watsonx/meta-llama/llama-3-1-8b-instruct",
  messages=[{ "content": "what is your favorite colour?","role": "user"}],
  stream=True
)
for chunk in response:
  print(chunk)

사용법 - 배포 공간의 모델

배포 공간(예: 튜닝된 모델)에 배포된 모델은 deployment/ 형식을 사용해 호출할 수 있어요.

import litellm

response = litellm.completion(
    model="watsonx/deployment/",
    messages=[{"content": "Hello, how are you?", "role": "user"}],
    space_id=""
)

사용법 - 임베딩

from litellm import embedding

response = embedding(
    model="watsonx/ibm/slate-30m-english-rtrvr",
    input=["What is the capital of France?"],
    project_id=""
)

LiteLLM Proxy 사용법

1. 환경에 키 저장

export WATSONX_URL=""
export WATSONX_APIKEY=""
export WATSONX_PROJECT_ID=""

2. Proxy 시작

$ litellm --model watsonx/meta-llama/llama-3-8b-instruct

config.yaml:

model_list:
  - model_name: llama-3-8b
    litellm_params:
      model: watsonx/meta-llama/llama-3-8b-instruct
      api_key: "os.environ/WATSONX_API_KEY"

3. 테스트

curl --location 'http://0.0.0.0:4000/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
      "model": "llama-3-8b",
      "messages": [
        {
          "role": "user",
          "content": "what is your favorite colour?"
        }
      ]
    }'
import openai

client = openai.OpenAI(
    api_key="anything",
    base_url="http://0.0.0.0:4000"
)

response = client.chat.completions.create(
    model="llama-3-8b",
    messages=[{"role": "user", "content": "what is your favorite colour?"}]
)
print(response)

지원 모델

모델명 명령
Llama 3.1 8B Instruct completion(model="watsonx/meta-llama/llama-3-1-8b-instruct", messages=messages)
Llama 2 70B Chat completion(model="watsonx/meta-llama/llama-2-70b-chat", messages=messages)
Granite 13B Chat V2 completion(model="watsonx/ibm/granite-13b-chat-v2", messages=messages)
Mixtral 8X7B Instruct completion(model="watsonx/ibm-mistralai/mixtral-8x7b-instruct-v01-q", messages=messages)

사용 가능한 모든 모델은 watsonx.ai 문서를 참고해요.

지원 임베딩 모델

모델명 함수 호출
Slate 30m embedding(model="watsonx/ibm/slate-30m-english-rtrvr", input=input)
Slate 125m embedding(model="watsonx/ibm/slate-125m-english-rtrvr", input=input)

사용 가능한 모든 임베딩 모델은 watsonx.ai 임베딩 문서를 참고해요.

고급

Zen API 키 사용

IAM 토큰을 생성하는 대신 장기 인증을 위해 Zen API 키를 사용할 수 있어요. 환경 변수 또는 파라미터로 전달해요:

import os
from litellm import completion

# Option 1: Set as environment variable
os.environ["WATSONX_ZENAPIKEY"] = "your-zen-api-key"

response = completion(
    model="watsonx/ibm/granite-13b-chat-v2",
    messages=[{"content": "What is your favorite color?", "role": "user"}],
    project_id="your-project-id"
)

# Option 2: Pass as parameter
response = completion(
    model="watsonx/ibm/granite-13b-chat-v2",
    messages=[{"content": "What is your favorite color?", "role": "user"}],
    zen_api_key="your-zen-api-key",
    project_id="your-project-id"
)

LiteLLM Proxy에서 OpenAI 클라이언트로 사용하기:

import openai

client = openai.OpenAI(
    api_key="sk-",  # LiteLLM proxy key
    base_url="http://0.0.0.0:4000"
)

response = client.chat.completions.create(
    model="watsonx/ibm/granite-3-3-8b-instruct",
    messages=[{"role": "user", "content": "What is your favorite color?"}],
    max_tokens=2048,
    extra_body={
        "project_id": "your-project-id",
        "zen_api_key": "your-zen-api-key"
    }
)

Zen API 키 생성에 대한 자세한 내용은 IBM 문서를 참고해요.

더 알아보기 (Learn more)

  • IBM watsonx.ai 공식 문서
  • watsonx.ai 모델 카탈로그