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

Azure Web App中Python集成Semantic-Kernel遇应用错误求助

问题描述

在VS Code中将集成Semantic-Kernel的Python Flask应用部署到Azure Web App时,只要代码中包含import semantic_kernel或from semantic_kernel import Kernel这类语句,部署后访问Web App就会显示“:( Application Error”。

已确认信息:

  • requirements.txt包含完整依赖(含semantic-kernel==1.12.1)
  • 本地与Azure环境均使用Python 3.10
  • 本地运行完全正常,移除Semantic-Kernel相关代码后,Azure Web App可正常访问
  • 问题仅出现在pdf_comparison.py引入Semantic-Kernel之后
排查与解决方案

1. 先获取Azure Web App的详细错误日志

“应用错误”是通用提示,必须查看具体日志才能定位问题:

  • 登录Azure门户进入目标Web App,选择监控 > 日志流,实时查看启动/运行时错误
  • 或者进入高级工具 > Kudu,查看LogFiles/application目录下的日志文件,提取异常栈信息

常见触发场景:依赖安装失败、环境变量缺失、异步代码冲突。

2. 检查Semantic-Kernel依赖的系统库

Semantic-Kernel的部分底层依赖需要Azure Linux环境的系统包支持,可通过启动脚本补充安装:
创建项目根目录下的startup.sh:

apt-get update && apt-get install -y libgomp1 libssl-dev
pip install -r requirements.txt
gunicorn --bind=0.0.0.0 --timeout 600 app:app

然后在Azure Web App的配置 > 常规设置中,将启动命令设置为./startup.sh。

3. 修复异步代码兼容性问题

Flask默认同步运行,Semantic-Kernel的异步初始化可能导致启动阻塞:
修改pdf_comparison.py,延迟Semantic-Kernel导入并封装异步逻辑:

import fitz 
import asyncio
import ast
import os

import nest_asyncio
nest_asyncio.apply()

# 延迟导入,避免模块加载时触发初始化错误
def get_kernel():
    from semantic_kernel import Kernel
    # 此处添加Kernel初始化逻辑,确保环境变量已配置
    kernel = Kernel()
    # 配置LLM等相关参数
    return kernel

async def main_pdf_comparison(prior_year_path, current_year_path):
    kernel = get_kernel()
    # 后续业务逻辑
    print("Hello World")
    return prior_year_path

然后在Flask路由中调用异步函数:

# 在pdf_comparison_upload路由中修改
import asyncio
...
annotated_pdf_path = asyncio.run(main_pdf_comparison(prior_year_path, current_year_path))

4. 配置Semantic-Kernel所需的环境变量

Semantic-Kernel依赖OpenAI/Azure OpenAI的密钥与端点,必须在Azure Web App中配置:

  • 进入Web App的配置 > 应用程序设置
  • 添加对应环境变量(根据使用场景):
    • AZURE_OPENAI_API_KEY
    • AZURE_OPENAI_ENDPOINT
    • AZURE_OPENAI_API_VERSION

缺失这些配置会导致Semantic-Kernel初始化失败,直接触发应用启动错误。

5. 排查依赖冲突

临时简化requirements.txt,只保留Flask、semantic-kernel、nest-asyncio,部署测试是否正常;若正常,再逐个添加其他依赖,定位冲突包。例如urllib3版本可能与Semantic-Kernel的底层依赖存在兼容问题,可尝试调整版本号。

内容的提问来源于stack exchange,提问作者Matt W.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 22:48:10