v0

v0

코드 생성에 최적화된 v0 모델을 LiteLLM에서 사용하는 방법을 알아봐요. Next.js 앱, React 컴포넌트, 현대 웹 개발에 특히 유용해요.

출처: 문서

본문

개요

속성 내용
설명 v0은 코드 생성, 특히 Next.js 앱·React 컴포넌트·현대 웹 개발에 최적화된 AI 모델을 제공해요
LiteLLM 라우트 v0/
공식 문서 v0 API Documentation ↗
Base URL https://api.v0.dev/v1
지원 연산 /chat/completions

모든 v0 모델을 지원하며, completion 요청을 보낼 때 v0/를 접두사로 붙이면 돼요.

사용 가능한 모델

모델 설명 컨텍스트 윈도우 최대 출력
v0/v0-1.5-lg 고급 코드 생성과 추론을 위한 대형 모델 512,000 토큰 512,000 토큰
v0/v0-1.5-md 일상적인 코드 생성 작업을 위한 중형 모델 128,000 토큰 128,000 토큰
v0/v0-1.0-md 레거시 중형 모델 128,000 토큰 128,000 토큰

필수 변수

os.environ["V0_API_KEY"] = ""  # your v0 API key from v0.dev

참고: v0 API 접근에는 Premium 또는 Team 플랜이 필요해요. 업그레이드는 v0.dev/chat/settings/billing 에서 가능해요.

LiteLLM Python SDK 사용법

비스트리밍

import os
import litellm
from litellm import completion

os.environ["V0_API_KEY"] = ""  # your v0 API key

messages = [{"content": "Create a React button component with hover effects", "role": "user"}]

# v0 call
response = completion(
    model="v0/v0-1.5-md",
    messages=messages
)

print(response)

스트리밍

import os
import litellm
from litellm import completion

os.environ["V0_API_KEY"] = ""  # your v0 API key

messages = [{"content": "Create a React button component with hover effects", "role": "user"}]

# v0 call with streaming
response = completion(
    model="v0/v0-1.5-md",
    messages=messages,
    stream=True
)

for chunk in response:
    print(chunk)

비전/멀티모달 지원

모든 v0 모델은 비전 입력을 지원해서, 텍스트와 함께 이미지를 보낼 수 있어요:

import os
import litellm
from litellm import completion

os.environ["V0_API_KEY"] = ""  # your v0 API key

messages = [{
    "role": "user",
    "content": [
        {
            "type": "text",
            "text": "Recreate this UI design in React"
        },
        {
            "type": "image_url",
            "image_url": {
                "url": "https://example.com/ui-design.png"
            }
        }
    ]
}]

response = completion(
    model="v0/v0-1.5-lg",
    messages=messages
)

print(response)

함수 호출

v0은 구조화 출력을 위한 함수 호출을 지원해요:

import os
import litellm
from litellm import completion

os.environ["V0_API_KEY"] = ""  # your v0 API key

tools = [
    {
        "type": "function",
        "function": {
            "name": "create_component",
            "description": "Create a React component",
            "parameters": {
                "type": "object",
                "properties": {
                    "component_name": {
                        "type": "string",
                        "description": "The name of the component"
                    },
                    "props": {
                        "type": "array",
                        "items": {"type": "string"},
                        "description": "List of component props"
                    }
                },
                "required": ["component_name"]
            }
        }
    }
]

response = completion(
    model="v0/v0-1.5-md",
    messages=[{"role": "user", "content": "Create a Button component with onClick and disabled props"}],
    tools=tools,
    tool_choice="auto"
)

print(response)

LiteLLM Proxy 사용법

LiteLLM Proxy 설정 파일에 다음을 추가해요.

config.yaml:

model_list:
  - model_name: v0-large
    litellm_params:
      model: v0/v0-1.5-lg
      api_key: os.environ/V0_API_KEY

  - model_name: v0-medium
    litellm_params:
      model: v0/v0-1.5-md
      api_key: os.environ/V0_API_KEY

  - model_name: v0-legacy
    litellm_params:
      model: v0/v0-1.0-md
      api_key: os.environ/V0_API_KEY

Proxy 서버 시작:

litellm --config config.yaml

# RUNNING on http://0.0.0.0:4000

Proxy를 통한 v0 - 비스트리밍 (OpenAI SDK):

from openai import OpenAI

# Initialize client with your proxy URL
client = OpenAI(
    base_url="http://localhost:4000",  # Your proxy URL
    api_key="your-proxy-api-key"       # Your proxy API key
)

# Non-streaming response
response = client.chat.completions.create(
    model="v0-medium",
    messages=[{"role": "user", "content": "Create a React card component"}]
)

print(response.choices[0].message.content)

스트리밍:

from openai import OpenAI

# Initialize client with your proxy URL
client = OpenAI(
    base_url="http://localhost:4000",  # Your proxy URL
    api_key="your-proxy-api-key"       # Your proxy API key
)

# Streaming response
response = client.chat.completions.create(
    model="v0-medium",
    messages=[{"role": "user", "content": "Create a React card component"}],
    stream=True
)

for chunk in response:
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="")

LiteLLM SDK:

import litellm

# Configure LiteLLM to use your proxy
response = litellm.completion(
    model="litellm_proxy/v0-medium",
    messages=[{"role": "user", "content": "Create a React card component"}],
    api_base="http://localhost:4000",
    api_key="your-proxy-api-key"
)

print(response.choices[0].message.content)

LiteLLM SDK 스트리밍:

import litellm

# Configure LiteLLM to use your proxy with streaming
response = litellm.completion(
    model="litellm_proxy/v0-medium",
    messages=[{"role": "user", "content": "Create a React card component"}],
    api_base="http://localhost:4000",
    api_key="your-proxy-api-key",
    stream=True
)

for chunk in response:
    if hasattr(chunk.choices[0], 'delta') and chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="")

cURL:

curl http://localhost:4000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-p...-key" \
  -d '{
    "model": "v0-medium",
    "messages": [{"role": "user", "content": "Create a React card component"}]
  }'

cURL 스트리밍:

curl http://localhost:4000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-p...-key" \
  -d '{
    "model": "v0-medium",
    "messages": [{"role": "user", "content": "Create a React card component"}],
    "stream": true
  }'

LiteLLM Proxy 사용에 대한 자세한 내용은 LiteLLM Proxy 문서를 참고해요.

지원되는 OpenAI 파라미터

v0은 다음 OpenAI 호환 파라미터를 지원해요:

파라미터 타입 설명
messages array 필수. 'role'과 'content'를 가진 메시지 객체의 배열
model string 필수. 모델 ID (v0-1.5-lg, v0-1.5-md, v0-1.0-md)
stream boolean 선택. 스트리밍 응답 활성화
tools array 선택. 사용 가능한 도구/함수 목록
tool_choice string/object 선택. 도구/함수 호출 제어

참고: v0은 전체 OpenAI API에 비해 지원 파라미터가 제한적이에요. temperature, max_tokens, top_p 등은 지원되지 않아요.

고급 사용법

사용자 정의 API Base

사용자 정의 v0 배포를 사용한다면:

import litellm

response = litellm.completion(
    model="v0/v0-1.5-md",
    messages=[{"role": "user", "content": "Hello"}],
    api_base="https://your-custom-v0-endpoint.com/v1",
    api_key="your-api-key"
)

가격

v0 모델은 Premium 또는 Team 구독이 필요해요. 현재 가격 정보는 v0.dev/chat/settings/billing 에서 확인할 수 있어요.

더 알아보기 (Learn more)

  • v0 공식 문서
  • v0 Model API 레퍼런스