Replicate

Replicate

LiteLLM에서 Replicate의 모든 모델을 사용하는 방법을 알아봐요.

출처: 문서

본문

LiteLLM은 Replicate의 모든 모델을 지원해요.

사용법

API 키

import os
os.environ["REPLICATE_API_KEY"] = ""

호출 예시

from litellm import completion
import os
## set ENV variables
os.environ["REPLICATE_API_KEY"] = "replicate key"

# replicate llama-3 call
response = completion(
    model="replicate/meta/meta-llama-3-8b-instruct",
    messages = [{ "content": "Hello, how are you?","role": "user"}]
)

config.yaml에 모델 추가:

model_list:
  - model_name: llama-3
    litellm_params:
      model: replicate/meta/meta-llama-3-8b-instruct
      api_key: os.environ/REPLICATE_API_KEY

Proxy 시작:

$ litellm --config /path/to/config.yaml --debug

OpenAI Python SDK로 요청:

import openai
client = openai.OpenAI(
    api_key="sk-",             # pass litellm proxy key, if you're using virtual keys
    base_url="http://0.0.0.0:4000" # litellm-proxy-base url
)

response = client.chat.completions.create(
    model="llama-3",
    messages = [
      {
          "role": "system",
          "content": "Be a good human!"
      },
      {
          "role": "user",
          "content": "What do you know about earth?"
      }
  ]
)

print(response)
curl --location 'http://0.0.0.0:4000/chat/completions' \
    --header "Authorization: Bearer ***" \
    --header 'Content-Type: application/json' \
    --data '{
    "model": "llama-3",
    "messages": [
      {
          "role": "system",
          "content": "Be a good human!"
      },
      {
          "role": "user",
          "content": "What do you know about earth?"
      }
      ],
}'

예상되는 Replicate 호출

위 예시에서 litellm이 replicate로 보내는 호출은 다음과 같아요:

POST Request Sent from LiteLLM:
curl -X POST \
https://api.replicate.com/v1/models/meta/meta-llama-3-8b-instruct \
-H 'Authorization: Token ***' -H 'Content-Type: application/json' \
-d '{'version': 'meta/meta-llama-3-8b-instruct', 'input': {'prompt': 'system\n\nBe a good human!user\n\nWhat do you know about earth?assistant\n\n'}}'

고급 사용법 - 프롬프트 포맷팅

LiteLLM은 모든 meta-llama llama3 instruct 모델에 대한 프롬프트 템플릿 매핑을 제공해요. 코드 보기

사용자 정의 프롬프트 템플릿을 적용하려면:

import litellm

import os
os.environ["REPLICATE_API_KEY"] = ""

# Create your own custom prompt template
litellm.register_prompt_template(
	    model="togethercomputer/LLaMA-2-7B-32K",
        initial_prompt_value="You are a good assistant", # [OPTIONAL]
	    roles={
            "system": {
                "pre_message": "[INST] >\n", # [OPTIONAL]
                "post_message": "\n>\n [/INST]\n" # [OPTIONAL]
            },
            "user": {
                "pre_message": "[INST] ", # [OPTIONAL]
                "post_message": " [/INST]" # [OPTIONAL]
            },
            "assistant": {
                "pre_message": "\n", # [OPTIONAL]
                "post_message": "\n" # [OPTIONAL]
            }
        },
        final_prompt_value="Now answer as best you can:" # [OPTIONAL]
)

def test_replicate_custom_model():
    model = "replicate/togethercomputer/LLaMA-2-7B-32K"
    response = completion(model=model, messages=messages)
    print(response['choices'][0]['message']['content'])
    return response

test_replicate_custom_model()
# Model-specific parameters
model_list:
  - model_name: mistral-7b # model alias
    litellm_params: # actual params for litellm.completion()
      model: "replicate/mistralai/Mistral-7B-Instruct-v0.1"
      api_key: os.environ/REPLICATE_API_KEY
      initial_prompt_value: "\n"
      roles: {"system":{"pre_message":"system\n", "post_message":""}, "assistant":{"pre_message":"assistant\n","post_message":""}, "user":{"pre_message":"user\n","post_message":""}}
      final_prompt_value: "\n"
      bos_token: ""
      eos_token: ""
      max_tokens: 4096

고급 사용법 - Replicate 배포 호출

배포된 replicate LLM을 호출해요. 모델에 replicate/deployments/ 접두사를 붙이면 litellm이 deployments 엔드포인트를 호출해요. 이렇게 하면 replicate의 ishaan-jaff/ishaan-mistral 배포를 호출하게 돼요.

response = completion(
    model="replicate/deployments/ishaan-jaff/ishaan-mistral",
    messages= [{ "content": "Hello, how are you?","role": "user"}]
)

Replicate 콜드 부트: replicate의 콜드 부트 때문에 응답에 3-5분이 걸릴 수 있어요. 디버깅 중이라면 litellm.set_verbose=True로 요청을 시도해 보세요.

Replicate 모델

liteLLM은 모든 replicate LLM을 지원해요.

Replicate 모델의 경우 model 인자에 replicate/ 접두사를 추가해야 해요. liteLLM이 이 인자를 사용해 감지해요.

아래는 liteLLM으로 replicate LLM을 호출하는 예시예요:

모델명 함수 호출 필요 OS 변수
replicate/llama-2-70b-chat completion(model='replicate/llama-2-70b-chat:2796ee9483c3fd7aa2e171d38f4ca12251a30609463dcfd4cd76703f22e96cdf', messages) os.environ['REPLICATE_API_KEY']
a16z-infra/llama-2-13b-chat completion(model='replicate/a16z-infra/llama-2-13b-chat:2a7f981751ec7fdf87b5b91ad4db53683a98082e9ff7bfd12c8cd5ea85980a52', messages) os.environ['REPLICATE_API_KEY']
replicate/vicuna-13b completion(model='replicate/vicuna-13b:6282abe6a492de4145d7bb601023762212f9ddbbe78278bd6771c8b3b2f2a13b', messages) os.environ['REPLICATE_API_KEY']
daanelson/flan-t5-large completion(model='replicate/daanelson/flan-t5-large:ce962b3f6792a57074a601d3979db5839697add2e4e02696b3ced4c022d4767f', messages) os.environ['REPLICATE_API_KEY']
custom-llm completion(model='replicate/custom-llm-version-id', messages) os.environ['REPLICATE_API_KEY']
replicate deployment completion(model='replicate/deployments/ishaan-jaff/ishaan-mistral', messages) os.environ['REPLICATE_API_KEY']

추가 파라미터 전달 - max_tokens, temperature

litellm.completion 지원 파라미터 전체 목록은 여기를 참고해요.

# !uv add litellm
from litellm import completion
import os
## set ENV variables
os.environ["REPLICATE_API_KEY"] = "replicate key"

# replicate llama-2 call
response = completion(
    model="replicate/llama-2-70b-chat:2796ee9483c3fd7aa2e171d38f4ca12251a30609463dcfd4cd76703f22e96cdf",
    messages = [{ "content": "Hello, how are you?","role": "user"}],
    max_tokens=20,
    temperature=0.5
)

프록시:

  model_list:
    - model_name: llama-3
      litellm_params:
        model: replicate/meta/meta-llama-3-8b-instruct
        api_key: os.environ/REPLICATE_API_KEY
        max_tokens: 20
        temperature: 0.5

Replicate 전용 파라미터 전달

litellm.completion()이 지원하지 않지만 Replicate가 지원하는 파라미터는 litellm.completion에 직접 전달해요. 예를 들어 seed, min_tokens는 Replicate 전용 파라미터예요.

# !uv add litellm
from litellm import completion
import os
## set ENV variables
os.environ["REPLICATE_API_KEY"] = "replicate key"

# replicate llama-2 call
response = completion(
    model="replicate/llama-2-70b-chat:2796ee9483c3fd7aa2e171d38f4ca12251a30609463dcfd4cd76703f22e96cdf",
    messages = [{ "content": "Hello, how are you?","role": "user"}],
    seed=-1,
    min_tokens=2,
    top_k=20,
)

프록시:

  model_list:
    - model_name: llama-3
      litellm_params:
        model: replicate/meta/meta-llama-3-8b-instruct
        api_key: os.environ/REPLICATE_API_KEY
        min_tokens: 2
        top_k: 20

더 알아보기 (Learn more)

  • Replicate 공식 문서
  • LiteLLM 컴플리션 API