我正在尝试获取对betav1版本中文件上传端点的支持,该端点尚未添加到generative ai js库中。
我可以加载发现文档并调用文件端点
require('dotenv').config();const API_KEY = process.env.API_KEY; // 从环境变量中获取API密钥const MODEL_NAME = process.env.TEXT_MODEL_NAME_LATEST; // 从环境变量中获取模型名称// 从"@google/generative-ai"包中导入GoogleGenerativeAI类const { GoogleGenerativeAI } = require("@google/generative-ai");// 将API密钥作为环境变量访问(见上文“设置您的API密钥”)const genAI = new GoogleGenerativeAI(process.env.API_KEY);async function run() { // 对于仅文本输入,请使用gemini-pro模型 const model = genAI.getGenerativeModel({ model: MODEL_NAME},{apiVersion: 'v1beta',}); const prompt = "写一个关于魔法背包的故事。" const result = await model.generateContent(prompt); const response = await result.response; const text = response.text(); console.log(text);}run();
结果出现了错误,因为没有添加API密钥。
errors: [ { message: "方法不允许未注册的调用者(没有建立身份的调用者)。请使用API密钥或其他形式的API消费者身份来调用此API。", domain: 'global', reason: 'forbidden' } ],
有谁知道如何添加API密钥吗?
回答:
经过多次尝试后,似乎可以直接将密钥加载到服务中
const service = google.discoverAPI(discoveryUrl, { auth : apiKey});
完整示例
const { google } = require('googleapis');require('dotenv').config();const API_KEY = process.env.API_KEY; // 从环境变量中获取API密钥async function createService(apiKey) { const discoveryUrl = `https://generativelanguage.googleapis.com/$discovery/rest?version=v1beta&key=${apiKey}`; try { const service = google.discoverAPI(discoveryUrl, { auth : apiKey}); return service; } catch (error) { console.error('获取发现文档时出错:', error); throw error; }}// 使用createService(API_KEY) .then(async service => { // 您可以在这里使用服务对象 const res = await service.files.list({ pageSize: 100, }); console.log(res) const files = res.data.files; if (files.length === 0) { console.log('未找到文件。'); return; } console.log('文件:'); files.map((file) => { console.log(`${file.name} (${file.id})`); }); //console.log('服务已创建:', service); }) .catch(error => { console.error('创建服务时出错:', error); });