﻿# 整理開發者應該知道的 Google 最新 Gemini API 相關知識

Google 最近一年來承受著 OpenAI 帶來的極大壓力，感覺公司內部不斷重組，產品名稱也是一直在變化。由於我最近花了比較多時間在研究 Google 的 Gemini 技術，過程一直不斷被「命名」苦惱，直到最近才比較清楚整個來龍去脈。這篇文章我打算來整理一下 Google 的 Gemini 到底推出過多少「相似」的名稱，包含分類方式、產品名稱、舊名稱、新名稱、變化的名稱、套件名稱、模型名稱、工具名稱、函式庫名稱等等，坐好啊，馬上起飛！😅

![Build with Gemini](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/e03e0d50615601b376f6-38f74a2c-469b-44bf-a033-83253a76b986.webp)

### 一個主軸

幾本上 Google 的 AI 產品線非常大，不過 `Gemini` 是屬於 [Generative AI](https://cloud.google.com/ai/generative-ai?hl=en) 這個分支下的產品，完全是生成式 AI 的範疇。

在這個主軸上，你可能會看到三種不同的說法：

1.  Generative AI
    
2.  Google Cloud generative AI
    
3.  Google Cloud Generative AI (大小寫我視為不同)
    

### 讓消費者體驗 AI 的產品

為了讓所有人都能體驗 Google AI 的強大，Google 也推出了一個消費者體驗的網站，名叫：[Gemini](https://gemini.google.com/)

-   新名: `Gemini` (免費版) 或 `Gemini Advanced` (付費版)
    
    目前的最新版網址是 [https://gemini.google.com/](https://gemini.google.com/)
    
    **免費版**背後用 `Gemini Pro` 模型
    
    **付費版**背後用 `Gemini Ultra` 模型
    
-   舊名: `Bard`
    
    如果還有使用者連到 [https://bard.google.com/](https://bard.google.com/) 的話，會自動轉向到新版網站。
    

如果我們提到 `Gemini AI` 的話，通常講的並不是 API 服務，而是這個給消費者的網站！

### 給開發者的 API 服務

基本上 Google 提供的 Gemini API 有兩大分類：

1.  `Google AI Gemini API` (消費級) (沒有品質保證)
    
    官網: [https://ai.google.dev/](https://ai.google.dev/)
    
    免費，限制 60 QPM (Queries Per Minute)
    
    其他可能的別名: `Gemini API on Google AI`、`Generative Language API` (在 [GCP Console](https://console.cloud.google.com/) 上看到的名稱)
    
    單講 `Gemini API` 可能容易讓人誤解，因為這是一種比較籠統的說法，不過通常代表 `Google AI Gemini API` 這種。
    
2.  `Vertex AI Gemini API` (企業級) (有品質保證)
    
    官網: [https://cloud.google.com/vertex-ai/](https://cloud.google.com/vertex-ai/)
    
    需綁定 GCP 付款帳戶，依照呼叫的 Tokens 數計費。
    
    其他可能的別名:
    
    -   `Gemini API on Vertex AI`
    -   `Gemini API in Google Cloud Vertex AI`
    -   `Google Cloud Vertex AI Gemini API`

> 備註: 在應用程式開發的領域中單講 `Gemini AI` 其實是不太精準的寫法，我們不會在用 API 的時候使用這個名字，但偶爾會看到有人這樣寫。( AI 與 API 傻傻分不清楚? )

Gemini 提供了三種模型大小，但目前只有一種有公開：

1.  `Gemini Nano` (未公開)
    
    微型生成式模型，專為移動裝置和邊緣裝置而設計。
    
2.  `Gemini Pro` (**已有 API 可使用**)
    
    介於規模與效能之間的生成式模型，已公開。
    
3.  `Gemini Ultra` (未公開)
    
    目前規模最大的 Gemini 生成式模型。
    

Gemini 提供的模型主要分成三種，在「模型代碼」方面各有不同的命名方式：

1.  **最新版** ( `Latest` )
    
    最前沿版本。基礎模型會定期更新，也可能為預覽版本。僅供「探索性測試」應用程式和「原型」使用此版本。
    
    命名方式: `<model>`\-`<generation>`\-`<variation>`\-`latest`
    
    命名範例: `gemini-1.0-pro-latest`
    
2.  **最新穩定版** ( `Latest stable` )
    
    最新穩定版本。
    
    命名方式: `<model>`\-`<generation>`\-`<variation>`
    
    命名範例: `gemini-1.0-pro`
    
3.  **特定穩定版** ( `Stable` )
    
    特定的穩定模型版本。
    
    命名方式: `<model>`\-`<generation>`\-`<variation>`\-`<version>`
    
    命名範例: `gemini-1.0-pro-001`
    

Gemini 的模型還擁有許多**變體**(variations)，各自擁有不同的能力與限制，建議到 [Model variations](https://ai.google.dev/models/gemini#model-variations) 查看細節。

1.  Gemini 1.5 Pro (Preview only)
    
    多模態模型，可輸入文字和圖像，並生成相關的文字。
    
    模型代碼: `models/gemini-1.5-pro`
    
2.  Gemini Pro
    
    文字模型，只能輸入文字，並生成相關的文字。
    
    模型代碼: `models/gemini-pro`
    
    -   最新版: `gemini-1.0-pro-latest`
    -   最新穩定版: `gemini-1.0-pro`
    -   特定穩定版:
        -   `gemini-1.0-pro-001`
3.  Gemini 1.0 Pro Vision
    
    多模態模型，可輸入文字和圖像，並生成相關的文字。
    
    模型代碼: `models/gemini-pro-vision`
    
    -   最新版: `gemini-1.0-pro-vision-latest`
    -   最新穩定版: `gemini-1.0-pro-vision`
    -   特定穩定版:
        -   `gemini-1.0-pro-vision-001`
4.  Embedding
    
    多模態模型，可輸入文字和圖像，並生成相關的文字。
    
    模型代碼: `models/embedding-001`
    
5.  AQA (Attributed Question & Answering)
    
    問答模型，可輸入文字，並生成相關的文字。
    
    模型代碼: `models/aqa`
    
6.  PaLM 2
    
    這是 Gemini 前一代的語言模型。
    
    -   最新版:
        -   `text-bison`
        -   `text-bison-32k`
    -   特定穩定版:
        -   `text-bison-32k@002`
        -   `text-bison@001`
        -   `text-bison@002`
        -   `text-unicorn@001`

Gemini 的 API 也有區分版本，不過這裡的版本是指 API 的版本，不是模型的版本。

我以我常用的 API 端點為例，我基本上用的是 `v1beta` 版本，可以體驗比較多功能，例如 `Generate Content - Function calls`：

```
https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-001:generateContent?key={ApiKey}
```

所以在呼叫 Gemini API 時，要注意你呼叫的 API 端點上使用的版本：

-   `v1`
    
    穩定版本。在呼叫 `Vertex AI Gemini API` 的時候，由於會用在生產環境，所以通常都是用 `v1` 穩定版本。
    
    穩定版本中的功能在主要版本的生命週期內都獲得完整支持。
    
    如果存在重大變更，將創建下一個主要版本，並在合理時間後棄用現有版本。次要變更可能會引入到 API 中，而不會更改主要版本號。
    
-   `v1beta`
    
    此版本包含可能正在開發的搶鮮體驗功能，目前大多數 `Google AI Gemini API` 的 API 都是以 `v1beta` 為主。
    
    `v1beta` 可能會快速迭代更新且存在重大變更。也不能保證 Beta 版本中的功能會遷移到穩定版本。
    
    由於其不穩定性，您不應使用此版本啟動生產環境的應用程式。
    

> 完整的清單可以看 [API versions explained](https://ai.google.dev/docs/api_versions) 文件。

### Gemini 的 API 實驗工具

Google 提供了一個專門為開發人員打造的實驗工具，讓開發者可以在瀏覽器中直接體驗 Gemini 的 API 功能，不過，他也直接分成了兩套：

1.  [Google AI Studio](https://aistudio.google.com) (舊名: `MakerSuite` )
    
    這是一個網頁版的實驗工具，可以直接在瀏覽器中體驗 `Google AI Gemini API` 的各種能力。
    
2.  [Vertex AI Studio](https://cloud.google.com/generative-ai-studio)
    
    這是一個網頁版的實驗工具，可以直接在瀏覽器中體驗 `Vertex AI Gemini API` 的各種能力。
    

### Geimin API 的 Python SDK

我們在 [Google AI Studio](https://aistudio.google.com) 或 [Vertex AI Studio](https://cloud.google.com/generative-ai-studio) 中體驗完 API 功能後，都有現成的 `Get Code` 功能，可以很方便的用來取得相對應的 `Python` 程式碼或 `cURL` 命令，不過兩個不同版本的 Python SDK 套件名稱差異還蠻大的。

-   `Google AI Gemini API` 的 Python SDK
    
    套件名稱: [`google-generativeai`](https://pypi.org/project/google-generativeai/)
    
    開源專案: [https://github.com/google/generative-ai-python](https://github.com/google/generative-ai-python)
    
    API 文件: [Module: google.generativeai](https://ai.google.dev/api/python/google/generativeai)
    
    範例程式: [google/gemini-cookbook](https://github.com/google-gemini/cookbook)
    
    其他別名：
    
    -   Google AI SDK
    -   Google AI SDK for Python
    -   Google AI Python SDK
    -   Google Python SDK for the Gemini API
-   `Vertex AI Gemini API` 的 Python SDK
    
    套件名稱: [`google-cloud-aiplatform`](https://pypi.org/project/google-cloud-aiplatform/)
    
    開源專案: [https://github.com/googleapis/python-aiplatform/tree/main/google/cloud/aiplatform](https://github.com/googleapis/python-aiplatform/tree/main/google/cloud/aiplatform)
    
    API 文件: [Vertex AI SDK for Python](https://cloud.google.com/python/docs/reference/aiplatform/latest)
    
    範例程式: [GoogleCloudPlatform/generative-ai](https://github.com/GoogleCloudPlatform/generative-ai)
    
    其他別名：
    
    -   Vertex AI SDK for Python
    -   Vertex GAPIC clients
    -   Vertex AI API client library (基於 [GAPIC](https://googleapis.github.io/gapic-generators/) 的 Python SDK)
    -   Generative AI on Vertex AI

### 總結

Gemini 這麼多種花式的命名，老實跟你說，連 Google 的官方文件也會寫錯，更別說初入 Google Cloud 叢林的小白兔了。😅

我在實驗的過程中，有很明顯的發現，`Google AI Gemini API` 真的相當不穩定，每天的狀況都不太一樣。但是相對的 `Vertex AI Gemini API` 就穩定多了，而且回應速度也非常穩定，我覺得可靠許多！

最後就是我個人使用 `Gemini` 的小小心得：

1.  給一般大眾的 [Gemini](https://gemini.google.com/) 網站功能非常多，在輸入提示詞的時候，你的提示詞會被系統自動加料，所以基本上不太能用來做**提示工程**的相關實驗。
    
2.  [Google AI Studio](https://aistudio.google.com) 雖然感覺上背後就是直接呼叫 `Google AI Gemini API`，但實際上有套了一層殼，Google 還是有在這個介面背後還是有偷偷做了一些事，應該是例外處理或負責任 AI 等過濾工作，但我無從得知他們實作做了哪些調整，總之跟我自己呼叫 API 的實際狀況是有差距的。
    
3.  [Vertex AI Studio](https://cloud.google.com/generative-ai-studio) 也是同理，背後也是套了一層殼。
    
4.  即便兩套 `AI Studio` 都有套殼，但是拿來做**提示工程**的實驗是完全沒問題的！👍
    
5.  要使用 Gemini API 來開發應用程式，目前有兩個截然不同的 Python SDK 套件，不要選錯！
    
    -   `Google AI Gemini API` 的 Python SDK: [google-generativeai](https://pypi.org/project/google-generativeai/)
        
    -   `Vertex AI Gemini API` 的 Python SDK: [google-cloud-aiplatform](https://pypi.org/project/google-cloud-aiplatform/)
        

### 相關連結

-   Gemini
    -   官網: [https://gemini.google.com/](https://gemini.google.com/)
    -   版本更新: [https://gemini.google.com/updates](https://gemini.google.com/updates)
-   Google AI Gemini API
    -   官網: [https://ai.google.dev/](https://ai.google.dev/)
    -   文件: [https://ai.google.dev/docs](https://ai.google.dev/docs)
    -   文件 (API): [https://ai.google.dev/api](https://ai.google.dev/api)
    -   範例: [https://ai.google.dev/examples](https://ai.google.dev/examples)
    -   Google AI Studio: [https://aistudio.google.com/](https://aistudio.google.com/)
-   Vertex AI Gemini API
    -   官網: [https://cloud.google.com/vertex-ai/](https://cloud.google.com/vertex-ai/)
    -   文件: [https://cloud.google.com/vertex-ai/generative-ai/docs/learn/overview](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/overview)
    -   範例: [https://cloud.google.com/vertex-ai/generative-ai/docs/learn/prompt-samples](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/prompt-samples)
    -   Vertex AI Studio: [https://cloud.google.com/generative-ai-studio](https://cloud.google.com/generative-ai-studio)
-   文件翻譯
    -   [Google Gemini 文件](https://github.com/doggy8088/generative-ai-docs/blob/main/README.zh.md)
        -   [https://github.com/google/generative-ai-docs](https://github.com/google/generative-ai-docs)
    -   [Gemini API 實戰指南](https://github.com/doggy8088/gemini-api-cookbook/blob/main/README.zh.md) (以 `Google AI` 為主)
        -   [https://github.com/google-gemini/gemini-api-cookbook](https://github.com/google-gemini/gemini-api-cookbook)
    -   [生成式 AI](https://github.com/doggy8088/generative-ai/blob/main/README.zh.md) (以 `Vertex AI` 為主)
        -   [https://github.com/GoogleCloudPlatform/generative-ai](https://github.com/GoogleCloudPlatform/generative-ai)
