使用Lua开发Discord Bot调用OpenAI API时持续返回401未授权错误求助
解决OpenAI API 401未授权错误(Lua Discord机器人场景)
以下是针对你遇到的问题的排查和解决步骤:
验证API密钥的正确性
确认key变量准确加载了OpenAI官网生成的密钥,密钥格式以sk-开头,且没有多余的空格、换行符。可以临时在代码中打印"Bearer "..key(测试后立即删除,避免泄露密钥),检查输出是否和密钥完全一致。如果密钥无效,重新生成新的API密钥。检查请求URL是否正确
确保link变量指向的是OpenAI的合法接口地址,比如文本补全接口的正确地址是https://api.openai.com/v1/completions,错误的端点会导致授权验证失败。核对请求头格式
确认Authorization头的格式为Bearer 你的密钥,中间有且仅有一个空格,单词Bearer拼写无误;同时Content-Type头必须是application/json,不能有拼写错误。检查账户状态
登录OpenAI后台确认账户没有欠费,API密钥未被禁用或删除。如果服务器位于受限地区,需要配置代理确保请求能正常到达OpenAI服务器。
带调试信息的代码示例
coroutine.wrap(function() local s,e = pcall(function() -- 调试用:打印授权头和请求地址(测试后移除) print("Authorization Header: " .. "Bearer "..key) print("Request URL: " .. link) local Headers = { ["Authorization"] = "Bearer "..key, ["Content-Type"] = "application/json", } local Body = json.encode({ model = "text-davinci-002", prompt = "Human: ".. table.concat(Args, " ") .. "\n\nAI:", temperature = 0.9, max_tokens = 47, --150 top_p = 1, frequency_penalty = 0.0, presence_penalty = 0.6, stop = {" Human:", " AI:"} }) res,body = coro.request("POST", link, Headers, Body, 5000) if res == nil then Message:reply("didnt return anything") return end -- 调试用:打印响应详情 print("Response Code: " .. res.code) print("Response Body: " .. body) if res.code < 200 or res.code >= 300 then Message:reply("Failed to send request: " .. res.reason); return end Message:reply("Request sent successfully!") end) -- 捕获执行错误 if not s then print("Error occurred: " .. e) Message:reply("An error occurred while processing the request.") end end)()
内容的提问来源于stack exchange,提问作者AngryPlaayer
相关产品推荐
相关产品推荐

