创建对话请求(Gemini)

Token Hubs 兼容 Gemini 官方 generateContent / streamGenerateContent 规范,请求体沿用 contents、tools、toolConfig 等字段,支持流式响应与函数调用。

请求

Endpoint

POST https://api.token-hubs.com/v1beta/{model=models}

Headers

Authorization: string必填

Bearer Token,格式:Bearer YOUR_API_KEY

Content-Type: string必填

请求体格式,固定为 application/json

model: string必填

用于生成补全的 Model 的名称,格式:models/{model}。

示例请求

curl -X POST 'https://api.token-hubs.com/v1beta/models/gemini-3.1-pro-preview:generateContent' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -d '{
  "contents": [{
    "parts": [{"text": "Write a story about a magic backpack"}]
  }]
}'

Request Body

参数按用途分组展示,常用参数默认展开,进阶参数收纳在底部折叠区,按需点开即可。

核心参数

与模型当前对话的内容,对于单轮查询,这是单个实例。对于多轮查询(例如聊天),这是包含对话历史记录和最新请求的重复字段。

systemInstruction: object

开发者设置了系统指令。目前仅限文本。

工具调用

tools: object array

仅限输入。不可变。模型可能用于生成下一个回答的 Tools 列表。

请求中指定的任何 Tool 的工具配置。

生成配置

模型生成和输出的配置选项。

其他可选参数(点击展开)
safetySettings: object array

用于屏蔽不安全内容的唯一 SafetySetting 实例的列表。

cachedContent: string

用作提供预测的上下文的缓存内容的名称。格式:cachedContents/{cachedContent}

Response Body

模型生成的候选回答列表。每个候选包含生成的内容、完成原因等信息。

promptFeedback: object

与内容过滤器相关的提示反馈,例如是否因安全策略被过滤等。

本次生成请求的 token 使用情况元数据。

modelVersion: string

实际用于生成回答的模型版本标识。

responseId: string

用于唯一标识每个响应的 ID,便于追踪与调试。

响应示例

示例响应(JSON 格式)

{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {
            "text": "这是一个关于魔法背包的故事。从前,有一个名叫艾米的小女孩,她在一个古老的古董店里发现了一个看起来普通的背包。然而,当她第一次使用它时,她发现这个背包有着神奇的能力——无论她放进去什么,背包都会自动整理并扩大内部空间。"
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        }
      ],
      "tokenCount": 156,
      "index": 0
    }
  ],
  "promptFeedback": {
    "blockReason": "BLOCK_REASON_UNSPECIFIED"
  },
  "usageMetadata": {
    "promptTokenCount": 12,
    "candidatesTokenCount": 156,
    "totalTokenCount": 168,
    "cachedContentTokenCount": 0
  },
  "modelVersion": {
    "version": "gemini-3.1-pro-preview",
    "launchDate": {
      "year": 2024,
      "month": 12,
      "day": 11
    }
  },
  "responseId": "chatcmpl-abc123xyz456"
}

代码示例

Python 示例

使用 Google SDK(推荐)

from google import genai

client = genai.Client(
    api_key="YOUR_API_KEY",
    http_options={"base_url": "https://api.token-hubs.com"},
)

# 非流式调用
response = client.models.generate_content(
    model="gemini-3.1-pro-preview", contents="你好,请介绍一下你自己"
)
print(response.text)

# 流式调用
response = client.models.generate_content_stream(
    model="gemini-3.1-pro-preview",
    contents=["你好, 介绍一下你自己"]
)
for chunk in response:
    print(chunk.text, end="")

Node.js 示例

使用 Google SDK(推荐)

const { GoogleGenerativeAI } = require('@google/generative-ai');

const genAI = new GoogleGenerativeAI('YOUR_API_KEY');

// 非流式调用
async function main() {
    const model = genAI.getGenerativeModel({ 
        model: 'gemini-3.1-pro-preview',
        baseUrl: 'https://api.token-hubs.com'
    });

    const result = await model.generateContent('你好,请介绍一下你自己');
    console.log(result.response.text());
}

main();

// 流式调用
const { GoogleGenerativeAI } = require('@google/generative-ai');

const genAI = new GoogleGenerativeAI('YOUR_API_KEY');

async function main() {
    const model = genAI.getGenerativeModel({ 
        model: 'gemini-3.1-pro-preview',
        baseUrl: 'https://api.token-hubs.com'
    });

    const result = await model.generateContentStream('讲个笑话');
    
    for await (const chunk of result.stream) {
        process.stdout.write(chunk.text());
    }
}

main();