如何将 api 密钥添加到 Google js 客户端库的发现加载测试端点

问题描述 投票:0回答:1

我正在尝试获取对 betav1 版本一部分的文件上传端点的支持。尚未添加到 generative ai js 库中。

我可以加载发现文档并调用文件端点


require('dotenv').config();

const API_KEY = process.env.API_KEY; // Get the api key from env
const MODEL_NAME = process.env.TEXT_MODEL_NAME_LATEST; // Get the model name from env

// Importing the GoogleGenerativeAI class from the "@google/generative-ai" package
const { GoogleGenerativeAI } = require("@google/generative-ai");

// Access your API key as an environment variable (see "Set up your API key" above)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

async function run() {
    // For text-only input, use the gemini-pro model
    const model = genAI.getGenerativeModel({ model: MODEL_NAME},{apiVersion: 'v1beta',});

    const prompt = "Write a story about a magic backpack."

    const result = await model.generateContent(prompt);
    const response = await result.response;
    const text = response.text();
    console.log(text);
}

run();

它会导致错误,因为它没有添加 api 密钥。

 errors: [
    {
      message: "Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.",
      domain: 'global',
      reason: 'forbidden'
    }
  ],

有人知道如何添加 api 密钥吗?

node.js google-api-nodejs-client google-api-js-client google-gemini
1个回答
0
投票

经过多次来回接缝后,您可以将钥匙直接加载到服务中

const service = google.discoverAPI(discoveryUrl, { auth : apiKey});

完整样本

const { google } = require('googleapis');
require('dotenv').config();
const API_KEY = process.env.API_KEY; // Get the api key from env
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 fetching discovery document:', error);
    throw error;
  }
}

// Usage
createService(API_KEY)
    .then(async service => {
        // You can use the service object here

        const res = await service.files.list({
            pageSize: 100,
        });
        console.log(res)
        const files = res.data.files;
        if (files.length === 0) {
            console.log('No files found.');
            return;
        }

        console.log('Files:');
        files.map((file) => {
            console.log(`${file.name} (${file.id})`);
        });
        //console.log('Service created:', service);
    })
    .catch(error => {
      console.error('Error creating service:', error);
    });
© www.soinside.com 2019 - 2024. All rights reserved.