【Dify提示词模板管理终极指南】:掌握版本控制的5大核心策略

第一章:Dify提示词模板版本控制的核心意义

在构建基于大语言模型的应用过程中,提示词(Prompt)是连接业务逻辑与模型能力的关键桥梁。随着项目迭代加速,提示词的频繁调整若缺乏有效管理,极易导致输出质量波动、团队协作混乱以及线上服务不稳定。Dify平台引入提示词模板的版本控制机制,正是为了解决这一核心痛点。

确保迭代过程的可追溯性

每次对提示词的修改都将生成独立版本,并附带时间戳、操作人及变更摘要。这使得团队成员能够清晰回溯历史变更,快速定位导致输出异常的具体版本。

支持灰度发布与A/B测试

通过版本控制,可以将不同提示词版本部署至不同环境或用户群体。例如,使用以下配置实现流量分流:
{
  "prompt_version_a": {
    "content": "你是一个专业的客服助手。",
    "traffic_ratio": 0.5
  },
  "prompt_version_b": {
    "content": "你是一个热情友好的客服助手。",
    "traffic_ratio": 0.5
  }
}
该配置将两个提示词版本各分配50%的请求流量,便于对比用户满意度与响应质量。

提升团队协作效率

版本控制系统允许多成员并行开发提示词模板,避免覆盖冲突。每个版本均支持评论与审批流程,保障变更透明可控。 以下是常见操作流程的简要说明:
  1. 从当前生产版本创建分支进行编辑
  2. 保存新版本并添加变更描述
  3. 提交至测试环境验证效果
  4. 通过评审后发布为新的生产版本
版本号创建时间操作人状态
v1.0.02024-03-01 10:00张伟生产中
v1.1.02024-03-05 14:22李娜测试中
graph TD A[原始提示词] --> B[创建新版本] B --> C[编辑内容] C --> D[保存并提交] D --> E{测试通过?} E -->|是| F[发布为生产版本] E -->|否| G[返回编辑]

第二章:基于变更管理的版本控制策略

2.1 理解提示词演进的生命周期与版本需求

提示词(Prompt)作为人机交互的核心媒介,其生命周期涵盖设计、测试、部署、反馈与迭代等多个阶段。随着大模型能力的提升,提示词需持续优化以适应新的推理机制和业务场景。
提示词版本管理的重要性
如同代码需要版本控制,提示词也应纳入版本管理体系。不同版本对应不同的模型表现和输出质量,确保可追溯性与稳定性。
  • 初始版本:基础指令,功能验证
  • 优化版本:加入上下文约束与格式要求
  • 生产版本:通过A/B测试验证效果
典型提示词演进示例
v1: "总结这段文字"
v2: "用不超过100字总结核心观点,保留关键数据"
v3: "从[行业报告]中提取趋势结论,面向管理层输出简报"
该演进过程体现了从模糊到精准、从通用到场景化的需求升级,参数细化显著提升输出可用性。

2.2 实践:为每次提示词修改创建变更记录

在提示工程中,保持对提示词迭代的可追溯性至关重要。通过建立结构化的变更记录机制,团队能够快速定位问题、复现结果并评估优化效果。
变更记录的核心字段
一个完整的提示词变更记录应包含以下信息:
  • 版本号:唯一标识每次修改
  • 修改时间:精确到秒的时间戳
  • 修改人:责任人信息
  • 变更说明:简要描述修改内容与目的
  • 前后对比:原始与新提示词的差异
示例:结构化变更日志表
版本时间修改人变更说明
v1.0.12025-04-01 10:30:22张伟优化指令清晰度,移除歧义表述
自动化记录代码片段
def log_prompt_change(old_prompt, new_prompt, author, reason):
    record = {
        "version": generate_version(),
        "timestamp": datetime.now().isoformat(),
        "author": author,
        "reason": reason,
        "diff": difflib.ndiff(old_prompt.splitlines(), new_prompt.splitlines())
    }
    save_to_log(record)
该函数封装了记录逻辑,自动生成版本号和时间戳,并使用 difflib 提供行级差异比对,便于后续审计与回滚。

2.3 理论:原子性修改原则与影响范围评估

在分布式系统中,原子性修改确保一组变更操作要么全部成功,要么全部失败,避免中间状态引发数据不一致。该原则要求修改具备隔离性与可回滚能力。
原子性实现机制
常见实现方式包括事务锁、版本号控制和CAS(Compare-And-Swap)操作。以Go语言中的CAS为例:
atomic.CompareAndSwapInt64(&value, old, new)
该函数比较value与old值,若相等则将其更新为new,返回true;否则不做修改。此操作不可中断,保障了写入的原子性。
影响范围评估维度
  • 数据依赖:修改字段是否被多个服务引用
  • 缓存穿透:变更是否触发大规模缓存失效
  • 下游通知:是否需异步广播事件
正确评估上述因素可降低系统级联故障风险。

2.4 实践:使用标准化命名规范管理版本迭代

在软件持续集成过程中,清晰的版本命名是保障协作效率的关键。采用语义化版本控制(SemVer)能有效表达变更级别。
语义化版本格式定义
版本号遵循 主版本号.次版本号.修订号 的格式,例如:
v2.1.0
v1.5.3-beta
v3.0.0-rc.1
其中,v2.1.0 表示重大更新后的新稳定版,betarc 用于标记预发布阶段。
Git Tag 命名实践
通过 Git 标签统一管理发布节点:
git tag -a v1.2.0 -m "Release version 1.2.0"
git push origin v1.2.0
该操作为代码库创建不可变锚点,便于回溯与自动化部署。
  • 主版本号变更:不兼容的API修改
  • 次版本号变更:向后兼容的功能新增
  • 修订号变更:向后兼容的问题修复

2.5 理论结合实践:建立变更评审与回滚机制

在持续交付流程中,变更的稳定性依赖于严谨的评审与可靠的回滚机制。通过标准化流程控制发布风险,是保障系统高可用的核心环节。
变更评审流程设计
每次变更需经过技术、运维与业务三方评审,确保影响面清晰可控。关键步骤包括:
  • 提交变更申请并附带影响评估报告
  • 组织跨团队评审会议,记录决策依据
  • 在预发环境完成最终验证后方可上线
自动化回滚策略实现
结合Kubernetes部署策略,定义版本快照与回滚逻辑:
apiVersion: apps/v1
kind: Deployment
spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
  revisionHistoryLimit: 5 # 保留最近5个历史版本用于回滚
该配置确保发布过程中保留足够历史版本,当健康检查失败时可快速执行kubectl rollout undo完成分钟级恢复。

第三章:团队协作中的版本同步方案

3.1 多人编辑场景下的冲突预防理论

在多人协同编辑系统中,冲突预防的核心在于操作的可交换性与一致性维护。通过引入操作转换(OT)算法,系统能够确保不同客户端的操作在异步同步后仍保持文档状态一致。
操作转换的基本逻辑
  • 每个编辑操作包含位置、内容和类型
  • 当两个操作并发时,系统通过变换函数调整操作顺序
  • 变换后的操作应用到本地文档,保证最终一致性

function transform(op1, op2) {
  // op1: 当前操作,op2: 并发操作
  if (op1.pos < op2.pos) return op1;
  if (op1.pos >= op2.pos + op2.len) return { ...op1, pos: op1.pos - op2.len };
  // 重叠情况下的位置调整
  return null;
}
该函数根据操作位置关系调整后续操作的偏移量,确保文本插入或删除不会错位。参数 pos 表示操作起始位置,len 为被修改内容长度。
常见策略对比
策略延迟容忍复杂度
OT
CRDT极高

3.2 实践:利用Dify协作功能实现权限隔离

在团队协作开发中,权限隔离是保障数据安全与操作合规的关键环节。Dify 提供了细粒度的协作权限管理机制,支持通过角色控制访问边界。
角色与权限映射
系统内置三种核心角色:
  • 管理员:拥有工作区全部配置与成员管理权限
  • 编辑者:可修改应用逻辑但无法调整权限设置
  • 查看者:仅允许查看运行状态与日志信息
API调用示例
{
  "role": "editor",
  "permissions": ["read", "write"],
  "resources": ["application:flow", "application:plugin"]
}
上述配置表示编辑者可在指定资源上执行读写操作,但无法进行成员邀请或删除应用等敏感操作。
权限验证流程
用户请求 → 鉴权中间件校验 JWT 中的角色声明 → 查询资源策略表 → 允许/拒绝响应

3.3 理论结合实践:构建团队版本共识流程

在分布式系统中,确保多个节点对数据状态达成一致是核心挑战之一。为此,引入共识算法如 Raft 能有效解决这一问题。
Raft 共识算法示例
// Node 结构体表示一个 Raft 节点
type Node struct {
    ID       int
    Role     string // "leader", "follower", "candidate"
    Term     int
    Log      []string
}
上述代码定义了 Raft 节点的基本结构。其中,Role 表示节点角色,Term 记录当前任期,Log 存储操作日志。通过心跳机制和选举超时控制,节点间可实现角色转换与日志同步。
共识流程关键步骤
  1. 领导者(Leader)接收客户端请求并追加日志
  2. 向所有跟随者(Follower)发送 AppendEntries 请求
  3. 多数节点确认后提交日志条目
  4. 状态机应用已提交的日志
该流程保证了即使在网络分区或节点故障下,系统仍能维持数据一致性。

第四章:集成外部工具提升版本可追溯性

4.1 理论:版本控制与CI/CD流水线的协同逻辑

版本控制系统(如Git)是CI/CD流水线的触发源头。每次代码提交或合并请求都会通过Webhook通知CI工具(如Jenkins、GitHub Actions),从而启动自动化流程。
事件驱动的流水线触发机制
当开发者推送代码至特定分支时,版本控制系统自动触发CI流水线:

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]
该配置表示:当有代码推送到main分支或针对main的PR时,自动执行流水线。这是实现持续集成的关键起点。
构建与反馈闭环
  • 代码提交后立即进行自动化构建和测试
  • 测试结果回传至版本控制系统,标记PR状态
  • 仅当流水线成功,才允许合并到主干
这种机制保障了主干代码始终处于可部署状态,形成开发与交付的高效协同。

4.2 实践:将Git作为外部版本存储仓库

在现代DevOps流程中,Git不仅是代码管理工具,还可作为外部系统版本存储的可靠后端。通过将其集成至配置管理或基础设施即代码(IaC)体系,能实现变更追溯与团队协作的统一。
基本工作流
使用Git作为外部存储的核心在于定期提交变更,并推送到远程仓库。典型操作包括:
  • 初始化专用仓库用于存储非代码资产(如配置文件、策略模板)
  • 通过自动化脚本执行git addgit commitgit push
  • 设置Webhook通知下游系统同步更新
自动化提交示例

# 自动化提交脚本片段
git config user.name "AutoCommit Bot"
git config user.email "bot@example.com"
git add .
git commit -m "chore: update configuration snapshot $(date +%Y%m%d-%H%M%S)" --allow-empty
git push origin main
该脚本配置提交者信息,添加所有变更并生成时间戳提交消息,确保每次推送具备可追溯性。--allow-empty参数允许无实质变更时仍可通过CI/CD管道执行。

4.3 理论结合实践:自动化测试验证提示词稳定性

在大模型应用中,提示词的微小变动可能导致输出结果显著偏移。为确保系统行为一致性,需通过自动化测试持续验证提示词的稳定性。
测试框架设计
采用 PyTest 构建回归测试套件,针对核心提示词执行批量推理并比对输出语义一致性。

def test_prompt_stability():
    prompt = "请将以下句子翻译成英文:今天天气很好"
    response = llm.generate(prompt)
    assert "weather" in response.lower(), "输出应包含天气相关词汇"
    assert len(response) > 10, "输出长度合理"
该测试用例验证固定提示词的输出是否符合预期关键词与格式约束,防止因模型微调或环境变更导致退化。
稳定性评估指标
  • 语义相似度(使用 Sentence-BERT 计算)
  • 关键词命中率
  • 输出长度波动范围
通过定期运行测试集,可及时发现提示工程中的潜在问题,实现理论设计与实际表现的闭环优化。

4.4 实践:通过日志与元数据追踪版本行为差异

在微服务迭代中,不同版本间的行为差异常引发隐蔽问题。通过结构化日志与版本元数据协同分析,可精准定位异常根源。
日志格式标准化
统一日志输出格式,嵌入版本号、请求ID等元数据:
{
  "timestamp": "2023-04-05T10:23:45Z",
  "version": "v2.3.1",
  "request_id": "a1b2c3d4",
  "level": "INFO",
  "message": "User login successful"
}
该结构便于ELK栈过滤比对不同版本日志流。
差异对比流程
  • 提取两个版本在相同场景下的日志序列
  • 按请求ID关联上下游调用链
  • 识别处理路径、响应时间或状态码的差异点
结合CI/CD中的构建元数据(如Git SHA、构建时间),可建立版本—行为映射表,实现变更影响可视化追踪。

第五章:未来提示工程中的版本治理方向

自动化提示版本追踪机制
随着提示工程在生产环境中的广泛应用,提示迭代频繁,缺乏版本控制将导致模型输出不稳定。借鉴代码管理实践,可采用 Git 驱动的提示存储方案。例如,使用结构化目录管理不同任务的提示模板:

/prompts
  /summarization
    v1.txt      # 初始版本:“请总结以下文本”
    v2.txt      # 加入语气要求:“请用正式语体总结”
    v3.txt      # 添加长度限制:“不超过100字”
  /classification
    prompt.yaml # 包含标签体系与示例
提示变更影响评估流程
每次提示更新需关联 A/B 测试结果。某金融客服系统在升级意图识别提示时,通过以下评估表判断是否上线:
提示版本准确率用户满意度响应延迟
v1.286%4.1/51.2s
v1.3(新)91%4.5/51.3s
多团队协作下的权限模型
大型组织中,数据科学家、产品经理与合规团队需协同修改提示。推荐采用基于角色的访问控制(RBAC),例如:
  • 编辑者:可提交提示变更并关联测试用例
  • 审核者:来自法务或AI伦理团队,审批高风险变更
  • 发布者:触发CI/CD流水线,将提示部署至生产环境
[提示提交] → [自动测试] → [人工审核] → [灰度发布] → [全量上线]
【四旋翼无人机】具备螺旋桨倾斜机构的全驱动四旋翼无人机:建模与控制研究(Matlab代码、Simulink仿真实现)内容概要:本文围绕具备螺旋桨倾斜机构的全驱动四旋翼无人机展开研究,重点探讨其系统建模与控制策略,结合Matlab代码与Simulink仿真实现。文章详细分析了无人机的动力学模型,特别是引入螺旋桨倾斜机构后带来的全驱动特性,使其在姿态与位置控制上具备更强的机动性与自由度。研究涵盖了非线性系统建模、控制器设计(如PID、MPC、非线性控制等)、仿真验证及动态响应分析,旨在提升无人机在复杂环境下的稳定性和控制精度。同时,文中提供的Matlab/Simulink资源便于读者复现实验并进一步优化控制算法。; 适合人群:具备一定控制理论基础和Matlab/Simulink仿真经验的研究生、科研人员及无人机控制系统开发工程师,尤其适合从事飞行器建模与先进控制算法研究的专业人员。; 使用场景及目标:①用于全驱动四旋翼无人机的动力学建模与仿真平台搭建;②研究先进控制算法(如模型预测控制、非线性控制)在无人机系统中的应用;③支持科研论文复现、课程设计或毕业课题开发,推动无人机高机动控制技术的研究进展。; 阅读建议:建议读者结合文档提供的Matlab代码与Simulink模型,逐步实现建模与控制算法,重点关注坐标系定义、力矩分配逻辑及控制闭环的设计细节,同时可通过修改参数和添加扰动来验证系统的鲁棒性与适应性。
# 地质AI工作流系统完整部署方案(小白终极版) ## 📋 部署前准备 ### 硬件要求检查 - ✅ 操作系统:Windows 11 - ✅ 显卡:NVIDIA 2080ti双显卡(44GB显存) - ✅ 内存:96GB RAM - ✅ 存储:D盘有足够空间(建议至少100GB) ### 第一步:自动创建文件夹结构 1. **下载并运行自动创建脚本**: - 在桌面右键 → **新建** → **文本文档** - 重命名为:`自动创建文件夹.bat` - 右键编辑,粘贴以下代码: ```batch @echo off chcp 65001 >nul title 地质AI工作流系统文件夹创建工具 echo ========================================== echo 正在自动创建地质AI工作流系统文件夹结构 echo ========================================== echo. echo 请确保以管理员身份运行此脚本! echo. set "RootPath=D:\GeologyAI" echo 正在创建根目录... mkdir "%RootPath%" 2>nul echo 正在创建子文件夹... mkdir "%RootPath%\DockerData" 2>nul mkdir "%RootPath%\Ollama" 2>nul mkdir "%RootPath%\RAGFlow" 2>nul mkdir "%RootPath%\Dify" 2>nul mkdir "%RootPath%\Templates" 2>nul mkdir "%RootPath%\Templates\矿产勘查" 2>nul mkdir "%RootPath%\Templates\水工环地质" 2>nul mkdir "%RootPath%\Templates\岩土工程" 2>nul mkdir "%RootPath%\Templates\通用模板" 2>nul mkdir "%RootPath%\数据备份" 2>nul mkdir "%RootPath%\项目文档" 2>nul mkdir "%RootPath%\日志文件" 2>nul echo. echo ✅ 文件夹创建完成! echo. echo 创建的文件夹结构: tree "%RootPath%" /A echo. echo 按任意键退出... pause >nul ``` 2. **运行脚本**: - 右键点击 `自动创建文件夹.bat` - 选择"**以管理员身份运行**" - 等待完成,查看创建的文件夹结构 ### 第二步:开启WSL功能 1. **自动开启WSL**: - 创建新文件:`开启WSL.bat` - 右键编辑,粘贴: ```batch @echo off chcp 65001 >nul echo 正在启用WSL功能... dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart echo 正在启用虚拟机平台... dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart echo. echo ✅ WSL功能已启用! echo 请重启计算机完成安装... echo. pause ``` - 右键"以管理员身份运行" 2. **重启电脑** 3. **安装Ubuntu**: - 按 `Win + S`,输入"Microsoft Store" - 搜索"Ubuntu 22.04 LTS" - 点击"获取"安装 - 安装后打开,设置用户名和密码(记住密码!) ### 第三步:安装Docker Desktop 1. **下载Docker Desktop**: - 访问:https://www.docker.com/products/docker-desktop/ - 下载Windows版本 2. **自定义安装**: - 运行安装程序 - 取消"Use WSL 2 instead of Hyper-V"(如果出现) - 点击"Advanced" - 设置安装路径:`D:\GeologyAI\Docker\` - 设置数据目录:`D:\GeologyAI\DockerData\` - 完成安装 3. **配置Docker**: - 启动Docker Desktop - 右键系统托盘鲸鱼图标 → Settings - General → 勾选"Use the WSL 2 based engine" - 点击"Apply & Restart" ### 第四步:系统环境配置 1. **创建环境配置脚本**: - 在Ubuntu中运行以下命令: ```bash # 设置文件夹权限 sudo chmod -R 777 /mnt/d/GeologyAI/ # 创建项目目录链接 ln -s /mnt/d/GeologyAI ~/GeologyAI # 更新系统 sudo apt update && sudo apt upgrade -y # 安装必要工具 sudo apt install -y curl wget git vim ``` ### 第五步:安装Ollama 1. **创建Ollama安装脚本**: - 在Ubuntu中运行: ```bash cd /mnt/d/GeologyAI # 创建安装脚本 cat > install_ollama.sh << 'EOF' #!/bin/bash echo "开始安装Ollama..." # 安装Ollama curl -fsSL https://ollama.ai/install.sh | sh # 设置模型存储路径 echo 'export OLLAMA_MODELS="/mnt/d/GeologyAI/Ollama"' >> ~/.bashrc source ~/.bashrc # 下载地质行业AI模型 echo "开始下载AI模型(这需要较长时间,请耐心等待)..." ollama pull deepseek-coder:6.7b ollama pull llama2:7b ollama pull deepseek-llm:7b echo "✅ Ollama安装完成!" EOF # 运行安装脚本 chmod +x install_ollama.sh ./install_ollama.sh ``` ### 第六步:部署RAGFlow 1. **创建RAGFlow配置**: - 在Ubuntu中运行: ```bash cd /mnt/d/GeologyAI/RAGFlow # 创建docker-compose配置文件 cat > docker-compose.yml << 'EOF' version: '3.8' services: ragflow: image: inchat/ragflow:latest container_name: ragflow ports: - "9380:9380" volumes: - ./data:/app/data - /mnt/d/GeologyAI/Templates:/templates - /mnt/d/GeologyAI/项目文档:/projects environment: - RAGFLOW_DATA_DIR=/app/data restart: unless-stopped deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] EOF # 启动RAGFlow docker-compose up -d ``` ### 第七步:部署Dify 1. **创建Dify配置**: - 在Ubuntu中运行: ```bash cd /mnt/d/GeologyAI/Dify # 创建docker-compose配置文件 cat > docker-compose.yml << 'EOF' version: '3.8' services: dify: image: langgenius/dify:latest container_name: dify ports: - "5001:5001" volumes: - ./data:/app/api/data - /mnt/d/GeologyAI/Templates:/templates environment: - DB_TYPE=sqlite - SQLITE_DATABASE=dify.db restart: unless-stopped EOF # 启动Dify docker-compose up -d ``` ### 第八步:创建地质模板结构 1. **创建模板初始化脚本**: - 在Windows中创建:`初始化地质模板.bat` ```batch @echo off chcp 65001 >nul echo 正在创建地质报告模板结构... set "TemplatePath=D:\GeologyAI\Templates" echo 创建矿产勘查模板目录... mkdir "%TemplatePath%\矿产勘查\第一章_前言" mkdir "%TemplatePath%\矿产勘查\第二章_地质特征" mkdir "%TemplatePath%\矿产勘查\第三章_勘查工作" mkdir "%TemplatePath%\矿产勘查\第四章_资源储量" mkdir "%TemplatePath%\矿产勘查\第五章_结论建议" echo 创建水工环地质模板目录... mkdir "%TemplatePath%\水工环地质\水文地质" mkdir "%TemplatePath%\水工环地质\工程地质" mkdir "%TemplatePath%\水工环地质\环境地质" echo 创建岩土工程模板目录... mkdir "%TemplatePath%\岩土工程\勘察报告" mkdir "%TemplatePath%\岩土工程\测试数据" mkdir "%TemplatePath%\岩土工程\分析评价" echo 创建通用模板目录... mkdir "%TemplatePath%\通用模板\封面页" mkdir "%TemplatePath%\通用模板\目录结构" mkdir "%TemplatePath%\通用模板\图表模板" echo. echo ✅ 地质模板结构创建完成! echo 请将您的Word报告模板复制到相应目录中 echo. pause ``` - 右键"以管理员身份运行" ### 第九步:创建一键管理系统 1. **创建主启动脚本**: - 在Ubuntu中运行: ```bash cd /mnt/d/GeologyAI # 创建主启动脚本 cat > 地质AI工作流系统.sh << 'EOF' #!/bin/bash # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # 日志函数 log() { echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')]${NC} $1" } error() { echo -e "${RED}[错误]${NC} $1" } warning() { echo -e "${YELLOW}[警告]${NC} $1" } # 主菜单 show_menu() { clear echo -e "${BLUE}==========================================${NC}" echo -e "${BLUE} 地质AI工作流系统管理菜单${NC}" echo -e "${BLUE}==========================================${NC}" echo -e "1. 启动所有服务" echo -e "2. 停止所有服务" echo -e "3. 重启所有服务" echo -e "4. 查看服务状态" echo -e "5. 查看系统日志" echo -e "6. 备份系统数据" echo -e "7. 更新AI模型" echo -e "0. 退出" echo -e "${BLUE}==========================================${NC}" echo -n "请选择操作 [0-7]: " } # 启动所有服务 start_services() { log "启动Ollama AI模型服务..." ollama serve & sleep 10 log "启动RAGFlow知识库系统..." cd /mnt/d/GeologyAI/RAGFlow docker-compose up -d sleep 10 log "启动Dify工作流系统..." cd /mnt/d/GeologyAI/Dify docker-compose up -d sleep 10 log "检查服务状态..." check_status } # 停止所有服务 stop_services() { log "停止RAGFlow服务..." cd /mnt/d/GeologyAI/RAGFlow docker-compose down log "停止Dify服务..." cd /mnt/d/GeologyAI/Dify docker-compose down log "停止Ollama服务..." pkill -f "ollama serve" log "所有服务已停止" } # 重启服务 restart_services() { stop_services sleep 5 start_services } # 检查服务状态 check_status() { log "服务状态检查:" echo -e "\n${YELLOW}Ollama 状态:${NC}" if pgrep -f "ollama serve" > /dev/null; then echo -e "${GREEN}✅ 运行中${NC}" else echo -e "${RED}❌ 未运行${NC}" fi echo -e "\n${YELLOW}RAGFlow 状态:${NC}" cd /mnt/d/GeologyAI/RAGFlow if docker-compose ps | grep -q "Up"; then echo -e "${GREEN}✅ 运行中${NC}" echo -e "访问地址: ${BLUE}http://localhost:9380${NC}" else echo -e "${RED}❌ 未运行${NC}" fi echo -e "\n${YELLOW}Dify 状态:${NC}" cd /mnt/d/GeologyAI/Dify if docker-compose ps | grep -q "Up"; then echo -e "${GREEN}✅ 运行中${NC}" echo -e "访问地址: ${BLUE}http://localhost:5001${NC}" else echo -e "${RED}❌ 未运行${NC}" fi } # 查看日志 show_logs() { echo -e "${YELLOW}选择要查看的日志:${NC}" echo "1. RAGFlow 日志" echo "2. Dify 日志" echo "3. 系统日志" echo "4. 所有日志" echo -n "请选择 [1-4]: " read log_choice case $log_choice in 1) cd /mnt/d/GeologyAI/RAGFlow docker-compose logs -f ;; 2) cd /mnt/d/GeologyAI/Dify docker-compose logs -f ;; 3) tail -f /mnt/d/GeologyAI/日志文件/system.log ;; 4) log "显示所有服务日志..." ;; *) error "无效选择" ;; esac } # 备份数据 backup_data() { log "开始备份系统数据..." BACKUP_DIR="/mnt/d/GeologyAI/数据备份/backup_$(date +%Y%m%d_%H%M%S)" mkdir -p "$BACKUP_DIR" cp -r /mnt/d/GeologyAI/RAGFlow/data "$BACKUP_DIR/" cp -r /mnt/d/GeologyAI/Dify/data "$BACKUP_DIR/" cp -r /mnt/d/GeologyAI/Templates "$BACKUP_DIR/" log "数据备份完成: $BACKUP_DIR" } # 更新模型 update_models() { log "更新AI模型..." ollama pull deepseek-coder:latest ollama pull llama2:latest log "模型更新完成" } # 主循环 while true; do show_menu read choice case $choice in 1) start_services ;; 2) stop_services ;; 3) restart_services ;; 4) check_status ;; 5) show_logs ;; 6) backup_data ;; 7) update_models ;; 0) log "感谢使用地质AI工作流系统!" exit 0 ;; *) error "无效选择,请重新输入" ;; esac echo echo -n "按任意键继续..." read -n 1 done EOF # 设置执行权限 chmod +x 地质AI工作流系统.sh # 创建Windows快捷方式脚本 cat > create_shortcut.bat << 'EOF' @echo off chcp 65001 >nul echo 创建地质AI系统快捷方式... set SCRIPT_PATH="%USERPROFILE%\Desktop\启动地质AI系统.lnk" set TARGET="wsl.exe" set ARGUMENTS="-d Ubuntu-22.04 -e bash /mnt/d/GeologyAI/地质AI工作流系统.sh" echo 创建桌面快捷方式... powershell -Command "$WshShell = New-Object -comObject WScript.Shell; $Shortcut = $WshShell.CreateShortcut(%SCRIPT_PATH%); $Shortcut.TargetPath = %TARGET%; $Shortcut.Arguments = %ARGUMENTS%; $Shortcut.Save()" echo ✅ 快捷方式创建完成! echo 桌面上的"启动地质AI系统"快捷方式已创建 pause EOF # 在Windows中运行快捷方式创建 cmd.exe /c create_shortcut.bat ``` ### 第十步:验证部署 1. **创建验证脚本**: - 在Ubuntu中运行: ```bash cd /mnt/d/GeologyAI # 创建验证脚本 cat > 系统验证.sh << 'EOF' #!/bin/bash echo "开始验证地质AI工作流系统..." echo "1. 检查文件夹结构..." ls -la /mnt/d/GeologyAI/ echo "2. 检查Docker服务..." docker --version docker-compose --version echo "3. 检查Ollama..." ollama --version ollama list echo "4. 检查容器状态..." cd /mnt/d/GeologyAI/RAGFlow && docker-compose ps cd /mnt/d/GeologyAI/Dify && docker-compose ps echo "5. 测试网络访问..." echo "RAGFlow: http://localhost:9380" echo "Dify: http://localhost:5001" echo "✅ 验证完成!" EOF chmod +x 系统验证.sh ./系统验证.sh ``` ## 🎯 使用指南 ### 启动系统: 1. 双击桌面"**启动地质AI系统**"快捷方式 2. 在菜单中选择"1"启动所有服务 3. 等待服务启动完成 ### 访问系统: - **知识库管理**:http://localhost:9380 - **工作流配置**:http://localhost:5001 ### 地质工作流程: 1. **准备知识**:在RAGFlow中上传地质规范、技术标准 2. **配置模板**:在Templates文件夹中放置报告模板 3. **创建工作流**:在Dify中配置报告生成流程 4. **生成报告**:输入勘查数据,自动生成专业报告 ## 🔧 故障排除 ### 常见问题解决: 1. **端口冲突**: ```bash # 修改RAGFlow端口为9381 # 修改Dify端口为5002 ``` 2. **Docker启动失败**: - 检查Docker Desktop是否运行 - 重启Docker服务 3. **模型下载慢**: ```bash # 使用镜像加速 OLLAMA_HOST=0.0.0.0 ollama pull deepseek-coder:6.7b ``` 4. **权限问题**: ```bash sudo chmod -R 777 /mnt/d/GeologyAI/ ``` ## 💾 维护指南 ### 日常维护: - 定期使用菜单选项"6"备份数据 - 使用菜单选项"4"检查服务状态 - 定期使用菜单选项"7"更新AI模型 ### 数据备份: 重要数据位置: - `D:\GeologyAI\RAGFlow\data\` - 知识库数据 - `D:\GeologyAI\Dify\data\` - 工作流配置 - `D:\GeologyAI\Ollama\` - AI模型 - `D:\GeologyAI\Templates\` - 报告模板 分析完善以上部署方案
09-30
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值