强化学习电商代理

基于强化学习的端到端电商购物助手,整合本体推理、业务逻辑和Gradio界面,支持从数据训练到部署的完整闭环。

  • by shark8848
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 shark8848/ontology-mcp-server-RL-Stable-Baselines3

使用说明

本体RL商务代理

英语 | 简体中文

🛍️ 本体RL商务代理 (前身为“Ontology MCP Server”)强调了最新的强化学习驱动闭环。该系统仍然依赖于模型上下文协议(MCP)来结合本体推理、电子商务业务逻辑、内存和Gradio UI,以便您可以端到端地再现完整的购物助理体验。

🤖 RL驱动的代理:稳定的基线3 PPO训练管道在树上运输。它涵盖了从 data → 训练→ 评估→ 部署,让Agent不断从真实的成绩单和工具日志中学习,从而自动发现更安全、更高效的工具链策略。

🚀 快速开始

选项A:Docker(推荐)

需求

  • Docker 20.10+
  • Docker Compose 2.0+
  • 8gb+RAM
  • 20 GB磁盘空间

一键启动

# 1. Clone the repo
git clone <repository-url>
cd ontology-mcp-server-RL-Stable-Baselines3

# 2. Configure environment variables
cp .env.example .env
nano .env  # fill in LLM API keys

# 3. Launch all services
docker-compose up -d

# 4. Tail logs
docker-compose logs -f

# 5. Stop services
docker-compose down

服务端点

  • MCP服务器: http://localhost:8000
  • 代理UI: http://localhost:7860
  • 培训仪表板: http://localhost:7861

常用命令

# Restart a single service
docker-compose restart agent-ui

# Enter a container for debugging
docker exec -it ontology-agent-ui bash

# Inspect status
docker-compose ps

# Clean and rebuild (use with caution)
docker-compose down -v
docker-compose build --no-cache
docker-compose up -d

GPU支持(可选)

安装 nvidia-docker,然后在中取消注释GPU块 docker-compose.yml 在...之下 training-dashboard.

distribution=$(. /etc/os-release; echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker

方案B:地方发展

1.环境准备

需求

  • Python 3.10+
  • 8 GB+RAM用于推理/演示(32 GB+用于RL训练)
  • Linux/macOS/WSL2
  • GPU可选(NVIDIA推荐≥12 GB VRAM)
  • 40GB磁盘(数据库、色度矢量、RL检查点)

安装依赖项

git clone <repository-url>
cd ontology-mcp-server-RL-Stable-Baselines3
python3 -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
pip install -e .

2.初始化数据库

Docker部署在首次启动时自动运行这些步骤。手动步骤仅适用于本地开发人员。

export ONTOLOGY_DATA_DIR="$(pwd)/data"
python scripts/init_database.py        # Create tables
python scripts/seed_data.py            # Seed base users/products
python scripts/add_bulk_products.py    # Optional: +1000 products
python scripts/add_bulk_users.py       # Optional: +200 users
python scripts/update_demo_user_names.py --seed 2025

示例用户

用户名 姓名 电子邮件 级别 终身使用时间
1 张三 zhangsan@example.com 常规 0元
2 李思 lisi@example.com 贵宾 6500加元
3 王武 wangwu@example.com 人民币12000元

样品产品

  • iPhone 15 Pro Max(9999元)
  • iPhone 15 Pro(8999元)
  • iPhone 15(5999元)
  • AirPods Pro 2(1899元)
  • 配件等。

3.配置LLM

src/agent/config.yaml 支持DeepSeek、OpenAI兼容API或本地Ollama:

llm:
  provider: "deepseek"
  api_url: "https://api.deepseek.com/v1"
  api_key: "your-api-key-here"
  model: "deepseek-chat"
  temperature: 0.7
  max_tokens: 2000

或者通过环境变量:

export OPENAI_API_URL="https://api.deepseek.com/v1"
export OPENAI_API_KEY="your-api-key"
export OPENAI_MODEL="deepseek-chat"

# Local Ollama (qwen3:8b example)
export LLM_PROVIDER="ollama"
export OLLAMA_API_URL="http://localhost:11434/v1"
export OLLAMA_MODEL="qwen3:8b"
export OLLAMA_API_KEY="ollama"  # Ollama ignores the value

3.1配置MCP基本URL

培训脚本(train_rl_agent.py)Gradio代理通过HTTP调用MCP。以(权力)否决 MCP_BASE_URL 如果需要:

# Local/dev
export MCP_BASE_URL="http://127.0.0.1:8000"

# Docker/production (container-to-container)
export MCP_BASE_URL="http://ontology-mcp-server:8000"

4.启动服务

选项1:start_all.sh(推荐)

./scripts/start_all.sh
# 默认汇总到 logs/server.log(按日轮转),若想恢复各脚本独立日志,运行前导出 DISABLE_SCRIPT_LOG_FILES=0
tail -f logs/server.log

停止一切:

./scripts/stop_all.sh

选项2:单独开始

./scripts/run_server.sh
./scripts/run_agent.sh
./scripts/run_training_dashboard.sh
./scripts/run_tensorboard.sh

选项3:手动命令

# Terminal 1: MCP Server (FastAPI)
source .venv/bin/activate
export ONTOLOGY_DATA_DIR="$(pwd)/data"
uvicorn ontology_mcp_server.server:app --host 0.0.0.0 --port 8000

# Terminal 2: Gradio UI
source .venv/bin/activate
export ONTOLOGY_DATA_DIR="$(pwd)/data"
export MCP_BASE_URL="http://127.0.0.1:8000"
python -m agent.gradio_ui

# Terminal 3: RL Training Dashboard
source .venv/bin/activate
export ONTOLOGY_DATA_DIR="$(pwd)/data"
export MCP_BASE_URL="http://127.0.0.1:8000"
python scripts/run_training_dashboard.py

# Terminal 4: TensorBoard
source .venv/bin/activate
tensorboard --logdir data/rl_training/logs/tensorboard --host 0.0.0.0 --port 6006

要更改Gradio绑定地址/端口,请设置 GRADIO_SERVER_NAME 和 GRADIO_SERVER_PORT 在发射之前。 run_agent.sh / run_training_dashboard.sh 接受 AGENT_HOST/PORT 和 TRAINING_DASHBOARD_HOST/PORT;它们将值转发给Gradio环境变量,以保持端口7860/7861的独立性。

5.访问用户界面

访问 http://127.0.0.1:7860.

选项卡:

  • 💬 计划:聊天界面+推理计划
  • 🔧 工具调用:实时工具调用日志
  • 🧠 记忆:对话存储器(ChromaDB)
  • 🛍️ 商业分析:质量评分、意图跟踪器、对话状态、推荐引擎
  • 📋 执行日志:完整的LLM I/O和工具跟踪

记忆流(美人鱼)

flowchart LR
  subgraph Ingest[Ingest & Store]
    direction TB
    U(User input)
    U --> AT(ChromaMemory.add_turn)
    AT --> SUM(generate_summary)
    SUM --> DB((ChromaDB collection))
    AT --> DB
  end

  subgraph Extract[Extraction]
    direction TB
    AT --> EX(UserContextExtractor)
    EX --> UM(UserContextManager)
  end

  subgraph Retrieval[Retrieval & Injection]
    direction TB
    UM --> CTX(get_context_for_prompt)
    CTX --> NOTE_CTX(Inject context + history)
    NOTE_CTX --> AGT(Agent / LLM)
  end

  AGT --> TC(Tool calls)
  TC --> AT
  TC -->|create_order yields ORD...| UM

6.对话示例

User: Hi
AI: Hello! Welcome... (intent: greeting)

User: Recommend a phone?
AI: [commerce.search_products] Returns 4 iPhone models...

User: Is iPhone 15 Pro Max in stock?
AI: [commerce.check_stock] In stock, 50 units...

User: Add to cart
AI: [commerce.add_to_cart] Added... (state: browsing → cart)

7.交互顺序图

完整对话的日志驱动片段(建议→ 多搜索→ 结账→ 售后→ 分析)住在 docs/interaction_sequence_diagrams.md。每个部分都包含一个Mermaid序列图和一个PNG快照,因此您可以排列原始日志、工具调用和UI状态。

8.可选RL回路

  • scripts/generate_dialogue_corpus.py 最新200个完全真实的场景
  • python test_rl_modules.py 对RL模块进行健全性检查
  • python train_rl_agent.py --timesteps ... 启动PPO培训
  • 详情如下 🧠 强化学习(第6阶段)

🔧 MCP服务器API

MCP服务器公开HTTP端点。

健康检查

curl http://localhost:8000/health

能力列表

curl http://localhost:8000/capabilities

调用工具

curl -X POST http://localhost:8000/invoke \
  -H "Content-Type: application/json" \
  -d '{
    "tool": "commerce.search_products",
    "params": {
      "available_only": true,
      "limit": 5
    }
  }'

21工具

本体工具(3)

  1. ontology.explain_discount
  2. ontology.normalize_product
  3. ontology.validate_order

商务工具(18) 4. commerce.search_products 5. commerce.get_product_detail 6. commerce.check_stock 7. commerce.get_product_recommendations 8. commerce.get_product_reviews 9. commerce.add_to_cart 10. commerce.view_cart 11. commerce.remove_from_cart 12. commerce.create_order 13. commerce.get_order_detail 14. commerce.cancel_order 15. commerce.get_user_orders 16. commerce.process_payment 17. commerce.track_shipment 18. commerce.get_shipment_status 19. commerce.create_support_ticket 20. commerce.process_return 21. commerce.get_user_profile

🧠 代理架构

核心组件

  1. 反应代理 (react_agent.py)

    • LangChain ReAct工作流程(推理+表演)
    • 自动工具选择和推理跟踪
    • 多回合对话意识
  2. 对话状态 (conversation_state.py)

    • 8个阶段:问候→ 浏览→ 选择→ cart → 结账→ 追踪→ 服务→ idle
    • 跟踪VIP状态、购物车状态、浏览历史记录
    • 根据关键字和工具使用情况进行自动转换检测
  3. 系统提示 (prompts.py)

    • 电子商务角色:专业、友好的购物顾问
    • 在生成中文提示时使用礼貌的“nin”语调;避免使用系统术语
    • 确认风险操作(付款、取消)
    • 鼓励澄清问题,而不是立即拒绝
  4. 对话记忆 (chroma_memory.py)

    • 后端:ChromaDB
    • 检索模式: recent, similarity, hybrid
    • 自动总结每个回合
    • 坚持 data/chroma_memory/
  5. 质量追踪 (quality_metrics.py)

    • 会话质量得分(0-1)
    • 用户满意度评估
    • 工具效率和延迟跟踪
  6. 意图跟踪器 (intent_tracker.py)

    • 14个意图(问候、搜索、view_cart、结账、track_order等)
    • 信心评分+历史记录
  7. 推荐引擎 (recommendation_engine.py)

    • 个性化产品推荐
    • 使用浏览/购物车历史记录和会员级别

🧠 强化学习(第6阶段)

硬件提示:PPO训练受益于≥8个内核、≥32 GB RAM和≥1个具有≥12 GB VRAM的GPU(RTX 3080/4090/A6000)。仅使用CPU是可能的,但100K步可能需要5-8小时;GPU将其缩短至约1小时。预留≥15GB data/rl_training/.

目标和收益

  • 让ReAct Agent通过稳定基线3PPO自我改进。
  • 将用户上下文/意图/工具使用/产品信息编码为128维状态。
  • 多目标奖励(任务成功、效率、满意度、安全性)。
  • 体育馆环境重用LangChain Agent,而无需重新实现业务逻辑。

模块概述(src/agent/rl_agent/)

文件 角色 注释
state_extractor.py 将多源对话编码为128维向量 处理嵌入/简单特征,容忍字符串/对象意图
reward_calculator.py 多目标奖励 task/efficiency/satisfaction/safety +事件聚合
gym_env.py EcommerceGymEnv 22个离散动作(21个工具+直接回复)
ppo_trainer.py 训练编排 虚拟VecEnv+评估/检查点回调+TensorBoard
train_rl_agent.py CLI条目 可配置步骤、评估频率、检查点、嵌入

场景语料库 data/training_scenarios/sample_dialogues.json 包括200个真实对话,涉及5个场景类别中的真实用户/订单/产品。

闭环:数据→ 训练→ 应用

  1. 数据阶段

    • 确保数据库已填充: add_bulk_products.py, add_bulk_users.py, update_demo_user_names.py --seed 2025.
    • 生成200个真实场景: python scripts/generate_dialogue_corpus.py.
    • README.zh.md中显示的可选验证代码段(类别计数)。
  2. 训练

source .venv/bin/activate
export ONTOLOGY_DATA_DIR="$(pwd)/data"
export MCP_BASE_URL="http://localhost:8000"
export OPENAI_API_URL="https://api.deepseek.com/v1"
export OPENAI_API_KEY="your-api-key"
export OPENAI_MODEL="deepseek-chat"
export TRAIN_DEVICE="gpu"  # fallback to cpu
python test_rl_modules.py
python train_rl_agent.py \
  --timesteps 100000 \
  --eval-freq 2000 \
  --checkpoint-freq 20000 \
  --output-dir data/rl_training \
  --max-steps-per-episode 12 \
  --scenario-file data/training_scenarios/sample_dialogues.json \
  --device "${TRAIN_DEVICE:-gpu}"

日志流到 data/rl_training/logs/tensorboard/.

  1. 评估和工件
  • 最佳型号: data/rl_training/best_model/best_model.zip
  • 最终型号: data/rl_training/models/ppo_ecommerce_final.zip
  • 检查点: data/rl_training/checkpoints/ppo_ecommerce_step_*.zip
  • 剧集统计: data/rl_training/logs/training_log.json
  1. 部署
python - <<'PY'
from agent.react_agent import LangChainAgent
from agent.rl_agent.ppo_trainer import PPOTrainer

agent = LangChainAgent(max_iterations=6)
trainer = PPOTrainer(agent, output_dir="data/rl_training")
trainer.create_env(max_steps_per_episode=10)
trainer.load_model("data/rl_training/best_model/best_model.zip")

query = "I need ten flagship Huawei phones, budget around 7000"
action_idx, action_name, _ = trainer.predict(query)
print("RL suggested action:", action_idx, action_name)

result = agent.run(query)
print(result["final_answer"])
PY

RL仪表板(Gradio)

src/training_dashboard/ 提供了一个自包含的控制台,具有语料库聚合、训练编排、度量可视化、模型注册表和热重载功能:

  1. 复制 config/training_dashboard.example.yaml → config/training_dashboard.yaml 并调整路径。
  2. 通过以下方式启动 PYTHONPATH=src python scripts/run_training_dashboard.py.
  3. 选项卡:概述(实时状态、奖励/长度曲线、日志)、语料库管理(静态/日志混合)、训练控制、模型管理。

奖励明细

  • R_task:订单成功+10;缺少关键信息或空回复扣除。
  • R_efficiency:更少的工具调用和低延迟奖励;过度通话将受到处罚。
  • R_satisfaction:使用实时质量评分来奖励主动指导。
  • R_safety:从+1开始;SHACL故障或不安全工具最多可减少10。

调整提示

  • 启用 --use-text-embedding 如果资源允许更富裕的国家。
  • 调整 reward_weights 在 PPOTrainer 平衡成功与安全。
  • max_steps_per_episode:用于频繁评估的短片;更适合完整的购物之旅。

🏗️ 本体与架构

本体语义模型

系统定义 12个核心业务实体 具有完整的关系和属性:

核心交易实体

  1. 用户

    • 属性:user_id、用户名、电子邮件、电话、user_level(普通/VIP/SVIP)、total_spend、credit_score
    • 操作:查询用户、用户身份验证
    • 关系:创建订单、拥有购物车商品、发起支持票
  2. 产品

    • 属性:product_id、product_name、类别、品牌、型号、价格、库存数量、规格
    • 操作:搜索产品,获取产品详细信息,检查库存,获取推荐,获取评论
    • 关系:由购物车商品、订单商品和评论引用
  3. 购物车Item

    • 属性:cart_id、user_id、product_id、数量、added_at
    • 操作:添加到购物车、查看购物车、从购物车中删除
    • 关系:将用户链接到产品
  4. 订单

    • 属性:order_id、order_no、total_amount、discount_amount、final_amount、order_status、payment_status
    • 操作:创建订单,获取订单详情,取消订单,获取用户订单
    • 关系:包含订单项,生成付款和发货记录
    • 本体推理:根据用户级别、订单金额和一阶状态,通过本体规则计算折扣金额
  5. 订单项

    • 属性:item_id、order_id、product_id、product_name、数量、单价、小计
    • 关系:订单包含多个订单项,每个订单项都引用一个产品
  6. 支付

    • 属性:payment_id、order_id、payment_method、payment_amount、payment_status、transaction_id、payments_time
    • 操作:处理付款
    • 关系:由订单生成
    • 备注:Transaction_id作为付款收据
  7. 运输

    • 属性:shipment_id,order_id,tracking_no,carrier,current_status,current_location,estimated_delivery
    • 操作:跟踪发货,获取发货状态
    • 关系:根据订单生成,记录发货轨迹
  8. 发货追踪

    • 属性:track_id、shipment_id、状态、位置、描述、track_time
    • 关系:多条轨道属于一批货物

客户服务和售后实体

  1. 支持票

    • 属性:ticket_id、ticket_no、user_id、order_id、类别、优先级、状态、主题、描述
    • 操作:创建支持票
    • 关系:由用户为订单创建,包含支持消息
  2. 支持留言

    • 属性:message_id、ticket_id、sender_type、sender_id、message_content、sent_at
    • 关系:多条消息属于一个支持票
  3. 返回

    • 属性:return_id、return_no、order_id、user_id、retire_type(退货/换货)、原因、状态、退款_金额
    • 操作:流程返回
    • 关系:从订单开始
  4. 审查

    • 属性:review_id、product_id、user_id、order_id、评级(1-5颗星)、内容、图像
    • 操作:获取产品评论
    • 关系:用户评论产品

架构图

实体关系:

  • User → 订单→ 订单项→ 产品
  • 订单→ 购物车商品项→ 产品
  • 订单→ 付款(Payment_amount、Payment_method、transaction_id)
  • 订单→ 运输→ 发货轨迹(地点、时间)
  • 用户/订单→ 支持票→ 支持留言
  • 订单→ 退货(退货_否、退货_类型、退款_金额)
  • 产品→ 评论(评分、内容)

本体推理:

  • 折扣规则:VIP/SVIP会员折扣、批量折扣(≥5000/≥10000)、一级折扣
  • 配送规则:免费配送(订单≥500或VIP/SVIP),次日送达(SVIP),偏远地区附加费
  • 退货政策:7天无理由退货(常规),15天(VIP/SVIP),特定类别规则

MCP工具层21个工具通过本体推理对12个实体进行操作 反应代理:调用工具,通过强化学习进行优化(PPO模型、奖励系统)

🎯 本体规则覆盖率

100% ontology_rules.ttl 实施于 ecommerce_ontology.py.

用户层规则(2)

规则 触发器 方法
VIP升级规则 总支出≥5000 infer_user_level()
SVIP升级规则 总支出≥10000 infer_user_level()

折扣规则(5)

规则 触发 折扣 方法
VIP折扣规则 VIP用户 95% infer_discount()
SVIP折扣规则 SVIP用户 90% infer_discount()
第5卷折扣规则 订单量≥5000 95% infer_discount()
批量折扣10k规则 订单≥10000 90% infer_discount()
FirstOrder折扣规则 首次购买者 98% infer_discount()

会员折扣和批量折扣并不叠加——最好的折扣获胜。

运输规则(5)

规则 触发器 发货 方法
免费送货500规则 订单≥500 0元标准 infer_shipping()
VIPFreeShipping规则 VIP/SVIP 0元标准 infer_shipping()
SVIP次日交货规则 SVIP 次日0元 infer_shipping()
标准发货规则 常规<500 15元标准 infer_shipping()
RemoteAreaShipping规则 远程地址 +30元 infer_shipping()

退换货规则(5)

规则 范围 窗口 附加条件
标准7天退货规则 常规用户 7天 无需理由
VIP15天退货规则 VIP/SVIP 15天 无理由
电子退货规则 电子产品 基于层级 设备未打开
配件退货规则 配件 分层 包装完好
服务不退货规则 服务 不适用 不可退货

组合策略(2)

策略 场景 行为
折扣叠加策略 多重折扣 选择最优
发货优先级策略 多种发货选项 应用优先级

SHACL验证

commerce_service.py 在创建订单之前调用SHACL验证,以确保数据完整性,记录顶级违规和三重计数。

📊 Gradio用户界面功能

  • 💬 计划:输入区域、AI响应、推理计划、实时状态。
  • 🔧 工具调用:工具名称/参数、时间戳、结果、错误。
  • 🧠 记忆:历史列表、摘要、检索控件、会话管理。
  • 🛍️ 商业分析:质量指标、意图分析、对话状态、推荐引擎。
  • 📋 执行日志:完整的LLM输入/输出和工具跟踪。

📚 文档

🧪 测试

source .venv/bin/activate
python test_memory_quick.py
python test_execution_log.py
python test_phase4_shopping.py
python test_phase4_advanced.py
python test_gradio_ecommerce.py
python test_rl_modules.py

pytest tests/
pytest tests/test_services.py
pytest tests/test_commerce_service.py
python train_rl_agent.py --timesteps 20000 --eval-freq 2000 --checkpoint-freq 5000

⚙️ 配置

环境变量

MCP/数据根

export ONTOLOGY_DATA_DIR="$(pwd)/data"
export APP_HOST=0.0.0.0
export APP_PORT=8000

本体切换(config.yaml)

ontology:
   use_owlready2: true  # 默认启用,可通过 config.yaml 修改

如需在运行时临时关闭,可设置 ONTOLOGY_USE_OWLREADY2=false 环境变量覆盖上述配置。

代理人和法学硕士

export MCP_BASE_URL="http://127.0.0.1:8000"
export OPENAI_API_URL="https://api.deepseek.com/v1"
export OPENAI_API_KEY="your-api-key"
export OPENAI_MODEL="deepseek-chat"
export LLM_PROVIDER="deepseek"

Gradio服务

export GRADIO_SERVER_NAME=0.0.0.0
export GRADIO_SERVER_PORT=7860
export AGENT_HOST=0.0.0.0
export AGENT_PORT=7860
export TRAINING_DASHBOARD_HOST=0.0.0.0
export TRAINING_DASHBOARD_PORT=7861
export LOG_DIR="$(pwd)/logs"
export TB_LOG_DIR="$(pwd)/data/rl_training/logs/tensorboard"
export TB_HOST=0.0.0.0
export TB_PORT=6006

# 统一日志输出
export ONTOLOGY_SERVER_LOG_DIR="$(pwd)/logs"   # 默认也是 repo/logs
# 设为 0 可恢复各 run_*.sh 生成单独 log 文件
export DISABLE_SCRIPT_LOG_FILES=1

RL助手

export TRAIN_DEVICE=gpu
export RL_OUTPUT_DIR="$(pwd)/data/rl_training"

记忆

export MEMORY_ENABLED=true
export MEMORY_BACKEND=chromadb
export CHROMA_PERSIST_DIR="data/chroma_memory"
export MEMORY_RETRIEVAL_MODE=recent
export MEMORY_MAX_TURNS=10

config.yaml示例

看 src/agent/config.yaml 获取完整选项(DeepSeek/Ollama、内存、代理切换)。

🗄️ 数据库模式

SQLite数据库 data/ecommerce.db 包含12个表:

  • users, products, cart_items, orders, order_items
  • payments, shipments, shipment_tracks
  • support_tickets, support_messages, returns, reviews

🎯 用例

  1. 搜索和推荐: commerce.search_products +推荐引擎。
  2. 完整的购买流程:浏览→ 选择→ cart → 结账→ 支付→ 追踪。
  3. 订单管理: commerce.get_user_orders,取消/返回流程。
  4. 本体推理: ontology.explain_discount 用于上下文折扣解释。

🤝 贡献

  1. 分叉项目
  2. git checkout -b feature/AmazingFeature
  3. git commit -m 'Add some AmazingFeature'
  4. git push origin feature/AmazingFeature
  5. 打开拉取请求

🏷️ 发布亮点

v1.5.3(2025-12-01)——确认记忆和完整工具痕迹

  • 确认模式持久化:一旦用户批准了一个关键工具(创建订单/付款),运行现在会将经过净化的参数+观察结果写回 tool_log、内存和对话状态,以便下一轮看到已完成的订单,避免循环回到结账。
  • 验证保护硬停止: ontology_validate_order 被标记为关键工具,提醒副本会阻止最终答案,直到SHACL验证运行,代理现在会在订单确认后立即提示用户继续付款。
  • 端到端工具透明度:流式事件传递了整个观察有效负载,Gradio UI不再截断JSON,使审计和调试变得更加容易。
  • 新现场报告:添加 docs/articles/12-memory-intent-lessons.md 记录与记忆相关的经验教训(中英文索引),以便未来的贡献者可以避免倒退。

v1.5.2(2025-11-29)——流媒体跟踪基线✅

  • 真正的流媒体管道: react_agent.py 现在公开了基于生成器的 run_stream,DeepSeek适配器发出令牌增量,Gradio UI逐个令牌呈现想法+最终答案(提交505b39e→ 7c99e84→ aab0956)。
  • 搜索准确性升级:可配置的多策略意图跟踪器、LLM驱动的查询重写器、FTS5全文索引+混合回退(FTS5→ LIKE → 类别)极大地改进了“电子产品”等通用查询。
  • 可追溯性工具: docs/interaction_sequence_diagrams.md 用美人鱼图+PNG证据记录每个对话回合(推荐→ 多搜索→ 结账→ 售后→ analytics),现在两个README都指向它 v1.5.2 标记了下游RL实验的基线。

v1.5.1(2025-11-23)

  • 带有意图/用户上下文元数据的内联图表(Markdown+Base64 PNG) _filter_charts_by_intent() 隐私保护。
  • analytics_service.py 具有五个图表数据端点+ analytics_get_chart_data MCP工具(第22种能力)。
  • 依赖关系对齐: plotly>=6.1.0,<7.0.0, kaleido==0.2.1;诊断脚本(verify_chart_fix.py, test_chart_feature.py)以及数据/日志备份。
  • 培训仪表板用户体验:点击预览语料库、同步JSON视图、多实例调试的主机/端口日志。

v1.2.3(2025-11-15)——重命名和确认

  • 重新命名为 本体RL商务代理;记录RL上下文。
  • 添加了对Stable Baselines3/体育馆/TensorBoard等的确认。
  • 工具:避免订单ID验证 OverflowError;Olama支持 qwen3:8b.

v1.2.2(2025-11-12)--自述RL指南

  • 在README的早期添加了RL闭环描述,并强调了数据→训练→TensorBoard→部署。

v1.2.0(2025-11-11)——动态用户上下文系统

  • 自动提取用户ID、电话号码、地址、订单ID、产品ID。
  • 及时注射确保连续性;正则表达式引擎处理多语言/宽度变量。
  • 基于集的重复数据消除,严格 ORD... 验证、产品ID范围保护。
  • 测验: tests/test_user_context.py.

v1.2.1(2025-11-11)--最近的订单跟踪修补程序

  • create_order 现在强制进行有效的观察/输入解析 ORD... ID,呼叫 set_recent_order().

v1.1.0(2025-11-10)——Gradio用户界面增强

  • 十个快速测试按钮(本体和SHACL操作)。
  • 流式响应、主动按钮状态管理、生成器修复。

v1.0.0(2025-11-08)——订单验证基线

  • 订单创建前自动SHACL验证;详细的违规记录。
  • 及时改进和100%规则覆盖(折扣/发货/退货/组合)。

基础版本(2025-10)

  • 第1-5阶段完成:ORM、本体、21个工具、ReAct Agent、Gradio UI。

📦 版本历史

版本 日期 亮点 下载
v1.5.3 2025-12-01 确认模式持久化、验证保护硬停止、全工具有效载荷流、新内存课程文章 git checkout v1.5.3
v1.5.2 2025-11-29 流媒体生成器管道、意图/查询/搜索升级、日志驱动图+基线标签 git checkout v1.5.2
v1.5.1 2025-11-23 内联图表流、分析MCP工具、仪表板UX升级 git checkout v1.5.1
v1.5.0 2025-11-20 RL闭环,Docker/Compose打包,5标签Gradio UI git checkout v1.5.0
v1.0.0 2025-10 第1-3阶段基线(本体+工具+代理) git checkout v1.0.0

📝 更新日志

2025-12-01

  • 确认循环持久性:确认分支现在将每个执行的工具(args+观测值)推回 tool_log、记忆,以及 ConversationState,因此后续操作会立即看到已完成的订单,而不是重新运行结账。
  • 强制性SHACL验证: ontology_validate_order 加入 CRITICAL_TOOLS 列表和提醒副本会阻止最终回复,直到验证完成;订单确认后,代理主动询问是否继续付款。
  • 聊天中的完整工具输出:流式事件现在包括完整的JSON观察,Gradio UI不再截断长有效载荷,使审计和调试变得简单。
  • 新经验教训文档:已发布 docs/articles/12-memory-intent-lessons.md 捕捉使用记忆进行意图检测和推理的实际注意事项。

2025-11-30

  • Ontology-first推理覆盖:ecommerce_ontology.py 现对折扣、物流、退货、取消四大流程优先加载 ontology_rules.ttl,命中规则时返回 rule_applied,无匹配才退回静态策略;对应 tests/test_commerce_service.py、tests/test_services.py 已通过全量 pytest。
  • 日志统一与按日轮转:所有 Python 模块写入 logs/server.log(日切 + server_YYYYMMDD.log 归档),start_all.sh 默认设置 DISABLE_SCRIPT_LOG_FILES=1 防止重复日志,如需旧行为可手动置 0;新增 ONTOLOGY_SERVER_LOG_DIR/ONTOLOGY_LOG_BACKUP_COUNT 控制输出目录与留存天数。
  • 本体资产清理:ontology_commerce.ttl 和 ontology_ecommerce.ttl 补齐 SWRL 前缀、变量、折扣实体与规则,使 Owlready2/外部引擎读取更稳;README/配置章节同步记录新的日志变量与使用方式。

2025-11-29

  • 真正的流媒体循环: react_agent.py 现在公开了基于生成器的 run_stream,DeepSeek适配器发出令牌增量,Gradio UI逐个令牌呈现想法+最终答案,以进行透明的推理回放。
  • 意图+检索堆栈:可配置的多策略意图跟踪器,LLM驱动 query_rewriter.py,以及FTS5→LIKE→类别回退 commerce_service.py/db_service.py 大大改善了“电子产品”等广泛的查询,同时保留了对利基意图的回忆。
  • 可追溯文件: docs/interaction_sequence_diagrams.md 捕获五个日志源序列,包括Mermaid+PNG证据、README链接和标签 v1.5.2 在版本历史表中标记新基线。

看 README.zh.md 详细的中文更新日志(反映了上面的英文亮点)。

🙏 致谢

  • LangChain&FastAPI –重新执行代理编排+MCP服务器。
  • 格拉迪奥 –五标签电子商务UI外壳。
  • ChromaDB和SQLite 语义记忆+商务数据。
  • 稳定的基线3/体育馆/张力板 –强化学习培训和可视化。
  • 深度求索 –法学硕士提供者。
  • RDFLib和PySHACL –本体推理+SHACL验证。
  • SQLAlchemy ORM基金会。

🧩 案例研究

  • 场景:预算为20万元人民币的VIP买家要求代理商在最昂贵的手机上“花光所有”,包括洞察力→ 建议→ cart → 支付→ 售后跟踪。
  • 亮点:16步内存链、22个MCP工具(6个本体调用、2个SHACL检查)、动态图表、自动VIP折扣、购物车+结账编排。
  • 全程步行: docs/VIP_Customer_Case.md.

📖 引用

@software{ontology_rl_commerce_agent_2025,
  author  = {Shark8848},
  title   = {Ontology RL Commerce Agent},
  year    = {2025},
  url     = {https://github.com/shark8848/ontology-mcp-server-RL-Stable-Baselines3},
  version = {v1.2.3}
}

📄 许可证

根据 MIT许可证。简体中文参考翻译可在 许可证号zh.md.

📧 联系

作者shark8848@gmail.com--如果对你有帮助,请在回购表上打星号!