feat: add AI学习助手 agent (KG+RAG ideal) and renshenguo feishu bot
- Add AI学习助手 agent creation script with all 39 tools, 3-layer KG+RAG memory - Add renshenguo (人参果) feishu bot integration (app_service + ws_handler) - Register renshenguo WS client in main.py startup - Add RENSHENGUO_APP_ID / RENSHENGUO_APP_SECRET / RENSHENGUO_AGENT_ID config - Reorganize docs from root into docs/ subdirectories - Move startup scripts to scripts/startup/ - Various backend optimizations and tool improvements Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
389
backend/scripts/create_ai_learning_assistant.py
Normal file
389
backend/scripts/create_ai_learning_assistant.py
Normal file
@@ -0,0 +1,389 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
创建「AI学习助手」Agent — 知识图谱+RAG理想版,参考苏瑶3号架构。
|
||||
|
||||
实体关系图谱 + 语义向量检索 + 情境感知,最接近人类记忆方式。
|
||||
具备全部 39 个内置工具能力。
|
||||
|
||||
用法:
|
||||
cd backend && .\\venv\\Scripts\\python.exe scripts/create_ai_learning_assistant.py
|
||||
|
||||
环境变量:
|
||||
PLATFORM_BASE_URL - 平台地址(默认 http://127.0.0.1:8037)
|
||||
PLATFORM_USERNAME - 用户名(默认 admin)
|
||||
PLATFORM_PASSWORD - 密码(默认 123456)
|
||||
AGENT_NAME - Agent 名称(默认 AI学习助手)
|
||||
PUBLISH - 是否发布(默认 1,发布)
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
import requests
|
||||
|
||||
BASE = os.getenv("PLATFORM_BASE_URL", "http://127.0.0.1:8037").rstrip("/")
|
||||
USER = os.getenv("PLATFORM_USERNAME", "admin")
|
||||
PWD = os.getenv("PLATFORM_PASSWORD", "123456")
|
||||
AGENT_NAME = os.getenv("AGENT_NAME", "AI学习助手")
|
||||
MODEL = os.getenv("MODEL", "deepseek-v4-flash")
|
||||
PROVIDER = os.getenv("PROVIDER", "deepseek")
|
||||
TEMPERATURE = float(os.getenv("TEMPERATURE", "0.7"))
|
||||
MAX_ITERATIONS = int(os.getenv("MAX_ITERATIONS", "15"))
|
||||
PUBLISH = os.getenv("PUBLISH", "1") == "1"
|
||||
|
||||
# ── 全部 39 个内置工具(知识图谱+RAG理想版)──
|
||||
ALL_TOOLS = [
|
||||
# ── 知识图谱核心四件套 ──
|
||||
"knowledge_graph_search",
|
||||
"knowledge_graph_add",
|
||||
"entity_search",
|
||||
"learning_path",
|
||||
# ── 文件与文本处理 ──
|
||||
"file_read",
|
||||
"file_write",
|
||||
"text_analyze",
|
||||
"json_process",
|
||||
"excel_process",
|
||||
"pdf_generate",
|
||||
# ── 搜索与网络 ──
|
||||
"web_search",
|
||||
"url_parse",
|
||||
"http_request",
|
||||
"browser_use",
|
||||
# ── 数学与计算 ──
|
||||
"math_calculate",
|
||||
"code_execute",
|
||||
"random_generate",
|
||||
"regex_test",
|
||||
# ── 数据库与存储 ──
|
||||
"database_query",
|
||||
"crypto_util",
|
||||
# ── 任务与计划 ──
|
||||
"task_plan",
|
||||
"datetime",
|
||||
"schedule_create",
|
||||
"schedule_list",
|
||||
"schedule_delete",
|
||||
# ── Agent 自主扩展 ──
|
||||
"agent_create",
|
||||
"agent_call",
|
||||
"tool_register",
|
||||
"code_tool_create",
|
||||
"capability_check",
|
||||
"extension_log",
|
||||
"project_scaffold",
|
||||
# ── 消息与通知 ──
|
||||
"send_email",
|
||||
"deploy_push",
|
||||
# ── 运维与系统 ──
|
||||
"system_info",
|
||||
"git_operation",
|
||||
"docker_manage",
|
||||
# ── ADB / 移动端 ──
|
||||
"adb_log",
|
||||
# ── 自检 ──
|
||||
"self_review",
|
||||
]
|
||||
|
||||
# ── 系统提示词:知识图谱+RAG理想版 ──
|
||||
SYSTEM_PROMPT = """# 角色:AI学习助手(知识图谱+RAG理想版)
|
||||
|
||||
你是专为学生设计的多功能AI学习助手,基于 AgentRuntime 自主 ReAct 循环架构。你的记忆系统采用**知识图谱+RAG理想版**方案——实体关系图谱 + 语义向量检索 + 情境感知,这是最接近人类记忆方式的AI记忆架构。
|
||||
|
||||
---
|
||||
|
||||
## 记忆架构:知识图谱+RAG理想版
|
||||
|
||||
### 三层记忆体系(模拟人类记忆)
|
||||
|
||||
#### 第一层:知识图谱记忆(语义网络 — 模拟人类"概念网络")
|
||||
- **实体关系图谱**:每个知识点(概念、公式、事实、术语)作为图谱中的一个实体节点
|
||||
- **关系类型**:prerequisite(前置知识)、extends(扩展延伸)、contains(包含关系)、related_to(相关关联)、example_of(实例)、applies_to(应用场景)
|
||||
- **动态演化**:随着学习进展,图谱自动增长、剪枝、重组——就像人脑在建立新的神经连接
|
||||
- 使用 `knowledge_graph_search` / `knowledge_graph_add` / `entity_search` 维护图谱
|
||||
- **情境编码**:每个知识点附带学习情境(何时学、为何学、与什么关联),实现情境感知检索
|
||||
|
||||
#### 第二层:向量语义记忆(分布式表示 — 模拟人类"模糊联想")
|
||||
- 所有对话和学习内容通过 embedding 向量化,支持语义相似检索
|
||||
- 即使关键词不匹配,也能通过语义关联召回相关内容
|
||||
- 实现"举一反三"式的知识迁移——类比人类看到新问题联想到旧知识
|
||||
- 使用向量记忆 (Vector Memory) 的 Top-K 检索定位最相关的历史上下文
|
||||
|
||||
#### 第三层:长期情景记忆(持久化存储 — 模拟人类"经历记忆")
|
||||
- 跨会话保存:用户画像、学习进度、薄弱环节、学习偏好、连续学习天数
|
||||
- 学习里程碑追踪(如:连续7天完成作业、掌握某个学科全部前置知识)
|
||||
- 个性化适配:根据用户历史行为调整教学策略和解释深度
|
||||
- 持久化到数据库,永不丢失
|
||||
|
||||
### 记忆检索策略(模拟人类回忆过程)
|
||||
|
||||
遇到用户问题时,遵循人类回忆的自然流程:
|
||||
|
||||
1. **情境感知激活** — 当前问题情境自动激活相关的知识图谱子图(就像人听到"三角函数"会自然想到 sin/cos/tan)
|
||||
2. **扩散激活** — 从激活的实体沿关系边向外扩散(prerequisite -> extends -> related_to),模拟人脑的联想激活
|
||||
3. **向量语义召回** — 同时用 embedding 做语义相似检索,捕获图谱未覆盖的隐含关联
|
||||
4. **情境融合** — 将图谱检索结果 + 向量检索结果 + 长期记忆的用户画像三者融合,构建完整的知识上下文
|
||||
5. **置信度加权** — 高频使用、近期复习过的知识点权重更高(模拟人脑的"提取强度")
|
||||
|
||||
---
|
||||
|
||||
## 核心功能模块
|
||||
|
||||
### 1. 作业管理(知识图谱驱动)
|
||||
- **任务清单**:使用 `task_plan` 创建结构化的作业任务列表,按学科和优先级分类
|
||||
- **截止日期提醒**:结合 `datetime` 和 `schedule_create` 生成倒计时和定时提醒
|
||||
- **进度追踪**:标记待完成/进行中/已完成,使用 `schedule_list` 查看所有任务
|
||||
- **智能拆分**:将大型作业自动拆分为可执行的小步骤,存入知识图谱追踪依赖关系
|
||||
- 例如:写论文 -> 选题 -> 大纲 -> 初稿 -> 修改 -> 终稿
|
||||
- 每个子步骤作为知识图谱实体,用 prerequisite 关系链连接
|
||||
|
||||
### 2. 学习辅助(图谱+向量双重检索)
|
||||
- **知识问答**:
|
||||
1. 先用 `entity_search` 定位核心概念实体
|
||||
2. 用 `knowledge_graph_search` 获取前置知识和扩展内容
|
||||
3. 用向量记忆检索相关历史对话
|
||||
4. 融合三层记忆后生成精准解答,附带完整推理过程
|
||||
- **错题本生成**:用户输入错题后,自动抽取知识点实体 → `knowledge_graph_add` 存入图谱 → 标记"薄弱"权重 → 生成同类练习题
|
||||
- **笔记整理**:用 `text_analyze` 将混乱笔记整理为结构化摘要(概念→公式→例题→易错点),自动抽取实体入图谱
|
||||
- **记忆卡片**:根据知识图谱中的实体和关系,生成 Anki 风格闪卡,`learning_path` 规划间隔重复复习顺序
|
||||
|
||||
### 3. 时间与计划(情境感知)
|
||||
- **日程规划**:根据知识图谱分析学习依赖关系 → 用 `learning_path` 确定最优学习顺序 → `task_plan` 生成番茄工作法时间表
|
||||
- **时间审计**:分析用户学习时间分配,指出低效环节,基于学习目标推荐优化方案
|
||||
- **考试冲刺**:输入考试日期 → 图谱分析薄弱环节 → 按 prerequisite 关系倒推复习路径 → 生成每日冲刺计划
|
||||
|
||||
### 4. 资源推荐(联网+图谱)
|
||||
- **学习资料**:用 `web_search` 检索教材、视频(Khan Academy等)、题库,基于当前知识图谱中的"知识空白"精准推荐
|
||||
- **工具集成**:推荐学习工具(Grammarly、Wolfram Alpha、Notion模板),必要时用 `http_request` 调外部 API
|
||||
- **学习路径**:用 `learning_path` 分析知识图谱,规划从当前水平到目标水平的最优学习路径
|
||||
|
||||
### 5. 激励与反馈
|
||||
- **成就系统**:跟踪学习里程碑(连续学习天数、掌握知识点数量、图谱规模增长),生成鼓励性反馈
|
||||
- **考试倒计时**:`datetime` + `schedule_create` 定时提醒,生成复习冲刺表
|
||||
- **成长可视化**:定期总结知识图谱的增长(新增实体数、关系数),让用户看到自己的进步
|
||||
|
||||
### 6. 自主进化能力(AgentRuntime 独有)
|
||||
- **工具扩展**:发现重复操作模式时,用 `code_tool_create` 创建专用工具
|
||||
- **子Agent创建**:遇到需要专业领域深度协助时,用 `agent_create` 创建子Agent
|
||||
- **能力自检**:定期用 `capability_check` 和 `self_review` 评估自身表现
|
||||
- **知识共享**:用 `extension_log` 记录扩展历史,促进跨会话学习
|
||||
|
||||
---
|
||||
|
||||
## 交互规则
|
||||
|
||||
### 响应格式
|
||||
- **任务清单**:Markdown 列表 `- [ ]` / `- [x]`
|
||||
- **知识解答**:先给出清晰简洁的答案 → 分割线 → 完整推理过程
|
||||
- **学习计划**:表格或时间轴呈现
|
||||
- **图谱可视化**:必要时用文本方式呈现知识图谱子图结构
|
||||
|
||||
### 语气风格
|
||||
- 像一位懂教育学和认知心理学的私人导师
|
||||
- 鼓励、耐心、细致,积极正向
|
||||
- 多用"你做得很棒!""这个思路很好!""我们一起来看看这个问题背后的原理"
|
||||
|
||||
### 安全边界
|
||||
- 不代写考试答案,不鼓励学术不端
|
||||
- 遇到心理健康问题,建议寻求专业帮助
|
||||
- 推荐资源应合法合规
|
||||
|
||||
---
|
||||
|
||||
## 你是最接近人类记忆方式的AI学习伙伴
|
||||
|
||||
你的三层记忆架构让你能够:
|
||||
- **理解**知识之间的深层关联(图谱),而非孤立记忆
|
||||
- **联想**到相关的历史讨论(向量语义),而非关键词匹配
|
||||
- **记住**每个学生的独特情况(长期记忆),而非每次从零开始
|
||||
|
||||
记住:你的使命不是替学生完成作业,而是**帮助他们建立自己的知识网络,学会如何学习**。"""
|
||||
|
||||
|
||||
def _login() -> Optional[str]:
|
||||
try:
|
||||
r = requests.post(
|
||||
f"{BASE}/api/v1/auth/login",
|
||||
data={"username": USER, "password": PWD},
|
||||
headers={"Content-Type": "application/x-www-form-urlencoded"},
|
||||
timeout=15,
|
||||
)
|
||||
if r.status_code == 200:
|
||||
return r.json().get("access_token")
|
||||
print(f"Login failed: {r.status_code} {r.text[:300]}", file=sys.stderr)
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"Login error: {e}", file=sys.stderr)
|
||||
return None
|
||||
|
||||
|
||||
def _find_agent_by_name(token: str, name: str) -> Optional[Dict[str, Any]]:
|
||||
h = {"Authorization": f"Bearer {token}"}
|
||||
r = requests.get(f"{BASE}/api/v1/agents", params={"search": name, "limit": 50}, headers=h, timeout=30)
|
||||
if r.status_code != 200:
|
||||
return None
|
||||
for a in r.json() or []:
|
||||
if a.get("name") == name:
|
||||
return a
|
||||
return None
|
||||
|
||||
|
||||
def _build_workflow(agent_id: str = "") -> Dict[str, Any]:
|
||||
"""构建 agent 节点工作流(参考苏瑶3号架构:开始 -> agent(ReAct) -> 结束)。"""
|
||||
return {
|
||||
"nodes": [
|
||||
{
|
||||
"id": "start-1",
|
||||
"type": "start",
|
||||
"position": {"x": 80, "y": 240},
|
||||
"data": {"label": "学习任务开始"},
|
||||
},
|
||||
{
|
||||
"id": "agent-learning-core",
|
||||
"type": "agent",
|
||||
"position": {"x": 380, "y": 240},
|
||||
"data": {
|
||||
"label": AGENT_NAME,
|
||||
# LLM config
|
||||
"system_prompt": SYSTEM_PROMPT,
|
||||
"provider": PROVIDER,
|
||||
"model": MODEL,
|
||||
"temperature": TEMPERATURE,
|
||||
"max_iterations": MAX_ITERATIONS,
|
||||
# All 39 tools
|
||||
"tools": ALL_TOOLS,
|
||||
# KG+RAG memory config
|
||||
"memory": True,
|
||||
"memory_max_history": 40,
|
||||
"memory_vector_enabled": True,
|
||||
"memory_vector_top_k": 10,
|
||||
"memory_persist": True,
|
||||
"memory_learning": True,
|
||||
# Scope isolation
|
||||
"memory_scope_id": agent_id,
|
||||
"agent_id": agent_id,
|
||||
# Self-review
|
||||
"self_review_enabled": True,
|
||||
},
|
||||
},
|
||||
{
|
||||
"id": "end-1",
|
||||
"type": "end",
|
||||
"position": {"x": 680, "y": 240},
|
||||
"data": {"label": "学习完成"},
|
||||
},
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"id": "e_start_agent",
|
||||
"source": "start-1",
|
||||
"target": "agent-learning-core",
|
||||
"sourceHandle": "right",
|
||||
"targetHandle": "left",
|
||||
},
|
||||
{
|
||||
"id": "e_agent_end",
|
||||
"source": "agent-learning-core",
|
||||
"target": "end-1",
|
||||
"sourceHandle": "right",
|
||||
"targetHandle": "left",
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def main() -> int:
|
||||
token = _login()
|
||||
if not token:
|
||||
return 1
|
||||
|
||||
h = {"Authorization": f"Bearer {token}", "Content-Type": "application/json"}
|
||||
|
||||
# Check if agent exists
|
||||
existing = _find_agent_by_name(token, AGENT_NAME)
|
||||
if existing:
|
||||
print(f"Agent '{AGENT_NAME}' exists (id={existing['id']}), updating config...")
|
||||
agent_id = existing["id"]
|
||||
else:
|
||||
temp_wf = _build_workflow(agent_id="")
|
||||
body = {
|
||||
"name": AGENT_NAME,
|
||||
"description": "AI学习助手 -- KG+RAG理想版,实体关系图谱+语义向量检索+情境感知,具备全部39工具。",
|
||||
"workflow_config": temp_wf,
|
||||
}
|
||||
r = requests.post(f"{BASE}/api/v1/agents", headers=h, json=body, timeout=60)
|
||||
if r.status_code != 201:
|
||||
print(f"Create failed: {r.status_code} {r.text[:500]}", file=sys.stderr)
|
||||
return 1
|
||||
agent_id = r.json()["id"]
|
||||
print(f"Agent created: id={agent_id} name={AGENT_NAME}")
|
||||
|
||||
# Rebuild workflow with correct agent_id
|
||||
wf = _build_workflow(agent_id=agent_id)
|
||||
|
||||
description = (
|
||||
f"AI学习助手 -- 知识图谱+RAG理想版(参考苏瑶3号架构)。\n\n"
|
||||
f"记忆架构:三层记忆体系(最接近人类记忆方式)\n"
|
||||
f" [Layer 1] 知识图谱 -- 实体关系图谱,动态演化,情境编码\n"
|
||||
f" [Layer 2] 向量语义 -- Embedding检索,模糊联想,知识迁移\n"
|
||||
f" [Layer 3] 长期情景 -- 跨会话持久化,用户画像,学习里程碑\n\n"
|
||||
f"工作流:开始 -> agent(ReAct) -> 结束\n"
|
||||
f"工具:全部 {len(ALL_TOOLS)} 个内置工具\n"
|
||||
f"模型:{PROVIDER}/{MODEL} temperature={TEMPERATURE} max_iterations={MAX_ITERATIONS}\n"
|
||||
f"记忆:KG+RAG 三层记忆 + 向量Top-10 + 长期 + 自主学习"
|
||||
)
|
||||
|
||||
up = requests.put(
|
||||
f"{BASE}/api/v1/agents/{agent_id}",
|
||||
headers=h,
|
||||
json={
|
||||
"description": description,
|
||||
"workflow_config": wf,
|
||||
},
|
||||
timeout=120,
|
||||
)
|
||||
if up.status_code != 200:
|
||||
print(f"Update failed: {up.status_code} {up.text[:500]}", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
print(f"[OK] Agent '{AGENT_NAME}' configured (KG+RAG ideal version)")
|
||||
print(f" ID: {agent_id}")
|
||||
print(f" Type: agent node (AgentRuntime ReAct)")
|
||||
print(f" Model: {PROVIDER}/{MODEL} (temperature={TEMPERATURE})")
|
||||
print(f" Max iterations: {MAX_ITERATIONS}")
|
||||
print(f" Tools: ALL {len(ALL_TOOLS)} built-in tools")
|
||||
print(f" Memory: 3-layer KG+RAG (entity graph + vector semantic + persistent)")
|
||||
print(f" Vector top-K: 10, Max history: 40")
|
||||
print(f" Self-review: enabled")
|
||||
|
||||
# Publish if requested
|
||||
if PUBLISH:
|
||||
pub = requests.put(
|
||||
f"{BASE}/api/v1/agents/{agent_id}",
|
||||
headers=h,
|
||||
json={"status": "published"},
|
||||
timeout=30,
|
||||
)
|
||||
if pub.status_code == 200:
|
||||
print(f" Status: published")
|
||||
else:
|
||||
print(f" Publish failed: {pub.status_code} {pub.text[:200]}")
|
||||
|
||||
print()
|
||||
print("Five core modules (KG+RAG enhanced):")
|
||||
print(" [1] Homework management -- KG-driven task splitting & scheduling")
|
||||
print(" [2] Learning assistance -- dual retrieval (graph + vector semantic)")
|
||||
print(" [3] Time & planning -- context-aware scheduling via learning_path")
|
||||
print(" [4] Resource recommendation -- web search + knowledge gap analysis")
|
||||
print(" [5] Motivation & feedback -- achievement tracking + KG growth visualization")
|
||||
print(" [6] Autonomous evolution -- agent_create, tool_register, code_tool_create")
|
||||
print()
|
||||
print(json.dumps({"id": agent_id, "name": AGENT_NAME, "published": PUBLISH}, ensure_ascii=False))
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
281
backend/scripts/create_learning_assistant_agent.py
Normal file
281
backend/scripts/create_learning_assistant_agent.py
Normal file
@@ -0,0 +1,281 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
创建「智能学习助手」(KG+RAG) Agent
|
||||
|
||||
基于知识图谱 + RAG 增强的学习助手:
|
||||
- 实体抽取:自动从学习材料提取知识点
|
||||
- 关系图谱:构建前置/扩展/包含/示例关系
|
||||
- 向量检索:语义搜索相关知识和历史记忆
|
||||
- 永久记忆:跨会话保存学习进度和用户画像
|
||||
|
||||
用法:
|
||||
cd backend && .\\venv\\Scripts\\python.exe scripts/create_learning_assistant_agent.py
|
||||
|
||||
环境变量:
|
||||
PLATFORM_BASE_URL - 平台地址(默认 http://127.0.0.1:8037)
|
||||
PLATFORM_USERNAME - 用户名(默认 admin)
|
||||
PLATFORM_PASSWORD - 密码(默认 123456)
|
||||
AGENT_NAME - Agent 名称(默认 智能学习助手(KG+RAG))
|
||||
SUBJECT - 学科领域(默认 通用)
|
||||
LEVEL - 难度级别(默认 中级)
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
import requests
|
||||
|
||||
BASE = os.getenv("PLATFORM_BASE_URL", "http://127.0.0.1:8037").rstrip("/")
|
||||
USER = os.getenv("PLATFORM_USERNAME", "admin")
|
||||
PWD = os.getenv("PLATFORM_PASSWORD", "123456")
|
||||
AGENT_NAME = os.getenv("AGENT_NAME", "智能学习助手(KG+RAG)")
|
||||
SUBJECT = os.getenv("SUBJECT", "通用")
|
||||
LEVEL = os.getenv("LEVEL", "中级")
|
||||
|
||||
# 学习助手专用工具集
|
||||
LEARNING_TOOLS = [
|
||||
"knowledge_graph_search",
|
||||
"knowledge_graph_add",
|
||||
"entity_search",
|
||||
"learning_path",
|
||||
"file_read",
|
||||
"file_write",
|
||||
"text_analyze",
|
||||
"web_search",
|
||||
"task_plan",
|
||||
"self_review",
|
||||
"math_calculate",
|
||||
"json_process",
|
||||
"datetime",
|
||||
"http_request",
|
||||
"code_execute",
|
||||
"system_info",
|
||||
]
|
||||
|
||||
SYSTEM_PROMPT = f"""# 角色:智能学习助手(知识图谱 + RAG 增强版)
|
||||
|
||||
你是专为深度学习场景设计的 AI 学习助手,具备**知识图谱构建**、**向量语义检索**和**永久记忆**能力。
|
||||
|
||||
## 核心架构
|
||||
|
||||
你的知识系统由三层组成:
|
||||
1. **知识图谱 (Knowledge Graph)**:结构化存储知识点实体及其前置/扩展/包含/示例关系,构建学科知识网络
|
||||
2. **向量记忆 (Vector Memory)**:语义检索历史对话和相关知识,找到最相似的学习内容
|
||||
3. **长期记忆 (Persistent Memory)**:跨会话保存用户画像、学习进度、薄弱环节
|
||||
|
||||
## 当前学习配置
|
||||
- 学科领域:{SUBJECT}
|
||||
- 难度级别:{LEVEL}
|
||||
|
||||
## 工作流程(每次对话必须遵循)
|
||||
|
||||
### 阶段 1:理解与分析
|
||||
1. 理解用户的学习意图(提问 / 复习 / 练习 / 总结 / 规划)
|
||||
2. 用 `knowledge_graph_search` 检索相关知识图谱实体
|
||||
3. 如果用户提供了新的学习材料/知识点,用 `knowledge_graph_add` 自动提取并存储到知识图谱
|
||||
|
||||
### 阶段 2:知识检索与融合
|
||||
4. 结合图谱检索结果和历史向量记忆,构建完整的知识上下文
|
||||
5. 用 `entity_search` 查找特定概念的前置知识和扩展内容
|
||||
6. 如果需要学习路径建议,用 `learning_path` 分析依赖关系并给出学习顺序
|
||||
|
||||
### 阶段 3:生成与交付
|
||||
7. 基于融合后的知识上下文生成高质量回答
|
||||
8. 回答应包含:
|
||||
- **核心概念解释**(关联知识图谱中的实体)
|
||||
- **前置知识提醒**(如果有依赖关系)
|
||||
- **实例或练习题**(如适用)
|
||||
- **扩展阅读建议**(关联的扩展知识点)
|
||||
9. 用 `self_review` 自检回答质量,不达标则修正
|
||||
|
||||
### 阶段 4:巩固与记忆
|
||||
10. 将本轮对话中的重要知识点持久化到长期记忆
|
||||
11. 更新用户画像(掌握程度、薄弱环节、学习偏好)
|
||||
|
||||
## 知识图谱工具使用指南
|
||||
|
||||
| 工具 | 用途 | 何时使用 |
|
||||
|------|------|---------|
|
||||
| `knowledge_graph_search` | 向量+图谱混合检索 | 每次回答学习问题前 |
|
||||
| `knowledge_graph_add` | 从文本提取实体和关系 | 用户分享学习材料/新知识点时 |
|
||||
| `entity_search` | 关键词搜索实体 | 查找特定概念详情时 |
|
||||
| `learning_path` | 推荐学习路径 | 用户询问学习顺序/计划时 |
|
||||
|
||||
## 回答风格
|
||||
- 使用 Markdown 格式,层次分明
|
||||
- 关键概念用 **粗体** 标记
|
||||
- 公式用代码块或 LaTeX 表达
|
||||
- 每个回答末尾附上「📚 相关知识点」列表(来自图谱检索结果)
|
||||
- 必要时用 `task_plan` 为用户制定学习计划
|
||||
|
||||
## 记忆与个性化
|
||||
- 记住用户的学习进度和薄弱环节
|
||||
- 根据用户级别({LEVEL})调整解释深度
|
||||
- 对反复出错的知识点主动提醒和强化训练
|
||||
|
||||
---
|
||||
|
||||
你是学习者最可靠的 AI 伙伴。开始吧!"""
|
||||
|
||||
|
||||
def _login() -> Optional[str]:
|
||||
"""登录获取 token。"""
|
||||
try:
|
||||
r = requests.post(
|
||||
f"{BASE}/api/v1/auth/login",
|
||||
data={"username": USER, "password": PWD},
|
||||
headers={"Content-Type": "application/x-www-form-urlencoded"},
|
||||
timeout=15,
|
||||
)
|
||||
if r.status_code == 200:
|
||||
return r.json().get("access_token")
|
||||
print(f"登录失败: {r.status_code} {r.text[:300]}", file=sys.stderr)
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"登录异常: {e}", file=sys.stderr)
|
||||
return None
|
||||
|
||||
|
||||
def _find_agent_by_name(token: str, name: str) -> Optional[Dict[str, Any]]:
|
||||
"""查找同名 Agent。"""
|
||||
h = {"Authorization": f"Bearer {token}"}
|
||||
r = requests.get(f"{BASE}/api/v1/agents", params={"search": name, "limit": 50}, headers=h, timeout=30)
|
||||
if r.status_code != 200:
|
||||
return None
|
||||
for a in r.json() or []:
|
||||
if a.get("name") == name:
|
||||
return a
|
||||
return None
|
||||
|
||||
|
||||
def _build_workflow() -> Dict[str, Any]:
|
||||
"""构建学习助手工作流。"""
|
||||
return {
|
||||
"nodes": [
|
||||
{
|
||||
"id": "start-1",
|
||||
"type": "start",
|
||||
"position": {"x": 80, "y": 240},
|
||||
"data": {"label": "学习任务开始"},
|
||||
},
|
||||
{
|
||||
"id": "llm-learning",
|
||||
"type": "llm",
|
||||
"position": {"x": 380, "y": 240},
|
||||
"data": {
|
||||
"label": "智能学习助手 (KG+RAG)",
|
||||
"prompt": SYSTEM_PROMPT,
|
||||
"temperature": 0.7,
|
||||
"provider": "deepseek",
|
||||
"model": "deepseek-chat",
|
||||
"max_iterations": 20,
|
||||
"enable_tools": True,
|
||||
"tools": LEARNING_TOOLS,
|
||||
"selected_tools": LEARNING_TOOLS,
|
||||
"max_tool_iterations": 18,
|
||||
"memory": True,
|
||||
"memory_max_history": 30,
|
||||
"memory_vector_enabled": True,
|
||||
"memory_vector_top_k": 8,
|
||||
"memory_persist": True,
|
||||
"memory_learning": True,
|
||||
},
|
||||
},
|
||||
{
|
||||
"id": "end-1",
|
||||
"type": "end",
|
||||
"position": {"x": 680, "y": 240},
|
||||
"data": {"label": "学习完成"},
|
||||
},
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"id": "e_start_learning",
|
||||
"source": "start-1",
|
||||
"target": "llm-learning",
|
||||
"sourceHandle": "right",
|
||||
"targetHandle": "left",
|
||||
},
|
||||
{
|
||||
"id": "e_learning_end",
|
||||
"source": "llm-learning",
|
||||
"target": "end-1",
|
||||
"sourceHandle": "right",
|
||||
"targetHandle": "left",
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def main() -> int:
|
||||
token = _login()
|
||||
if not token:
|
||||
return 1
|
||||
|
||||
h = {"Authorization": f"Bearer {token}", "Content-Type": "application/json"}
|
||||
|
||||
# 检查是否已存在
|
||||
existing = _find_agent_by_name(token, AGENT_NAME)
|
||||
if existing:
|
||||
print(f"Agent「{AGENT_NAME}」已存在 (id={existing['id']}),将更新工作流和工具配置")
|
||||
agent_id = existing["id"]
|
||||
else:
|
||||
# 创建新 Agent
|
||||
wf = _build_workflow()
|
||||
body = {
|
||||
"name": AGENT_NAME,
|
||||
"description": (
|
||||
f"知识图谱+RAG增强学习助手。学科:{SUBJECT},难度:{LEVEL}。"
|
||||
"支持实体抽取、关系图谱构建、向量语义检索、学习路径推荐、永久记忆。"
|
||||
),
|
||||
"workflow_config": wf,
|
||||
}
|
||||
r = requests.post(f"{BASE}/api/v1/agents", headers=h, json=body, timeout=60)
|
||||
if r.status_code != 201:
|
||||
print(f"创建失败: {r.status_code} {r.text[:500]}", file=sys.stderr)
|
||||
return 1
|
||||
agent_id = r.json()["id"]
|
||||
print(f"Agent 创建成功: id={agent_id} name={AGENT_NAME}")
|
||||
|
||||
# 更新工作流配置(确保工具集是最新的)
|
||||
wf = _build_workflow()
|
||||
up = requests.put(
|
||||
f"{BASE}/api/v1/agents/{agent_id}",
|
||||
headers=h,
|
||||
json={
|
||||
"description": (
|
||||
f"知识图谱+RAG增强学习助手。学科:{SUBJECT},难度:{LEVEL}。"
|
||||
"工作流:开始→智能学习助手(KG+RAG)→结束。"
|
||||
"核心能力:实体抽取、关系图谱构建、向量语义检索、学习路径推荐、永久记忆。"
|
||||
),
|
||||
"workflow_config": wf,
|
||||
},
|
||||
timeout=120,
|
||||
)
|
||||
if up.status_code != 200:
|
||||
print(f"更新失败: {up.status_code} {up.text[:500]}", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
print(f"Agent「{AGENT_NAME}」配置完成")
|
||||
print(f" ID: {agent_id}")
|
||||
print(f" 学科: {SUBJECT}")
|
||||
print(f" 级别: {LEVEL}")
|
||||
print(f" 工具 ({len(LEARNING_TOOLS)}): {', '.join(LEARNING_TOOLS)}")
|
||||
print(f" 记忆: 向量记忆+长期记忆+自主学习 已启用")
|
||||
print(f" 知识图谱: 实体抽取+关系构建+混合检索 已启用")
|
||||
print()
|
||||
print("使用方法:")
|
||||
print(f" 1. 在 Agent 管理页面找到「{AGENT_NAME}」")
|
||||
print(f" 2. 点击「使用」开始对话")
|
||||
print(f" 3. 可以分享学习材料让助手自动构建知识图谱")
|
||||
print(f" 4. 查询知识点时会自动做图谱+向量混合检索")
|
||||
print()
|
||||
print(json.dumps({"id": agent_id, "name": AGENT_NAME}, ensure_ascii=False))
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
297
backend/scripts/create_learning_assistant_agent_v1.py
Normal file
297
backend/scripts/create_learning_assistant_agent_v1.py
Normal file
@@ -0,0 +1,297 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
创建「智能学习助手1号」Agent — 参考苏瑶3号架构,基于 AgentRuntime 的 KG+RAG 学习助手。
|
||||
|
||||
与「智能学习助手(KG+RAG)」的区别:
|
||||
- 使用 agent 节点类型(AgentRuntime ReAct 循环),而非 llm 节点
|
||||
- 参考苏瑶3号的 AgentRuntime 配置模式
|
||||
- 更完整的记忆配置(向量记忆、长期记忆、自主学习)
|
||||
- 独立 memory_scope_id 防止与其他 Agent 串记忆
|
||||
|
||||
用法:
|
||||
cd backend && .\\venv\\Scripts\\python.exe scripts/create_learning_assistant_agent.py
|
||||
|
||||
环境变量:
|
||||
PLATFORM_BASE_URL - 平台地址(默认 http://127.0.0.1:8037)
|
||||
PLATFORM_USERNAME - 用户名(默认 admin)
|
||||
PLATFORM_PASSWORD - 密码(默认 123456)
|
||||
AGENT_NAME - Agent 名称(默认 智能学习助手1号)
|
||||
SUBJECT - 学科领域(默认 通用)
|
||||
LEVEL - 难度级别(默认 中级)
|
||||
MODEL - 模型(默认 deepseek-v4-flash)
|
||||
PROVIDER - 提供商(默认 deepseek)
|
||||
TEMPERATURE - 温度(默认 0.85)
|
||||
MAX_ITERATIONS - 最大步数(默认 15)
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
import requests
|
||||
|
||||
BASE = os.getenv("PLATFORM_BASE_URL", "http://127.0.0.1:8037").rstrip("/")
|
||||
USER = os.getenv("PLATFORM_USERNAME", "admin")
|
||||
PWD = os.getenv("PLATFORM_PASSWORD", "123456")
|
||||
AGENT_NAME = os.getenv("AGENT_NAME", "智能学习助手1号")
|
||||
SUBJECT = os.getenv("SUBJECT", "通用")
|
||||
LEVEL = os.getenv("LEVEL", "中级")
|
||||
MODEL = os.getenv("MODEL", "deepseek-v4-flash")
|
||||
PROVIDER = os.getenv("PROVIDER", "deepseek")
|
||||
TEMPERATURE = float(os.getenv("TEMPERATURE", "0.85"))
|
||||
MAX_ITERATIONS = int(os.getenv("MAX_ITERATIONS", "15"))
|
||||
|
||||
# ── 学习助手专用工具集(KG+RAG 核心 + 通用辅助)──
|
||||
LEARNING_TOOLS = [
|
||||
# KG+RAG 核心四件套
|
||||
"knowledge_graph_search",
|
||||
"knowledge_graph_add",
|
||||
"entity_search",
|
||||
"learning_path",
|
||||
# 文件与文本
|
||||
"file_read",
|
||||
"file_write",
|
||||
"text_analyze",
|
||||
"json_process",
|
||||
# 学习辅助
|
||||
"web_search",
|
||||
"task_plan",
|
||||
"self_review",
|
||||
"math_calculate",
|
||||
"datetime",
|
||||
# 通用
|
||||
"http_request",
|
||||
"code_execute",
|
||||
"system_info",
|
||||
]
|
||||
|
||||
# ── 系统提示词(同 KG+RAG 学习助手,适配 AgentRuntime 风格)──
|
||||
SYSTEM_PROMPT = f"""# 角色:智能学习助手1号(AgentRuntime + KG+RAG)
|
||||
|
||||
你是基于 AgentRuntime 自主 ReAct 循环的 AI 学习助手,参考苏瑶3号架构设计。
|
||||
你具备**知识图谱构建**、**向量语义检索**、**长期记忆**和**自主学习**能力。
|
||||
|
||||
## 核心架构
|
||||
|
||||
你的知识系统由三层组成:
|
||||
1. **知识图谱 (Knowledge Graph)**:结构化存储知识点实体及其前置/扩展/包含/示例关系
|
||||
2. **向量记忆 (Vector Memory)**:语义检索历史对话和相关知识
|
||||
3. **长期记忆 (Persistent Memory)**:跨会话保存用户画像、学习进度、薄弱环节
|
||||
|
||||
## 当前配置
|
||||
- 学科领域:{SUBJECT}
|
||||
- 难度级别:{LEVEL}
|
||||
- 模型:{PROVIDER}/{MODEL} (temperature={TEMPERATURE})
|
||||
- 最大迭代步数:{MAX_ITERATIONS}
|
||||
|
||||
## 工作流程(ReAct 循环中自主遵循)
|
||||
|
||||
### 阶段 1:理解与分析
|
||||
1. 理解用户的学习意图(提问 / 复习 / 练习 / 总结 / 规划)
|
||||
2. 使用 `knowledge_graph_search` 检索相关知识图谱实体
|
||||
3. 如果用户提供了学习材料/知识点,使用 `knowledge_graph_add` 自动提取存储
|
||||
|
||||
### 阶段 2:知识检索与融合
|
||||
4. 结合图谱检索结果和历史向量记忆,构建知识上下文
|
||||
5. 使用 `entity_search` 查找特定概念的前置知识和扩展内容
|
||||
6. 使用 `learning_path` 分析学习依赖,推荐学习顺序
|
||||
|
||||
### 阶段 3:生成与交付
|
||||
7. 基于融合后的知识上下文生成高质量回答
|
||||
8. 回答包含:核心概念解释、前置知识提醒、实例/练习题、扩展阅读建议
|
||||
9. 使用 `self_review` 自检回答质量,不达标则修正
|
||||
|
||||
### 阶段 4:巩固与记忆
|
||||
10. 将重要知识点持久化到长期记忆和知识图谱
|
||||
11. 更新用户画像(掌握程度、薄弱环节、学习偏好)
|
||||
|
||||
## 回答风格
|
||||
- 使用 Markdown 格式,层次分明
|
||||
- 关键概念用 **粗体** 标记,公式用代码块
|
||||
- 每个回答末尾附上「📚 相关知识点」列表(来自图谱检索)
|
||||
- 必要时用 `task_plan` 制定学习计划
|
||||
|
||||
## 自主扩展能力
|
||||
- 发现知识空白时,用 `web_search` 补充
|
||||
- 需要重复计算/处理时,用 `code_execute` 编写脚本
|
||||
- 遇到可复用的外部 API 时,用 `tool_register` 注册
|
||||
- 需要专业子领域协助时,用 `agent_create` 创建子 Agent
|
||||
|
||||
---
|
||||
|
||||
你是学习者最可靠的 AI 伙伴。开始吧!"""
|
||||
|
||||
|
||||
def _login() -> Optional[str]:
|
||||
try:
|
||||
r = requests.post(
|
||||
f"{BASE}/api/v1/auth/login",
|
||||
data={"username": USER, "password": PWD},
|
||||
headers={"Content-Type": "application/x-www-form-urlencoded"},
|
||||
timeout=15,
|
||||
)
|
||||
if r.status_code == 200:
|
||||
return r.json().get("access_token")
|
||||
print(f"登录失败: {r.status_code} {r.text[:300]}", file=sys.stderr)
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"登录异常: {e}", file=sys.stderr)
|
||||
return None
|
||||
|
||||
|
||||
def _find_agent_by_name(token: str, name: str) -> Optional[Dict[str, Any]]:
|
||||
h = {"Authorization": f"Bearer {token}"}
|
||||
r = requests.get(f"{BASE}/api/v1/agents", params={"search": name, "limit": 50}, headers=h, timeout=30)
|
||||
if r.status_code != 200:
|
||||
return None
|
||||
for a in r.json() or []:
|
||||
if a.get("name") == name:
|
||||
return a
|
||||
return None
|
||||
|
||||
|
||||
def _build_workflow(agent_id: str = "") -> Dict[str, Any]:
|
||||
"""构建 agent 节点工作流(参考苏瑶3号架构)。"""
|
||||
return {
|
||||
"nodes": [
|
||||
{
|
||||
"id": "start-1",
|
||||
"type": "start",
|
||||
"position": {"x": 80, "y": 240},
|
||||
"data": {"label": "学习任务开始"},
|
||||
},
|
||||
{
|
||||
"id": "agent-learning-v1",
|
||||
"type": "agent", # ← agent 节点类型,使用 AgentRuntime
|
||||
"position": {"x": 380, "y": 240},
|
||||
"data": {
|
||||
"label": AGENT_NAME,
|
||||
# ── LLM 配置 ──
|
||||
"system_prompt": SYSTEM_PROMPT,
|
||||
"provider": PROVIDER,
|
||||
"model": MODEL,
|
||||
"temperature": TEMPERATURE,
|
||||
"max_iterations": MAX_ITERATIONS,
|
||||
# ── 工具配置 ──
|
||||
"tools": LEARNING_TOOLS,
|
||||
# ── 记忆配置(完整 AgentMemoryConfig)──
|
||||
"memory": True,
|
||||
"memory_max_history": 30,
|
||||
"memory_vector_enabled": True,
|
||||
"memory_vector_top_k": 8,
|
||||
"memory_persist": True,
|
||||
"memory_learning": True,
|
||||
# ── 作用域隔离 ──
|
||||
"memory_scope_id": agent_id,
|
||||
"agent_id": agent_id,
|
||||
# ── 自检 ──
|
||||
"self_review_enabled": True,
|
||||
},
|
||||
},
|
||||
{
|
||||
"id": "end-1",
|
||||
"type": "end",
|
||||
"position": {"x": 680, "y": 240},
|
||||
"data": {"label": "学习完成"},
|
||||
},
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"id": "e_start_agent",
|
||||
"source": "start-1",
|
||||
"target": "agent-learning-v1",
|
||||
"sourceHandle": "right",
|
||||
"targetHandle": "left",
|
||||
},
|
||||
{
|
||||
"id": "e_agent_end",
|
||||
"source": "agent-learning-v1",
|
||||
"target": "end-1",
|
||||
"sourceHandle": "right",
|
||||
"targetHandle": "left",
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def main() -> int:
|
||||
token = _login()
|
||||
if not token:
|
||||
return 1
|
||||
|
||||
h = {"Authorization": f"Bearer {token}", "Content-Type": "application/json"}
|
||||
|
||||
# 检查是否已存在
|
||||
existing = _find_agent_by_name(token, AGENT_NAME)
|
||||
if existing:
|
||||
print(f"Agent「{AGENT_NAME}」已存在 (id={existing['id']}),将更新配置")
|
||||
agent_id = existing["id"]
|
||||
else:
|
||||
# 先创建一个临时工作流获取 agent_id
|
||||
temp_wf = _build_workflow(agent_id="")
|
||||
body = {
|
||||
"name": AGENT_NAME,
|
||||
"description": f"AgentRuntime KG+RAG 学习助手(参考苏瑶3号)。学科:{SUBJECT},难度:{LEVEL}。",
|
||||
"workflow_config": temp_wf,
|
||||
}
|
||||
r = requests.post(f"{BASE}/api/v1/agents", headers=h, json=body, timeout=60)
|
||||
if r.status_code != 201:
|
||||
print(f"创建失败: {r.status_code} {r.text[:500]}", file=sys.stderr)
|
||||
return 1
|
||||
agent_id = r.json()["id"]
|
||||
print(f"Agent 创建成功: id={agent_id} name={AGENT_NAME}")
|
||||
|
||||
# 用正确的 agent_id 重建工作流
|
||||
wf = _build_workflow(agent_id=agent_id)
|
||||
|
||||
description = (
|
||||
f"智能学习助手1号 — AgentRuntime KG+RAG 学习助手(参考苏瑶3号架构)。\n"
|
||||
f"学科:{SUBJECT},难度:{LEVEL}。\n"
|
||||
f"工作流:开始 → agent(ReAct) → 结束。\n"
|
||||
f"核心能力:\n"
|
||||
f"- 知识图谱:实体抽取 + 关系构建 + 混合检索\n"
|
||||
f"- 向量记忆:语义检索历史对话\n"
|
||||
f"- 长期记忆:跨会话用户画像 + 学习进度\n"
|
||||
f"- 自主学习:工具模式学习 + 能力自检\n"
|
||||
f"配置:{PROVIDER}/{MODEL} temperature={TEMPERATURE} max_iterations={MAX_ITERATIONS}"
|
||||
)
|
||||
|
||||
up = requests.put(
|
||||
f"{BASE}/api/v1/agents/{agent_id}",
|
||||
headers=h,
|
||||
json={
|
||||
"description": description,
|
||||
"workflow_config": wf,
|
||||
},
|
||||
timeout=120,
|
||||
)
|
||||
if up.status_code != 200:
|
||||
print(f"更新失败: {up.status_code} {up.text[:500]}", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
print(f"✅ Agent「{AGENT_NAME}」配置完成")
|
||||
print(f" ID: {agent_id}")
|
||||
print(f" 类型: agent 节点 (AgentRuntime ReAct)")
|
||||
print(f" 学科: {SUBJECT}")
|
||||
print(f" 级别: {LEVEL}")
|
||||
print(f" 模型: {PROVIDER}/{MODEL} (temperature={TEMPERATURE})")
|
||||
print(f" 最大步数: {MAX_ITERATIONS}")
|
||||
print(f" 工具 ({len(LEARNING_TOOLS)}): {', '.join(LEARNING_TOOLS)}")
|
||||
print(f" 记忆: 向量(Top-8) + 长期 + 自主学习 已启用")
|
||||
print(f" 知识图谱: 混合检索 + 实体抽取 + 关系构建 已启用")
|
||||
print(f" 自检: self_review 已启用")
|
||||
print()
|
||||
print("与「智能学习助手(KG+RAG)」的区别:")
|
||||
print(" - 使用 agent 节点(AgentRuntime ReAct 循环)代替 llm 节点")
|
||||
print(" - 参考苏瑶3号架构,完整记忆配置")
|
||||
print(" - 独立 memory_scope_id,不与其他 Agent 串记忆")
|
||||
print(" - 更高的 temperature (0.85) 和自主学习能力")
|
||||
print()
|
||||
print(json.dumps({"id": agent_id, "name": AGENT_NAME}, ensure_ascii=False))
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
@@ -159,33 +159,43 @@ SEED_TEMPLATES = [
|
||||
# ── 教育 ──
|
||||
{
|
||||
"name": "学习助手",
|
||||
"description": "多功能学习助手:作业管理、知识问答、笔记整理、学习计划",
|
||||
"description": "智能学习助手(KG+RAG):知识图谱构建、向量检索、实体抽取、学习路径推荐、永久记忆",
|
||||
"category": "education",
|
||||
"tags": ["学习", "作业", "笔记", "计划"],
|
||||
"tags": ["学习", "知识图谱", "RAG", "向量检索", "记忆"],
|
||||
"prompt": (
|
||||
"# 角色:智能学习助手\n\n"
|
||||
"你是专为学生设计的多功能AI学习助手,帮助高效管理学习任务、巩固知识。\n\n"
|
||||
"## 核心能力\n\n"
|
||||
"### 1. 作业管理\n"
|
||||
"- 协助创建、分类、优先级排序作业任务\n"
|
||||
"- 根据截止日期生成倒计时提醒\n"
|
||||
"- 将大型作业拆分为可执行的小步骤\n\n"
|
||||
"### 2. 学习辅助\n"
|
||||
"- 知识问答:基于{{subjects}}等内容提供精准解答并附带推理过程\n"
|
||||
"- 错题本:输入错题后自动分类并生成同类练习题\n"
|
||||
"- 笔记整理:将混乱笔记整理为结构化摘要(概念→公式→例题)\n"
|
||||
"- 记忆卡片:生成 Anki 风格的闪卡,支持间隔重复复习\n\n"
|
||||
"### 3. 时间与计划\n"
|
||||
"- 根据学习目标和可用时间生成每日/每周学习计划\n"
|
||||
"- 分析学习时间分配,提供优化建议\n\n"
|
||||
"### 4. 激励与反馈\n"
|
||||
"- 记录学习里程碑,生成鼓励性反馈\n"
|
||||
"- 自定义考试日期,生成复习冲刺表\n\n"
|
||||
"# 角色:智能学习助手(知识图谱 + RAG 增强版)\n\n"
|
||||
"你是专为深度学习场景设计的 AI 学习助手,具备知识图谱构建、向量语义检索和永久记忆能力。\n\n"
|
||||
"## 核心架构\n\n"
|
||||
"你的知识系统由三层组成:\n"
|
||||
"1. **知识图谱**:结构化存储知识点及前置/扩展/包含/示例关系\n"
|
||||
"2. **向量记忆**:语义检索历史对话,找到最相似的学习内容\n"
|
||||
"3. **长期记忆**:跨会话保存用户画像、学习进度和薄弱环节\n\n"
|
||||
"## 工作流程(每次对话)\n\n"
|
||||
"### 1. 理解与分析\n"
|
||||
"- 理解用户意图(提问/复习/练习/总结/规划)\n"
|
||||
"- 用 knowledge_graph_search 检索相关知识实体\n"
|
||||
"- 有新学习材料时用 knowledge_graph_add 自动提取存储\n\n"
|
||||
"### 2. 知识检索与融合\n"
|
||||
"- 结合图谱+向量+历史记忆构建完整上下文\n"
|
||||
"- 用 entity_search 查找特定概念的前置和扩展\n"
|
||||
"- 用 learning_path 分析学习依赖,推荐学习顺序\n\n"
|
||||
"### 3. 生成与交付\n"
|
||||
"- 核心概念解释(关联图谱实体)\n"
|
||||
"- 前置知识提醒 + 实例/练习题\n"
|
||||
"- 扩展阅读建议\n"
|
||||
"- 用 self_review 自检回答质量\n\n"
|
||||
"### 4. 巩固与记忆\n"
|
||||
"- 重要知识点持久化到长期记忆\n"
|
||||
"- 更新用户画像(掌握程度、薄弱环节)\n\n"
|
||||
"## 学科范围\n"
|
||||
"{{subjects}}\n\n"
|
||||
"## 交互规则\n"
|
||||
"- 任务清单使用 Markdown 列表(- [ ] 未完成 / - [x] 已完成)\n"
|
||||
"- 知识解答先给答案再附推理过程\n"
|
||||
"- 使用 Markdown 格式,层次分明\n"
|
||||
"- 每个回答附「📚 相关知识点」列表\n"
|
||||
"- 需要时用 task_plan 制定学习计划\n"
|
||||
"- 语气鼓励、耐心,像一位懂教育学的私人导师\n"
|
||||
"- 不代写考试答案,不鼓励学术不端"
|
||||
"- 不代写考试答案,不鼓励学术不端\n\n"
|
||||
"> 完整 KG+RAG 版请使用「智能学习助手 (KG+RAG)」场景模板创建 Agent。"
|
||||
),
|
||||
"variables": [
|
||||
{"name": "subjects", "type": "string", "required": False, "description": "学科范围", "default": "数学、物理、化学、历史、语文、英语"},
|
||||
|
||||
Reference in New Issue
Block a user