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 레퍼런스