首页 > 编程问答 >如何修复包含 OpenAi api 的 Flask 服务器的 405 错误?

如何修复包含 OpenAi api 的 Flask 服务器的 405 错误?

时间:2024-07-22 14:39:59浏览次数:9  
标签:javascript python flask openai-api

我正在尝试向我的网页添加 API,之前从未使用过任何 Flask 服务器,也从未使用过 Javascript,所以这是一次全新的学习体验。 我的问题是我不断收到 405 错误代码,指出该方法不被允许。我继续使用 POST 方法,但它不起作用,我相信我的问题可能更多地出在我的 HTML 代码而不是我的 Flask 服务器上,因为代码非常通用和简单。

import openai
from flask import Flask, request, jsonify

app = Flask(__name__)

openai.api_key = '**my key is in here**'

@app.route('/', methods=['POST'])
def chat():
    data = request.get_json()
    message = data.get('message')
    
    response = openai.Completion.create(
        model="gpt-3.5-turbo",  
        prompt=message,
        max_tokens=50
    )

    return {'response': response.choices[0].text.strip()}

if __name__ == '__main__':
    app.run(port=5000)
async function sendMessage() {
            const message = document.getElementById('message').value;
            document.getElementById('chat-box').innerHTML += `<div>You: ${message}</div>`;
            
            const response = await fetch('/', {
                method: "POST",
                body: JSON.stringify({ message }),
                headers: {
                    'Content-Type': 'application/json',
                },
            });

            const data = await response.json();
            document.getElementById('chat-box').innerHTML += `<div>Bot: ${data.reply}</div>`;
            document.getElementById('message').value = '';
        }

我尝试更改代码,我卸载了 Flask 并重新安装了它。我还广泛使用 chatgpt 来尝试编写更好的代码,但它只是让我一直在原地踏步。我希望有人能帮忙解决这个问题。我什至尝试了一个简单的服务器,它只说“你好,世界”,它有效,但我真的认为问题可能出在我的 JavaScript 上。另外,我是一个初学者,这应该是我的第一个编码项目之一,所以如果可能的话,请对我放轻松。谢谢。


405 错误表示正在尝试使用不被允许的方法访问的端点。尽管的 Flask 路由使用 methods=['POST'] 设置为接受 POST 请求,但的 Javascript 代码中存在一个小的错误,导致它实际上并没有发送 POST 请求。

问题出在尝试访问响应数据的方式。的 Flask 代码返回一个包含键 response 的字典,但的 Javascript 代码尝试使用 data.reply 访问它。这会导致 Javascript 代码无法正确读取响应,从而导致错误。

要修复此问题,请将的 Javascript 代码中的 data.reply 更改为 data.response 。以下是更新后的 Javascript 代码:

async function sendMessage() {
    const message = document.getElementById('message').value;
    document.getElementById('chat-box').innerHTML += `<div>You: ${message}</div>`;

    const response = await fetch('/', {
        method: "POST",
        body: JSON.stringify({ message }),
        headers: {
            'Content-Type': 'application/json',
        },
    });

    const data = await response.json();
    document.getElementById('chat-box').innerHTML += `<div>Bot: ${data.response}</div>`; // 这里改成了 data.response
    document.getElementById('message').value = '';
}

通过进行此更改,的 Javascript 代码现在将能够正确读取来自 Flask 服务器的响应,并且应该不再遇到 405 错误。

标签:javascript,python,flask,openai-api
From: 78775926

相关文章

  • python pip 需要构建工具,而它已经安装
    我看到这个问题已经被发布了很多次,人们设法解决了这个问题,但我没有!!操作系统版本:Windows1021H1Build19043.1288Python版本:Python3.9.7(tags/v3.9.7:1016ef3,Aug302021,20:19:38)[MSCv.192964bit(AMD64)]onwin32Pip、wheel和setuptool都可以日期:......
  • 无法在浏览器中访问Python 127.0.0.1:8000上的本地主机
    fromdjango.contribimportadminfromdjango.urlsimportpath,includeurlpatterns=[path('admin/',admin.site.urls),path('products/'),include('products.urls')#thisline]嗨,任何人。很抱歉问这样的问题,但这是我第一次尝试python。......
  • 在 VSCode 中通过 Python 使用 YouTube API 时如何启用 Intellisense
    我想在使用GoogleYouTubeAPI和Python时在VSCode中获得IntelliSense。但我不知道详细步骤。fromgoogleapiclient.discoveryimportbuildapi_key="****"youtube=build("youtube","v3",developerKey=api_key)request=youtube.channels().list(part......
  • 当 python 脚本通过 jenkins + Github 在 Windows 本地计算机上运行时,chrome 浏览器不
    我的Python代码是(windowsMachine)fromseleniumimportwebdriverprint("newLine")print("2Line")print("3Line")holdChrome=webdriver.ChromeOptions()holdChrome.add_experimental_option("detach",True)#Restricta......
  • python_基础_数据类型
    基础数据类型不需要声明,只有被赋值后才会创建变量。变量本身没有类型,“类型”指的是所存值的类型。类型判断type(x)和isinstance(x,int)前者不会认为子类是一种他的父类类型后者会认为子类是父类类型>>>classA:...pass...>>>classB(A):...pass......
  • IPython 使用技巧
    IPython是一个强大的交互式Pythonshell,提供了许多方便的功能,使Python编程更加高效和愉快。本文将介绍一些IPython的实用技巧,帮助开发者充分利用其功能,提高编程效率。1.基本操作和快捷键1.1启动IPython可以通过在终端输入以下命令来启动IPython:ipython启动后,你......
  • 【python】类方法和静态方法的区别
    类方法和静态方法在Python中都可以用来定义与类相关的功能,但它们有不同的使用场景和优缺点。虽然类方法也可以用来实现验证逻辑,但静态方法在某些情况下更合适。让我们详细看看这两种方法的区别以及为什么在某些情况下静态方法可能更适合验证功能。类方法和静态方法的区别类......
  • Python自动化:一键提取千万个Excel指定数据
    一、传统方法的局限性打开每个Excel文件,逐个查找需要的数据。筛选出老板需要的数据列。复制并粘贴到新的工作表中。保存并关闭每个文件。这个过程不仅耗时,而且容易出错。每一次的筛选都可能遗漏数据,每一次的复制粘贴都可能引入错误。二、Python自动化的解决方案i......
  • Python:提交和跟踪许多子流程会导致“卡住”子流程
    我有一个第3方cli可执行文件,需要从python代码中调用。这些都是繁重的计算(CPU),我需要调用它大约50-100次。可执行文件本身在某种程度上是多线程的,但不是所有步骤,而且我有很多可用的核心。这意味着我希望同时运行多个子进程,但不是全部。因此,我需要提交其中一些,然后跟踪......
  • 无法在 Ubuntu 20.04 中安装 python3-venv,一些损坏的软件包
    这可能很长,但请耐心看完当我在关注这篇文章时尝试安装python3-venvsudoaptinstallbuild-essentiallibssl-devlibffi-devpython3-dev它抛出了以下错误:libffi-devpython3-devReadingpackagelists...DoneBuildingdependencytreeRead......