现在指定markdown的翻译语言
This commit is contained in:
parent
51c075ec3c
commit
7947c968ad
@ -280,5 +280,20 @@ def get_crazy_functions():
|
|||||||
})
|
})
|
||||||
except:
|
except:
|
||||||
print('Load function plugin failed')
|
print('Load function plugin failed')
|
||||||
|
|
||||||
|
try:
|
||||||
|
from crazy_functions.批量Markdown翻译 import Markdown翻译指定语言
|
||||||
|
function_plugins.update({
|
||||||
|
"Markdown翻译(手动指定语言)": {
|
||||||
|
"Color": "stop",
|
||||||
|
"AsButton": False,
|
||||||
|
"AdvancedArgs": True,
|
||||||
|
"ArgsReminder": "请输入要翻译成哪种语言,默认为Chinese。",
|
||||||
|
"Function": HotReload(Markdown翻译指定语言)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
except:
|
||||||
|
print('Load function plugin failed')
|
||||||
|
|
||||||
###################### 第n组插件 ###########################
|
###################### 第n组插件 ###########################
|
||||||
return function_plugins
|
return function_plugins
|
||||||
|
@ -113,12 +113,11 @@ def 多文件润色(file_manifest, project_folder, llm_kwargs, plugin_kwargs, ch
|
|||||||
scroller_max_len = 80
|
scroller_max_len = 80
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# <-------- 文本碎片重组为完整的tex文件,整理结果为压缩包 ---------->
|
||||||
|
try:
|
||||||
pfg.sp_file_result = []
|
pfg.sp_file_result = []
|
||||||
for i_say, gpt_say in zip(gpt_response_collection[0::2], gpt_response_collection[1::2]):
|
for i_say, gpt_say in zip(gpt_response_collection[0::2], gpt_response_collection[1::2]):
|
||||||
pfg.sp_file_result.append(gpt_say)
|
pfg.sp_file_result.append(gpt_say)
|
||||||
|
|
||||||
# <-------- 文本碎片重组为完整的tex文件,整理结果为压缩包 ---------->
|
|
||||||
try:
|
|
||||||
pfg.merge_result()
|
pfg.merge_result()
|
||||||
pfg.write_result()
|
pfg.write_result()
|
||||||
pfg.zip_result()
|
pfg.zip_result()
|
||||||
|
@ -105,6 +105,19 @@ def test_数学动画生成manim():
|
|||||||
for cookies, cb, hist, msg in 动画生成(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port):
|
for cookies, cb, hist, msg in 动画生成(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port):
|
||||||
print(cb)
|
print(cb)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def test_Markdown多语言():
|
||||||
|
from crazy_functions.批量Markdown翻译 import Markdown翻译指定语言
|
||||||
|
txt = "README.md"
|
||||||
|
history = []
|
||||||
|
for lang in ["English", "Spanish", "French", "German", "Italian", "Chinese", "Japanese", "Korean", "Portuguese", "Russian", "Arabic"]:
|
||||||
|
plugin_kwargs = {"advanced_arg": lang}
|
||||||
|
for cookies, cb, hist, msg in Markdown翻译指定语言(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port):
|
||||||
|
print(cb)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# test_解析一个Python项目()
|
# test_解析一个Python项目()
|
||||||
# test_Latex英文润色()
|
# test_Latex英文润色()
|
||||||
# test_Markdown中译英()
|
# test_Markdown中译英()
|
||||||
@ -115,7 +128,8 @@ def test_数学动画生成manim():
|
|||||||
# test_解析一个Cpp项目()
|
# test_解析一个Cpp项目()
|
||||||
# test_联网回答问题()
|
# test_联网回答问题()
|
||||||
# test_解析ipynb文件()
|
# test_解析ipynb文件()
|
||||||
test_数学动画生成manim()
|
# test_数学动画生成manim()
|
||||||
|
test_Markdown多语言()
|
||||||
|
|
||||||
input("程序完成,回车退出。")
|
input("程序完成,回车退出。")
|
||||||
print("退出。")
|
print("退出。")
|
@ -1,4 +1,4 @@
|
|||||||
from toolbox import update_ui
|
from toolbox import update_ui, trimmed_format_exc, gen_time_str
|
||||||
from toolbox import CatchException, report_execption, write_results_to_file
|
from toolbox import CatchException, report_execption, write_results_to_file
|
||||||
fast_debug = False
|
fast_debug = False
|
||||||
|
|
||||||
@ -32,9 +32,21 @@ class PaperFileGroup():
|
|||||||
self.sp_file_contents.append(segment)
|
self.sp_file_contents.append(segment)
|
||||||
self.sp_file_index.append(index)
|
self.sp_file_index.append(index)
|
||||||
self.sp_file_tag.append(self.file_paths[index] + f".part-{j}.md")
|
self.sp_file_tag.append(self.file_paths[index] + f".part-{j}.md")
|
||||||
|
|
||||||
print('Segmentation: done')
|
print('Segmentation: done')
|
||||||
|
|
||||||
|
def merge_result(self):
|
||||||
|
self.file_result = ["" for _ in range(len(self.file_paths))]
|
||||||
|
for r, k in zip(self.sp_file_result, self.sp_file_index):
|
||||||
|
self.file_result[k] += r
|
||||||
|
|
||||||
|
def write_result(self):
|
||||||
|
manifest = []
|
||||||
|
for path, res in zip(self.file_paths, self.file_result):
|
||||||
|
with open(path + f'{gen_time_str()}.trans.md', 'w', encoding='utf8') as f:
|
||||||
|
manifest.append(path + '.trans.md')
|
||||||
|
f.write(res)
|
||||||
|
return manifest
|
||||||
|
|
||||||
def 多文件翻译(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, language='en'):
|
def 多文件翻译(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, language='en'):
|
||||||
import time, os, re
|
import time, os, re
|
||||||
from .crazy_utils import request_gpt_model_multi_threads_with_very_awesome_ui_and_high_efficiency
|
from .crazy_utils import request_gpt_model_multi_threads_with_very_awesome_ui_and_high_efficiency
|
||||||
@ -53,7 +65,7 @@ def 多文件翻译(file_manifest, project_folder, llm_kwargs, plugin_kwargs, ch
|
|||||||
pfg.run_file_split(max_token_limit=1500)
|
pfg.run_file_split(max_token_limit=1500)
|
||||||
n_split = len(pfg.sp_file_contents)
|
n_split = len(pfg.sp_file_contents)
|
||||||
|
|
||||||
# <-------- 多线程润色开始 ---------->
|
# <-------- 多线程翻译开始 ---------->
|
||||||
if language == 'en->zh':
|
if language == 'en->zh':
|
||||||
inputs_array = ["This is a Markdown file, translate it into Chinese, do not modify any existing Markdown commands:" +
|
inputs_array = ["This is a Markdown file, translate it into Chinese, do not modify any existing Markdown commands:" +
|
||||||
f"\n\n{frag}" for frag in pfg.sp_file_contents]
|
f"\n\n{frag}" for frag in pfg.sp_file_contents]
|
||||||
@ -64,6 +76,11 @@ def 多文件翻译(file_manifest, project_folder, llm_kwargs, plugin_kwargs, ch
|
|||||||
f"\n\n{frag}" for frag in pfg.sp_file_contents]
|
f"\n\n{frag}" for frag in pfg.sp_file_contents]
|
||||||
inputs_show_user_array = [f"翻译 {f}" for f in pfg.sp_file_tag]
|
inputs_show_user_array = [f"翻译 {f}" for f in pfg.sp_file_tag]
|
||||||
sys_prompt_array = ["You are a professional academic paper translator." for _ in range(n_split)]
|
sys_prompt_array = ["You are a professional academic paper translator." for _ in range(n_split)]
|
||||||
|
else:
|
||||||
|
inputs_array = [f"This is a Markdown file, translate it into {language}, do not modify any existing Markdown commands, only answer me with translated results:" +
|
||||||
|
f"\n\n{frag}" for frag in pfg.sp_file_contents]
|
||||||
|
inputs_show_user_array = [f"翻译 {f}" for f in pfg.sp_file_tag]
|
||||||
|
sys_prompt_array = ["You are a professional academic paper translator." for _ in range(n_split)]
|
||||||
|
|
||||||
gpt_response_collection = yield from request_gpt_model_multi_threads_with_very_awesome_ui_and_high_efficiency(
|
gpt_response_collection = yield from request_gpt_model_multi_threads_with_very_awesome_ui_and_high_efficiency(
|
||||||
inputs_array=inputs_array,
|
inputs_array=inputs_array,
|
||||||
@ -75,6 +92,14 @@ def 多文件翻译(file_manifest, project_folder, llm_kwargs, plugin_kwargs, ch
|
|||||||
# max_workers=5, # OpenAI所允许的最大并行过载
|
# max_workers=5, # OpenAI所允许的最大并行过载
|
||||||
scroller_max_len = 80
|
scroller_max_len = 80
|
||||||
)
|
)
|
||||||
|
try:
|
||||||
|
pfg.sp_file_result = []
|
||||||
|
for i_say, gpt_say in zip(gpt_response_collection[0::2], gpt_response_collection[1::2]):
|
||||||
|
pfg.sp_file_result.append(gpt_say)
|
||||||
|
pfg.merge_result()
|
||||||
|
pfg.write_result()
|
||||||
|
except:
|
||||||
|
print(trimmed_format_exc())
|
||||||
|
|
||||||
# <-------- 整理结果,退出 ---------->
|
# <-------- 整理结果,退出 ---------->
|
||||||
create_report_file_name = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime()) + f"-chatgpt.polish.md"
|
create_report_file_name = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime()) + f"-chatgpt.polish.md"
|
||||||
@ -184,3 +209,39 @@ def Markdown中译英(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_p
|
|||||||
yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
|
yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
|
||||||
return
|
return
|
||||||
yield from 多文件翻译(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, language='zh->en')
|
yield from 多文件翻译(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, language='zh->en')
|
||||||
|
|
||||||
|
|
||||||
|
@CatchException
|
||||||
|
def Markdown翻译指定语言(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port):
|
||||||
|
# 基本信息:功能、贡献者
|
||||||
|
chatbot.append([
|
||||||
|
"函数插件功能?",
|
||||||
|
"对整个Markdown项目进行翻译。函数插件贡献者: Binary-Husky"])
|
||||||
|
yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
|
||||||
|
|
||||||
|
# 尝试导入依赖,如果缺少依赖,则给出安装建议
|
||||||
|
try:
|
||||||
|
import tiktoken
|
||||||
|
import glob, os
|
||||||
|
except:
|
||||||
|
report_execption(chatbot, history,
|
||||||
|
a=f"解析项目: {txt}",
|
||||||
|
b=f"导入软件依赖失败。使用该模块需要额外依赖,安装方法```pip install --upgrade tiktoken```。")
|
||||||
|
yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
|
||||||
|
return
|
||||||
|
history = [] # 清空历史,以免输入溢出
|
||||||
|
success, file_manifest, project_folder = get_files_from_everything(txt)
|
||||||
|
if not success:
|
||||||
|
# 什么都没有
|
||||||
|
if txt == "": txt = '空空如也的输入栏'
|
||||||
|
report_execption(chatbot, history, a = f"解析项目: {txt}", b = f"找不到本地项目或无权访问: {txt}")
|
||||||
|
yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
|
||||||
|
return
|
||||||
|
if len(file_manifest) == 0:
|
||||||
|
report_execption(chatbot, history, a = f"解析项目: {txt}", b = f"找不到任何.md文件: {txt}")
|
||||||
|
yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
|
||||||
|
return
|
||||||
|
|
||||||
|
if ("advanced_arg" in plugin_kwargs) and (plugin_kwargs["advanced_arg"] == ""): plugin_kwargs.pop("advanced_arg")
|
||||||
|
language = plugin_kwargs.get("advanced_arg", 'Chinese')
|
||||||
|
yield from 多文件翻译(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, language=language)
|
@ -1,4 +1,4 @@
|
|||||||
from toolbox import CatchException, update_ui
|
from toolbox import CatchException, update_ui, gen_time_str
|
||||||
from .crazy_utils import request_gpt_model_in_new_thread_with_ui_alive
|
from .crazy_utils import request_gpt_model_in_new_thread_with_ui_alive
|
||||||
from .crazy_utils import input_clipping
|
from .crazy_utils import input_clipping
|
||||||
|
|
||||||
@ -12,10 +12,6 @@ def inspect_dependency(chatbot, history):
|
|||||||
yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
|
yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def gen_time_str():
|
|
||||||
import time
|
|
||||||
return time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
|
|
||||||
|
|
||||||
def eval_manim(code):
|
def eval_manim(code):
|
||||||
import subprocess, sys, os, shutil
|
import subprocess, sys, os, shutil
|
||||||
|
|
||||||
|
@ -727,6 +727,7 @@ def clip_history(inputs, history, tokenizer, max_token_limit):
|
|||||||
第三部分
|
第三部分
|
||||||
其他小工具:
|
其他小工具:
|
||||||
- zip_folder: 把某个路径下所有文件压缩,然后转移到指定的另一个路径中(gpt写的)
|
- zip_folder: 把某个路径下所有文件压缩,然后转移到指定的另一个路径中(gpt写的)
|
||||||
|
- gen_time_str: 生成时间戳
|
||||||
========================================================================
|
========================================================================
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -761,3 +762,6 @@ def zip_folder(source_folder, dest_folder, zip_name):
|
|||||||
|
|
||||||
print(f"Zip file created at {zip_file}")
|
print(f"Zip file created at {zip_file}")
|
||||||
|
|
||||||
|
def gen_time_str():
|
||||||
|
import time
|
||||||
|
return time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
|
Loading…
x
Reference in New Issue
Block a user