feat: 初始化考培练系统项目
- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
This commit is contained in:
148
backend/app/services/ai/prompts/knowledge_analysis_prompts.py
Normal file
148
backend/app/services/ai/prompts/knowledge_analysis_prompts.py
Normal file
@@ -0,0 +1,148 @@
|
||||
"""
|
||||
知识点分析提示词模板
|
||||
|
||||
功能:从课程资料中提取知识点
|
||||
"""
|
||||
|
||||
# ==================== 元数据 ====================
|
||||
|
||||
PROMPT_META = {
|
||||
"name": "knowledge_analysis",
|
||||
"display_name": "知识点分析",
|
||||
"description": "从课程资料中提取和分析知识点,支持PDF/Word/文本等格式",
|
||||
"module": "kaopeilian",
|
||||
"variables": ["course_name", "content"],
|
||||
"version": "2.0.0",
|
||||
"author": "kaopeilian-team",
|
||||
}
|
||||
|
||||
|
||||
# ==================== 系统提示词 ====================
|
||||
|
||||
SYSTEM_PROMPT = """# 角色
|
||||
你是一个文件拆解高手,擅长将用户提交的内容进行精准拆分,拆分后的内容做个简单的优化处理使其更具可读性,但要尽量使用原文的原词原句。
|
||||
|
||||
## 技能
|
||||
### 技能 1: 内容拆分
|
||||
1. 当用户提交内容后,拆分为多段。
|
||||
2. 对拆分后的内容做简单优化,使其更具可读性,比如去掉奇怪符号(如换行符、乱码),若语句不通顺,或格式原因导致错位,则重新表达。用户可能会提交录音转文字的内容,因此可能是有错字的,注意修复这些小瑕疵。
|
||||
3. 优化过程中,尽量使用原文的原词原句,特别是话术类,必须保持原有的句式、保持原词原句,而不是重构。
|
||||
4. 注意是拆分而不是重写,不需要润色,尽量不做任何处理。
|
||||
5. 输出到 content。
|
||||
|
||||
### 技能 2: 为每一个选段概括一个标题
|
||||
1. 为每个拆分出来的选段概括一个标题,并输出到 title。
|
||||
|
||||
### 技能 3: 为每一个选段说明与主题的关联
|
||||
1. 详细说明这一段与全文核心主题的关联,并输出到 topic_relation。
|
||||
|
||||
### 技能 4: 为每一个选段打上一个类型标签
|
||||
1. 用户提交的内容很有可能是一个课程、一篇讲义、一个产品的说明书,通常是用户希望他公司的员工或高管学习的知识。
|
||||
2. 用户通常是医疗美容机构或轻医美、生活美容连锁品牌。
|
||||
3. 你要为每个选段打上一个知识类型的标签,最好是这几个类型中的一个:"理论知识", "诊断设计", "操作步骤", "沟通话术", "案例分析", "注意事项", "技巧方法", "客诉处理"。当然你也可以为这个选段匹配一个更适合的。
|
||||
|
||||
## 输出要求(严格按要求输出)
|
||||
请直接输出一个纯净的 JSON 数组(Array),不要包含 Markdown 标记(如 ```json),也不要包含任何解释性文字。格式如下:
|
||||
|
||||
[
|
||||
{
|
||||
"title": "知识点标题",
|
||||
"content": "知识点内容",
|
||||
"topic_relation": "知识点与主题的关系",
|
||||
"type": "知识点类型"
|
||||
},
|
||||
{
|
||||
"title": "第二个知识点标题",
|
||||
"content": "第二个知识点内容...",
|
||||
"topic_relation": "...",
|
||||
"type": "..."
|
||||
}
|
||||
]
|
||||
|
||||
## 限制
|
||||
- 仅围绕用户提交的内容进行拆分和关联标注,不涉及其他无关内容。
|
||||
- 拆分后的内容必须最大程度保持与原文一致。
|
||||
- 关联说明需清晰合理。
|
||||
- 不论如何,不要拆分超过 20 段!"""
|
||||
|
||||
|
||||
# ==================== 用户提示词模板 ====================
|
||||
|
||||
USER_PROMPT = """课程主题:{course_name}
|
||||
|
||||
## 用户提交的内容:
|
||||
|
||||
{content}
|
||||
|
||||
## 注意
|
||||
|
||||
- 以json的格式输出
|
||||
- 不论如何,不要拆分超过20 段!"""
|
||||
|
||||
|
||||
# ==================== JSON Schema ====================
|
||||
|
||||
KNOWLEDGE_POINT_SCHEMA = {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["title", "content", "type"],
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string",
|
||||
"description": "知识点标题",
|
||||
"maxLength": 200
|
||||
},
|
||||
"content": {
|
||||
"type": "string",
|
||||
"description": "知识点内容"
|
||||
},
|
||||
"topic_relation": {
|
||||
"type": "string",
|
||||
"description": "与主题的关系描述"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"description": "知识点类型",
|
||||
"enum": [
|
||||
"理论知识",
|
||||
"诊断设计",
|
||||
"操作步骤",
|
||||
"沟通话术",
|
||||
"案例分析",
|
||||
"注意事项",
|
||||
"技巧方法",
|
||||
"客诉处理",
|
||||
"其他"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"minItems": 1,
|
||||
"maxItems": 20
|
||||
}
|
||||
|
||||
|
||||
# ==================== 知识点类型常量 ====================
|
||||
|
||||
KNOWLEDGE_POINT_TYPES = [
|
||||
"理论知识",
|
||||
"诊断设计",
|
||||
"操作步骤",
|
||||
"沟通话术",
|
||||
"案例分析",
|
||||
"注意事项",
|
||||
"技巧方法",
|
||||
"客诉处理",
|
||||
]
|
||||
|
||||
DEFAULT_KNOWLEDGE_TYPE = "理论知识"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user