校对
This commit is contained in:
parent
cd70022d67
commit
ba5f23e24c
255
app.py
255
app.py
@ -447,188 +447,66 @@ def dedupe_and_filter(items: List[dict], source_text: str) -> List[dict]:
|
||||
return result
|
||||
|
||||
def cotprompt(query):
|
||||
conten1 = """
|
||||
人工智能正在深刻改变现,代教育的方式。通过智能教学系统【】AI可以根据学生的学习习惯和掌握情况,提供个性化的学习内容和节奏学习内容和节奏,提高学习效率。同时,AI还能辅助教师进行作业批改、学习分析,甚至参与课堂互动,减轻教师的重复工作压力。
|
||||
虚拟助教、智能语音识别、自动文达系统等技术,也让远程教育更加高效和便捷。更加高效和便捷。随着AI技术的发展,教育不再局限于固定的教材和课堂,而是变得更加开放、灵活和智能化------让每个雪生都能获得更适合自己的学习体验。人工智能不仅是工具,更是推动教育公平和质量提升的重要力量。
|
||||
"""
|
||||
reasoning1 = """
|
||||
"深刻改变现,代教育中"多了",",修改为“深刻改变现代教育中”;“智能教学系统【】”中存在错误符号“【】”,修改为“智能教学系统”;“提供个性化的学习内容和节奏学习内容和节奏”存在重复内容,修改为"提供个性化的学习内容和节奏";"自动文达系统"存在错误词语"文达",修改为”自动问答系统“;”而是变得更加开放、灵活和智能化------“
|
||||
中存在错误符号“------”,修改为“而是变得更加开放、灵活和智能化,”;“每个雪生”中存在错别字“雪生”,修改为“每个学生”;检查完上述错误之后,正确的文本内容应该是:人工智能正在深刻改变现代教育的方式。通过智能教学系统,AI可以根据学生的学习习惯和掌握情况,提供个性化的学习内容和节奏,提高学习效率。同时,AI还能辅助教师进行作业批改、学习分析,甚至参与课堂互动,减轻教师的重复工作压力。虚拟助教、智能语音识别、自动问答系统等技术,也让远程教育更加高效和便捷。
|
||||
随着AI技术的发展,教育不再局限于固定的教材和课堂,而是变得更加开放、灵活和智能化,让每个学生都能获得更适合自己的学习体验。人工智能不仅是工具,更是推动教育公平和质量提升的重要力量。
|
||||
"""
|
||||
ques = f"""
|
||||
文本内容为{conten1},对给出的文本内容进行逻辑校对、基础校对和合规性检查,逻辑校对检测文本逻辑连贯性,基础校对检查文本中错别字、错误标点符号和重复内容。
|
||||
校对文本之后,如果你发现没有任何错误,不需要返回其他内容,只需要返回:
|
||||
###\n###
|
||||
发现错误时返回:
|
||||
###\n错误:错别字、标点不规范\n原文:星光店电;万里乌云\n建议:星光点点,万里无云
|
||||
\n错误:错别词语、标点不规范\n原文:请注丰收与团圆。\n建议:庆祝丰收与团圆。
|
||||
\n错误:标点不规范\n原文:你好;明天\n建议:你好,明天
|
||||
\n错误:重复内容\n原文:我听说你心情很不错不错。你心情很不错不错。\n建议:我听说你心情很不错。###
|
||||
"""
|
||||
|
||||
conten2 = """
|
||||
关于近期工作安排的通知
|
||||
各位同事,
|
||||
京公司研九决定,现将近期工作安排通知通知如下:
|
||||
一、项目推进方面。各部门需加快项目进度,确保按时交付。如有问题,及时与相关领导沟通解决。项目负责人要切实履行职责,加强团队协作,提高工作效率。
|
||||
二、培训学习方面:公司将组织系列培训课程,提升员工专业技能。具体时间、地点另行通知。员工需按时参加,不得无辜缺席。自即日起,严禁在工作时间从事与工作无关的活动。
|
||||
二、纪律要求。近期发现部分员工上班时间做与工作无关的事情,如炒股、聊天等,严重影响工作效率和公司形象。自即日起,严禁在工作时间从事与工作无关的活动。违反规定者,将按照公司规章制度严肃处理。
|
||||
特此通知:
|
||||
[公司名称]
|
||||
[日期]
|
||||
"""
|
||||
reasoning2 = """
|
||||
"京公司研九决定"中存在错别字和词语“京”、“研九”,修改为“经公司研究决定”;“工作安排通知通知”存在重复内容,修改为“工作安排通知”;“一、项目推进方面。”存在错误标点符号,参与后续内容中“二、培训学习方面:”,因此“一、项目推进方面”之后应当使用“:”,修改为“一、项目推进方面:”;“无辜缺席。”中存在错别字“辜”,修改为“无故缺席”;
|
||||
“二、纪律要求。”存在错别字、标点不规范,纪律要求应该是第三点,应该使用”:“,修改为“三、纪律要求:”;”特此通知:“中存在标点不规范,应该修改为”特此通知。“检查完上述错误之后,正确的文本内容应该是:关于近期工作安排的通知
|
||||
各位同事,
|
||||
经公司研究决定,现将近期工作安排通知如下:
|
||||
一、项目推进方面:各部门需加快项目进度,确保按时交付。如有问题,及时与相关领导沟通解决。项目负责人要切实履行职责,加强团队协作,提高工作效率。
|
||||
二、培训学习方面:公司将组织系列培训课程,提升员工专业技能。具体时间、地点另行通知。员工需按时参加,不得无故缺席。自即日起,严禁在工作时间从事与工作无关的活动。
|
||||
三、纪律要求:近期发现部分员工上班时间做与工作无关的事情,如炒股、聊天等,严重影响工作效率和公司形象。自即日起,严禁在工作时间从事与工作无关的活动。违反规定者,将按照公司规章制度严肃处理。
|
||||
特此通知。
|
||||
[公司名称]
|
||||
[日期]
|
||||
"""
|
||||
|
||||
ques2 = f"""
|
||||
文本内容为{conten2},对给出的文本内容进行逻辑校对、基础校对和合规性检查,逻辑校对检测文本逻辑连贯性,基础校对检查文本中错别字、错误标点符号和重复内容。
|
||||
校对文本之后,如果你发现没有任何错误,不需要返回其他内容,只需要返回:
|
||||
###\n###
|
||||
发现错误时返回:
|
||||
###\n错误:错别字、标点不规范\n原文:星光店电;万里乌云\n建议:星光点点,万里无云
|
||||
\n错误:错别词语、标点不规范\n原文:请注丰收与团圆。\n建议:庆祝丰收与团圆。
|
||||
\n错误:标点不规范\n原文:你好;明天\n建议:你好,明天
|
||||
\n错误:重复内容\n原文:我听说你心情很不错不错。你心情很不错不错。\n建议:我听说你心情很不错。###
|
||||
"""
|
||||
|
||||
conten3 = """
|
||||
《水声目标识别》课程教学计划
|
||||
|
||||
一、课程名称
|
||||
水声目标识别,该课程式用于海洋科学、水声工程、电子信息等专业本科生asfqfqfqwfwqf、研究生,以及军事院校学员、相关领域科研人员和企业技术人员技术人员。
|
||||
|
||||
三、计划学时
|
||||
2026学年,总学时:48学时(理论授课32学时,实作授课16学时)
|
||||
|
||||
三、授课时间
|
||||
每周4学时,共12周完成
|
||||
四、教学目标
|
||||
1. 知识目标
|
||||
使学生掌握水声目标识别的几本原理】方法和技术,包括声纳信号的特性、目标特征提取、分类与识别算法等。
|
||||
了解水声目标识别在军事(如潜艇作战、反潜作战等)和民用(如海洋资源勘探、水下考古等)领域的应用。
|
||||
熟悉水声目标识别系统的基本组成和工作原理,
|
||||
2. 能力目标
|
||||
培养学生运用所学知识对水声信号进行分析处理、特征提取和目标识别的能力。
|
||||
提高学生运用专业软件(如MATLAB等)进行水声水声信号处理和目标识别仿真的能力。
|
||||
增强学生解决实际水声目标识别问题的实践能力和创新思维。
|
||||
3. 素质目标
|
||||
培养学生严谨的科学态度和扎实的专业素养,使其剧备良好的团队协作精神和沟通能力。
|
||||
激发学生对水声技术领域的学习兴趣和探索精神,培养其自主学习和终身学习的意识。
|
||||
"""
|
||||
|
||||
ques3 = f"""
|
||||
文本内容为{conten3},对给出的文本内容进行逻辑校对、基础校对和合规性检查,逻辑校对检测文本逻辑连贯性,基础校对检查文本中错别字、错误标点符号和重复内容。
|
||||
校对文本之后,如果你发现没有任何错误,不需要返回其他内容,只需要返回:
|
||||
###\n###
|
||||
发现错误时返回:
|
||||
###\n错误:错别字、标点不规范\n原文:星光店电;万里乌云\n建议:星光点点,万里无云
|
||||
\n错误:错别词语、标点不规范\n原文:请注丰收与团圆。\n建议:庆祝丰收与团圆。
|
||||
\n错误:标点不规范\n原文:你好;明天\n建议:你好,明天
|
||||
\n错误:重复内容\n原文:我听说你心情很不错不错。你心情很不错不错。\n建议:我听说你心情很不错。###
|
||||
"""
|
||||
reasoning3 = """
|
||||
"式用"中存在错别字“式”,修改为:“适用”;“本科生asfqfqfqwfwqf、”中存在错别字和符号“asfqfqfqwfwqf”,修改为:“本科生、”;“三、计划学时”存在错别字使用不当,修改为:“二、计划学时”;
|
||||
“几本原理】”存在错别字、标点不规范,应该修改为:“基本原理”;“工作原理,”存在标点不规范,应该修改为:“工作原理。”;“水声水声信号”中存在重复内容“水声”,应该修改为“水声信号”;
|
||||
“剧备”存在错别字“剧”,应该修改为:”具备“。检查完上述错误之后,正确的文本内容应该是:
|
||||
《水声目标识别》课程教学计划
|
||||
|
||||
一、课程名称
|
||||
水声目标识别,该课程式用于海洋科学、水声工程、电子信息等专业本科生、研究生,以及军事院校学员、相关领域科研人员和企业技术人员。
|
||||
|
||||
三、计划学时
|
||||
2026学年,总学时:48学时(理论授课32学时,实作授课16学时)
|
||||
|
||||
三、授课时间
|
||||
每周4学时,共12周完成
|
||||
四、教学目标
|
||||
1. 知识目标
|
||||
使学生掌握水声目标识别的基本原理、方法和技术,包括声纳信号的特性、目标特征提取、分类与识别算法等。
|
||||
了解水声目标识别在军事(如潜艇作战、反潜作战等)和民用(如海洋资源勘探、水下考古等)领域的应用。
|
||||
熟悉水声目标识别系统的基本组成和工作原理。
|
||||
2. 能力目标
|
||||
培养学生运用所学知识对水声信号进行分析处理、特征提取和目标识别的能力。
|
||||
提高学生运用专业软件(如MATLAB等)进行水声信号处理和目标识别仿真的能力。
|
||||
增强学生解决实际水声目标识别问题的实践能力和创新思维。
|
||||
3. 素质目标
|
||||
培养学生严谨的科学态度和扎实的专业素养,使其具备良好的团队协作精神和沟通能力。
|
||||
激发学生对水声技术领域的学习兴趣和探索精神,培养其自主学习和终身学习的意识。
|
||||
"""
|
||||
|
||||
# 定义 Few-Shot CoT 示例
|
||||
# 精简 Few-Shot:只示范「输入文本 -> 结构化修改结果」,不再包含推理过程/思考链,
|
||||
# 从源头杜绝模型输出解释、分析、括号备注等多余内容,同时大幅缩短每次请求的前缀长度。
|
||||
examples = [
|
||||
{
|
||||
"question": ques,
|
||||
"reasoning": reasoning1,
|
||||
"answer": """
|
||||
\n错误:标点不规范\n原文:现,代教育\n建议:现代教育
|
||||
\n错误:标点不规范\n原文:智能教学系统【】\n建议:智能教学系统
|
||||
\n错误:重复内容\n原文:提供个性化的学习内容和节奏学习内容和节奏\n建议:提供个性化的学习内容和节奏
|
||||
\n错误:错别字、错别词语\n原文:自动文达系统\n建议:自动问答系统
|
||||
\n错误:标点不规范\n原文:而是变得更加开放、灵活和智能化------\n建议:而是变得更加开放、灵活和智能化,
|
||||
\n错误:错别字、错别词语\n原文:每个雪生\n建议:每个学生
|
||||
"""
|
||||
# 综合示例:覆盖错别字/错别词语/标点不规范/重复内容,
|
||||
# 重点示范:多余标点(。。。)、全半角括号 -> 标点不规范(不是逻辑不通)
|
||||
"question": "现,代教育中,智能教学系统【】让每个雪生受益,自动文达系统很方便。现就安全生产大检查工作提出如下意见。。。(本报记者 小陈)",
|
||||
"answer": (
|
||||
"###\n"
|
||||
"错误:标点不规范\n原文:现,代教育\n建议:现代教育\n\n"
|
||||
"错误:标点不规范\n原文:智能教学系统【】\n建议:智能教学系统\n\n"
|
||||
"错误:错别字\n原文:每个雪生\n建议:每个学生\n\n"
|
||||
"错误:错别词语\n原文:自动文达系统\n建议:自动问答系统\n\n"
|
||||
"错误:标点不规范\n原文:如下意见。。。\n建议:如下意见。\n\n"
|
||||
"错误:标点不规范\n原文:(本报记者 小陈)\n建议:(本报记者 小陈)\n"
|
||||
"###"
|
||||
),
|
||||
},
|
||||
{
|
||||
"question": ques2,
|
||||
"reasoning": reasoning2,
|
||||
"answer": """
|
||||
\n错误:错别字、错别词语\n原文:京公司研九决定\n建议:经公司研究决定
|
||||
\n错误:重复内容\n原文:工作安排通知通知\n建议:工作安排通知
|
||||
\n错误:错别字、错别词语\n原文:无辜缺席。\n建议:无故缺席
|
||||
\n错误:错别字、标点不规范\n原文:二、纪律要求。\n建议:三、纪律要求:
|
||||
\n错误:标点不规范\n原文:特此通知:\n建议:特此通知。
|
||||
"""
|
||||
# 删除类示例:整段重复/冗余内容应删除时,建议字段留空(表示删除),
|
||||
# 严禁写“(删除该句……)”之类说明文字,否则前端替换会把说明插入原文。
|
||||
"question": "综上,各相关部门应认真履行尽责,扎实推进工作落实见效落地。综上,各相关部门应认真履行尽责,扎实推进工作落实见效落地。",
|
||||
"answer": (
|
||||
"###\n"
|
||||
"错误:重复内容\n原文:综上,各相关部门应认真履行尽责,扎实推进工作落实见效落地。\n建议:\n"
|
||||
"###"
|
||||
),
|
||||
},
|
||||
{
|
||||
"question": ques3,
|
||||
"reasoning": reasoning3,
|
||||
"answer": """
|
||||
\n错误:错别字、错别词语\n原文:式用\n建议:适用
|
||||
\n错误:错别字、错别字符\n原文:本科生asfqfqfqwfwqf、\n建议:本科生、
|
||||
\n错误:错别字、逻辑不顺\n原文:三、计划学时\n建议:二、计划学时
|
||||
\n错误:错别字、标点不规范\n原文:几本原理】\n建议:基本原理
|
||||
\n错误:标点不规范\n原文:工作原理,\n建议:工作原理。
|
||||
\n错误:重复内容\n原文:水声水声信号\n建议:水声信号
|
||||
\n错误:错别字、错别词语\n原文:剧备\n建议:具备
|
||||
"""
|
||||
}
|
||||
# 无明显错误示例:只返回空标记,禁止输出任何说明、分析或括号备注
|
||||
"question": "全年审核采购合同、对账单据数百份,均按规定完成登记归档。",
|
||||
"answer": "###\n###",
|
||||
},
|
||||
]
|
||||
|
||||
# 定义单个示例的模板
|
||||
example_template = """
|
||||
问题: {question}
|
||||
推理过程: {reasoning}
|
||||
答案: {answer}
|
||||
"""
|
||||
|
||||
# 创建 PromptTemplate 对象
|
||||
# 单个示例模板:只保留 问题/答案,删除“推理过程”
|
||||
example_prompt = PromptTemplate(
|
||||
input_variables=["question", "reasoning", "answer"],
|
||||
template=example_template
|
||||
input_variables=["question", "answer"],
|
||||
template="问题:{question}\n答案:{answer}",
|
||||
)
|
||||
|
||||
# 创建 FewShotPromptTemplate 对象
|
||||
few_shot_prompt = FewShotPromptTemplate(
|
||||
examples=examples,
|
||||
example_prompt=example_prompt,
|
||||
prefix="你是一个文本内容校对高手。能够根据要要求进行错误检查。请根据以下示例,解决用户提出的问题。",
|
||||
suffix="问题: {question}\n推理过程:",
|
||||
prefix=(
|
||||
"你是专业文本校对专家,只检查错别字、错误标点、重复内容、逻辑不通与合规问题。\n"
|
||||
"输出规则(务必严格遵守):\n"
|
||||
"1. 每个错误占三行:第一行“错误:<错误类型>”,第二行“原文:<有错的原文片段>”,第三行“建议:<修改后的正确文本>”;不同错误之间空一行,整体用 ### 包裹。\n"
|
||||
"2. 错误类型只能从以下选择:错别字、错别词语、标点不规范、重复内容、逻辑不通、合规问题。\n"
|
||||
"3. 凡是标点问题(多余或重复标点如“。。。”、全角/半角标点混用如英文括号()应为中文()、标点缺失或误用),一律归为“标点不规范”,禁止归为“逻辑不通”;“逻辑不通”只用于前后文语义矛盾、指代不清等真正的逻辑问题。\n"
|
||||
"4. 建议字段只写修改后的正确内容,禁止输出任何解释、分析、推理、评论或括号备注(例如禁止出现“(删除该句……)”“(此处无明显错误……)”“(通常……可接受)”这类内容)。\n"
|
||||
"5. 删除类错误(重复插入、冗余整句等需要删掉的内容):建议字段一律留空,即“建议:”后不写任何字符,用留空表示该原文片段应被删除;绝不能写“(删除)”或删除原因。\n"
|
||||
"6. 若整段文本没有任何错误,只返回:###\n###,不要输出其它任何字符。\n"
|
||||
"请参照以下示例完成校对:"
|
||||
),
|
||||
suffix="问题:{question}\n答案:",
|
||||
input_variables=["question"],
|
||||
example_separator="\n\n"
|
||||
example_separator="\n\n",
|
||||
)
|
||||
prompt = few_shot_prompt.format(question=query)
|
||||
return prompt
|
||||
return few_shot_prompt.format(question=query)
|
||||
|
||||
|
||||
def build_review_prompt(types: List[str], content: str, require: Optional[str]) -> Iterable[ChatCompletionMessageParam]:
|
||||
@ -650,6 +528,8 @@ def build_review_prompt(types: List[str], content: str, require: Optional[str])
|
||||
query = f"""
|
||||
我会给你对应的文本,进行相应的检查,{review_t}
|
||||
{require_text}
|
||||
注意:只输出结构化校对结果(错误/原文/建议),建议只写修改后的正确文本,不要输出任何解释、分析、推理或括号备注;没有错误时只返回 ###\n###。
|
||||
其中:标点问题(多余/重复标点、全半角括号混用等)一律归为“标点不规范”,不要归为“逻辑不通”;需要删除的重复或冗余内容,建议字段留空表示删除,禁止写“(删除…)”之类文字。
|
||||
"""
|
||||
query1 = cotprompt(content)
|
||||
return [
|
||||
@ -749,6 +629,11 @@ def build_review_stream_require(
|
||||
return "\n".join(requirements)
|
||||
|
||||
|
||||
# /Review 流式并发配置:块大小 5000,最多 5 块并行
|
||||
REVIEW_CHUNK_SIZE = 5000
|
||||
REVIEW_MAX_CONCURRENCY = 5
|
||||
|
||||
|
||||
async def stream_review_content(
|
||||
content: str,
|
||||
types: List[str],
|
||||
@ -764,21 +649,35 @@ async def stream_review_content(
|
||||
positive_words=positive_words,
|
||||
)
|
||||
|
||||
chunk_size = 1000
|
||||
chunks = [
|
||||
content[i:i + chunk_size]
|
||||
for i in range(0, len(content), chunk_size)
|
||||
content[i:i + REVIEW_CHUNK_SIZE]
|
||||
for i in range(0, len(content), REVIEW_CHUNK_SIZE)
|
||||
]
|
||||
if not chunks:
|
||||
return
|
||||
|
||||
for chunk in chunks:
|
||||
prompt = build_review_prompt(
|
||||
content=chunk,
|
||||
types=types,
|
||||
require=review_require,
|
||||
)
|
||||
semaphore = asyncio.Semaphore(REVIEW_MAX_CONCURRENCY)
|
||||
|
||||
async def process_chunk(chunk: str) -> str:
|
||||
async with semaphore:
|
||||
prompt = build_review_prompt(
|
||||
content=chunk,
|
||||
types=types,
|
||||
require=review_require,
|
||||
)
|
||||
# 累积单块完整输出后再返回:并发块之间不能交错 token,
|
||||
# 否则会破坏“错误/原文/建议”块结构,导致后端解析错乱。
|
||||
return await call_review_model(prompt)
|
||||
|
||||
tasks = [asyncio.create_task(process_chunk(chunk)) for chunk in chunks]
|
||||
|
||||
# 谁先完成谁先产出(块间顺序不保证;校对条目相互独立,前端按原文定位)
|
||||
for finished in asyncio.as_completed(tasks):
|
||||
chunk_result = await finished
|
||||
if chunk_result and chunk_result.strip():
|
||||
yield chunk_result
|
||||
yield "\n\n" # 块间分隔,避免相邻块内容被后端按 \n\n 粘连
|
||||
|
||||
async for token in stream_review_model(prompt):
|
||||
yield token
|
||||
|
||||
|
||||
async def review_chunk(
|
||||
@ -808,7 +707,7 @@ async def review_text(
|
||||
negative_word_set = normalize_words(negative_words)
|
||||
positive_word_set = normalize_words(positive_words)
|
||||
|
||||
chunk_size = 1000
|
||||
chunk_size = REVIEW_CHUNK_SIZE
|
||||
chunks = [
|
||||
content[i:i + chunk_size]
|
||||
for i in range(0, len(content), chunk_size)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user