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>"。
可选参数
Google 模型的可调参数集中在 generationConfig 对象中。
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
generationConfig.temperature | float | 否 | 1.0 | 采样温度,取值范围 0.0~2.0。较高的值(如 1.5)使输出更随机和创造性,较低的值(如 0.3)使输出更确定和聚焦。0 表示几乎确定性的输出。建议与 topP 和 topK 只调整一个 |
generationConfig.topP | float | 否 | - | 核采样(nucleus sampling)阈值,取值范围 0.0~1.0。模型会考虑概率累积达到 topP 的 token。例如 0.95 表示只考虑概率累积达到 95% 的最可能的 token。建议与 temperature 和 topK 只调整一个 |
generationConfig.topK | int | 否 | - | 仅从前 K 个最可能的 token 中采样。例如设置为 40 表示模型每次只从概率最高的 40 个 token 中选择。这是控制输出多样性的另一种方式 |
generationConfig.maxOutputTokens | int | 否 | - | 生成响应的最大 token 数。设置此参数可以控制响应长度和成本。不同模型有不同的最大限制,超过限制的值会被自动调整 |
generationConfig.candidateCount | int | 否 | 1 | 生成的响应候选数量。设置大于 1 时,API 会返回多个不同的响应候选,每个都会计费。适用于需要多个不同答案的场景 |
generationConfig.stopSequences | array | 否 | - | 停止序列列表,最多 5 个字符串。当模型生成的文本中出现任一停止序列时,将立即停止生成。停止序列本身不会包含在输出中。适用于控制输出格式 |
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 数量。设置此参数后,每个输出 token 位置会返回指定数量的备选 token 及其概率,用于分析模型的决策过程 |
generationConfig.responseMimeType | string | 否 | text/plain | 响应的 MIME 类型。设置为 application/json 可强制模型输出有效的 JSON 格式。使用 JSON 模式时,建议配合 responseSchema 定义 JSON 结构 |
generationConfig.responseSchema | object | 否 | - | 响应的 JSON schema,用于结构化输出。定义后,模型会严格按照 schema 生成 JSON 响应。需要配合 responseMimeType: "application/json" 使用 |
generationConfig.thinkingConfig | object | 否 | - | 思考配置,用于控制推理能力(仅支持思考的模型生效)。配置后,模型会在回答前进行内部推理,推理过程会体现在响应中 |
generationConfig.thinkingConfig.thinkingBudget | int | 否 | - | 思考过程可用的 token 预算。设置为 0 可完全关闭思考功能。较高的值允许模型进行更深入的推理,但会增加延迟和成本 |
safetySettings | array | 否 | - | 安全设置数组,用于控制有害内容过滤级别。每个设置包含 category(如 HARM_CATEGORY_HATE_SPEECH)和 threshold(如 BLOCK_MEDIUM_AND_ABOVE)。可根据应用场景调整过滤强度 |
tools | array | 否 | - | 模型可调用的工具列表。Google 模型支持特定工具如 googleSearch(网络搜索)、urlContext(URL 内容提取)等。每个工具定义其功能和参数 |
toolConfig | object | 否 | - | 工具配置,控制工具调用行为。可设置 functionCallingConfig.mode 为 AUTO(模型自行决定)、ANY(必须调用工具)或 NONE(不调用工具) |
说明:
- Google 模型的推理与生成控制参数均需放在
generationConfig对象内,这与 OpenAI 和 Anthropic 的扁平化参数结构不同。thinkingBudget仅对支持思考的模型(如 Gemini 2.0 Flash Thinking)生效。- 建议
temperature、topP、topK三个参数只调整一个,同时调整可能导致不可预测的采样行为。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)搜索请求
原生模型搜索请求
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