Python Azure WebApp集成OpenAI遇缩进错误,请求技术支持
解决Flask中OpenAI Azure接口调用的缩进错误及响应处理问题
核心问题分析
你的代码出现缩进错误是因为Python代码的缩进格式不统一——部分代码使用3个空格缩进,部分使用更多空格,违反了Python严格的缩进规则(必须统一使用4个空格或Tab,不能混合)。同时还有两个额外问题需要修正才能正常获取并展示OpenAI响应:
- OpenAI响应是对象,直接传递给模板无法正常渲染
- 环境变量名称需确保和你配置的一致
修正后的完整代码
import os import openai from flask import (Flask, redirect, render_template, request, send_from_directory, url_for) app = Flask(__name__) @app.route('/') def index(): print('Request for index page received') return render_template('index.html') @app.route('/favicon.ico') def favicon(): return send_from_directory(os.path.join(app.root_path, 'static'), 'favicon.ico', mimetype='image/vnd.microsoft.icon') @app.route('/hello', methods=['POST']) def hello(): name = request.form.get('name') # 统一缩进为4个空格,配置OpenAI Azure参数 openai.api_type = "azure" openai.api_base = "https://itsavvy.openai.azure.com/" openai.api_version = "2022-12-01" openai.api_key = os.getenv("OPENAI_API_KEY") # 建议使用规范的环境变量名 response = openai.Completion.create( engine="ITsavvy", prompt=name, temperature=1, max_tokens=100, top_p=0.5, frequency_penalty=0, presence_penalty=0, stop=None ) if name: # 提取响应文本内容,而非直接传递响应对象 ai_response = response.choices[0].text.strip() print('Request for hello page received with response=%s' % ai_response) return render_template('hello.html', name=ai_response) else: print('Request for hello page received with no name or blank name -- redirecting') return redirect(url_for('index')) if __name__ == '__main__': app.run(debug=True) # 添加debug=True方便开发时调试
关键修正点说明
- 统一缩进格式:所有代码块的缩进改为4个空格,确保Python解释器能正确识别代码块层级
- 响应处理优化:从OpenAI返回的
response对象中提取choices[0].text字段,去除首尾空白后再传递给模板 - 环境变量规范:将环境变量名改为更通用的
OPENAI_API_KEY,需确保你在Azure或本地环境中配置了对应的密钥值 - 调试模式:添加
debug=True到app.run(),开发时能看到详细错误信息
内容的提问来源于stack exchange,提问作者Phate1989
相关产品推荐
相关产品推荐

