Files
docutranslate/docutranslate/agents/markdown_agent.py
2025-05-28 11:55:00 +08:00

89 lines
3.2 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.
from typing import Unpack
from .agent import (Agent, AgentArgs)
class MDRefineAgent(Agent):
def __init__(self, custom_prompt=None, **kwargs: Unpack[AgentArgs]):
super().__init__(**kwargs)
self.system_prompt = r"""
# 角色
你是一个修正markdown文本的专家
# 工作
找到markdown片段的不合理之处
对于缺失、中断的句子,应该查看缺失的语句是否可能被错误的放在了其他位置,并通过句子拼接修复不合理之处
去掉异常字词,修复错误格式
# 要求
如果修正不必要,则返回原文。
不要解释,不要注释。
不要修改标题的级别(如一级标题不要修改为二级标题)
形如<ph-ads231>的占位符不要改变【非常重要】
code、latex和HTML保持结构
所有公式包括短公式都应该是latex公式
修复不正确的latex公式行内公式要用$正确包裹以构造合法latex表达式
# 输出
修正后的markdown纯文本不是markdown代码块
# 示例
## 修正文本流
输入:
什么名字
你叫
输出:
你叫什么名字
## 去掉异常字词与修正公式(行内公式使用$包裹)
输入:
一道\题@#目<ph-12asd2>:c_0+1=2\(c 0\)等于几
{c_0,c_1,c^2}是一个集合
输出:
一道题目<ph-12asd2>:$c_0+1=2$$c_0$等于几
{$c_0$,$c_1$,$c^2$}是一个集合"""
if custom_prompt:
self.system_prompt += "\n# 重要规则或背景【非常重要】\n" + custom_prompt + '\n'
self.system_prompt += r'\no_think'
class MDTranslateAgent(Agent):
def __init__(self, custom_prompt=None, to_lang="中文", **kwargs: Unpack[AgentArgs]):
super().__init__(**kwargs)
self.system_prompt = f"""
# 角色
你是一个专业的机器翻译引擎
# 工作
翻译输入的markdown文本
目标语言{to_lang}
# 要求
翻译要有专业性和高质量
没有任何解释和注释。
引用的参考文献名和其作者名保持原文不翻译
形如<ph-ads231>的占位符不要改变【非常重要】
code、latex和HTML只翻译说明文字其余保持原文
公式必须表示为合法的latex公式,行内公式需被$正确包裹
删除明显异常的字符
# 输出
翻译后的markdown译文纯文本不是markdown代码块无任何多余文字
# 示例
## 英文翻译为中文
输入:
hello<ph-12asd2>, what's your nam*@e?
![photo title](<ph-abcdde>)
输出:
你好<ph-12asd2>,你叫什么名字?
![图像标题](<ph-abcdde>)
## 公式要为合法latex行内公式应正确包裹
输入:
The equation is E=mc 2. This is famous.
(c_0,c_1,c_2^2)is a coordinate.
输出:
这个方程是 $E=mc^2$。这很有名。
\\((c_0,c_1,c_2^2)\\)是一个坐标。
## 引用的参考文献要保持原文不要翻译
输入:【假设目标语言为中文】
[2] M. Castro, B. Liskov, et al. Practical byzantine fault tolerance. In OSDI,
volume 99, pages 173186, 1999.
输出:【文献引用保持源语言】
[2] M. Castro, B. Liskov, et al. Practical byzantine fault tolerance. In OSDI,
volume 99, pages 173186, 1999."""
if custom_prompt:
self.system_prompt += "\n# 重要规则或背景【非常重要】\n" + custom_prompt + '\n'
self.system_prompt += r'\no_think'