我试图使用Google Gemini API,为此我在main.js中编写了以下代码 –
import { GoogleGenerativeAI } from "@google/generative-ai";// 初始化模型const genAI = new GoogleGenerativeAI(`${import.meta.env.GEM_API_KEY}`);const model = genAI.getGenerativeModel({ model: "gemini-pro" });async function getResponse() { const message = await model.generateContent("hi"); const response = await message.response; const text = response.text(); console.log(text);}getResponse();
我在根目录下有一个包含API密钥的”.env”文件。它的内容是这样的..
GEM_API_KEY=my_api_key
它不起作用.. 显示以下错误 –
main.js:9 POST https://generativelanguage.googleapis.com/v1/models/gemini-pro:generateContent 400 (Bad Request)makeRequest @ @google_generative-ai.js?v=557eda8f:94generateContent @ @google_generative-ai.js?v=557eda8f:340generateContent @ @google_generative-ai.js?v=557eda8f:513getResponse @ main.js:9(anonymous) @ main.js:16Show 3 more framesShow lessmain.js:14 Uncaught (in promise) Error: [400 ] API key not valid. Please pass a valid API key. [{"@type":"type.googleapis.com/google.rpc.ErrorInfo","reason":"API_KEY_INVALID","domain":"googleapis.com","metadata":{"service":"generativelanguage.googleapis.com"}}] at makeRequest (@google_generative-ai.js?v=557eda8f:113:13) at async generateContent (@google_generative-ai.js?v=557eda8f:340:20) at async getResponse (main.js:9:21)
您也可以在HTML渲染页面控制台中看到错误消息的屏幕截图..
我希望从gemini得到”hi”的回应,可能会是类似于”你好,有什么可以帮助你的?”,在渲染页面的控制台中..我已经核对了api_key,我甚至从我的另一个Google账户创建了一个,并且..我没有将我的api_key分享给任何人..也没有在任何在线平台上托管它..
所以,我不知道原因和如何解决它。在浏览器或GPT上没有得到任何帮助..非常感谢您的帮助。
回答:
一般来说,该错误消息表明API密钥在您的代码中实际上不可用。调试的第一步是尝试在代码中获取该值并打印出它看起来是什么样的。
在这种特定情况下,听起来您在使用Vite。
出于安全原因,Vite默认只从.env文件中导入以”VITE_”开头的变量。因此,以”GEM_”开头会使其隐藏,而当您将其更改为”VITE_”时,它就起作用了。
有关详细信息以及如何解决此问题,请参见 https://vitejs.dev/guide/env-and-mode#env-files。