You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask后端搭配Gradio UI出现500错误:函数缺失位置参数

问题:Gradio提交请求触发Flask 500内部服务器错误

环境:后端用Flask+LangChain,前端用Gradio UI;点击Submit按钮发送POST请求时,Gradio显示500内部服务器错误。


Gradio UI代码

import gradio as gr
import requests

def submission(text, prev): 
       ans = requests.post("http://127.0.0.1:5000/submit", data={"text":text})
       ans = ans.text
       new = prev + "\n" + ans + "\n" 
       return new

with gr.Blocks() as app:
    gr.Markdown("## **Python Tutoring AI Agent**")
    gr.Markdown("Answer questions, get feedback, get stronger!")
    
    out = gr.Textbox(lines=5, placeholder="Output")
    inp = gr.Textbox(lines=5, placeholder="Input")
    submit_b = gr.Button(value="Submit")
    
    submit_b.click(fn=submission, inputs=[inp, out], outputs=out)
    

app.launch()

Flask后端代码

from flask import Flask 
from flask_cors import CORS
from main2 import setup,mark_response,generate_question,get_ans,generate_topic,api,agent_state,connection, cursor, sql1,sql2,model,Topic_structure,Question_structure,Feedback_structure,pydparserfeed,pydparserquest,pydparsertopic


app = Flask(__name__)
CORS(app=app)
setup()
@app.route("/submit", methods=["POST"])
def submission(text):
    print("Check 1 \n",agent_state)               
    text = generate_topic(agent_state=agent_state,model=model,pydparsertopic=pydparsertopic, text=text)
    print("Check 2 \n",agent_state)
    text = generate_question(agent_state=agent_state, model = model, pydparserquest = pydparserquest)
    print("Check 3 \n",agent_state)
    text= get_ans(agent_state=agent_state, text=text)
    print("Check 4 \n",agent_state)
    text=mark_response(agent_state=agent_state, model = model , pydparserfeed=pydparserfeed)
    print("Check 5 \n",agent_state)
    return text

错误信息

Gradio UI显示内容

<!doctype html>
<html lang=en>
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.</p>

终端错误日志

[2026-06-05 17:52:38,434] ERROR in app: Exception on /submit [POST]
Traceback (most recent call last):
  File "/opt/anaconda3/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/anaconda3/lib/python3.12/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/anaconda3/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/anaconda3/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: submission() missing 1 required positional argument: 'text'
127.0.0.1 - - [05/Jun/2026 17:52:38] "POST /submit HTTP/1.1" 500 -

解决方案

Flask视图函数无法直接通过位置参数接收POST表单数据,需从request对象中提取参数。修改后端代码如下:

  1. 导入request对象:
from flask import Flask, request  # 新增request导入
  1. 调整submission视图函数:
@app.route("/submit", methods=["POST"])
def submission():
    # 从POST表单中获取text参数
    text = request.form.get("text")
    if not text:
        return "Missing text parameter", 400
        
    print("Check 1 \n",agent_state)               
    text = generate_topic(agent_state=agent_state,model=model,pydparsertopic=pydparsertopic, text=text)
    print("Check 2 \n",agent_state)
    text = generate_question(agent_state=agent_state, model = model, pydparserquest = pydparserquest)
    print("Check 3 \n",agent_state)
    text= get_ans(agent_state=agent_state, text=text)
    print("Check 4 \n",agent_state)
    text=mark_response(agent_state=agent_state, model = model , pydparserfeed=pydparserfeed)
    print("Check 5 \n",agent_state)
    return text

说明

  • Flask视图函数默认仅接收路由参数,POST表单数据必须通过request.form.get()获取
  • 新增参数校验逻辑,若text为空返回400错误,便于快速定位参数缺失问题
  • 保留原有业务逻辑,仅修改参数获取方式

内容的提问来源于stack exchange,提问作者RF2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.06 11:04:50