如何优化 Twilio 功能?

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

我正在尝试制作一个 Whatsapp 机器人,通过其 API 为 OpenAI 的 GPT3.5 提供 Twilio 的 Whatsapp 消息服务。我正在使用以下无服务器功能:

const fetch = require('node-fetch');
exports.handler = async(context, event, callback) => {
    const history = [{"role": "system",
        "content": "Eres un asistente educativo para estudiantes de una escuela primaria"}, {'role': 'user', 'content': event.message}];
    try{
        const response = await fetch('https://api.openai.com/v1/chat/completions', {
            method: "POST",
            headers: {
                "Content-Type": "application/json",
                "Authorization": `Bearer ${context.OPENAI_KEY}`
            },
            body: JSON.stringify({
                "model": "gpt-3.5-turbo",
                "max_tokens": 750,
                "n": 1,
                "temperature": 0,
                "messages": history
            })
        });
        const data = await response.json();
        return callback(null, data.choices[0].message.content);
    }catch(error){
        console.log(error);
        return callback(error);
    }
}

但是,执行通常需要超过 10 秒,并且会被 Twilio 自动停止。我需要专门使用一个函数,因为我需要将 API 密钥作为标头发送,而流 HTTP 请求小部件不允许自定义标头。

我已经精简并去掉了多余的功能,但是功能还是需要很长时间,是我做错了什么还是有办法进一步优化功能?

javascript ajax twilio serverless
1个回答
0
投票

恐怕无服务器环境无法解决您所描述的问题。无服务器函数通常有最大执行时间。例如,Twilio 无服务器函数的最大执行时间为10 秒。同样,许多其他也有最大执行时间。对于等待 OpenAI 响应等长时间运行的进程来说,这本质上是不够的。

PS:即使您找到了一个无服务器运行时,其最大执行时间正好适合您的需求,但使用无服务器可能是不可行的,因为您是按执行时间付费的。

我建议在传统(非无服务器环境)上运行此过程。也许有一天,您将能够向 OpenAI 提供回调 URL,该 URL 指向另一个 Twilio 无服务器函数。这样,您可以继续在 Twilio 无服务器上拥有所有 Twilio 逻辑,并且仅在其他地方托管其他代码。但同样,截至今天,这是不可能的。

© www.soinside.com 2019 - 2024. All rights reserved.