|
|
|
|
|
|
|
import importlib |
|
from toolbox import clear_line_break |
|
from toolbox import apply_gpt_academic_string_mask_langbased |
|
from toolbox import build_gpt_academic_masked_string_langbased |
|
from textwrap import dedent |
|
|
|
def get_core_functions(): |
|
return { |
|
|
|
"学术语料润色": { |
|
|
|
|
|
"Prefix": build_gpt_academic_masked_string_langbased( |
|
text_show_english= |
|
r"Below is a paragraph from an academic paper. Polish the writing to meet the academic style, " |
|
r"improve the spelling, grammar, clarity, concision and overall readability. When necessary, rewrite the whole sentence. " |
|
r"Firstly, you should provide the polished paragraph. " |
|
r"Secondly, you should list all your modification and explain the reasons to do so in markdown table.", |
|
text_show_chinese= |
|
r"作为一名中文学术论文写作改进助理,你的任务是改进所提供文本的拼写、语法、清晰、简洁和整体可读性," |
|
r"同时分解长句,减少重复,并提供改进建议。请先提供文本的更正版本,然后在markdown表格中列出修改的内容,并给出修改的理由:" |
|
) + "\n\n", |
|
|
|
"Suffix": r"", |
|
|
|
"Color": r"secondary", |
|
|
|
"Visible": True, |
|
|
|
"AutoClearHistory": False, |
|
|
|
"PreProcess": None, |
|
}, |
|
|
|
|
|
"总结绘制脑图": { |
|
|
|
"Prefix": r"", |
|
|
|
"Suffix": |
|
|
|
dedent("\n"+r''' |
|
============================== |
|
|
|
使用mermaid flowchart对以上文本进行总结,概括上述段落的内容以及内在逻辑关系,例如: |
|
|
|
以下是对以上文本的总结,以mermaid flowchart的形式展示: |
|
```mermaid |
|
flowchart LR |
|
A["节点名1"] --> B("节点名2") |
|
B --> C{"节点名3"} |
|
C --> D["节点名4"] |
|
C --> |"箭头名1"| E["节点名5"] |
|
C --> |"箭头名2"| F["节点名6"] |
|
``` |
|
|
|
警告: |
|
(1)使用中文 |
|
(2)节点名字使用引号包裹,如["Laptop"] |
|
(3)`|` 和 `"`之间不要存在空格 |
|
(4)根据情况选择flowchart LR(从左到右)或者flowchart TD(从上到下) |
|
'''), |
|
}, |
|
|
|
|
|
"查找语法错误": { |
|
"Prefix": r"Help me ensure that the grammar and the spelling is correct. " |
|
r"Do not try to polish the text, if no mistake is found, tell me that this paragraph is good. " |
|
r"If you find grammar or spelling mistakes, please list mistakes you find in a two-column markdown table, " |
|
r"put the original text the first column, " |
|
r"put the corrected text in the second column and highlight the key words you fixed. " |
|
r"Finally, please provide the proofreaded text.""\n\n" |
|
r"Example:""\n" |
|
r"Paragraph: How is you? Do you knows what is it?""\n" |
|
r"| Original sentence | Corrected sentence |""\n" |
|
r"| :--- | :--- |""\n" |
|
r"| How **is** you? | How **are** you? |""\n" |
|
r"| Do you **knows** what **is** **it**? | Do you **know** what **it** **is** ? |""\n\n" |
|
r"Below is a paragraph from an academic paper. " |
|
r"You need to report all grammar and spelling mistakes as the example before." |
|
+ "\n\n", |
|
"Suffix": r"", |
|
"PreProcess": clear_line_break, |
|
}, |
|
|
|
|
|
"中译英": { |
|
"Prefix": r"Please translate following sentence to English:" + "\n\n", |
|
"Suffix": r"", |
|
}, |
|
|
|
|
|
"学术英中互译": { |
|
"Prefix": build_gpt_academic_masked_string_langbased( |
|
text_show_chinese= |
|
r"I want you to act as a scientific English-Chinese translator, " |
|
r"I will provide you with some paragraphs in one language " |
|
r"and your task is to accurately and academically translate the paragraphs only into the other language. " |
|
r"Do not repeat the original provided paragraphs after translation. " |
|
r"You should use artificial intelligence tools, " |
|
r"such as natural language processing, and rhetorical knowledge " |
|
r"and experience about effective writing techniques to reply. " |
|
r"I'll give you my paragraphs as follows, tell me what language it is written in, and then translate:", |
|
text_show_english= |
|
r"你是经验丰富的翻译,请把以下学术文章段落翻译成中文," |
|
r"并同时充分考虑中文的语法、清晰、简洁和整体可读性," |
|
r"必要时,你可以修改整个句子的顺序以确保翻译后的段落符合中文的语言习惯。" |
|
r"你需要翻译的文本如下:" |
|
) + "\n\n", |
|
"Suffix": r"", |
|
}, |
|
|
|
|
|
"英译中": { |
|
"Prefix": r"翻译成地道的中文:" + "\n\n", |
|
"Suffix": r"", |
|
"Visible": False, |
|
}, |
|
|
|
|
|
"找图片": { |
|
"Prefix": r"我需要你找一张网络图片。使用Unsplash API(https://source.unsplash.com/960x640/?<英语关键词>)获取图片URL," |
|
r"然后请使用Markdown格式封装,并且不要有反斜线,不要用代码块。现在,请按以下描述给我发送图片:" + "\n\n", |
|
"Suffix": r"", |
|
"Visible": False, |
|
}, |
|
|
|
|
|
"解释代码": { |
|
"Prefix": r"请解释以下代码:" + "\n```\n", |
|
"Suffix": "\n```\n", |
|
}, |
|
|
|
|
|
"参考文献转Bib": { |
|
"Prefix": r"Here are some bibliography items, please transform them into bibtex style." |
|
r"Note that, reference styles maybe more than one kind, you should transform each item correctly." |
|
r"Items need to be transformed:" + "\n\n", |
|
"Visible": False, |
|
"Suffix": r"", |
|
} |
|
} |
|
|
|
|
|
def handle_core_functionality(additional_fn, inputs, history, chatbot): |
|
import core_functional |
|
importlib.reload(core_functional) |
|
core_functional = core_functional.get_core_functions() |
|
addition = chatbot._cookies['customize_fn_overwrite'] |
|
if additional_fn in addition: |
|
|
|
inputs = addition[additional_fn]["Prefix"] + inputs + addition[additional_fn]["Suffix"] |
|
return inputs, history |
|
else: |
|
|
|
if "PreProcess" in core_functional[additional_fn]: |
|
if core_functional[additional_fn]["PreProcess"] is not None: |
|
inputs = core_functional[additional_fn]["PreProcess"](inputs) |
|
|
|
inputs = apply_gpt_academic_string_mask_langbased( |
|
string = core_functional[additional_fn]["Prefix"] + inputs + core_functional[additional_fn]["Suffix"], |
|
lang_reference = inputs, |
|
) |
|
if core_functional[additional_fn].get("AutoClearHistory", False): |
|
history = [] |
|
return inputs, history |
|
|
|
if __name__ == "__main__": |
|
t = get_core_functions()["总结绘制脑图"] |
|
print(t["Prefix"] + t["Suffix"]) |