合作夥伴和程式庫整合

本指南將說明架構策略,協助您在 Gemini API 基礎上建構程式庫、平台和閘道。並詳細說明使用官方 GenAI SDK、Direct API (REST/gRPC) 和 OpenAI 相容層之間的技術取捨。

如果您要為其他開發人員建構工具 (例如開放原始碼架構、企業閘道或 SaaS 彙整工具),並需要針對依附元件衛生、套件組合大小或功能同位進行最佳化,請參閱本指南。

什麼是合作夥伴整合?

合作夥伴是指在 Gemini API 與使用者開發人員之間建立整合的任何人。我們將合作夥伴分為四種原型。找出最符合您需求的整合方式,有助於選擇正確的整合路徑。

生態系統架構

  • 你是誰:開放原始碼架構的維護者 (例如 LangChain、LlamaIndex、Spring AI) 或語言專屬用戶端。
  • 目標:廣泛相容性。您希望程式庫能在使用者選擇的任何環境中運作,且不會強制發生衝突。

執行階段和邊緣平台

  • 適用對象:SaaS 平台、AI 閘道或雲端基礎架構供應商 (例如 Vercel、Cloudflare、Zapier),這些平台會在受限環境中執行程式碼。
  • 您的目標:成效。您需要低延遲、最小的套件大小,以及快速冷啟動。

集結網站

  • 您是誰:平台、Proxy 或內部「模型花園」,可將許多不同 LLM 供應商 (例如 OpenAI、Anthropic、Google) 的存取權標準化為單一介面。
  • 目標:可攜性和一致性。

企業閘道

  • 適用對象:大型企業的內部平台工程團隊,為數百名內部開發人員建構「黃金途徑」。
  • 目標:標準化、管理及統一驗證。

功能比較

全球最佳做法:無論選擇哪種路徑,所有合作夥伴都必須傳送 x-goog-api-client 標頭

如果您是... 建議路徑 主要優點 主要缺點 最佳做法
企業閘道、生態系統架構 Google GenAI SDK Vertex 同位性與速度。內建類型、驗證和複雜功能 (例如檔案上傳) 的處理機制。順暢遷移至 Google Cloud。 依附元件權重。遞移依附元件可能很複雜,且不在您的控管範圍內。僅限支援的語言 (Python/Node/Go/Java)。 鎖定版本:在內部基礎映像檔中固定 SDK 版本,確保各團隊的穩定性。
生態系統架構、邊緣平台和匯總工具 直接 API

(REST / gRPC)
零依附元件。您可以控管 HTTP 用戶端和確切的套件大小。具備所有 API 和模型功能的完整存取權。 開發人員負擔高。JSON 結構可能深層巢狀化,需要嚴格的手動驗證和型別檢查。 使用 OpenAPI 規格。使用官方規格自動產生型別,不必手動撰寫。
使用 OpenAI SDK 的匯總工具,僅需以文字為基礎的工作流程

(針對舊版可攜性進行最佳化)
OpenAI 相容性 立即轉移資料。重複使用現有的 OpenAI 相容程式碼或程式庫。 功能上限。你可能無法使用特定機型專屬功能 (原生影片、快取)。 遷移計畫。您可以使用這項功能快速驗證,但建議升級至 Direct API,以使用完整的 API 功能。

整合 Google GenAI SDK

就架構而言,實作 Google GenAI SDK 通常是最簡單的方法,因為支援的語言程式碼行數最少。

對內部平台團隊而言,主要交付項目通常是「黃金路徑」,可讓產品工程師在遵守安全政策的同時快速行動。

優點:

  • Vertex AI 遷移作業的統一介面:內部開發人員通常會使用 API 金鑰 (Gemini API) 製作原型,並部署至 Vertex AI (IAM) 以符合生產環境規範。SDK 會將這些驗證差異抽象化。同樣地,您也可以實作一個程式碼路徑,支援兩組使用者。
  • 用戶端輔助程式:SDK 包含慣用公用程式,可減少複雜工作的樣板。
    • 示例:直接在提示中支援 PIL 圖片物件、自動函式呼叫,以及全面類型。
  • 搶先使用新功能:新 API 功能會在推出時透過 SDK 提供。
  • 改善程式碼生成支援:安裝本機 SDK 後,型別定義和說明字串會公開給程式碼輔助工具 (例如 Cursor、Copilot)。 與產生原始 REST 要求相比,這個脈絡可提高程式碼生成準確度。

取捨:

  • 依附元件權重和複雜度:SDK 有自己的依附元件,可能會增加套裝組合大小,並造成供應鏈風險。
  • 版本控管:新的 API 功能通常會固定在最低 SDK 版本。您可能需要向使用者推送更新,才能存取新功能或模型,有時這可能需要變更影響使用者的轉換依附元件。
  • 通訊協定限制:SDK 僅支援主要 API 的 HTTPS 和 Live API 的 WebSocket (WSS)。高階 SDK 用戶端不支援 gRPC。
  • 語言支援:SDK 支援目前的語言版本。如果您需要支援終止支援版本 (例如 Python 3.9),您需要維護分叉。

最佳做法:

  • 鎖定版本:在內部基礎映像檔中固定 SDK 版本,確保各團隊的穩定性。

直接整合 API

如果您要將程式庫發布給數千名開發人員、在受限環境中執行,或是建構需要 Gemini 最新功能的匯總工具,可能需要使用 REST 或 gRPC 直接整合 API。

優點:

  • 完整功能存取權:與 OpenAI 相容層不同,直接使用 API 可啟用 Gemini 專屬功能,例如上傳至 File API、建立內容快取,以及使用雙向 Live API。
  • 依附元件數量最少:在依附元件數量敏感的環境中,例如因大小或稽核成本而敏感。透過 fetch 等標準程式庫直接使用 API,或透過 httpx 等包裝函式使用 API,可確保程式庫保持輕巧。
  • 不限語言:這是唯一適用於 SDK 未涵蓋語言的路徑,例如 Rust、PHP 和 Ruby,因為沒有語言限制。
  • 效能:Direct API 的初始化負擔為零,可將無伺服器函式的冷啟動情形降至最低。

取捨:

  • 手動實作 Vertex AI:與 SDK 不同,直接使用 API 時,系統不會自動處理 AI Studio (API 金鑰) 和 Vertex AI (IAM) 之間的驗證差異。如要同時支援這兩個環境,請務必實作個別的授權處理常式。
  • 沒有原生型別或輔助程式:除非您自行實作,否則要求物件不會提供程式碼完成功能或編譯時間檢查。沒有用戶端「輔助程式」(例如函式到結構定義的轉換器),因此您必須手動編寫這個邏輯。

最佳做法

我們提供機器可讀取的規格,您可用於產生程式庫的型別定義,不必手動編寫。在建構程序中下載規格、產生型別,然後運送編譯的程式碼。

  • 端點: https://generativelanguage.googleapis.com/$discovery/OPENAPI3_0

整合 OpenAI SDK

如果您是優先採用統一結構定義 (OpenAI Chat Completions) 的平台,而非特定模型功能,這是最快速的途徑。

優點:

  • 低摩擦:您通常可以透過變更 baseURLapiKey,新增 Gemini 支援。這是整合「自備金鑰」實作項目的快速方法,無須編寫新程式碼,即可新增 Gemini 支援。
  • 限制:如果您只能使用 OpenAI SDK,且不需要進階 Gemini 功能 (例如 File API),或手動新增對 Google 搜尋建立基準等工具的支援,建議採用這個路徑。

取捨:

  • 功能限制:相容性層會限制核心 Gemini 功能。可用的伺服器端工具因平台而異,可能需要手動處理,才能與 Gemini API 工具搭配使用。
  • 翻譯負擔:由於 OpenAI 結構定義並非 1:1 對應至 Gemini 的架構,因此依賴相容性層會產生一些複雜性,需要額外的實作工作才能解決,例如將使用者「搜尋」工具對應至正確的平台工具。如果需要大量特殊情況,建議為每個平台使用專屬的 SDK 或 API。

最佳做法

盡可能直接整合 Gemini API。不過,為了達到最大相容性,建議使用可辨識不同供應商的程式庫,並為您處理工具和訊息對應。

所有合作夥伴的最佳做法:識別用戶端

以平台或程式庫身分呼叫 Gemini API 時,您必須使用 x-goog-api-client 標頭識別用戶端。

這樣一來,Google 就能識別特定流量區隔,如果您的程式庫產生特定錯誤模式,我們就能與您聯絡,協助您進行偵錯。

請使用 company-product/version 格式 (例如 acme-framework/1.2.0)。

導入範例

GenAI SDK

提供 API 用戶端後,SDK 會自動將自訂標頭附加至內部標頭。

from google import genai

client = genai.Client(
    api_key="...",
    http_options={
        "headers": {
            "x-goog-api-client": "acme-framework/1.2.0",
        }
    }
)

Direct API (REST)

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -H 'x-goog-api-client: acme-framework/1.2.0' \
    -d '{...}'

OpenAI SDK

from openai import OpenAI

client = OpenAI(
    api_key="...",
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/",
    default_headers={
        "x-goog-api-client": "acme-framework-oai/1.2.0",
    }
)

後續步驟