.
├── application
│ └── WellnessOne_web.py
├── configs
│ ├── config_fast.yaml
│ └── config.yaml
├── data
│ ├── original_data.txt
│ ├── processed
│ ├── raw
│ └── README.md
├── deployment
│ ├── Modelfile.WellnessOne
│ └── WellnessOne_lora.gguf
├── llama.cpp
├── logs
├── mcp_server
│ ├── __init__.py
│ ├── __main__.py
│ ├── __pycache__
│ └── server.py
├── README.md
├── requirements.txt
├── tools
│ ├── convert_txt_to_instruction.py
│ ├── convert_txt_to_json.py
│ ├── data_prepare.py
│ ├── logs
│ └── sync_monitor.py
└── training
├── logs
├── models
└── train.py
36 directories, 39 files
- tools/convert_txt_to_instruction.py: 网上诊疗对话训练数据预处理脚本txt2json
- tools/data_prepare.py: 训练数据集构建json2jsonl
- 支持数据清洗、格式转换、分割等功能
- FAST_DEPLOYMENT_GUIDE.md: 详细的快速部署指南
- Modelfile.WellnessOne: Ollama模型配置文件
- WellnessOne_fast_lora.gguf: 训练好的LoRA权重文件
- 支持一键部署到Ollama服务
- WellnessOne_web.py: 基于 Streamlit 的医生角色对话Web界面
- 支持实时对话、参数调节、聊天历史管理
- 提供直观的用户界面和流式对话体验
- server.py: MCP (Model Context Protocol) 服务器实现
- 提供与医生模型交互的API接口
- 支持对话、模型信息查询、状态检查等功能
- WellnessOne_train.py: 医生角色模型训练脚本
- configs/config.yaml: 完整训练配置
- configs/config_fast.yaml: 快速训练配置
- 基于LoRA技术进行高效微调
- 支持GPU/MPS/CPU多种设备
# 1. 创建conda环境(指定Python版本)
conda create -n WellnessOne python=3.13
# 2. 激活环境
conda activate WellnessOne
# 3. 安装依赖
pip install -r requirements.txt原始数据为data/original_data.txt,执行两步转换,首先将数据转换为json格式,再将数据转换为训练格式JSONL,每一行是一个JSON对象
# 1. txt2json
python tools/convert_txt_to_instruction.py
# 2. json2jsonl
python tools/data_prepare.py
# 开始训练
python training/train.py
# 在其他窗口同时启动监控(可选)
python tools/sync_monitor.pycurl -fsSL https://ollama.ai/install.sh | sh- 验证安装
# 检查 Ollama 安装
ollama --version
# 查看帮助信息
ollama --helppython llama.cpp/convert_lora_to_gguf.py \
training/models/WellnessOne_fast \
--outfile deployment/WellnessOne_lora.gguf# 启动 Ollama 服务(需要保持运行)
ollama serve- 验证服务状态
# 新开终端验证服务状态
curl http://localhost:11434/api/tags- 如果11434端口被占用,可以指定其他端口:
# 指定端口启动
OLLAMA_HOST=0.0.0.0:11435 ollama serve下载基础模型
# 检查现有模型
ollama list
# 拉取 Qwen2.5-0.5B 基础模型(项目使用)
ollama pull qwen2.5:0.5b
# 验证基础模型下载成功
ollama list | grep qwen2.5cd deployment
# 使用现有Modelfile创建ollama模型(没有Modelfile需要创建Modelfile)
ollama create WellnessOne-qwen -f Modelfile.WellnessOne
# 验证模型创建成功
ollama list | grep WellnessOne- 查看模型信息
ollama show WellnessOne-qwen
- 交互式测试
ollama run WellnessOne-qwen
- 命令行直接对话:
ollama run WellnessOne-qwen "Who are you?"- 性能测试:
ollama run WellnessOne-qwen --verbose "Introduce yourself"
# 输出信息包括:
# - total duration: 总运行时间
# - load duration: 模型加载时间
# - prompt eval count: 提示词token数量
# - prompt eval duration: 提示词处理时间
# - eval count: 响应token数量
# - eval duration: 响应生成时间基于Streamlit构建的和AI医生对话的Web应用,提供友好的用户界面和实时对话功能。支持模型选择、流式对话、连接状态监控、参数调节、对话历史管理等完整功能。
Streamlit是一个基于Python的开源框架,专门用于快速构建数据科学和机器学习的Web应用,无需前端开发(html、css、js)经验,只使用纯Python代码就能构建美观的Web应用。
- 首先安装Streamlit:
pip install streamlit- 确保Ollama服务运行
ollama serve- 确保lora微调模型已部署
ollama list | grep WellnessOne- 启动Web应用
streamlit run application/WellnessOne_web.py- 访问Web界面
# 浏览器自动打开: http://localhost:8501PS:仅支持MacOS和Windows
MCP模块解决的问题是为模型提供标准化的工具接口,让外部应用能够通过统一的协议与模型进行交互。通过标准化的MCP协议,将本地部署的医疗咨询模型集成到Claude Desktop中,实现AI助手扩展。 首先,因为MCP服务器需要管理多个工具函数(状态)和处理请求(行为),所以通过FastMCP框架来定义服务器实例。
from mcp.server.fastmcp import FastMCPmcp = FastMCP("WellnessOne-chat")
def get_ollama_host() -> str:
"""Get the Ollama host from environment variables"""
return os.getenv("OLLAMA_HOST", "http://localhost:11434")
def get_model_name() -> str:
"""Get the model name from environment variables"""
return os.getenv("WELLNESSONE_MODEL", "WellnessOne_fast")
OLLAMA_HOST = get_ollama_host()
MODEL_NAME = get_model_name()- 定义工具函数,通过@mcp.tool()装饰器将普通函数转换为MCP工具。完成基础对话功能和对模型状态的获取
- 通过工具类扩展同一个模型的使用,比如角色扮演对话及诗词互动
- 启动方式
# 方式1: 直接运行模块
python -m mcp_server
# 方式2: 运行主文件
python mcp_server/server.py
# 在Claude Desktop中可用工具:
## - chat_with_WellnessOne: 基础对话(支持参数调节)
## - get_model_info: 获取模型详细信息
## - list_available_models: 列出所有可用模型
## - check_ollama_status: 检查Ollama服务状态- Claude Desktop配置文件 :
claude_desktop_config.json
{
"mcpServers": {
"WellnessOne-chat": {
"command": "python",
"args": ["-m", "mcp_server"],
"cwd": "README.md",
"env": {
"OLLAMA_HOST": "http://localhost:11434",
"WELLNESSONE_MODEL": "WellnessOne_fast"
}
}
}
}
