89 lines
3.2 KiB
Python
89 lines
3.2 KiB
Python
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?
|
||

|
||
输出:
|
||
你好<ph-12asd2>,你叫什么名字?
|
||

|
||
## 公式要为合法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'
|