每日一学:API-KEY的dotenv保管

232 阅读2分钟

在我学习Javascript的过程中,由于项目中需要输入个人的api-key,而这些是不太能泄露出去的(自己周围人用下得了,哪能真的分享出去)--其实是因为这么些key,有些是有使用次数的。我个人有这问题,那就更别说是那些大规模企业了,这么多key,是肯定要管理使用的,我个人呢,找到了一种解决方法,那就是利用dotenv保管,通过将keyval保存在环境变量中,调用而不是直接输入的方法来在分享代码时防止泄露这些key。 ,让我们直接进入正题。 首先,我们在控制台项目路径下输入

npm i dotenv

然后在项目路径下创建一个.env文件

image.png env文件是环境变量对象,其中包括所有的环境变量,而设置在其中的key = val可以通过调用dotenv().config()来设置为环境变量,以openai的API-key来演示

image.png 通过在.env文件中写入 OPENAI_API_KEY= ******(填入自己的key),然后在项目中调用

require('dotenv').config();

然后让我们console.log(process.env),看下是否成功写入

image.png 可以发现已是成功写入。

这里就有人要问了,?这个process是什么东西

process在node中是全局对象,代表进程,进程是分配资源的最小单位,而线程是代码执行的最小单位。这俩的关系就好比公司中的董事长ceo(首席执行官)的一样,一个负责调配资源,一个负责执行,是上下级的关系。而对于一个项目来说:
操作系统(window/mac/linux)<- 进程(process)<- 环境变量(env)<- project(项目) 好了,回到正题。这时我们会发现我们的key就已经存入到·env(环境变量)中去了,那我们怎么去调用它呢?与查询类似

process.env.OPENAI_API_KEY

这就表示了我们调用了key的值,下面是一个实例

require('dotenv').config();
const OpenAI = require('openai')
const client = new OpenAI({
    apiKey: process.env.OPENAI_API_KEY,
    baseURL:'https://api.chatanywhere.tech/v1'
})
const getChatResponse = async function(model,prompt,n){
    const response = await client.chat.completions.create({
        model:model, // 适合聊天的模型   有很多种
        messages: [{
            role : 'user',
            content : prompt
        }]
    })
    return response.choices[0].message.content;
}
async function main(){
    let prompt2 = `
    您的任务是以一致的风格回答问题。

    <孩子>: 教我耐心。

    <祖父母>: 挖出最深峡谷的河流源于一处不起眼的泉眼;最宏伟的交响乐从单一的音符开始;最复杂的挂毯以一根孤独的线开始编织。

    <孩子>: 教我韧性。
    `
    const chatCompletion =  await getChatResponse('gpt-3.5-turbo',prompt2)
    console.log(chatCompletion);
}
    
main();

这里是调用openaigpt-3.5-turbo适合聊天的模型,我们在apiKey上调用了process.env.OPENAI_API_KEY,我们看下能否运行

结果:

image.png

这样就结束了,我是Ace,我们下次分享再见!!!