Skip to Content
API 参考(模型)Gemini内容生成与流式

Generate Content

POST https://api.fenno.ai/v1beta/models/{model}:generateContent x-goog-api-key: <FENNO_API_KEY> Content-Type: application/json

使用实际支持 Gemini 协议的模型 ID。原始 URL 中的 models/ 只能出现一次,模型查询返回的资源名可能已经包含这个前缀。

请求字段

字段类型含义
contentsarray,必填对话内容,一般包含 role 与 parts
contents[].parts[].textstring文本输入
contents[].parts[].inlineDataobject受支持的二进制输入,包含 mimeType 与 base64 data
systemInstructionobject,可选模型支持的系统指令 parts
generationConfigobject,可选支持的输出长度、采样及其他生成设置
tools、toolConfigarray / object,可选仅使用模型支持的工具定义与控制方式

多模态输入和可选参数都需要模型支持。不要假设 Google 托管的文件 URI 能在所有网关直接使用。

JavaScript SDK 示例

安装 @google/genai,在服务端 Node.js 环境设置 FENNO_API_KEY 和 FENNO_MODEL:

import { GoogleGenAI } from '@google/genai' const ai = new GoogleGenAI({ apiKey: process.env.FENNO_API_KEY, httpOptions: { baseUrl: 'https://api.fenno.ai' } }) const response = await ai.models.generateContent({ model: process.env.FENNO_MODEL!, contents: 'Explain what an API gateway does.' }) console.log(response.text)

最小原始 JSON 请求体为:

{"contents": [{"role": "user", "parts": [{"text": "Explain what an API gateway does."}]}]}

响应处理

candidates[] 包含生成内容和结束信息,文本位于 content.parts[]。SDK 的 response.text 适合简单文本;原始 HTTP 客户端应检查 parts,不能假设结果只有一个字符串。

检查返回的 finishReason、prompt 安全反馈和用量元信息。安全拦截或输出上限可能使回答不完整,单凭文本为空不能确定原因。函数调用是类型化 part,不是可直接执行的文本。

流式生成

REST SSE 使用 POST /v1beta/models/{model}:streamGenerateContent?alt=sse。SDK 将 generateContent 替换为:

const stream = await ai.models.generateContentStream({ model: process.env.FENNO_MODEL!, contents: 'Explain what an API gateway does.' }) for await (const chunk of stream) { if (chunk.text) process.stdout.write(chunk.text) }

还应检查分片中的完成与安全状态;这个简短循环仅演示文本展示。不要在用户不知情的情况下重启已经交付部分内容的流。

继续阅读流式响应、视觉输入和错误格式。