需通过 google ai studio 的 rest api 调用 gemini 多模态能力,方法包括:一、使用 @google/generative-ai sdk 自动处理 base64 与 multipart;二、手动构造 multipart/form-data 请求;三、流式分块处理大图以避免内存溢出。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望在 Node.js 环境中调用 Gemini 的多模态能力(如图像内容识别、图文理解等),需通过 Google AI Studio 提供的 REST API 接口发送包含图片 Base64 编码与文本提示的请求。以下是实现该功能的多种可行方法:
一、使用 Google AI SDK(@google/generative-ai)直接调用
该方法依赖官方维护的 Node.js 客户端 SDK,支持自动处理 multipart 请求与图片编码,适用于单图或多图输入场景。
1、在项目根目录执行 npm install @google/generative-ai 安装 SDK。
2、从 Google AI Studio 获取 API Key,并设置为环境变量 GOOGLE_API_KEY。
3、读取本地图片文件,使用 fs.readFileSync 读取二进制数据,再调用 Buffer.from(imageData).toString('base64') 转为 Base64 字符串。
4、创建 GoogleGenerativeAI 实例,调用 getGenerativeModel 指定模型为 gemini-pro-vision(注意:当前已重命名为 gemini-1.5-flash-latest 或 gemini-1.5-pro-latest,需确认可用模型名)。
5、构建 generateContent 所需的 parts 数组,其中图片部分格式为 { inlineData: { data: base64String, mimeType: 'image/jpeg' } },文本部分为 { text: '请描述这张图片的内容' }。
二、手动构造 multipart/form-data 请求
该方法绕过 SDK,直接使用 node-fetch 或 axios 发送原始 HTTP 请求,适合需要精细控制请求头、分块上传或集成至已有 HTTP 中间件的场景。
1、安装 form-data 和 node-fetch:npm install form-data node-fetch。
2、创建 FormData 实例,使用 append 方法添加 contents 字段,其值为 JSON 字符串,结构包含 parts 数组。
3、将图片文件读取为 Buffer,并以 multipart/form-data 格式附加到 FormData 中,字段名必须为 file,同时在 JSON 字符串的 parts 内引用该文件名(如 { file: 'image.jpg' })。
4、设置请求头 Authorization: Bearer YOUR_API_KEY 与 Content-Type 为 multipart/form-data; boundary=...(由 form-data 库自动生成)。
5、向 https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key=YOUR_API_KEY 发起 POST 请求。
三、使用流式 Base64 图片 + 文本组合请求(兼容大图)
该方法专为处理超过 20MB 的高分辨率图像设计,避免内存溢出,通过分块读取文件并动态拼接 multipart body。
1、引入 fs.createReadStream 与 stream.Readable 构造自定义流。
2、生成唯一 boundary 字符串,手动拼接 multipart header、JSON 元数据段、图片二进制段及结尾边界。
3、将拼接后的流作为请求体传入 fetch,并显式设置 Content-Type 为带 boundary 的 multipart 类型。
4、确保图片 MIME 类型准确填写(如 image/png、image/webp),否则 API 将返回 400 错误。
5、响应体需通过 response.json() 解析,提取 candidates[0].content.parts[0].text 获取识别结果。











