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