NezhaGateNezhaGate
POST https://nezhagate.com/v1/chat/completions

Gemini 3.8 Flash 对话接口(Google):3.8 代的 Flash 模型,面向长周期编程、Agent 工作流和复杂推理。动态思考(简单问题快答、难题多想),上下文约 100 万 token、最多输出 64K,支持图片输入。兼容 OpenAI SDK。

📥 上下文窗口(最大输入):约 1,000,000 tokens(百万级超长上下文)。

在 Playground 试用 →

快速开始

两步跑通:先发一个普通请求,再试流式输出。把 YOUR_API_KEY 换成你的 Key,下面的命令可以直接运行。接口和 OpenAI 的 Chat Completions 一致,已有的 OpenAI 代码只要改 base_url 和 model。

第 1 步 · 发送请求

curl
curl https://nezhagate.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gemini-3.8-flash", "messages": [{"role": "user", "content": "用一句话解释什么是光合作用"}]}'

返回(HTTP 200)

JSON
{
  "id": "chatcmpl-7f3c9a1e2b4d6f8a",
  "object": "chat.completion",
  "created": 1791281400,
  "model": "gemini-3.8-flash",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "光合作用是植物利用阳光,把二氧化碳和水转化成糖并释放氧气的过程。"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 18,
    "completion_tokens": 42,
    "total_tokens": 60,
    "prompt_tokens_details": {"cached_tokens": 0}
  }
}

message.content 是回答。usage 是这一单计费用的 token 数,其中 prompt_tokens_details.cached_tokens 是命中缓存、按缓存价计费的部分。

第 2 步 · 流式输出(推荐)

curl
curl -N https://nezhagate.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gemini-3.8-flash", "stream": true, "messages": [{"role": "user", "content": "用一句话解释什么是光合作用"}]}'

流式返回标准的 SSE:每一块的正文在 choices[0].delta.content,最后一块带 usage,以 data: [DONE] 结束。回答长、或者模型要先思考时,请用流式:非流式请求最长约 10 分钟,超过会被断开。

Python(OpenAI SDK)

Python
from openai import OpenAI

client = OpenAI(base_url="https://nezhagate.com/v1", api_key="YOUR_API_KEY")

# 1. 一问一答
resp = client.chat.completions.create(
    model="gemini-3.8-flash",
    messages=[{"role": "user", "content": "用一句话解释什么是光合作用"}],
)
print(resp.choices[0].message.content)

# 2. 流式输出
stream = client.chat.completions.create(
    model="gemini-3.8-flash",
    messages=[{"role": "user", "content": "用一句话解释什么是光合作用"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

认证

Header
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

在控制台创建 API Key 后即可调用。

规格速览

上下文窗口~1,000,000 token
单次最多输出64K token
输入文本、图片
思考动态思考:模型按问题难度决定想多少
工具调用不作保证:tools 可能被忽略,模型直接作答
联网搜索支持(web_search: true,搜索本身不收费)
接口/v1/chat/completions
流式输出支持(stream: true,SSE)
计费方式按 token:输入、输出(含思考)和缓存命中分别计价,失败不收费

请求参数

POST /v1/chat/completions 的请求体(JSON),和 OpenAI 的 Chat Completions 相同。下表是常用参数,以及它们在这个模型上的实际效果:

参数类型必填说明
modelstring是模型 id:gemini-3.8-flash。
messagesarray是对话消息数组,每条有 role(system / user / assistant / tool)和 content。content 可以是字符串,也可以是 text 和 image_url 组成的数组(看图,见下文)。多轮对话把历史消息按顺序全部带上。
streamboolean否true 时以 SSE 流式返回,最后一块带 usage。默认 false。
max_tokensinteger否输出上限,思考 token 也算在里面。给得太小,模型可能在写出正文前就用完:网关会返回 400 max_tokens_too_small,不计费(建议 512 以上)。部分模型上,过小的值会被自动调高到能完整作答的下限,仍只按实际用量计费。
temperature / top_pnumber否采样参数,原样转给模型(temperature 取 0–2)。思考型模型可能不受它们影响。
web_searchboolean否true 时先联网搜索,把结果作为参考资料交给模型,见下文。

其余 OpenAI 参数(如 stop、seed、user)原样转给模型,是否生效由模型决定。

价格

按 token 计费,价格实时读取计费表(每百万 token)。只按成功请求的实际用量收费:失败、超时、被拒都不收费。1 积分 = $0.005。

类型美元 / 百万 token积分 / 百万 token
输入$0.60120
输出(含思考)$3.60720
缓存命中$0.0612

举例:输入 2,000 token、输出 1,000 token(含思考)的一次请求约 $0.0048。

思考

动态思考:模型按问题难度自己决定想多少,简单问题快答、难题多想,不需要额外参数。思考 token 也占输出额度,max_tokens 别设得太小。

思考 token 计入 usage.completion_tokens,按输出价计费(部分模型另在 completion_tokens_details.reasoning_tokens 给出明细)。

提示缓存

不需要任何参数:重复的长前缀(同一段系统提示词、多轮对话前面的部分)可能被模型方自动缓存,命中的部分按更低的缓存价计费。是否缓存、命中多少由模型方决定;把固定不变的内容放在消息最前面,命中的机会更大。

命中的 token 数在 usage.prompt_tokens_details.cached_tokens 里返回,这部分按缓存命中价计费,其余输入按输入价。

看图(图片输入)

在 content 数组里放 image_url。推荐用 base64 的 data URI(data:image/png;base64,...),所有线路都能读到;公网图片链接要由线路去下载,个别线路可能取不到或超时。图片按模型方的规则折算成输入 token。

curl
curl https://nezhagate.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gemini-3.8-flash", "messages": [{"role": "user", "content": [{"type": "text", "text": "这张图里有什么"}, {"type": "image_url", "image_url": {"url": "data:image/png;base64,iVBORw0KGgo..."}}]}]}'

线路与稳定性

  • 每个模型背后有多条线路。一条线路出错、超时或满载时,网关会在开始返回内容之前自动换到下一条,不需要你重试,也不会重复收费。
  • 流式请求一旦开始输出就不再换线:中途断开时,按断开前已经产生的用量计费(见 计费与退款)。
  • 所有线路都满载时返回 429 并带 Retry-After,按它的秒数等待后重试;失败的请求不计费。各模型的状态见 服务状态。

错误与退款

出错时返回一个 error 对象(message、type、code、param),请按 HTTP 状态码和 code 判断,不要匹配 message 的文字。失败的请求不计费,完整列表见 错误码。

HTTPcode原因怎么办
400invalid_messages / invalid_role / invalid_max_tokens对话请求的 messages 缺失、为空或格式不对,role 不在允许的范围,或 max_tokens 不是正整数。param 指出是哪个字段。修正 param 指出的字段。
400model_not_found型号写错、没有传 model,或这个型号不能用在这个接口上(例如拿对话模型调生图接口)。以 GET /v1/models 或 API 手册 里的模型 id 为准。
400max_tokens_too_small思考型模型把 max_tokens 全部用在了思考上,没有写出正文(非流式对话)。调大 max_tokens 后重试。
400content_filter模型处理了请求,但没有给出任何内容,通常是内容触发了模型方的安全策略。调整提示词后重试;原样重试通常还会被拒。
4xxinvalid_request模型方拒绝了请求(例如上下文超长、参数不支持),状态码和 message 按模型方的原样返回,code 是模型方给出的值。按 message 修改请求。
401invalid_api_keyKey 不存在、已删除或已停用,或者账号已停用。到控制台「API Keys」页面检查这把 Key。
402insufficient_quota余额不够预扣这一单。网关先按这一单可能的最高费用预扣,同时发很多请求时也可能出现。如果是并发突发,稍等几秒重试;否则充值。
403permission_denied这个模型不在这把 Key 的模型白名单里。换成白名单里的模型,或在控制台修改白名单。
429rate_limit_exceeded超过了这把 Key 设置的每分钟请求数(按最近 60 秒计)。不带 Retry-After。等几秒再试,或在控制台调高这把 Key 的上限。
429rate_limit_exceeded这个模型的所有线路都已满载,请求没有发出。只出现在对话类接口:图片和视频任务不会被拒,而是排队。OpenAI 兼容接口带 Retry-After。按 Retry-After 的秒数等待后重试。
502upstream_timeout线路超时,包括迟迟没有返回第一个字。重试;长回答建议用 stream: true。
502upstream_unavailable线路出错或暂时不可用。稍后重试。
502upstream_busy模型方限流。模型方的 429 不会原样返回给你,而是换成这个 502。稍后重试。
502empty_completion模型方返回了空内容。这不是对你的内容的判定。重试。
502upstream_prompt_filter提示词被模型方的预检拦截。这不是模型对内容的判定。稍后重试,或稍微调整措辞。
503model_maintenance型号维护中,暂停接单,期间不会改由其他模型作答。维护结束后重试,进度见 服务状态。

流式请求开始输出后再出错,状态码不会改变:错误会以一条带 error 的数据出现在流里,或者流直接结束(没有 data: [DONE]),请按中断处理。