Files
012-kaopeilian/backend/app/services/ai/prompts/knowledge_analysis_prompts.py
111 442ac78b56
Some checks failed
continuous-integration/drone/push Build is failing
sync: 同步服务器最新代码 (2026-01-27)
更新内容:
- 后端 AI 服务优化(能力分析、知识点解析等)
- 前端考试和陪练界面更新
- 修复多个 prompt 和 JSON 解析问题
- 更新 Coze 语音客户端
2026-01-27 10:03:28 +08:00

154 lines
4.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
知识点分析提示词模板
功能:从课程资料中提取知识点
"""
# ==================== 元数据 ====================
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 = "理论知识"