人工智能入门项目实践:基于Phi-4-mini-reasoning构建你的第一个智能问答系统
1. 项目介绍与目标
如果你刚接触人工智能领域,想通过一个实际项目快速上手,那么这个智能问答系统的构建教程就是为你准备的。我们将使用Phi-4-mini-reasoning这个轻量级但功能强大的模型,配合Python Flask框架,打造一个可以实际运行的AI问答应用。
通过这个项目,你将学会:
- 如何在本地环境部署Phi-4-mini-reasoning模型
- 如何通过API调用模型进行问答交互
- 如何用Flask搭建简单的Web服务
- 如何用HTML/CSS创建基础的前端界面
- 如何将AI模型整合到完整的应用流程中
整个过程不需要复杂的配置,跟着步骤走就能完成。最终你会得到一个可以输入问题、获取AI回答的完整系统原型。
2. 环境准备与模型部署
2.1 基础环境要求
在开始之前,请确保你的电脑满足以下条件:
- 操作系统:Windows 10/11或macOS 10.15+
- Python版本:3.8或更高
- 内存:至少8GB(16GB更佳)
- 存储空间:至少10GB可用空间
2.2 安装必要的Python包
打开终端或命令提示符,执行以下命令安装所需依赖:
pip install flask torch transformers这个命令会安装三个关键组件:
- Flask:用于构建Web应用
- PyTorch:Phi-4-mini-reasoning模型的运行框架
- Transformers:Hugging Face提供的模型加载和调用库
2.3 下载Phi-4-mini-reasoning模型
在Python脚本中添加以下代码来加载模型:
from transformers import AutoModelForCausalLM, AutoTokenizer model_name = "microsoft/phi-4-mini-reasoning" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name)第一次运行时,程序会自动下载模型文件(约4GB),这可能需要一些时间,取决于你的网络速度。
3. 构建问答系统核心功能
3.1 创建Flask应用框架
新建一个名为app.py的文件,添加基础Flask应用结构:
from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/') def home(): return "智能问答系统已启动!" if __name__ == '__main__': app.run(debug=True)运行python app.py启动服务,访问http://localhost:5000应该能看到欢迎信息。
3.2 实现问答API接口
在app.py中添加问答接口:
@app.route('/ask', methods=['POST']) def ask_question(): data = request.json question = data.get('question', '') inputs = tokenizer(question, return_tensors="pt") outputs = model.generate(**inputs, max_length=200) answer = tokenizer.decode(outputs[0], skip_special_tokens=True) return jsonify({'answer': answer})这个接口接收JSON格式的问题,返回模型生成的回答。你可以用Postman或curl测试这个API。
3.3 添加简单的错误处理
完善接口,增加基本错误处理:
@app.route('/ask', methods=['POST']) def ask_question(): try: data = request.json if not data or 'question' not in data: return jsonify({'error': '无效的请求格式'}), 400 question = data['question'] if not question.strip(): return jsonify({'error': '问题不能为空'}), 400 # 原有生成逻辑... except Exception as e: return jsonify({'error': str(e)}), 5004. 创建用户界面
4.1 基础HTML页面
在项目目录下创建templates文件夹,新建index.html文件:
<!DOCTYPE html> <html> <head> <title>智能问答系统</title> <style> body { font-family: Arial; max-width: 800px; margin: 0 auto; padding: 20px; } #question { width: 100%; padding: 10px; margin-bottom: 10px; } #ask-btn { padding: 10px 20px; background: #4CAF50; color: white; border: none; cursor: pointer; } #answer { margin-top: 20px; padding: 15px; border: 1px solid #ddd; min-height: 100px; } </style> </head> <body> <h1>智能问答系统</h1> <input type="text" id="question" placeholder="输入你的问题..."> <button id="ask-btn">提问</button> <div id="answer"></div> <script> document.getElementById('ask-btn').addEventListener('click', async () => { const question = document.getElementById('question').value; const answerDiv = document.getElementById('answer'); if (!question) { answerDiv.innerHTML = '请输入问题'; return; } answerDiv.innerHTML = '思考中...'; try { const response = await fetch('/ask', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ question }) }); const data = await response.json(); answerDiv.innerHTML = data.answer || data.error || '未知错误'; } catch (error) { answerDiv.innerHTML = '请求失败: ' + error.message; } }); </script> </body> </html>4.2 更新Flask路由
修改app.py中的首页路由,返回HTML页面:
from flask import render_template @app.route('/') def home(): return render_template('index.html')5. 测试与优化
5.1 完整运行系统
现在你可以启动完整系统了:
- 运行
python app.py - 打开浏览器访问
http://localhost:5000 - 在输入框中提问,点击"提问"按钮
- 查看AI生成的回答
5.2 常见问题解决
如果遇到以下问题,可以尝试这些解决方案:
- 模型加载慢:首次运行需要下载模型,后续启动会快很多
- 回答质量不高:尝试更清晰具体地表述问题
- 内存不足:关闭其他占用内存的程序,或考虑升级硬件
- API请求失败:检查Flask服务是否正常运行,控制台是否有错误信息
5.3 性能优化建议
当系统基本运行后,可以考虑以下优化:
- 添加加载动画,改善用户体验
- 实现对话历史功能
- 添加问题建议或自动补全
- 对长回答进行分页显示
6. 项目总结与扩展
通过这个项目,我们完成了一个完整的AI应用开发流程,从模型部署到前后端整合。Phi-4-mini-reasoning虽然体积不大,但在问答任务上表现相当不错,特别适合初学者学习和实验。
你可以基于这个原型进一步扩展:
- 添加用户认证系统
- 实现多轮对话功能
- 集成更多AI模型能力
- 部署到云服务器供他人访问
整个项目用到的技术栈都是当前AI应用开发的主流选择,掌握这些基础后,你可以更轻松地探索更复杂的AI应用场景。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。