Google 模型
基础对话
http
POST /v1beta/models/<Model ID>:generateContentbash
curl --location --request POST 'https://neolink.com/api/v1beta/models/<Model ID>:generateContent' \
--header 'Authorization: Bearer <API Key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"contents": [
{
"parts": [
{
"text": "How does AI work?"
}
]
}
]
}'python
import requests
url = "https://neolink.com/api/v1beta/models/<Model ID>:generateContent"
headers = {
"x-goog-api-key": "<API Key>",
"Content-Type": "application/json",
}
payload = {
"contents": [
{
"parts": [
{
"text": "How does AI work?"
}
]
}
]
}
resp = requests.post(url, headers=headers, json=payload, timeout=30)
resp.raise_for_status()
data = resp.json()
print(data)鉴权说明: Google 模型请求 header 中默认使用
Authorization: Bearer <API Key>,如遇到不能识别 Authorization 参数的情形,可将"Authorization": "Bearer <API Key>"替换为"x-goog-api-key": "<API Key>"。
请求体字段
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 模型 ID,如 gemini-2.5-flash。通过 URL 路径 /v1beta/models/<Model ID>:generateContent 指定 |
contents | array | 是 | 当前对话内容,结构见数据模型 Content。单轮请求为单个实例;多轮请求(如多轮对话)包含对话历史和最新请求 |
systemInstruction | object | 否 | 系统指令(Content 结构),用于设定模型的行为与角色,目前仅支持文本 |
generationConfig | object | 否 | 生成配置,控制采样、输出格式、思考能力等,详见下方可选参数 |
safetySettings | array | 否 | 安全设置列表,每个安全类别最多一条。每条包含 category(如 HARM_CATEGORY_HATE_SPEECH)与 threshold(如 BLOCK_MEDIUM_AND_ABOVE),未设置的类别使用默认过滤级别 |
tools | array | 否 | 模型可调用的工具列表,如 googleSearch、urlContext、codeExecution、functionDeclarations,见数据模型 Tool |
toolConfig | object | 否 | 工具配置。functionCallingConfig.mode 控制函数调用模式:AUTO(模型自行决定)、ANY(必须调用函数)、NONE(不调用函数)、VALIDATED(模型决定但校验函数调用);allowedFunctionNames 限定可调用的函数名(仅在 ANY/VALIDATED 模式下生效) |
cachedContent | string | 否 | 用作上下文的缓存内容名称,格式 cachedContents/{cachedContent} |
serviceTier | string | 否 | 请求的服务层级,取值:unspecified(默认,等同标准层)、standard、flex、priority |
labels | object | 否 | 用户自定义元数据标签。键需以字母开头,最长 63 字符,仅含小写字母、数字、下划线和短横线 |
continuationToken | string | 否 | 不透明续写令牌,用于从因 CONTINUATION 停止的响应继续生成。提供时 contents 必须与初始请求完全一致,maxOutputTokens 需单调递增或不传 |
可选参数
Google 模型的可调参数集中在 generationConfig 对象中。
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
generationConfig.temperature | float | 否 | 1.0 | 采样温度,取值范围 0.0~2.0。较高的值(如 1.5)使输出更随机和创造性,较低的值(如 0.3)使输出更确定和聚焦。0 表示几乎确定性的输出。注意:在 Gemini 3.6 Flash 及更新模型上已弃用,传入会被静默忽略 |
generationConfig.topP | float | 否 | - | 核采样(nucleus sampling)阈值,取值范围 0.0~1.0。模型会考虑概率累积达到 topP 的 token。例如 0.95 表示只考虑概率累积达到 95% 的最可能的 token。注意:在 Gemini 3.6 Flash 及更新模型上已弃用,传入会被静默忽略 |
generationConfig.topK | int | 否 | - | 仅从前 K 个最可能的 token 中采样。例如设置为 40 表示模型每次只从概率最高的 40 个 token 中选择。注意:在 Gemini 3.6 Flash 及更新模型上已弃用,传入会被静默忽略 |
generationConfig.maxOutputTokens | int | 否 | - | 生成响应的最大 token 数。设置此参数可以控制响应长度和成本。不同模型有不同的最大限制,超过限制的值会被自动调整 |
generationConfig.candidateCount | int | 否 | 1 | 生成的响应候选数量。设置大于 1 时,API 会返回多个不同的响应候选,每个都会计费。适用于需要多个不同答案的场景(Gemini 1.0 系列不支持) |
generationConfig.stopSequences | array | 否 | - | 停止序列列表,最多 5 个字符串。当模型生成的文本中出现任一停止序列时,将立即停止生成。停止序列本身不会包含在输出中。适用于控制输出格式 |
generationConfig.seed | int | 否 | - | 解码使用的随机种子。不设置时,每次请求使用随机生成的种子;固定种子可获得更可复现的输出 |
generationConfig.presencePenalty | float | 否 | 0.0 | 存在惩罚系数,取值范围 -2.0~2.0。正值会惩罚已经出现过的 token,鼓励模型谈论新主题;负值则鼓励重复已有主题 |
generationConfig.frequencyPenalty | float | 否 | 0.0 | 频率惩罚系数,取值范围 -2.0~2.0。正值会根据 token 在文本中的出现频率进行惩罚,降低重复相同词汇的可能性;负值则增加重复可能性 |
generationConfig.responseLogprobs | bool | 否 | false | 是否返回输出 token 的对数概率信息。启用后,响应中会包含每个 token 的对数概率,可用于分析模型的确定性和置信度 |
generationConfig.logprobs | int | 否 | - | 每个 token 位置返回的候选 token 数量,取值范围 0~20,仅在 responseLogprobs: true 时有效。设置后,每个输出 token 位置会返回指定数量的备选 token 及其概率 |
generationConfig.responseMimeType | string | 否 | text/plain | 响应的 MIME 类型。取值 text/plain(默认文本)、application/json(JSON 输出)、text/x.enum(枚举字符串输出)。使用 JSON 模式时,建议配合 responseJsonSchema 定义 JSON 结构 |
generationConfig.responseJsonSchema | object | 否 | - | 响应的 JSON Schema,用于结构化输出,需配合 responseMimeType: "application/json" 使用。定义后模型会严格按照 Schema 生成 JSON 响应,结构见数据模型 Schema。官方推荐使用此字段替代旧的 responseSchema |
generationConfig.responseModalities | array | 否 | ["TEXT"] | 期望的响应模态,取值 TEXT、IMAGE、AUDIO 的组合。空列表等同仅请求文本;图像生成需设置为 ["IMAGE"] 或 ["TEXT", "IMAGE"](仅图像模型支持) |
generationConfig.speechConfig | object | 否 | - | 语音输出配置(仅支持音频输出的模型)。voiceConfig.prebuiltVoiceConfig.voiceName 指定预置音色;languageCode 指定 BCP-47 语言代码(如 en-US、cmn-CN);多说话人场景使用 multiSpeakerVoiceConfig.speakerVoiceConfigs |
generationConfig.mediaResolution | string | 否 | - | 输入媒体的分辨率档位,影响媒体理解的 token 开销。取值:MEDIA_RESOLUTION_LOW(64 tokens)、MEDIA_RESOLUTION_MEDIUM(256 tokens)、MEDIA_RESOLUTION_HIGH(256 tokens,含缩放重采样) |
generationConfig.enableEnhancedCivicAnswers | bool | 否 | false | 是否启用增强的公民类问题回答能力,部分模型可能不可用 |
generationConfig.enableAffectiveDialog | bool | 否 | false | 是否启用情感对话,启用后模型会检测用户情绪并相应调整回复 |
generationConfig.thinkingConfig | object | 否 | - | 思考配置,用于控制推理能力(仅支持思考的模型生效,不支持的模型设置后会报错)。配置后,模型会在回答前进行内部推理 |
generationConfig.thinkingConfig.thinkingBudget | int | 否 | - | 思考过程可用的 token 预算。设置为 0 可完全关闭思考功能。较高的值允许模型进行更深入的推理,但会增加延迟和成本 |
generationConfig.thinkingConfig.thinkingLevel | string | 否 | - | 思考深度等级,控制模型内部推理的最大深度。取值:MINIMAL(几乎不思考)、LOW、MEDIUM、HIGH。推荐用于 Gemini 3 及更新模型,旧模型使用会报错 |
generationConfig.thinkingConfig.includeThoughts | bool | 否 | false | 是否在响应中返回模型的思考过程(thought 部分),仅在模型产生思考内容时返回 |
generationConfig.imageConfig | object | 否 | - | 图像生成配置(仅图像模型)。aspectRatio 设置宽高比(如 1:1、16:9),imageSize 设置分辨率(512、1K、2K、4K),详见图像生成文档 |
safetySettings | array | 否 | - | 安全设置数组,用于控制有害内容过滤级别。每个设置包含 category(如 HARM_CATEGORY_HATE_SPEECH)和 threshold(如 BLOCK_MEDIUM_AND_ABOVE)。可根据应用场景调整过滤强度 |
tools | array | 否 | - | 模型可调用的工具列表。Google 模型支持特定工具如 googleSearch(网络搜索)、urlContext(URL 内容提取)、codeExecution(代码执行)等,见数据模型 Tool |
toolConfig | object | 否 | - | 工具配置,控制工具调用行为。可设置 functionCallingConfig.mode 为 AUTO(模型自行决定)、ANY(必须调用工具)、NONE(不调用工具)或 VALIDATED(模型决定并校验) |
说明:
- Google 模型的推理与生成控制参数均需放在
generationConfig对象内,这与 OpenAI 和 Anthropic 的扁平化参数结构不同。temperature、topP、topK已在 Gemini 3.6 Flash 及更新模型上弃用,传入会被静默忽略,不会报错但不再影响输出;对旧模型仍生效,且建议三个参数只调整一个,同时调整可能导致不可预测的采样行为。thinkingConfig仅对支持思考的模型生效;Gemini 3 及更新模型推荐使用thinkingLevel控制思考深度,旧模型使用thinkingBudget。presencePenalty和frequencyPenalty可以同时使用,组合使用可以更精细地控制输出的重复性和多样性。
完整参数示例
bash
curl --location --request POST 'https://neolink.com/api/v1beta/models/<Model ID>:generateContent' \
--header 'Authorization: Bearer <API Key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"contents": [
{
"parts": [
{
"text": "How does AI work?"
}
]
}
],
"generationConfig": {
"temperature": 1.0,
"topP": 0.95,
"maxOutputTokens": 2048,
"thinkingConfig": {
"thinkingBudget": 1024
}
}
}'python
import requests
url = "https://neolink.com/api/v1beta/models/<Model ID>:generateContent"
headers = {
"x-goog-api-key": "<API Key>",
"Content-Type": "application/json",
}
payload = {
"contents": [
{
"parts": [
{
"text": "How does AI work?"
}
]
}
],
"generationConfig": {
"temperature": 1.0,
"topP": 0.95,
"maxOutputTokens": 2048,
"thinkingConfig": {
"thinkingBudget": 1024
}
}
}
resp = requests.post(url, headers=headers, json=payload, timeout=30)
resp.raise_for_status()
data = resp.json()
print(data)多轮对话
多轮对话通过 contents 数组传入完整对话历史,每条消息使用 role 区分角色(user 表示用户,model 表示模型)。
bash
curl --location --request POST 'https://neolink.com/api/v1beta/models/<Model ID>:generateContent' \
--header 'Authorization: Bearer <API Key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "你好,我想了解北京的主要景点。"
}
]
},
{
"role": "model",
"parts": [
{
"text": "北京有许多著名景点,例如故宫、天安门广场、颐和园和长城等。您有几天时间游览?"
}
]
},
{
"role": "user",
"parts": [
{
"text": "只有一天,请帮我安排游览顺序。"
}
]
}
]
}'python
import requests
url = "https://neolink.com/api/v1beta/models/<Model ID>:generateContent"
headers = {
"Authorization": "Bearer <API Key>",
"Content-Type": "application/json",
}
payload = {
"contents": [
{
"role": "user",
"parts": [{"text": "你好,我想了解北京的主要景点。"}],
},
{
"role": "model",
"parts": [
{"text": "北京有许多著名景点,例如故宫、天安门广场、颐和园和长城等。您有几天时间游览?"}
],
},
{
"role": "user",
"parts": [{"text": "只有一天,请帮我安排游览顺序。"}],
},
]
}
resp = requests.post(url, headers=headers, json=payload, timeout=30)
resp.raise_for_status()
data = resp.json()
print(data["candidates"][0]["content"]["parts"][0]["text"])说明:
role仅支持user和model两个取值;单轮请求可省略role(默认user)。多轮对话必须以user消息结尾。
结构化输出
通过 responseMimeType: "application/json" 配合 responseJsonSchema 定义输出结构,模型会严格按照 Schema 生成 JSON 响应。Schema 支持字段见数据模型 Schema。
bash
curl --location --request POST 'https://neolink.com/api/v1beta/models/<Model ID>:generateContent' \
--header 'Authorization: Bearer <API Key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"contents": [
{
"parts": [
{
"text": "列出三位著名的科幻作家及其代表作。"
}
]
}
],
"generationConfig": {
"responseMimeType": "application/json",
"responseJsonSchema": {
"type": "object",
"properties": {
"authors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "作家姓名"
},
"representativeWork": {
"type": "string",
"description": "代表作名称"
}
},
"required": ["name", "representativeWork"]
}
}
},
"required": ["authors"]
}
}
}'python
import requests
url = "https://neolink.com/api/v1beta/models/<Model ID>:generateContent"
headers = {
"Authorization": "Bearer <API Key>",
"Content-Type": "application/json",
}
payload = {
"contents": [
{
"parts": [
{"text": "列出三位著名的科幻作家及其代表作。"}
]
}
],
"generationConfig": {
"responseMimeType": "application/json",
"responseJsonSchema": {
"type": "object",
"properties": {
"authors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string", "description": "作家姓名"},
"representativeWork": {
"type": "string",
"description": "代表作名称",
},
},
"required": ["name", "representativeWork"],
},
}
},
"required": ["authors"],
},
},
}
resp = requests.post(url, headers=headers, json=payload, timeout=30)
resp.raise_for_status()
data = resp.json()
# 返回的 text 即为符合 Schema 的 JSON 字符串
print(data["candidates"][0]["content"]["parts"][0]["text"])搜索请求
原生模型搜索请求
http
POST /v1beta/models/<Model ID>:generateContentbash
curl --location --request POST 'https://neolink.com/api/v1beta/models/<Model ID>:generateContent' \
--header 'Authorization: Bearer <API Key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"contents": [
{
"parts": [
{
"text": "北京今天天气怎么样?"
}
]
}
],
"tools": [
{
"googleSearch": {}
},
{
"urlContext": {}
}
]
}'python
import requests
url = "https://neolink.com/api/v1beta/models/<Model ID>:generateContent"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer <API Key>",
}
payload = {
"contents": [
{
"parts": [
{
"text": "北京今天天气怎么样?"
}
]
}
],
"tools": [
{
"googleSearch": {}
},
{
"urlContext": {}
}
]
}
response = requests.post(url, headers=headers, json=payload, timeout=30)
response.raise_for_status()
result = response.json()
print(result)默认搜索请求
http
POST /v1beta/models/<Model ID>:generateContentbash
curl --location --request POST 'https://neolink.com/api/v1beta/models/<Model ID>:generateContent' \
--header 'Authorization: Bearer <API Key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"contents": [
{
"parts": [
{
"text": "北京今天天气怎么样?"
}
]
}
]
}'python
import requests
url = "https://neolink.com/api/v1beta/models/<Model ID>:generateContent"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer <API Key>",
}
payload = {
"contents": [
{
"parts": [
{
"text": "北京今天天气怎么样?"
}
]
}
]
}
response = requests.post(url, headers=headers, json=payload, timeout=30)
response.raise_for_status()
result = response.json()
print(result)支持模型Id:
- gemini-3-pro-preview-search
视频理解
http
POST /v1beta/models/<Model ID>:generateContentbash
curl --location --request POST 'https://neolink.com/api/v1beta/models/<Model ID>:generateContent' \
--header 'Authorization: Bearer <API Key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"contents": [
{
"parts": [
{
"inline_data": {
"mime_type": "video/mp4",
"data": "<Base64 Code>"
}
},
{
"text": "请总结这个视频的主要内容,并列出三个关键时刻。"
}
]
}
]
}'python
import requests
url = "https://neolink.com/api/v1beta/models/<Model ID>:generateContent"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer <API Key>",
}
payload = {
"contents": [
{
"parts": [
{
"inline_data": {
"mime_type": "video/mp4",
"data": "<Base64 Code>"
}
},
{
"text": "请总结这个视频的主要内容,并列出三个关键时刻。"
}
]
}
]
}
resp = requests.post(url, headers=headers, json=payload, timeout=30)
resp.raise_for_status()
data = resp.json()
print(data)Base64 编码说明:
<Base64 Code>参数是将视频文件进行 Base64 编码后的字符串,参考脚本如下:
bash
#!/usr/bin/env bash
set -euo pipefail
VIDEO_PATH="./demo.mp4"
if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
B64FLAGS="--input"
else
B64FLAGS="-w0"
fi
base64 $B64FLAGS "$VIDEO_PATH" > base64.txt响应体
响应示例
json
{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "AI(人工智能)通过模拟人类智能的技术来工作……"
}
]
},
"finishReason": "STOP",
"index": 0
}
],
"usageMetadata": {
"promptTokenCount": 8,
"candidatesTokenCount": 328,
"totalTokenCount": 336
},
"modelVersion": "gemini-2.5-flash",
"responseId": "aBcDeFgHiJkLmNoP"
}响应字段说明
| 参数名 | 类型 | 说明 |
|---|---|---|
candidates | array | 模型生成的候选响应列表,结构见数据模型 Candidate |
candidates[].content | object | 生成的内容,role 固定为 model,parts 包含文本或工具调用等片段 |
candidates[].finishReason | string | 停止生成的原因,常用取值:STOP(正常结束)、MAX_TOKENS(达到 token 上限)、SAFETY(安全过滤)、RECITATION(内容复述),完整枚举见数据模型 Candidate |
candidates[].index | int | 候选响应在列表中的索引 |
promptFeedback | object | 与内容过滤相关的提示反馈。提示被拦截时返回 blockReason,取值:SAFETY(安全原因)、BLOCKLIST(命中术语黑名单)、PROHIBITED_CONTENT(违禁内容)、IMAGE_SAFETY(图像安全)、OTHER(未知原因);此时不返回 candidates |
usageMetadata | object | 本次请求的 token 用量元数据 |
usageMetadata.promptTokenCount | int | 提示的 token 数(含缓存内容的 token) |
usageMetadata.cachedContentTokenCount | int | 提示中缓存部分的 token 数 |
usageMetadata.candidatesTokenCount | int | 所有候选响应的 token 总数 |
usageMetadata.thoughtsTokenCount | int | 思考模型产生的思考 token 数 |
usageMetadata.toolUsePromptTokenCount | int | 工具使用提示中的 token 数 |
usageMetadata.totalTokenCount | int | 总 token 数(提示 + 工具使用提示 + 思考 + 候选响应) |
usageMetadata.promptTokensDetails | array | 请求输入中各模态的 token 明细,每项含 modality(如 TEXT、IMAGE、VIDEO、AUDIO)与 tokenCount |
usageMetadata.candidatesTokensDetails | array | 响应输出中各模态的 token 明细,结构同上 |
modelVersion | string | 实际用于生成响应的模型版本 |
responseId | string | 响应唯一标识,用于问题排查时定位请求 |
数据模型
以下为请求与响应中涉及的核心数据结构(精简版),完整定义请参考 Google 官方 API 文档。
Content
消息的基本结构,包含角色和内容片段。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
role | string | 否 | 内容产生者,取值 user 或 model。多轮对话时必须设置,单轮请求可省略 |
parts | array | 是 | 构成单条消息的有序片段列表,各片段可以是不同的 MIME 类型,结构见下方 Part |
Part
Content 中的内容片段,数据字段为联合类型(只能取其一)。
| 参数名 | 类型 | 说明 |
|---|---|---|
text | string | 内联文本 |
inlineData | object | 内联媒体数据。mimeType 为 IANA 标准 MIME 类型(如 image/png、video/mp4、application/pdf),data 为 Base64 编码字节 |
fileData | object | URI 引用的文件数据。fileUri(必填)为文件 URI,mimeType 为 MIME 类型 |
functionCall | object | 模型预测返回的函数调用。name(必填)为函数名,args 为 JSON 格式的参数键值对,id 为调用标识 |
functionResponse | object | 函数执行结果,作为上下文回传给模型。name(必填)为函数名,response(必填)为 JSON 格式的输出,id 对应 functionCall 的 id |
executableCode | object | 模型生成的待执行代码。language(必填,当前仅 PYTHON),code(必填)为代码内容 |
codeExecutionResult | object | 代码执行结果。outcome(必填)取值:OUTCOME_OK(成功,output 为 stdout)、OUTCOME_FAILED(失败,output 含 stderr)、OUTCOME_DEADLINE_EXCEEDED(超时) |
thought | bool | 标记该片段是否为模型的思考内容(配合 thinkingConfig.includeThoughts 使用) |
thoughtSignature | string | 思考内容的不透明签名,后续请求需原样回传以维持多轮思考的上下文 |
Candidate
模型生成的候选响应。
| 参数名 | 类型 | 说明 |
|---|---|---|
index | int | 候选响应索引 |
content | object | 生成的内容,结构见 Content |
finishReason | string | 停止生成的原因,主要取值见下表 |
finishMessage | string | 停止原因的详细说明,仅在 finishReason 非空时返回 |
safetyRatings | array | 该候选响应的安全评级列表,每个类别最多一条,含 category、probability、blocked 等 |
citationMetadata | object | 引用信息,包含生成内容中复述自训练数据的段落来源 citationSources |
groundingMetadata | object | 搜索增强(Grounding)元数据,含 groundingChunks(检索到的来源,如 web.uri/web.title)、groundingSupports(来源与文本的对应关系)、webSearchQueries(执行的搜索词) |
tokenCount | int | 该候选响应的 token 数 |
finishReason 主要取值:
| 取值 | 说明 |
|---|---|
STOP | 正常停止,或命中停止序列 |
MAX_TOKENS | 达到请求指定的最大 token 数 |
SAFETY | 候选内容因安全原因被标记 |
RECITATION | 候选内容因复述原因被标记 |
LANGUAGE | 使用了不支持的语言 |
BLOCKLIST | 内容包含禁用术语 |
PROHIBITED_CONTENT | 可能包含违禁内容 |
SPII | 可能包含敏感个人身份信息 |
MALFORMED_FUNCTION_CALL | 模型生成的函数调用无效 |
IMAGE_SAFETY / IMAGE_PROHIBITED_CONTENT / IMAGE_OTHER | 图像生成因安全/违禁/其他原因停止 |
NO_IMAGE | 预期生成图像但未生成 |
UNEXPECTED_TOOL_CALL | 请求未启用工具但模型产生了工具调用 |
TOO_MANY_TOOL_CALLS | 连续调用工具次数过多 |
CONTINUATION | 达到单次请求 token 上限但生成未完成,可通过 continuationToken 继续生成 |
OTHER | 未知原因 |
Tool
模型可调用的工具,tools 数组中每个元素只能指定一种工具类型。
| 参数名 | 类型 | 说明 |
|---|---|---|
functionDeclarations | array | 函数声明列表,用于 Function Calling。每项含 name(必填,函数名,最长 128 字符)、description(必填,函数描述)、parameters(参数 Schema,结构见 Schema)或 parametersJsonSchema(JSON Schema 格式,与 parameters 互斥)。模型不执行函数,而是返回 functionCall 由客户端执行 |
googleSearch | object | Google 搜索工具,赋予模型联网检索能力。可选 timeRangeFilter(startTime/endTime 限定时间范围)、searchTypes(webSearch 网页搜索,默认开启;imageSearch 图片搜索) |
urlContext | object | URL 上下文工具,自动提取用户提供的 URL 内容作为上下文 |
codeExecution | object | 代码执行工具,允许模型在生成过程中执行 Python 代码并获取结果 |
fileSearch | object | 文件搜索工具,从语义检索语料库中获取知识。fileSearchStoreNames(必填)指定检索库,如 fileSearchStores/my-store-123;可选 topK、metadataFilter |
googleMaps | object | Google 地图工具,为模型响应提供地理空间上下文。可选 enableWidget 返回地图组件令牌 |
computerUse | object | 计算机操作工具,自动注入预定义函数以操作浏览器/移动端/桌面环境。environment(必填)取值 ENVIRONMENT_BROWSER、ENVIRONMENT_MOBILE、ENVIRONMENT_DESKTOP |
mcpServers | array | 连接的 MCP Server 列表。每项含 name 与 streamableHttpTransport(url、headers、超时配置等) |
Schema
Schema 用于定义结构化输出与函数参数/返回值的数据类型,是 OpenAPI 3.0 Schema 的子集。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
type | string | 是 | 数据类型,取值:STRING、NUMBER、INTEGER、BOOLEAN、ARRAY、OBJECT、NULL |
format | string | 否 | 数据格式说明,如 enum、date-time |
description | string | 否 | 参数描述,支持 Markdown,可包含示例 |
nullable | bool | 否 | 值是否可以为 null |
enum | array | 否 | 枚举取值列表,仅用于 STRING 类型 |
items | object | 否 | ARRAY 类型元素的 Schema |
minItems / maxItems | string | 否 | ARRAY 类型的最小/最大元素数 |
properties | object | 否 | OBJECT 类型的属性定义,键为属性名,值为 Schema |
required | array | 否 | OBJECT 类型的必填属性名列表 |
minProperties / maxProperties | string | 否 | OBJECT 类型的最小/最大属性数 |
minimum / maximum | number | 否 | INTEGER/NUMBER 类型的最小/最大值 |
minLength / maxLength | string | 否 | STRING 类型的最小/最大长度 |
pattern | string | 否 | 限制 STRING 类型的正则表达式 |
anyOf | array | 否 | 值需满足列表中任一子 Schema |
propertyOrdering | array | 否 | 属性的输出顺序(非 OpenAPI 标准字段),用于确定响应中属性的排列顺序 |
