跳至主要內容

OpenRouter

LiteLLM 支援來自 OpenRouter 的所有文字/聊天/視覺/嵌入模型

在 Colab 中開啟

用法

import os
from litellm import completion

os.environ["OPENROUTER_API_KEY"] = ""
os.environ["OPENROUTER_API_BASE"] = "" # [OPTIONAL] defaults to https://openrouter.ai/api/v1
os.environ["OR_SITE_URL"] = "" # [OPTIONAL]
os.environ["OR_APP_NAME"] = "" # [OPTIONAL]

response = completion(
model="openrouter/google/palm-2-chat-bison",
messages=messages,
)

使用環境變數進行設定

對於正式環境,您可以使用環境變數動態設定 base_url:

import os
from litellm import completion

# Configure with environment variables
OPENROUTER_API_KEY = os.getenv("OPENROUTER_API_KEY")
OPENROUTER_BASE_URL = os.getenv("OPENROUTER_API_BASE", "https://openrouter.ai/api/v1")

# Set environment for LiteLLM
os.environ["OPENROUTER_API_KEY"] = OPENROUTER_API_KEY
os.environ["OPENROUTER_API_BASE"] = OPENROUTER_BASE_URL

response = completion(
model="openrouter/google/palm-2-chat-bison",
messages=messages,
base_url=OPENROUTER_BASE_URL # Explicitly pass base_url for clarity
)

這種做法在管理不同環境(dev、staging、production)之間的設定時提供更高的彈性,也讓在自架與雲端端點之間切換更容易。

OpenRouter 補全文本模型

🚨 LiteLLM 支援所有 OpenRouter 模型,傳送 model=openrouter/<your-openrouter-model> 即可將其送至 open router。請在 這裡 查看所有 openrouter 模型

模型名稱函式呼叫
openrouter/openai/gpt-3.5-turbocompletion('openrouter/openai/gpt-3.5-turbo', messages)
openrouter/openai/gpt-3.5-turbo-16kcompletion('openrouter/openai/gpt-3.5-turbo-16k', messages)
openrouter/openai/gpt-4completion('openrouter/openai/gpt-4', messages)
openrouter/openai/gpt-4-32kcompletion('openrouter/openai/gpt-4-32k', messages)
openrouter/anthropic/claude-2completion('openrouter/anthropic/claude-2', messages)
openrouter/anthropic/claude-instant-v1completion('openrouter/anthropic/claude-instant-v1', messages)
openrouter/google/palm-2-chat-bisoncompletion('openrouter/google/palm-2-chat-bison', messages)
openrouter/google/palm-2-codechat-bisoncompletion('openrouter/google/palm-2-codechat-bison', messages)
openrouter/meta-llama/llama-2-13b-chatcompletion('openrouter/meta-llama/llama-2-13b-chat', messages)
openrouter/meta-llama/llama-2-70b-chatcompletion('openrouter/meta-llama/llama-2-70b-chat', messages)

傳遞 OpenRouter 參數 - transforms, models, route

transformsmodelsroute 作為引數傳遞給 litellm.completion()

import os
from litellm import completion

os.environ["OPENROUTER_API_KEY"] = ""

response = completion(
model="openrouter/google/palm-2-chat-bison",
messages=messages,
transforms = [""],
route= ""
)

嵌入

from litellm import embedding
import os

os.environ["OPENROUTER_API_KEY"] = "your-api-key"

response = embedding(
model="openrouter/openai/text-embedding-3-small",
input=["good morning from litellm", "this is another item"],
)
print(response)

圖片生成

OpenRouter 透過 Google Gemini 圖片生成模型等特定模型支援圖片生成。LiteLLM 會將標準圖片生成請求轉換為 OpenRouter 的聊天補全格式。

支援的參數

  • size:對應至 OpenRouter 的 aspect_ratio 格式

    • 1024x10241:1(正方形)
    • 1536x10243:2(橫向)
    • 1024x15362:3(直向)
    • 1792x102416:9(寬幅橫向)
    • 1024x17929:16(高幅直向)
  • quality:對應至 OpenRouter 的 image_size 格式(Gemini 模型)

    • lowstandard1K
    • medium2K
    • highhd4K
  • n:要生成的圖片數量

用法

from litellm import image_generation
import os

os.environ["OPENROUTER_API_KEY"] = "your-api-key"

# Basic image generation
response = image_generation(
model="openrouter/google/gemini-2.5-flash-image",
prompt="A beautiful sunset over a calm ocean",
)
print(response)

進階用法與參數

from litellm import image_generation
import os

os.environ["OPENROUTER_API_KEY"] = "your-api-key"

# Generate high-quality landscape image
response = image_generation(
model="openrouter/google/gemini-2.5-flash-image",
prompt="A serene mountain landscape with a lake",
size="1536x1024", # Landscape format
quality="high", # High quality (4K)
)

# Access the generated image
image_data = response.data[0]
if image_data.b64_json:
# Base64 encoded image
print(f"Generated base64 image: {image_data.b64_json[:50]}...")
elif image_data.url:
# Image URL
print(f"Generated image URL: {image_data.url}")

使用 OpenRouter 特定參數

您也可以直接使用 image_config 傳遞 OpenRouter 特定參數:

from litellm import image_generation
import os

os.environ["OPENROUTER_API_KEY"] = "your-api-key"

response = image_generation(
model="openrouter/google/gemini-2.5-flash-image",
prompt="A futuristic cityscape at night",
image_config={
"aspect_ratio": "16:9", # OpenRouter native format
"image_size": "4K" # OpenRouter native format
}
)
print(response)

回應格式

回應遵循標準的 LiteLLM ImageResponse 格式:

{
"created": 1703658209,
"data": [{
"b64_json": "iVBORw0KGgoAAAANSUhEUgAA...", # Base64 encoded image
"url": None,
"revised_prompt": None
}],
"usage": {
"input_tokens": 10,
"output_tokens": 1290,
"total_tokens": 1300
}
}

成本追蹤

OpenRouter 會在回應中提供成本資訊,LiteLLM 會自動追蹤:

response = image_generation(
model="openrouter/google/gemini-2.5-flash-image",
prompt="A cute baby sea otter",
)

# Cost is available in the response metadata
print(f"Request cost: ${response._hidden_params['additional_headers']['llm_provider-x-litellm-response-cost']}")

圖片編輯

OpenRouter 透過 Google Gemini 圖片模型等特定模型支援圖片編輯。LiteLLM 會將圖片編輯請求路由到 OpenRouter 的 chat completions 端點,來源圖片會以 base64 資料 URL 傳送,並附帶 modalities: ["image", "text"]

支援的模型

模型說明
openrouter/google/gemini-2.5-flash-image具備圖片編輯功能的 Gemini 2.5 Flash

請參閱 OpenRouter 的模型清單 以查看所有可用的圖片模型。

支援的參數

參數OpenRouter 對應備註
sizeimage_config.aspect_ratio1024x10241:11536x10243:21024x15362:31792x102416:91024x17929:16
qualityimage_config.image_sizelow/standard1Kmedium2Khigh/hd4K
nn圖片數量
備註

quality=high(4K)僅支援 google/gemini-3-pro-image-previewgoogle/gemini-3.1-flash-image-previewgoogle/gemini-2.5-flash-image 模型最高支援 medium(2K)。

用法

from litellm import image_edit
import os

os.environ["OPENROUTER_API_KEY"] = "your-api-key"

# Basic image edit
response = image_edit(
model="openrouter/google/gemini-2.5-flash-image",
image=open("original_image.png", "rb"),
prompt="Make the sky a vibrant purple sunset",
)

print(response)

進階用法與參數

from litellm import image_edit
import os

os.environ["OPENROUTER_API_KEY"] = "your-api-key"

# Edit with size and quality parameters
response = image_edit(
model="openrouter/google/gemini-2.5-flash-image",
image=open("photo.png", "rb"),
prompt="Add northern lights to the sky",
size="1536x1024", # Maps to aspect_ratio 3:2
quality="high", # Maps to image_size 4K
)

# Access the edited image
image_data = response.data[0]
if image_data.b64_json:
import base64
with open("edited.png", "wb") as f:
f.write(base64.b64decode(image_data.b64_json))

多張圖片編輯

from litellm import image_edit
import os

os.environ["OPENROUTER_API_KEY"] = "your-api-key"

response = image_edit(
model="openrouter/google/gemini-2.5-flash-image",
image=[
open("scene.png", "rb"),
open("style_reference.png", "rb"),
],
prompt="Blend the reference style into the scene",
)

print(response)