一、后端API(Flask + Qwen)
1. 环境准备
1.1 安装Python3(如未安装)
```bash
brew install python
```
1.2 创建虚拟环境并激活
python3 -m venv qwen_env
source qwen_env/bin/activate
1.3 安装依赖
bash
pip install torch transformers flask flask-cors
2. 编写后端API代码
新建`app.py`,内容如下:`
``python
from flask import Flask, request, jsonify
from flask_cors import CORS
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
app = Flask(__name__)
CORS(app)
# 加载Qwen模型
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen-7B-Chat", trust_remote_code=True)
device = "mps" if torch.backends.mps.is_available() else "cpu"
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-7B-Chat", trust_remote_code=True).to(device)
@app.route('/ask', methods=['POST'])
def ask():
try:
user_input = request.json.get('symptoms')
if not user_input:
return jsonify({'result': '请输入症状描述'}), 400
prompt = f"你是一位中医医生。用户描述症状:{user_input}。请用中医思路分析,并给出辨证和调理建议。"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(device)
output = model.generate(input_ids, max_new_tokens=512)
response = tokenizer.decode(output[0], skip_special_tokens=True)
return jsonify({'result': response})
except Exception as e:
return jsonify({'result': f'出错了:{str(e)}'}), 500
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
```
3. 启动后端服务
```bash
python app.py
```
- 首次运行会自动下载Qwen模型。
- 看到`Running on http://0.0.0.0:5000/`即启动成功。
4. 本地API测试
```bash
curl -X POST http://127.0.0.1:5000/ask -H "Content-Type: application/json" -d '{"symptoms":"咳嗽、咽干"}'
```
- 返回AI生成的中医分析。
二、小程序前端
## 1. 微信开发者工具新建项目
- 新建小程序项目,选择自定义目录(`program`)。
2. 编写页面代码
`pages/index/index.wxml`
```xml
<view class="container">
<textarea placeholder="请输入您的症状描述" model:value="{{symptoms}}" bindinput="onInput"/>
<button bindtap="onAsk" loading="{{loading}}">问诊</button>
<view wx:if="{{loading}}">AI正在分析,请稍候...</view>
<view>{{result}}</view>
</view>
```
### `pages/index/index.js`
```js
Page({
data: {
symptoms: '',
result: '',
loading: false
},
onInput(e) {
this.setData({ symptoms: e.detail.value });
},
onAsk() {
if (!this.data.symptoms.trim()) {
wx.showToast({ title: '请输入症状', icon: 'none' });
return;
}
this.setData({ loading: true, result: '' });
wx.request({
url: 'http://192.168.1.100:5000/ask', // 替换为你的Mac局域网IP
method: 'POST',
header: { 'content-type': 'application/json' },
data: { symptoms: this.data.symptoms },
success: (res) => {
this.setData({ result: res.data.result });
},
fail: () => {
this.setData({ result: '网络请求失败,请检查API服务' });
},
complete: () => {
this.setData({ loading: false });
}
});
}
});
```
## 3. 配置小程序网络安全域名
- 在微信开发者工具 → 项目设置 → 本地设置 → 不校验合法域名、web-view(开发阶段可勾选)。
- 真机调试时,需在微信公众平台后台配置服务器IP白名单。
4. 真机调试
- 手机和电脑在同一WiFi下。。。
- 小程序API地址用`http://本地局域网IP:5000/ask`。
- 输入症状,点击“问诊”,即可看到AI返回的中医分析。
大家可以动手去操作,按照步骤。有手就行😎。。。