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对象中提取参数。修改后端代码如下:
- 导入
request对象:
from flask import Flask, request # 新增request导入
- 调整
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
相关产品推荐
相关产品推荐

