Gemini 原生协议接入
在公开模型目录选择声明 gemini 协议的模型,再用平台凭据查询 GET /v1beta/models。返回条目的 name 使用 models/{model} 格式,supportedGenerationMethods 描述生成方法。目录仅展示当前凭据有权使用且可调用的模型。
使用 AICredits API Key 作为 x-goog-api-key,或以 Bearer 传递平台凭据。不要填写 Google 密钥。API 根地址不带 /v1,请求使用 /v1beta。
bash
#!/usr/bin/env bash
set -euo pipefail
: "${AICREDITS_API_KEY:?inject a platform key from a secure source}"
: "${API_BASE_URL:?set the data API origin without a protocol suffix}"
: "${MODEL:?choose an accessible Gemini model ID without models/}"
[[ "$MODEL" =~ ^[A-Za-z0-9_.-]{1,128}$ && "$MODEL" =~ [A-Za-z0-9_-] ]] || exit 1
curl --fail-with-body "${API_BASE_URL%/}/v1beta/models/${MODEL}:generateContent" \
-H "x-goog-api-key: ${AICREDITS_API_KEY}" \
-H 'Content-Type: application/json' \
--data '{"contents":[{"role":"user","parts":[{"text":"<YOUR_PROMPT>"}]}]}'需要流式时,将路径改为 :streamGenerateContent?alt=sse 并按 SSE 事件读取;不要添加 OpenAI 风格的 stream 字段。Token 计数使用 :countTokens,响应字段为 totalTokens,不是 Messages 的 input_tokens。
官方 SDK
TypeScript、Swift 和 Kotlin 都提供 listGeminiModels、getGeminiModel、generateGeminiContent、countGeminiTokens;TypeScript 另有 streamGeminiContent。Gemini 请求使用 contents / parts 和原生参数,不使用 Chat 的 messages。
ts
const result = await gateway.generateGeminiContent(model, {
contents: [{ role: 'user', parts: [{ text: '<YOUR_PROMPT>' }] }],
})某个 Gemini 模型也可能声明 Chat 或 Messages 兼容协议;使用这些入口时必须换成对应请求结构。模型能力、工具调用和输出限制以公开目录和所选协议为准。更多说明见官方 SDK和流式指南。