您可以使用 OpenAI 程式庫 (Python 和 TypeScript/JavaScript) 和 REST API 存取 Gemini 模型。Vertex AI 中的 OpenAI 程式庫僅支援 Google Cloud Auth。如果您尚未開始使用 OpenAI 程式庫,建議您直接呼叫 Gemini API。
Python
import openai from google.auth import default import google.auth.transport.requests # TODO(developer): Update and un-comment below lines # project_id = "PROJECT_ID" # location = "global" # Programmatically get an access token credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"]) credentials.refresh(google.auth.transport.requests.Request()) # OpenAI Client client = openai.OpenAI( base_url=f"https://aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi", api_key=credentials.token ) response = client.chat.completions.create( model="google/gemini-2.0-flash-001", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Explain to me how AI works"} ] ) print(response.choices[0].message) 異動內容
api_key=credentials.token:如要使用 Google Cloud 驗證,請使用範例程式碼取得Google Cloud 驗證權杖。base_url:這會告知 OpenAI 程式庫將要求傳送至 Google Cloud,而非預設網址。model="google/gemini-2.0-flash-001":從 Vertex 代管的模型中,選擇相容的 Gemini 模型。
思考
Gemini 2.5 模型經過訓練,能夠思考複雜問題,因此推論能力大幅提升。Gemini API 隨附「思考預算」參數,可精細控管模型的思考量。
與 Gemini API 不同,OpenAI API 提供三種思考控制等級:「低」、「中」和「高」,這些等級會在幕後對應至 1K、8K 和 24K 的思考權杖預算。
完全不指定推理工作,等同於不指定思考預算。
如要透過與 OpenAI 相容的 API 更直接地控管思考預算和其他思考相關設定,請使用 extra_body.google.thinking_config。
Python
import openai from google.auth import default import google.auth.transport.requests # TODO(developer): Update and un-comment below lines # project_id = "PROJECT_ID" # location = "global" # # Programmatically get an access token credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"]) credentials.refresh(google.auth.transport.requests.Request()) # OpenAI Client client = openai.OpenAI( base_url=f"https://aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi", api_key=credentials.token ) response = client.chat.completions.create( model="google/gemini-2.5-flash", reasoning_effort="low", messages=[ {"role": "system", "content": "You are a helpful assistant."}, { "role": "user", "content": "Explain to me how AI works" } ] ) print(response.choices[0].message) 串流
Gemini API 支援串流回應。
Python
import openai from google.auth import default import google.auth.transport.requests # TODO(developer): Update and un-comment below lines # project_id = "PROJECT_ID" # location = "global" credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"]) credentials.refresh(google.auth.transport.requests.Request()) client = openai.OpenAI( base_url=f"https://aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi", api_key=credentials.token ) response = client.chat.completions.create( model="google/gemini-2.0-flash", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Hello!"} ], stream=True ) for chunk in response: print(chunk.choices[0].delta) 函式呼叫
有了函式呼叫功能,就能更輕鬆地從生成式模型取得結構化資料輸出內容,且 Gemini API 支援這項功能。
Python
import openai from google.auth import default import google.auth.transport.requests # TODO(developer): Update and un-comment below lines # project_id = "PROJECT_ID" # location = "global" credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"]) credentials.refresh(google.auth.transport.requests.Request()) client = openai.OpenAI( base_url=f"https://aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi", api_key=credentials.token ) tools = [ { "type": "function", "function": { "name": "get_weather", "description": "Get the weather in a given location", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. Chicago, IL", }, "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}, }, "required": ["location"], }, } } ] messages = [{"role": "user", "content": "What's the weather like in Chicago today?"}] response = client.chat.completions.create( model="google/gemini-2.0-flash", messages=messages, tools=tools, tool_choice="auto" ) print(response) 圖像解讀
Gemini 模型原生支援多種形式的內容,且在許多常見的視覺工作中,都能提供同級最佳的效能。
Python
from google.auth import default import google.auth.transport.requests import base64 from openai import OpenAI # TODO(developer): Update and un-comment below lines # project_id = "PROJECT_ID" # location = "global" # Programmatically get an access token credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"]) credentials.refresh(google.auth.transport.requests.Request()) # OpenAI Client client = openai.OpenAI( base_url=f"https://aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi", api_key=credentials.token, ) # Function to encode the image def encode_image(image_path): with open(image_path, "rb") as image_file: return base64.b64encode(image_file.read()).decode('utf-8') # Getting the base64 string # base64_image = encode_image("Path/to/image.jpeg") response = client.chat.completions.create( model="google/gemini-2.0-flash", messages=[ { "role": "user", "content": [ { "type": "text", "text": "What is in this image?", }, { "type": "image_url", "image_url": { "url": f"data:image/jpeg;base64,{base64_image}" }, }, ], } ], ) print(response.choices[0]) 生成圖片
Python
from google.auth import default import google.auth.transport.requests import base64 from openai import OpenAI # TODO(developer): Update and un-comment below lines # project_id = "PROJECT_ID" # location = "global" # Programmatically get an access token credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"]) credentials.refresh(google.auth.transport.requests.Request()) # OpenAI Client client = openai.OpenAI( base_url=f"https://aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi", api_key=credentials.token, ) # Function to encode the image def encode_image(image_path): with open(image_path, "rb") as image_file: return base64.b64encode(image_file.read()).decode('utf-8') # Getting the base64 string base64_image = encode_image("/content/wayfairsofa.jpg") response = client.chat.completions.create( model="google/gemini-2.0-flash", messages=[ { "role": "user", "content": [ { "type": "text", "text": "What is in this image?", }, { "type": "image_url", "image_url": { "url": f"data:image/jpeg;base64,{base64_image}" }, }, ], } ], ) print(response.choices[0]) 音訊理解
分析音訊輸入內容:
Python
from google.auth import default import google.auth.transport.requests import base64 from openai import OpenAI # TODO(developer): Update and un-comment below lines # project_id = "PROJECT_ID" # location = "global" # Programmatically get an access token credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"]) credentials.refresh(google.auth.transport.requests.Request()) # OpenAI Client client = openai.OpenAI( base_url=f"https://aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi", api_key=credentials.token, ) with open("/path/to/your/audio/file.wav", "rb") as audio_file: base64_audio = base64.b64encode(audio_file.read()).decode('utf-8') response = client.chat.completions.create( model="gemini-2.0-flash", messages=[ { "role": "user", "content": [ { "type": "text", "text": "Transcribe this audio", }, { "type": "input_audio", "input_audio": { "data": base64_audio, "format": "wav" } } ], } ], ) print(response.choices[0].message.content) 結構化輸出內容
Gemini 模型可以輸出任何您定義的結構的 JSON 物件。
Python
from google.auth import default import google.auth.transport.requests from pydantic import BaseModel from openai import OpenAI # TODO(developer): Update and un-comment below lines # project_id = "PROJECT_ID" # location = "global" # Programmatically get an access token credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"]) credentials.refresh(google.auth.transport.requests.Request()) # OpenAI Client client = openai.OpenAI( base_url=f"https://aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi", api_key=credentials.token, ) class CalendarEvent(BaseModel): name: str date: str participants: list[str] completion = client.beta.chat.completions.parse( model="google/gemini-2.0-flash", messages=[ {"role": "system", "content": "Extract the event information."}, {"role": "user", "content": "John and Susan are going to an AI conference on Friday."}, ], response_format=CalendarEvent, ) print(completion.choices[0].message.parsed) 目前限制
存取權杖的預設效期為 1 小時。過期後必須重新整理。詳情請參閱這個程式碼範例。
我們正在擴大功能支援範圍,因此 OpenAI 程式庫仍處於預先發布階段。如有任何問題或需要協助,請前往 Google Cloud 社群發文。
後續步驟
使用 Google Gen AI 程式庫,發揮 Gemini 的潛力。
如要查看更多範例,請使用與 OpenAI 相容的語法,透過 Chat Completions API 取得。
請參閱總覽頁面,瞭解支援哪些 Gemini 模型和參數。