跳到正文
openrouter blog·· 2026-07-16精選AI 評分64

OpenRouter 推出支援文字、影像、語音與嵌入向量的統一 API

Every Modality Through One API

AI 導讀

OpenRouter 宣佈支援透過單一 OpenAI 相容的基礎網址與金鑰,呼叫文字、影像生成、影片生成、語音、嵌入向量與語音轉文字等 5 種模態。

  • 端點架構:多數輸入模態透過 /chat/completions 搭配不同內容型態處理,而影像生成、影片生成、文字轉語音、語音轉文字與嵌入向量則使用各自的專屬端點。
推薦理由

原文詳細介紹透過單一基礎網址存取多種模態的端點設計與路由控制,讀者可據此評估多模態 API 整合方式。

正文 · AI 翻譯

你正在打造一款應用程式,需要回答聊天中的問題、產生產品圖片、搜尋知識庫,以及將語音備忘錄轉為文字。預設的路徑是:在寫下任何一行功能程式碼之前,必須先串接 4 個供應商 SDK、4 個計費關係以及 4 個驗證機制。r/Bard 上的某位開發者尋找 適用於 LLM、圖片與影片產生模型的統一 API。另一位在 r/ShowYourApp 上的開發者則自己動手打造了一個,並回報說,一旦文字、圖片、影片、TTS、STT 與嵌入向量全部必須共存時,一體成型的 AI API 比預期中困難得多。

在 OpenRouter 上,所有這些模態都透過單一相容 OpenAI 的 Base URL 執行:https://openrouter.ai/api/v1。你只需設定一次。之後,你只需要變更模型字串與內容型別。其目錄涵蓋 來自 70 多個供應商的 400 多個模型,且保護聊天呼叫的相同路由控制項也能保護嵌入向量呼叫。

總結

  • 設定一個 Base URL(https://openrouter.ai/api/v1),並透過它呼叫圖片、影片、音訊、嵌入向量與轉錄。透過變更模型字串與內容型別來切換模態。
  • 大多數的輸入模態都透過 /chat/completions 端點。其中五個有專屬端點:/images、/videos、/audio/speech、/audio/transcriptions 與 /embeddings。
  • 相同的供應商路由物件(故障轉移、data_collection: "deny"、成本/延遲排序)在嵌入向量呼叫上的運作方式與在聊天呼叫上完全相同。
  • 跨越所有 5 種模態,只需一個 API 金鑰、一張帳單、一種 OpenAI 格式的請求格式。我們不會調漲供應商的定價,失敗的請求也不會計費。
  • 需要規劃的實際限制:嵌入向量不支援串流、音訊輸入僅限 base64,而影片 URL 支援則因供應商而異。

一個 API 能同時處理圖片、影片、音訊、嵌入向量與轉錄嗎?

可以。單一 Base URL 支援所有模態,你透過變更模型字串與請求內容型別來在它們之間切換。將 https://openrouter.ai/api/v1 設定為你的 Base URL,將你的 API 金鑰作為 Bearer Token 傳遞,你就能透過一個相容 OpenAI 的介面存取完整的目錄。

串接 4 個供應商 SDK 意味著每個供應商都有自己的驗證更新、重試與退讓語意、速率限制標頭、串流格式以及錯誤綱要。你必須寫 4 次這樣的黏著程式碼、維護 4 次,而來自某個供應商的變更永遠只能修復它自己的角落。

我們是 OpenAI Chat API 的無縫替代方案,因此相同的請求格式適用於所有透過 /chat/completions 執行的模態,而 TTS 端點則遵循 OpenAI Audio API。專屬端點(圖片產生、影片產生、轉錄與嵌入向量)各有其各自的請求形狀,但我們的 官方 SDK(適用於 TypeScript 的 @openrouter/sdk、適用於 Python 的 openrouter)將所有這些包裝在一個介面後方。

每個模態使用哪一個端點?

大多數輸入模態都透過 /chat/completions,且僅以內容型別區分。有五種模態擁有專屬端點。以下是完整的對應表,以我們的 多模態概覽 與 嵌入向量參考檔案 為基礎。

模態端點如何呼叫
文字 / 聊天POST /api/v1/chat/completionsmessages 陣列
圖片輸入(視覺)POST /api/v1/chat/completionsimage_url 內容型別
PDFPOST /api/v1/chat/completionsfile 內容型別
音訊輸入POST /api/v1/chat/completionsinput_audio 內容型別
影片輸入POST /api/v1/chat/completionsvideo_url 內容型別
圖片產生POST /api/v1/images輸入提示詞,輸出 base64 圖片
影片產生POST /api/v1/videos(非同步)提交提示詞、取得作業 ID、輪詢
文字轉語音POST /api/v1/audio/speech輸入文字,輸出 MP3/PCM 位元組
轉錄 (STT)POST /api/v1/audio/transcriptions輸入 base64 音訊,輸出 JSON 文字 + 用量
嵌入向量POST /api/v1/embeddings輸入文字或文字+圖片,輸出向量

Diagram of one base URL fanning out to the shared chat/completions endpoint with five content types, plus dedicated endpoints for image generation, video generation, text-to-speech, transcription, and embeddings

這五種模式在 /chat/completions 上執行,只改變訊息陣列中的內容型別。另一邊,另外五種各有自己的端點,因為呼叫方式不同:影像生成需要提示語加上影像相關引數(解析度、寬高比、輸出格式),並回傳 base64 影像;影片生成是非同步的(你需要輪詢工作),語音與文字轉錄則搬移原始音訊位元組,嵌入則回傳向量而非完成。單一供應商檔案很少會把這些放在同一頁面,因為沒有任何單一供應商能同時提供全部功能。

你可以在不付費的情況下測試多模態輸入。免費層不需要信用卡,免費模型在低每日使用量限制下執行,當你新增額度後限制會提升。這足以將影像送到視覺模型或生成一批嵌入,先試試再決定是否投入。

何時應該使用每種模式?

即使在同一媒體型別內,生成與理解也是不同的任務,使用哪個端點取決於你要做的工作。

影像:生成 vs. 理解。需要新影像時使用影像生成,若已有影像需要分析則使用影像輸入。生成透過 POST 呼叫專用 /api/v1/images 端點,從文字提示產生資產、模型稿與插圖,亦可選擇參考影像做影像轉影像。視覺輸入則相反:你在 /chat/completions 傳送 image_url,模型進行 OCR、描述或偵測。完整流程請參閱 影像生成檔案。

影片:輸入 vs. 生成。使用非同步 /videos 端點產生影片剪輯,使用 video_url 在聊天中理解影片。影片生成提交提示並回傳工作 ID,需輪詢直至剪輯完成,可設定解析度、寬高比與時長。影片理解則將 video_url 傳送至具備影片功能的模型進行分析、動作辨識或物件偵測。詳情請參閱 影片生成公告。

音訊與語音:輸出 vs. 分析。使用 /audio/speech 進行語音輸出,並在聊天中使用音訊輸入進行分析。文字轉語音將文字送至 /api/v1/audio/speech,並透過 OpenAI 相容音訊端點回傳 MP3 或 PCM 位元組,OpenAI 客戶端函式庫可直接使用。音訊輸入則以 /chat/completions 搭配 input_audio 內容型別,適用於情感分析或內容分析等任務。詳情請參閱 音訊 API 公告。

嵌入:檢索與相似度。需要檢索或相似度時使用嵌入,而非生成。嵌入檔案列舉 6 個工作:RAG、語義搜尋、推薦、聚類、重複偵測與異常偵測。你可在單一請求中批次多個輸入,且部分模型可同時接受文字與影像產生單一聯合向量(nvidia/llama-nemotron-embed-vl-1b-v2 為其中之一)。

文字轉錄:語音轉文字。使用 /audio/transcriptions 進行語音轉文字。你送出 base64 編碼的音訊,回傳 JSON 包含轉錄文字及使用統計。適用於會議記錄、語音指令與字幕。

路由與失效轉移也適用於嵌入與影像呼叫嗎?

是的。你在聊天呼叫中使用的相同 provider 物件,在嵌入呼叫時也能相同運作:供應商順序、自動失效轉移、資料蒐集政策,以及成本或延遲排序。以下為 嵌入檔案 的完整結構:

{
  "model": "openai/text-embedding-3-small",
  "input": "Your text here",
  "provider": {
    "order": ["openai", "azure"],
    "allow_fallbacks": true,
    "data_collection": "deny"
  }
}

Diagram of one provider object with order, allow_fallbacks, and sort fields applying to chat, image, audio, and embeddings calls

路由控制同樣適用於專用的影像端點:/api/v1/images 接受 provider.order、provider.allow_fallbacks、provider.only、provider.ignore 和 provider.sort,因此故障轉移、排序以及成本/延遲排序在影像生成呼叫上與聊天呼叫的方式相同。

由 多個供應商 提供的嵌入模型,在第一個供應商返回錯誤時可以回退到另一個。相同的跨供應商故障轉移適用於嵌入、影像、音訊和聊天,皆透過 provider object。

我們 不標示供應商定價:模型目錄中的費率即為您實際支付的金額。零完成保險意味著失敗的執行不會被計費,因此即使請求失敗轉移且未完成,亦不會產生費用。這一原則適用於所有模態。

實際上整合可以節省什麼?

一個 API 金鑰、一張帳單、以及跨所有模態的統一請求格式。

相同的 Bearer token 可授權視覺呼叫、TTS 呼叫以及嵌入呼叫。沒有為每個供應商設定獨立的金鑰庫,也沒有每個模態的單獨上線流程。當您新增功能,例如開始使用 RAG 時,只需使用已擁有的金鑰呼叫 /embeddings。

整合計費意味著跨模態的使用量會在單一 OpenRouter 說明書中以目錄價格顯示。您可以在同一位置比較影像生成與嵌入的成本,而不必從四個儀錶板匯出 CSV。這種對帳摩擦正是 r/ShowYourApp 建構者在 整合堆疊變得比預期更複雜時遇到的問題。

需要規劃的限制有哪些?

每個模態都有值得在開發前瞭解的限制。以下列出我們目前的限制,說明簡明,方便您在設計時就能避免在生產環境中發現。

限制模態對您的影響
無串流嵌入回應一次返回完整,而非逐 token。請規劃同步處理。
確定性輸出嵌入相同輸入產生相同向量。請積極快取。
僅支援 Base64音訊輸入音訊無法透過 URL 傳遞。請先編碼本機檔案。
供應商專屬 URL影片輸入URL 支援度不同。AI Studio 上的 Gemini 僅接受 YouTube 連結。
逐模型支援全部並非所有模型都支援所有模態。我們會根據內容自動過濾。
免費層速率限制全部免費模型每日限制較低,加入額外信用後會提升。

當你需要多種媒體型別、切換模型只需改一行字,或供應商停機不應影響功能時,統一 API 才能發揮價值。若你的應用僅為單一聊天功能,使用單一供應商的通用模型,直接整合更簡單,整合帶來的優勢較小。

先從一次呼叫開始

向基礎 URL 傳送一次嵌入請求。

import requests

response = requests.post(
    "https://openrouter.ai/api/v1/embeddings",
    headers={
        "Authorization": "Bearer <OPENROUTER_API_KEY>",
        "Content-Type": "application/json",
    },
    json={
        "model": "openai/text-embedding-3-small",
        "input": "The quick brown fox jumps over the lazy dog",
    },
)

print(response.json()["data"][0]["embedding"][:5])
import { OpenRouter } from '@openrouter/sdk';

const openRouter = new OpenRouter({ apiKey: process.env.OPENROUTER_API_KEY });

const response = await openRouter.embeddings.generate({
  model: 'openai/text-embedding-3-small',
  input: 'The quick brown fox jumps over the lazy dog',
});

console.log(response.data[0].embedding);
curl https://openrouter.ai/api/v1/embeddings \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "openai/text-embedding-3-small", "input": "The quick brown fox jumps over the lazy dog"}'

從此開始,請參閱 多模態概覽 以深入瞭解各模態,或瀏覽 按輸出模態分類的模型 以尋找符合每個呼叫的模型。

常見問題

我可以用同一 API 處理影像生成、嵌入與文字轉錄嗎?

可以。三者皆透過我們的基礎 URL https://openrouter.ai/api/v1,使用同一 API 金鑰。影像生成使用專用 /images 端點,嵌入使用 /embeddings,文字轉錄使用 /audio/transcriptions。你只需變更端點與內容型別,整合、授權或 API 金鑰保持不變。

OpenRouter 支援嵌入嗎?

是的。嵌入經由 POST /api/v1/embeddings 處理,並回傳 RAG、語義搜尋、推薦、聚類、重複偵測與異常偵測所需的向量。你可在一次請求中批次多個輸入,且部分模型支援同時傳入文字與影像以產生聯合向量。

哪些模態使用聊天端點,哪些使用專用端點?

文字、圖片輸入、PDF、音訊輸入與影片輸入皆使用 /chat/completions,僅在內容型別上不同。圖片生成 (/images)、影片生成 (/videos)、文字轉語音 (/audio/speech)、語音轉文字 (/audio/transcriptions) 以及嵌入 (/embeddings) 則使用專用端點,因為它們的呼叫形式不同:prompt‑to‑image 請求、非同步工作、原始音訊位元組,或回傳向量而非完成結果。

有支援多模態輸入的免費 AI API 嗎?

有。OpenRouter 提供免費層級,無需信用卡。免費模型在每日使用限制較低的情況下運作,使用額度增加後限制會提升,足以傳送圖片、產生嵌入或測試其他模態,讓你在承諾前先做測試。

我能在一次嵌入請求中同時傳送文字與圖片嗎?

可以,使用多模態嵌入模型。你將輸入包裝在包含 text 與 image_url 物件的內容陣列中,模型會回傳一個同時捕捉兩者的單一向量。nvidia/llama-nemotron-embed-vl-1b-v2 是其中一個模型,當你想讓文字與圖片共享同一搜尋空間時非常有用。

供應商路由與故障切換也適用於嵌入和圖片呼叫嗎?

是的。相同的供應商路由控制(order、allow_fallbacks、成本/延遲 sort)同樣適用於嵌入、圖片、音訊與聊天呼叫。若供應商發生錯誤,呼叫會切換到下一個提供該模型的供應商,失敗的執行不會被計費。

來源:openrouter blog · openrouter.ai