需通过Google AI SDK调用Gemini API并启用流式响应实现Node.js实时翻译:一、配置API密钥与环境;二、初始化支持流式的Gemini模型实例;三、构建结构化双语翻译提示词;四、发起流式请求并逐块处理响应;五、封装为可复用的异步翻译函数。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望在 Node.js 应用中集成 Gemini 模型实现文本的实时翻译功能,则需通过 Google AI SDK 调用 Gemini API,并结合流式响应机制处理翻译结果。以下是实现该功能的具体步骤:
一、配置 Google AI API 密钥与环境
Gemini API 需要有效的 API 密钥进行身份验证,且必须启用对应服务并设置环境变量以保障密钥安全。此步骤是调用模型前的基础准备。
1、访问 https://aistudio.google.com/ 登录 Google 账户,进入 API 控制台。
2、创建新项目或选择已有项目,在“API 和服务” > “凭据”中点击“创建凭据” > “API 密钥”。
3、复制生成的密钥,在终端执行:export GOOGLE_API_KEY="your_api_key_here"。
4、安装 Google AI Node.js SDK:npm install @google/generative-ai。
二、初始化 Gemini 模型实例
使用 @google/generative-ai 提供的 GenerativeModel 类创建可调用的模型对象,指定模型名称(如 gemini-1.5-flash)及基础配置参数,确保支持流式输出。
1、在代码文件顶部导入模块:const { GoogleGenerativeAI } = require("@google/generative-ai");
2、从环境变量读取密钥并初始化客户端:const genAI = new GoogleGenerativeAI(process.env.GOOGLE_API_KEY);
3、获取模型实例并启用流式响应:const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash", generationConfig: { responseMimeType: "text/plain" } });
三、构建结构化翻译提示词(Prompt)
翻译质量高度依赖输入提示的设计,需明确指定源语言、目标语言、格式要求及禁止行为,避免模型自由发挥导致语义偏移。
使用 Google GenAI SDK 通过 Gemini 生成或编辑图像。当用户要求在 OpenCla… 中创建、转换、渲染或保存一张或多张图像时使用。
1、定义双语标识符变量:const sourceLang = "zh"; const targetLang = "en";
2、构造系统级指令 prompt:const prompt = \`将以下${sourceLang}文本准确翻译为${targetLang},仅返回译文,不添加解释、标点以外的任何字符,不省略原文内容:\`;
3、拼接用户输入文本:const fullPrompt = prompt + userInput;
四、发起流式翻译请求并处理响应
调用 generateContentStream 方法获取可迭代的流式响应对象,逐块接收模型返回的 token,实时拼接并输出翻译片段。
1、调用流式接口:const stream = await model.generateContentStream({ contents: [{ parts: [{ text: fullPrompt }] }] });
2、监听 data 事件并累加 chunk:for await (const chunk of stream) { const text = chunk.text(); process.stdout.write(text); }
3、捕获错误并终止流:stream.on("error", (err) => console.error("Stream error:", err));
五、封装为可复用的翻译函数
将上述逻辑整合为异步函数,接受原文、源语言、目标语言作为参数,返回 Promise.resolve 的完整译文字符串,便于在 Express 或其他框架中调用。
1、定义函数签名:async function translateText(text, src = "zh", tgt = "en") { ... }
2、内部执行流式请求并收集全部 chunk:let result = ""; for await (const chunk of stream) { result += chunk.text(); }
3、返回最终译文:return result.trim();

















