文本生成
Gemini 原生格式
为已有 Gemini 客户端保留的原生接口,支持文本与流式输出
POST
/
v1beta
/
models
/
{model}
:generateContent
curl -X POST https://api.qingbo.ai/v1beta/models/gemini-3.6-flash:generateContent \
-H "x-goog-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"role": "user",
"parts": [
{"text": "解释一下冒泡排序算法。"}
]
}
],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 1024
}
}'
import google.generativeai as genai
genai.configure(
api_key="YOUR_API_KEY",
transport="rest",
client_options={"api_endpoint": "https://api.qingbo.ai/v1beta"}
)
model = genai.GenerativeModel("gemini-3.6-flash")
response = model.generate_content(
"解释一下冒泡排序算法。",
generation_config={
"temperature": 0.7,
"max_output_tokens": 1024
}
)
print(response.text)
import { GoogleGenerativeAI } from '@google/generative-ai';
const genAI = new GoogleGenerativeAI('YOUR_API_KEY');
const model = genAI.getGenerativeModel({
model: 'gemini-3.6-flash',
baseUrl: 'https://api.qingbo.ai/v1beta'
});
const result = await model.generateContent({
contents: [{
role: 'user',
parts: [{ text: '解释一下冒泡排序算法。' }]
}],
generationConfig: {
temperature: 0.7,
maxOutputTokens: 1024
}
});
console.log(result.response.text());
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := map[string]interface{}{
"contents": []map[string]interface{}{
{
"role": "user",
"parts": []map[string]string{
{"text": "解释一下冒泡排序算法。"},
},
},
},
"generationConfig": map[string]interface{}{
"temperature": 0.7,
"maxOutputTokens": 1024,
},
}
body, _ := json.Marshal(payload)
url := "https://api.qingbo.ai/v1beta/models/gemini-3.6-flash:generateContent"
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(body))
req.Header.Set("x-goog-api-key", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
result, _ := io.ReadAll(resp.Body)
fmt.Println(string(result))
}
import java.net.http.*;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String payload = """
{
"contents": [
{
"role": "user",
"parts": [{"text": "解释一下冒泡排序算法。"}]
}
],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 1024
}
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.qingbo.ai/v1beta/models/gemini-3.6-flash:generateContent"))
.header("x-goog-api-key", "YOUR_API_KEY")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
路径与请求体沿用 Google Gemini 的原生格式,用
contents 与 generationConfig,鉴权头是 x-goog-api-key。本接口不提供 Chat 之外的额外能力,新接入建议直接用通用对话接口。
curl -X POST https://api.qingbo.ai/v1beta/models/gemini-3.6-flash:generateContent \
-H "x-goog-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"role": "user",
"parts": [
{"text": "解释一下冒泡排序算法。"}
]
}
],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 1024
}
}'
import google.generativeai as genai
genai.configure(
api_key="YOUR_API_KEY",
transport="rest",
client_options={"api_endpoint": "https://api.qingbo.ai/v1beta"}
)
model = genai.GenerativeModel("gemini-3.6-flash")
response = model.generate_content(
"解释一下冒泡排序算法。",
generation_config={
"temperature": 0.7,
"max_output_tokens": 1024
}
)
print(response.text)
import { GoogleGenerativeAI } from '@google/generative-ai';
const genAI = new GoogleGenerativeAI('YOUR_API_KEY');
const model = genAI.getGenerativeModel({
model: 'gemini-3.6-flash',
baseUrl: 'https://api.qingbo.ai/v1beta'
});
const result = await model.generateContent({
contents: [{
role: 'user',
parts: [{ text: '解释一下冒泡排序算法。' }]
}],
generationConfig: {
temperature: 0.7,
maxOutputTokens: 1024
}
});
console.log(result.response.text());
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := map[string]interface{}{
"contents": []map[string]interface{}{
{
"role": "user",
"parts": []map[string]string{
{"text": "解释一下冒泡排序算法。"},
},
},
},
"generationConfig": map[string]interface{}{
"temperature": 0.7,
"maxOutputTokens": 1024,
},
}
body, _ := json.Marshal(payload)
url := "https://api.qingbo.ai/v1beta/models/gemini-3.6-flash:generateContent"
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(body))
req.Header.Set("x-goog-api-key", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
result, _ := io.ReadAll(resp.Body)
fmt.Println(string(result))
}
import java.net.http.*;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String payload = """
{
"contents": [
{
"role": "user",
"parts": [{"text": "解释一下冒泡排序算法。"}]
}
],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 1024
}
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.qingbo.ai/v1beta/models/gemini-3.6-flash:generateContent"))
.header("x-goog-api-key", "YOUR_API_KEY")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
鉴权
string
你的 WaveAPI Key,与
x-goog-api-key、查询参数 key 三选一。Authorization: Bearer YOUR_API_KEY
string
你的 WaveAPI Key,与
x-goog-api-key、Authorization 三选一。?key=YOUR_API_KEY
请求参数
string
必填
模型 ID,作为 URL 路径参数。可以走这个接口的共八个模型:
gemini-3.8-flashgemini-3.7-flashgemini-3.6-flashgemini-3.5-flashgemini-3.1-pro-previewgemini-3-flash-previewgemini-2.5-progemini-2.5-flash-lite
gemini-3.5-flash-lite 不支持本接口,发到本接口会返回 400。各模型的计费方式与支持的能力见文本模型总览 · Google Gemini。响应
{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "量子计算是一种利用量子力学原理..."
}
]
},
"finishReason": "STOP",
"safetyRatings": [...]
}
],
"usageMetadata": {
"promptTokenCount": 12,
"candidatesTokenCount": 156,
"totalTokenCount": 168
}
}
使用示例
curl https://api.qingbo.ai/v1beta/models/gemini-3.6-flash:generateContent \
-H "Content-Type: application/json" \
-H "x-goog-api-key: YOUR_API_KEY" \
-d '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "解释量子计算的基本原理"
}
]
}
],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 1000,
"topP": 0.95
}
}'
import google.generativeai as genai
genai.configure(
api_key="YOUR_API_KEY",
transport="rest",
client_options={"api_endpoint": "https://api.qingbo.ai/v1beta"}
)
model = genai.GenerativeModel('gemini-3.6-flash')
response = model.generate_content(
"解释量子计算的基本原理",
generation_config={
"temperature": 0.7,
"max_output_tokens": 1000,
"top_p": 0.95
}
)
print(response.text)
import { GoogleGenerativeAI } from '@google/generative-ai';
const genAI = new GoogleGenerativeAI('YOUR_API_KEY');
const model = genAI.getGenerativeModel({
model: 'gemini-3.6-flash',
baseUrl: 'https://api.qingbo.ai/v1beta'
});
const result = await model.generateContent({
contents: [{
role: 'user',
parts: [{ text: '解释量子计算的基本原理' }]
}],
generationConfig: {
temperature: 0.7,
maxOutputTokens: 1000,
topP: 0.95
}
});
console.log(result.response.text());
流式
response = model.generate_content(
"写一个关于AI的故事",
stream=True
)
for chunk in response:
print(chunk.text, end="")
用量与计费
原生响应在usageMetadata 里报告用量,不带 usage.cost 字段,实际扣费到控制台用量记录核对。
promptTokenCount 已包含 cachedContentTokenCount;计费的输出是 candidatesTokenCount + thoughtsTokenCount
两者之和;candidatesTokenCount 与 Chat 的 completion_tokens 语义不同,后者已含思考 token。
流式以最终的累计用量为准,各帧用量不相加;末帧可以只有用量、candidates 为空数组,读取时先取
usageMetadata 再判断候选内容。单价与计费通则见文本模型总览 · 计费口径。
当前不支持
以下请求会返回400,不计费:
- 显式上下文缓存 ——
cachedContent/cached_content在 Gemini 全系拒绝,只开放自动缓存;cache_control会被忽略,不返回400。见缓存。 - 内置工具 —— grounding、托管搜索等厂商内置工具;由调用方自己执行的函数工具不在此列。
service_tier取standard/default以外的值。- 函数调用与结构化输出——需要这两项时走通用对话接口。
相关文档
⌘I
curl -X POST https://api.qingbo.ai/v1beta/models/gemini-3.6-flash:generateContent \
-H "x-goog-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"role": "user",
"parts": [
{"text": "解释一下冒泡排序算法。"}
]
}
],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 1024
}
}'
import google.generativeai as genai
genai.configure(
api_key="YOUR_API_KEY",
transport="rest",
client_options={"api_endpoint": "https://api.qingbo.ai/v1beta"}
)
model = genai.GenerativeModel("gemini-3.6-flash")
response = model.generate_content(
"解释一下冒泡排序算法。",
generation_config={
"temperature": 0.7,
"max_output_tokens": 1024
}
)
print(response.text)
import { GoogleGenerativeAI } from '@google/generative-ai';
const genAI = new GoogleGenerativeAI('YOUR_API_KEY');
const model = genAI.getGenerativeModel({
model: 'gemini-3.6-flash',
baseUrl: 'https://api.qingbo.ai/v1beta'
});
const result = await model.generateContent({
contents: [{
role: 'user',
parts: [{ text: '解释一下冒泡排序算法。' }]
}],
generationConfig: {
temperature: 0.7,
maxOutputTokens: 1024
}
});
console.log(result.response.text());
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
payload := map[string]interface{}{
"contents": []map[string]interface{}{
{
"role": "user",
"parts": []map[string]string{
{"text": "解释一下冒泡排序算法。"},
},
},
},
"generationConfig": map[string]interface{}{
"temperature": 0.7,
"maxOutputTokens": 1024,
},
}
body, _ := json.Marshal(payload)
url := "https://api.qingbo.ai/v1beta/models/gemini-3.6-flash:generateContent"
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(body))
req.Header.Set("x-goog-api-key", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
result, _ := io.ReadAll(resp.Body)
fmt.Println(string(result))
}
import java.net.http.*;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String payload = """
{
"contents": [
{
"role": "user",
"parts": [{"text": "解释一下冒泡排序算法。"}]
}
],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 1024
}
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.qingbo.ai/v1beta/models/gemini-3.6-flash:generateContent"))
.header("x-goog-api-key", "YOUR_API_KEY")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}