Merge branch 'master' of github.com:binary-husky/chatgpt_academic
This commit is contained in:
		
						commit
						1721edc990
					
				@ -52,8 +52,8 @@ Latex论文一键校对 | [函数插件] 仿Grammarly对Latex文章进行语法
 | 
				
			|||||||
[多LLM模型](https://www.bilibili.com/video/BV1wT411p7yf)支持 | 同时被GPT3.5、GPT4、[清华ChatGLM2](https://github.com/THUDM/ChatGLM2-6B)、[复旦MOSS](https://github.com/OpenLMLab/MOSS)同时伺候的感觉一定会很不错吧?
 | 
					[多LLM模型](https://www.bilibili.com/video/BV1wT411p7yf)支持 | 同时被GPT3.5、GPT4、[清华ChatGLM2](https://github.com/THUDM/ChatGLM2-6B)、[复旦MOSS](https://github.com/OpenLMLab/MOSS)同时伺候的感觉一定会很不错吧?
 | 
				
			||||||
⭐ChatGLM2微调模型 | 支持加载ChatGLM2微调模型,提供ChatGLM2微调辅助插件
 | 
					⭐ChatGLM2微调模型 | 支持加载ChatGLM2微调模型,提供ChatGLM2微调辅助插件
 | 
				
			||||||
更多LLM模型接入,支持[huggingface部署](https://huggingface.co/spaces/qingxu98/gpt-academic) | 加入Newbing接口(新必应),引入清华[Jittorllms](https://github.com/Jittor/JittorLLMs)支持[LLaMA](https://github.com/facebookresearch/llama)和[盘古α](https://openi.org.cn/pangu/)
 | 
					更多LLM模型接入,支持[huggingface部署](https://huggingface.co/spaces/qingxu98/gpt-academic) | 加入Newbing接口(新必应),引入清华[Jittorllms](https://github.com/Jittor/JittorLLMs)支持[LLaMA](https://github.com/facebookresearch/llama)和[盘古α](https://openi.org.cn/pangu/)
 | 
				
			||||||
 | 
					⭐[虚空终端](https://github.com/binary-husky/void-terminal)pip包 | 脱离GUI,在Python中直接调用本项目的函数插件(开发中)
 | 
				
			||||||
更多新功能展示 (图像生成等) …… | 见本文档结尾处 ……
 | 
					更多新功能展示 (图像生成等) …… | 见本文档结尾处 ……
 | 
				
			||||||
 | 
					 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -292,6 +292,10 @@ Tip:不指定文件直接点击 `载入对话历史存档` 可以查看历史h
 | 
				
			|||||||
<img src="https://github.com/binary-husky/gpt_academic/assets/96192199/476f66d9-7716-4537-b5c1-735372c25adb" height="200">
 | 
					<img src="https://github.com/binary-husky/gpt_academic/assets/96192199/476f66d9-7716-4537-b5c1-735372c25adb" height="200">
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					11. 语言、主题切换
 | 
				
			||||||
 | 
					<div align="center">
 | 
				
			||||||
 | 
					<img src="https://github.com/binary-husky/gpt_academic/assets/96192199/b6799499-b6fb-4f0c-9c8e-1b441872f4e8" width="500" >
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### II:版本:
 | 
					### II:版本:
 | 
				
			||||||
 | 
				
			|||||||
@ -3,15 +3,18 @@ def check_proxy(proxies):
 | 
				
			|||||||
    import requests
 | 
					    import requests
 | 
				
			||||||
    proxies_https = proxies['https'] if proxies is not None else '无'
 | 
					    proxies_https = proxies['https'] if proxies is not None else '无'
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
        response = requests.get("https://ipapi.co/json/",
 | 
					        response = requests.get("https://ipapi.co/json/", proxies=proxies, timeout=4)
 | 
				
			||||||
                                proxies=proxies, timeout=4)
 | 
					 | 
				
			||||||
        data = response.json()
 | 
					        data = response.json()
 | 
				
			||||||
        print(f'查询代理的地理位置,返回的结果是{data}')
 | 
					        print(f'查询代理的地理位置,返回的结果是{data}')
 | 
				
			||||||
        if 'country_name' in data:
 | 
					        if 'country_name' in data:
 | 
				
			||||||
            country = data['country_name']
 | 
					            country = data['country_name']
 | 
				
			||||||
            result = f"代理配置 {proxies_https}, 代理所在地:{country}"
 | 
					            result = f"代理配置 {proxies_https}, 代理所在地:{country}"
 | 
				
			||||||
        elif 'error' in data:
 | 
					        elif 'error' in data:
 | 
				
			||||||
            result = f"代理配置 {proxies_https}, 代理所在地:未知,IP查询频率受限"
 | 
					            alternative = _check_with_backup_source(proxies)
 | 
				
			||||||
 | 
					            if alternative is None:
 | 
				
			||||||
 | 
					                result = f"代理配置 {proxies_https}, 代理所在地:未知,IP查询频率受限"
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                result = f"代理配置 {proxies_https}, 代理所在地:{alternative}"
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            result = f"代理配置 {proxies_https}, 代理数据解析失败:{data}"
 | 
					            result = f"代理配置 {proxies_https}, 代理数据解析失败:{data}"
 | 
				
			||||||
        print(result)
 | 
					        print(result)
 | 
				
			||||||
@ -21,6 +24,11 @@ def check_proxy(proxies):
 | 
				
			|||||||
        print(result)
 | 
					        print(result)
 | 
				
			||||||
        return result
 | 
					        return result
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def _check_with_backup_source(proxies):
 | 
				
			||||||
 | 
					    import random, string, requests
 | 
				
			||||||
 | 
					    random_string = ''.join(random.choices(string.ascii_letters + string.digits, k=32))
 | 
				
			||||||
 | 
					    try: return requests.get(f"http://{random_string}.edns.ip-api.com/json", proxies=proxies, timeout=4).json()['dns']['geo']
 | 
				
			||||||
 | 
					    except: return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def backup_and_download(current_version, remote_version):
 | 
					def backup_and_download(current_version, remote_version):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
 | 
				
			|||||||
@ -8,18 +8,18 @@ from toolbox import clear_line_break
 | 
				
			|||||||
def get_core_functions():
 | 
					def get_core_functions():
 | 
				
			||||||
    return {
 | 
					    return {
 | 
				
			||||||
        "英语学术润色": {
 | 
					        "英语学术润色": {
 | 
				
			||||||
            # 前言
 | 
					            # 前缀,会被加在你的输入之前。例如,用来描述你的要求,例如翻译、解释代码、润色等等
 | 
				
			||||||
            "Prefix":   r"Below is a paragraph from an academic paper. Polish the writing to meet the academic style, " +
 | 
					            "Prefix":   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"improve the spelling, grammar, clarity, concision and overall readability. When necessary, rewrite the whole sentence. " +
 | 
				
			||||||
                        r"Furthermore, list all modification and explain the reasons to do so in markdown table." + "\n\n",
 | 
					                        r"Furthermore, list all modification and explain the reasons to do so in markdown table." + "\n\n",
 | 
				
			||||||
            # 后语
 | 
					            # 后缀,会被加在你的输入之后。例如,配合前缀可以把你的输入内容用引号圈起来
 | 
				
			||||||
            "Suffix":   r"",
 | 
					            "Suffix":   r"",
 | 
				
			||||||
            # 按钮颜色 (默认 secondary)
 | 
					            # 按钮颜色 (默认 secondary)
 | 
				
			||||||
            "Color":    r"secondary",
 | 
					            "Color":    r"secondary",
 | 
				
			||||||
            # 按钮是否可见 (默认 True,即可见)
 | 
					            # 按钮是否可见 (默认 True,即可见)
 | 
				
			||||||
            "Visible": True,
 | 
					            "Visible": True,
 | 
				
			||||||
            # 是否在触发时清除历史 (默认 False,即不处理之前的对话历史)
 | 
					            # 是否在触发时清除历史 (默认 False,即不处理之前的对话历史)
 | 
				
			||||||
            "AutoClearHistory": True
 | 
					            "AutoClearHistory": False
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "中文学术润色": {
 | 
					        "中文学术润色": {
 | 
				
			||||||
            "Prefix":   r"作为一名中文学术论文写作改进助理,你的任务是改进所提供文本的拼写、语法、清晰、简洁和整体可读性," +
 | 
					            "Prefix":   r"作为一名中文学术论文写作改进助理,你的任务是改进所提供文本的拼写、语法、清晰、简洁和整体可读性," +
 | 
				
			||||||
@ -83,11 +83,12 @@ def get_core_functions():
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def handle_core_functionality(additional_fn, inputs, history):
 | 
					def handle_core_functionality(additional_fn, inputs, history, chatbot):
 | 
				
			||||||
    import core_functional
 | 
					    import core_functional
 | 
				
			||||||
    importlib.reload(core_functional)    # 热更新prompt
 | 
					    importlib.reload(core_functional)    # 热更新prompt
 | 
				
			||||||
    core_functional = core_functional.get_core_functions()
 | 
					    core_functional = core_functional.get_core_functions()
 | 
				
			||||||
    if "PreProcess" in core_functional[additional_fn]: inputs = core_functional[additional_fn]["PreProcess"](inputs)  # 获取预处理函数(如果有的话)
 | 
					    if "PreProcess" in core_functional[additional_fn]: inputs = core_functional[additional_fn]["PreProcess"](inputs)  # 获取预处理函数(如果有的话)
 | 
				
			||||||
    inputs = core_functional[additional_fn]["Prefix"] + inputs + core_functional[additional_fn]["Suffix"]
 | 
					    inputs = core_functional[additional_fn]["Prefix"] + inputs + core_functional[additional_fn]["Suffix"]
 | 
				
			||||||
    history = [] if core_functional[additional_fn].get("AutoClearHistory", False) else history
 | 
					    if core_functional[additional_fn].get("AutoClearHistory", False):
 | 
				
			||||||
 | 
					        history = []
 | 
				
			||||||
    return inputs, history
 | 
					    return inputs, history
 | 
				
			||||||
 | 
				
			|||||||
@ -55,7 +55,7 @@ def 图片生成(prompt, llm_kwargs, plugin_kwargs, chatbot, history, system_pro
 | 
				
			|||||||
    web_port        当前软件运行的端口号
 | 
					    web_port        当前软件运行的端口号
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    history = []    # 清空历史,以免输入溢出
 | 
					    history = []    # 清空历史,以免输入溢出
 | 
				
			||||||
    chatbot.append(("这是什么功能?", "[Local Message] 生成图像, 请先把模型切换至gpt-xxxx或者api2d-xxxx。如果中文效果不理想, 尝试Prompt。正在处理中 ....."))
 | 
					    chatbot.append(("这是什么功能?", "[Local Message] 生成图像, 请先把模型切换至gpt-*或者api2d-*。如果中文效果不理想, 请尝试英文Prompt。正在处理中 ....."))
 | 
				
			||||||
    yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 # 由于请求gpt需要一段时间,我们先及时地做一次界面更新
 | 
					    yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 # 由于请求gpt需要一段时间,我们先及时地做一次界面更新
 | 
				
			||||||
    if ("advanced_arg" in plugin_kwargs) and (plugin_kwargs["advanced_arg"] == ""): plugin_kwargs.pop("advanced_arg")
 | 
					    if ("advanced_arg" in plugin_kwargs) and (plugin_kwargs["advanced_arg"] == ""): plugin_kwargs.pop("advanced_arg")
 | 
				
			||||||
    resolution = plugin_kwargs.get("advanced_arg", '256x256')
 | 
					    resolution = plugin_kwargs.get("advanced_arg", '256x256')
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,7 @@
 | 
				
			|||||||
from toolbox import update_ui, trimmed_format_exc, gen_time_str
 | 
					import glob, time, os, re
 | 
				
			||||||
from toolbox import CatchException, report_execption, write_results_to_file
 | 
					from toolbox import update_ui, trimmed_format_exc, gen_time_str, disable_auto_promotion
 | 
				
			||||||
 | 
					from toolbox import CatchException, report_execption, write_history_to_file
 | 
				
			||||||
 | 
					from toolbox import promote_file_to_downloadzone, get_log_folder
 | 
				
			||||||
fast_debug = False
 | 
					fast_debug = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PaperFileGroup():
 | 
					class PaperFileGroup():
 | 
				
			||||||
@ -42,13 +44,13 @@ class PaperFileGroup():
 | 
				
			|||||||
    def write_result(self, language):
 | 
					    def write_result(self, language):
 | 
				
			||||||
        manifest = []
 | 
					        manifest = []
 | 
				
			||||||
        for path, res in zip(self.file_paths, self.file_result):
 | 
					        for path, res in zip(self.file_paths, self.file_result):
 | 
				
			||||||
            with open(path + f'.{gen_time_str()}.{language}.md', 'w', encoding='utf8') as f:
 | 
					            dst_file = os.path.join(get_log_folder(), f'{gen_time_str()}.md')
 | 
				
			||||||
                manifest.append(path + f'.{gen_time_str()}.{language}.md')
 | 
					            with open(dst_file, 'w', encoding='utf8') as f:
 | 
				
			||||||
 | 
					                manifest.append(dst_file)
 | 
				
			||||||
                f.write(res)
 | 
					                f.write(res)
 | 
				
			||||||
        return manifest
 | 
					        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
 | 
					 | 
				
			||||||
    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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #  <-------- 读取Markdown文件,删除其中的所有注释 ----------> 
 | 
					    #  <-------- 读取Markdown文件,删除其中的所有注释 ----------> 
 | 
				
			||||||
@ -102,28 +104,38 @@ def 多文件翻译(file_manifest, project_folder, llm_kwargs, plugin_kwargs, ch
 | 
				
			|||||||
        print(trimmed_format_exc())
 | 
					        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 = gen_time_str() + f"-chatgpt.md"
 | 
				
			||||||
    res = write_results_to_file(gpt_response_collection, file_name=create_report_file_name)
 | 
					    res = write_history_to_file(gpt_response_collection, file_basename=create_report_file_name)
 | 
				
			||||||
 | 
					    promote_file_to_downloadzone(res, chatbot=chatbot)
 | 
				
			||||||
    history = gpt_response_collection
 | 
					    history = gpt_response_collection
 | 
				
			||||||
    chatbot.append((f"{fp}完成了吗?", res))
 | 
					    chatbot.append((f"{fp}完成了吗?", res))
 | 
				
			||||||
    yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
 | 
					    yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_files_from_everything(txt):
 | 
					def get_files_from_everything(txt, preference=''):
 | 
				
			||||||
    import glob, os
 | 
					    if txt == "": return False, None, None
 | 
				
			||||||
 | 
					 | 
				
			||||||
    success = True
 | 
					    success = True
 | 
				
			||||||
    if txt.startswith('http'):
 | 
					    if txt.startswith('http'):
 | 
				
			||||||
        # 网络的远程文件
 | 
					 | 
				
			||||||
        txt = txt.replace("https://github.com/", "https://raw.githubusercontent.com/")
 | 
					 | 
				
			||||||
        txt = txt.replace("/blob/", "/")
 | 
					 | 
				
			||||||
        import requests
 | 
					        import requests
 | 
				
			||||||
        from toolbox import get_conf
 | 
					        from toolbox import get_conf
 | 
				
			||||||
        proxies, = get_conf('proxies')
 | 
					        proxies, = get_conf('proxies')
 | 
				
			||||||
 | 
					        # 网络的远程文件
 | 
				
			||||||
 | 
					        if preference == 'Github':
 | 
				
			||||||
 | 
					            print('正在从github下载资源 ...')
 | 
				
			||||||
 | 
					            if not txt.endswith('.md'):
 | 
				
			||||||
 | 
					                # Make a request to the GitHub API to retrieve the repository information
 | 
				
			||||||
 | 
					                url = txt.replace("https://github.com/", "https://api.github.com/repos/") + '/readme'
 | 
				
			||||||
 | 
					                response = requests.get(url, proxies=proxies)
 | 
				
			||||||
 | 
					                txt = response.json()['download_url']
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                txt = txt.replace("https://github.com/", "https://raw.githubusercontent.com/")
 | 
				
			||||||
 | 
					                txt = txt.replace("/blob/", "/")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        r = requests.get(txt, proxies=proxies)
 | 
					        r = requests.get(txt, proxies=proxies)
 | 
				
			||||||
        with open('./gpt_log/temp.md', 'wb+') as f: f.write(r.content)
 | 
					        download_local = f'{get_log_folder(plugin_name="批量Markdown翻译")}/raw-readme-{gen_time_str()}.md'
 | 
				
			||||||
        project_folder = './gpt_log/'
 | 
					        project_folder = f'{get_log_folder(plugin_name="批量Markdown翻译")}'
 | 
				
			||||||
        file_manifest = ['./gpt_log/temp.md']
 | 
					        with open(download_local, 'wb+') as f: f.write(r.content)
 | 
				
			||||||
 | 
					        file_manifest = [download_local]
 | 
				
			||||||
    elif txt.endswith('.md'):
 | 
					    elif txt.endswith('.md'):
 | 
				
			||||||
        # 直接给定文件
 | 
					        # 直接给定文件
 | 
				
			||||||
        file_manifest = [txt]
 | 
					        file_manifest = [txt]
 | 
				
			||||||
@ -145,11 +157,11 @@ def Markdown英译中(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_p
 | 
				
			|||||||
        "函数插件功能?",
 | 
					        "函数插件功能?",
 | 
				
			||||||
        "对整个Markdown项目进行翻译。函数插件贡献者: Binary-Husky"])
 | 
					        "对整个Markdown项目进行翻译。函数插件贡献者: Binary-Husky"])
 | 
				
			||||||
    yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
 | 
					    yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
 | 
				
			||||||
 | 
					    disable_auto_promotion(chatbot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 尝试导入依赖,如果缺少依赖,则给出安装建议
 | 
					    # 尝试导入依赖,如果缺少依赖,则给出安装建议
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
        import tiktoken
 | 
					        import tiktoken
 | 
				
			||||||
        import glob, os
 | 
					 | 
				
			||||||
    except:
 | 
					    except:
 | 
				
			||||||
        report_execption(chatbot, history,
 | 
					        report_execption(chatbot, history,
 | 
				
			||||||
                         a=f"解析项目: {txt}",
 | 
					                         a=f"解析项目: {txt}",
 | 
				
			||||||
@ -158,7 +170,7 @@ def Markdown英译中(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_p
 | 
				
			|||||||
        return
 | 
					        return
 | 
				
			||||||
    history = []    # 清空历史,以免输入溢出
 | 
					    history = []    # 清空历史,以免输入溢出
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    success, file_manifest, project_folder = get_files_from_everything(txt)
 | 
					    success, file_manifest, project_folder = get_files_from_everything(txt, preference="Github")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if not success:
 | 
					    if not success:
 | 
				
			||||||
        # 什么都没有
 | 
					        # 什么都没有
 | 
				
			||||||
@ -185,11 +197,11 @@ def Markdown中译英(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_p
 | 
				
			|||||||
        "函数插件功能?",
 | 
					        "函数插件功能?",
 | 
				
			||||||
        "对整个Markdown项目进行翻译。函数插件贡献者: Binary-Husky"])
 | 
					        "对整个Markdown项目进行翻译。函数插件贡献者: Binary-Husky"])
 | 
				
			||||||
    yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
 | 
					    yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
 | 
				
			||||||
 | 
					    disable_auto_promotion(chatbot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 尝试导入依赖,如果缺少依赖,则给出安装建议
 | 
					    # 尝试导入依赖,如果缺少依赖,则给出安装建议
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
        import tiktoken
 | 
					        import tiktoken
 | 
				
			||||||
        import glob, os
 | 
					 | 
				
			||||||
    except:
 | 
					    except:
 | 
				
			||||||
        report_execption(chatbot, history,
 | 
					        report_execption(chatbot, history,
 | 
				
			||||||
                         a=f"解析项目: {txt}",
 | 
					                         a=f"解析项目: {txt}",
 | 
				
			||||||
@ -218,11 +230,11 @@ def Markdown翻译指定语言(txt, llm_kwargs, plugin_kwargs, chatbot, history,
 | 
				
			|||||||
        "函数插件功能?",
 | 
					        "函数插件功能?",
 | 
				
			||||||
        "对整个Markdown项目进行翻译。函数插件贡献者: Binary-Husky"])
 | 
					        "对整个Markdown项目进行翻译。函数插件贡献者: Binary-Husky"])
 | 
				
			||||||
    yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
 | 
					    yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
 | 
				
			||||||
 | 
					    disable_auto_promotion(chatbot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 尝试导入依赖,如果缺少依赖,则给出安装建议
 | 
					    # 尝试导入依赖,如果缺少依赖,则给出安装建议
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
        import tiktoken
 | 
					        import tiktoken
 | 
				
			||||||
        import glob, os
 | 
					 | 
				
			||||||
    except:
 | 
					    except:
 | 
				
			||||||
        report_execption(chatbot, history,
 | 
					        report_execption(chatbot, history,
 | 
				
			||||||
                         a=f"解析项目: {txt}",
 | 
					                         a=f"解析项目: {txt}",
 | 
				
			||||||
 | 
				
			|||||||
@ -97,7 +97,7 @@ class InterviewAssistant(AliyunASR):
 | 
				
			|||||||
        # 初始化音频采集线程
 | 
					        # 初始化音频采集线程
 | 
				
			||||||
        self.captured_audio = np.array([])
 | 
					        self.captured_audio = np.array([])
 | 
				
			||||||
        self.keep_latest_n_second = 10
 | 
					        self.keep_latest_n_second = 10
 | 
				
			||||||
        self.commit_after_pause_n_second = 1.5
 | 
					        self.commit_after_pause_n_second = 2.0
 | 
				
			||||||
        self.ready_audio_flagment = None
 | 
					        self.ready_audio_flagment = None
 | 
				
			||||||
        self.stop = False
 | 
					        self.stop = False
 | 
				
			||||||
        self.plugin_wd = WatchDog(timeout=5, bark_fn=self.__del__, msg="程序终止")
 | 
					        self.plugin_wd = WatchDog(timeout=5, bark_fn=self.__del__, msg="程序终止")
 | 
				
			||||||
 | 
				
			|||||||
@ -2085,5 +2085,66 @@
 | 
				
			|||||||
    "欢迎使用 MOSS 人工智能助手!输入内容即可进行对话": "Welcome to use MOSS AI assistant! Enter the content to start the conversation.",
 | 
					    "欢迎使用 MOSS 人工智能助手!输入内容即可进行对话": "Welcome to use MOSS AI assistant! Enter the content to start the conversation.",
 | 
				
			||||||
    "记住当前的label": "Remember the current label.",
 | 
					    "记住当前的label": "Remember the current label.",
 | 
				
			||||||
    "不能正常加载ChatGLMFT的参数!": "Cannot load ChatGLMFT parameters normally!",
 | 
					    "不能正常加载ChatGLMFT的参数!": "Cannot load ChatGLMFT parameters normally!",
 | 
				
			||||||
    "建议直接在API_KEY处填写": "It is recommended to fill in directly at API_KEY."
 | 
					    "建议直接在API_KEY处填写": "It is recommended to fill in directly at API_KEY.",
 | 
				
			||||||
 | 
					    "创建request": "Create request",
 | 
				
			||||||
 | 
					    "默认 secondary": "Default secondary",
 | 
				
			||||||
 | 
					    "会被加在你的输入之前": "Will be added before your input",
 | 
				
			||||||
 | 
					    "缺少": "Missing",
 | 
				
			||||||
 | 
					    "前者是API2D的结束条件": "The former is the termination condition of API2D",
 | 
				
			||||||
 | 
					    "无需填写": "No need to fill in",
 | 
				
			||||||
 | 
					    "后缀": "Suffix",
 | 
				
			||||||
 | 
					    "扭转的范围": "Range of twisting",
 | 
				
			||||||
 | 
					    "是否在触发时清除历史": "Whether to clear history when triggered",
 | 
				
			||||||
 | 
					    "⭐多线程方法": "⭐Multi-threaded method",
 | 
				
			||||||
 | 
					    "消耗大量的内存": "Consumes a large amount of memory",
 | 
				
			||||||
 | 
					    "重组": "Reorganize",
 | 
				
			||||||
 | 
					    "高危设置! 常规情况下不要修改! 通过修改此设置": "High-risk setting! Do not modify under normal circumstances! Modify this setting",
 | 
				
			||||||
 | 
					    "检查USE_PROXY": "Check USE_PROXY",
 | 
				
			||||||
 | 
					    "标注节点的行数范围": "Range of line numbers for annotated nodes",
 | 
				
			||||||
 | 
					    "即不处理之前的对话历史": "That is, do not process previous conversation history",
 | 
				
			||||||
 | 
					    "即将编译PDF": "Compiling PDF",
 | 
				
			||||||
 | 
					    "没有设置ANTHROPIC_API_KEY选项": "ANTHROPIC_API_KEY option is not set",
 | 
				
			||||||
 | 
					    "非Openai官方接口返回了错误": "Non-Openai official interface returned an error",
 | 
				
			||||||
 | 
					    "您的 API_KEY 不满足任何一种已知的密钥格式": "Your API_KEY does not meet any known key format",
 | 
				
			||||||
 | 
					    "格式": "Format",
 | 
				
			||||||
 | 
					    "不能正常加载": "Cannot load properly",
 | 
				
			||||||
 | 
					    "🏃♂️🏃♂️🏃♂️ 子进程执行": "🏃♂️🏃♂️🏃♂️ Subprocess execution",
 | 
				
			||||||
 | 
					    "前缀": "Prefix",
 | 
				
			||||||
 | 
					    "创建AcsClient实例": "Create AcsClient instance",
 | 
				
			||||||
 | 
					    "⭐主进程执行": "⭐Main process execution",
 | 
				
			||||||
 | 
					    "增强稳健性": "Enhance robustness",
 | 
				
			||||||
 | 
					    "用来描述你的要求": "Used to describe your requirements",
 | 
				
			||||||
 | 
					    "举例": "For example",
 | 
				
			||||||
 | 
					    "⭐单线程方法": "⭐Single-threaded method",
 | 
				
			||||||
 | 
					    "后者是OPENAI的结束条件": "The latter is the termination condition of OPENAI",
 | 
				
			||||||
 | 
					    "防止proxies单独起作用": "Prevent proxies from working alone",
 | 
				
			||||||
 | 
					    "将两个PDF拼接": "Concatenate two PDFs",
 | 
				
			||||||
 | 
					    "最后一步处理": "The last step processing",
 | 
				
			||||||
 | 
					    "正在从github下载资源": "Downloading resources from github",
 | 
				
			||||||
 | 
					    "失败时": "When failed",
 | 
				
			||||||
 | 
					    "尚未加载": "Not loaded yet",
 | 
				
			||||||
 | 
					    "配合前缀可以把你的输入内容用引号圈起来": "With the prefix, you can enclose your input content in quotation marks",
 | 
				
			||||||
 | 
					    "我好!": "I'm good!",
 | 
				
			||||||
 | 
					    "默认 False": "Default False",
 | 
				
			||||||
 | 
					    "的依赖": "Dependencies of",
 | 
				
			||||||
 | 
					    "并设置参数": "and set parameters",
 | 
				
			||||||
 | 
					    "会被加在你的输入之后": "Will be added after your input",
 | 
				
			||||||
 | 
					    "安装": "Installation",
 | 
				
			||||||
 | 
					    "一个单实例装饰器": "Single instance decorator",
 | 
				
			||||||
 | 
					    "自定义API KEY格式": "Customize API KEY format",
 | 
				
			||||||
 | 
					    "的参数": "Parameters of",
 | 
				
			||||||
 | 
					    "api2d等请求源": "api2d and other request sources",
 | 
				
			||||||
 | 
					    "逆转出错的段落": "Reverse the wrong paragraph",
 | 
				
			||||||
 | 
					    "没有设置ANTHROPIC_API_KEY": "ANTHROPIC_API_KEY is not set",
 | 
				
			||||||
 | 
					    "默认 True": "Default True",
 | 
				
			||||||
 | 
					    "本项目现已支持OpenAI和Azure的api-key": "This project now supports OpenAI and Azure's api-key",
 | 
				
			||||||
 | 
					    "即可见": "Visible immediately",
 | 
				
			||||||
 | 
					    "请问什么是质子": "What is a proton?",
 | 
				
			||||||
 | 
					    "按钮是否可见": "Is the button visible?",
 | 
				
			||||||
 | 
					    "调用": "Call",
 | 
				
			||||||
 | 
					    "如果要使用": "If you want to use",
 | 
				
			||||||
 | 
					    "的参数!": "parameters!",
 | 
				
			||||||
 | 
					    "例如翻译、解释代码、润色等等": "such as translation, code interpretation, polishing, etc.",
 | 
				
			||||||
 | 
					    "响应异常": "Response exception",
 | 
				
			||||||
 | 
					    "响应中": "Responding"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -939,7 +939,6 @@
 | 
				
			|||||||
    "以下は学術論文の基本情報です": "以下は学術論文の基本情報です",
 | 
					    "以下は学術論文の基本情報です": "以下は学術論文の基本情報です",
 | 
				
			||||||
    "出力が不完全になる原因となる": "出力が不完全になる原因となる",
 | 
					    "出力が不完全になる原因となる": "出力が不完全になる原因となる",
 | 
				
			||||||
    "ハイフンを使って": "ハイフンを使って",
 | 
					    "ハイフンを使って": "ハイフンを使って",
 | 
				
			||||||
    "シングルスレッド": "シングルスレッド",
 | 
					 | 
				
			||||||
    "请先把模型切换至gpt-xxxx或者api2d-xxxx": "Please switch the model to gpt-xxxx or api2d-xxxx first.",
 | 
					    "请先把模型切换至gpt-xxxx或者api2d-xxxx": "Please switch the model to gpt-xxxx or api2d-xxxx first.",
 | 
				
			||||||
    "路径或网址": "Path or URL",
 | 
					    "路径或网址": "Path or URL",
 | 
				
			||||||
    "*代表通配符": "* represents a wildcard",
 | 
					    "*代表通配符": "* represents a wildcard",
 | 
				
			||||||
@ -1484,5 +1483,632 @@
 | 
				
			|||||||
    "请提交新问题": "新しい問題を提出してください",
 | 
					    "请提交新问题": "新しい問題を提出してください",
 | 
				
			||||||
    "您正在调用一个": "あなたは呼び出しています",
 | 
					    "您正在调用一个": "あなたは呼び出しています",
 | 
				
			||||||
    "请编辑以下文本": "以下のテキストを編集してください",
 | 
					    "请编辑以下文本": "以下のテキストを編集してください",
 | 
				
			||||||
    "常见协议无非socks5h/http": "一般的なプロトコルはsocks5h/http以外ありません"
 | 
					    "常见协议无非socks5h/http": "一般的なプロトコルはsocks5h/http以外ありません",
 | 
				
			||||||
 | 
					    "Latex英文纠错": "LatexEnglishErrorCorrection",
 | 
				
			||||||
 | 
					    "连接bing搜索回答问题": "ConnectBingSearchAnswerQuestion",
 | 
				
			||||||
 | 
					    "联网的ChatGPT_bing版": "OnlineChatGPT_BingVersion",
 | 
				
			||||||
 | 
					    "总结音视频": "SummarizeAudioVideo",
 | 
				
			||||||
 | 
					    "动画生成": "GenerateAnimation",
 | 
				
			||||||
 | 
					    "数学动画生成manim": "GenerateMathematicalAnimationManim",
 | 
				
			||||||
 | 
					    "Markdown翻译指定语言": "TranslateMarkdownSpecifiedLanguage",
 | 
				
			||||||
 | 
					    "知识库问答": "KnowledgeBaseQuestionAnswer",
 | 
				
			||||||
 | 
					    "Langchain知识库": "LangchainKnowledgeBase",
 | 
				
			||||||
 | 
					    "读取知识库作答": "ReadKnowledgeBaseAnswer",
 | 
				
			||||||
 | 
					    "交互功能模板函数": "InteractiveFunctionTemplateFunction",
 | 
				
			||||||
 | 
					    "交互功能函数模板": "InteractiveFunctionFunctionTemplate",
 | 
				
			||||||
 | 
					    "Latex英文纠错加PDF对比": "LatexEnglishErrorCorrectionWithPDFComparison",
 | 
				
			||||||
 | 
					    "Latex输出PDF结果": "LatexOutputPDFResult",
 | 
				
			||||||
 | 
					    "Latex翻译中文并重新编译PDF": "TranslateChineseAndRecompilePDF",
 | 
				
			||||||
 | 
					    "语音助手": "VoiceAssistant",
 | 
				
			||||||
 | 
					    "微调数据集生成": "FineTuneDatasetGeneration",
 | 
				
			||||||
 | 
					    "chatglm微调工具": "ChatGLMFineTuningTool",
 | 
				
			||||||
 | 
					    "启动微调": "StartFineTuning",
 | 
				
			||||||
 | 
					    "sprint亮靛": "SprintAzureIndigo",
 | 
				
			||||||
 | 
					    "专业词汇声明": "ProfessionalVocabularyDeclaration",
 | 
				
			||||||
 | 
					    "Latex精细分解与转化": "LatexDetailedDecompositionAndConversion",
 | 
				
			||||||
 | 
					    "编译Latex": "CompileLatex",
 | 
				
			||||||
 | 
					    "将代码转为动画": "コードをアニメーションに変換する",
 | 
				
			||||||
 | 
					    "解析arxiv网址失败": "arxivのURLの解析に失敗しました",
 | 
				
			||||||
 | 
					    "其他模型转化效果未知": "他のモデルの変換効果は不明です",
 | 
				
			||||||
 | 
					    "把文件复制过去": "ファイルをコピーする",
 | 
				
			||||||
 | 
					    "!!!如果需要运行量化版本": "!!!量子化バージョンを実行する必要がある場合",
 | 
				
			||||||
 | 
					    "报错信息如下. 如果是与网络相关的问题": "エラーメッセージは次のとおりです。ネットワークに関連する問題の場合",
 | 
				
			||||||
 | 
					    "请检查ALIYUN_TOKEN和ALIYUN_APPKEY是否过期": "ALIYUN_TOKENとALIYUN_APPKEYの有効期限を確認してください",
 | 
				
			||||||
 | 
					    "编译结束": "コンパイル終了",
 | 
				
			||||||
 | 
					    "只读": "読み取り専用",
 | 
				
			||||||
 | 
					    "模型选择是": "モデルの選択は",
 | 
				
			||||||
 | 
					    "正在从github下载资源": "GitHubからリソースをダウンロードしています",
 | 
				
			||||||
 | 
					    "同时分解长句": "同時に長い文を分解する",
 | 
				
			||||||
 | 
					    "寻找主tex文件": "メインのtexファイルを検索する",
 | 
				
			||||||
 | 
					    "例如您可以将以下命令复制到下方": "たとえば、以下のコマンドを下にコピーできます",
 | 
				
			||||||
 | 
					    "使用中文总结音频“": "中国語で音声を要約する",
 | 
				
			||||||
 | 
					    "此处填API密钥": "ここにAPIキーを入力してください",
 | 
				
			||||||
 | 
					    "裁剪输入": "入力をトリミングする",
 | 
				
			||||||
 | 
					    "当前语言模型温度设定": "現在の言語モデルの温度設定",
 | 
				
			||||||
 | 
					    "history 是之前的对话列表": "historyは以前の対話リストです",
 | 
				
			||||||
 | 
					    "对输入的word文档进行摘要生成": "入力されたWord文書の要約を生成する",
 | 
				
			||||||
 | 
					    "输入问题后点击该插件": "質問を入力した後、このプラグインをクリックします",
 | 
				
			||||||
 | 
					    "仅在Windows系统进行了测试": "Windowsシステムでのみテストされています",
 | 
				
			||||||
 | 
					    "reverse 操作必须放在最后": "reverse操作は最後に配置する必要があります",
 | 
				
			||||||
 | 
					    "即将编译PDF": "PDFをコンパイルする予定です",
 | 
				
			||||||
 | 
					    "执行错误": "エラーが発生しました",
 | 
				
			||||||
 | 
					    "段音频完成了吗": "セグメントのオーディオは完了しましたか",
 | 
				
			||||||
 | 
					    "然后重启程序": "それからプログラムを再起動してください",
 | 
				
			||||||
 | 
					    "是所有LLM的通用接口": "これはすべてのLLMの共通インターフェースです",
 | 
				
			||||||
 | 
					    "当前报错的latex代码处于第": "現在のエラーのあるLaTeXコードは第",
 | 
				
			||||||
 | 
					    "🏃♂️🏃♂️🏃♂️ 子进程执行": "🏃♂️🏃♂️🏃♂️ サブプロセスの実行",
 | 
				
			||||||
 | 
					    "用来描述你的要求": "要求を説明するために使用されます",
 | 
				
			||||||
 | 
					    "原始PDF编译是否成功": "元のPDFのコンパイルは成功しましたか",
 | 
				
			||||||
 | 
					    "本地Latex论文精细翻译": "ローカルのLaTeX論文の詳細な翻訳",
 | 
				
			||||||
 | 
					    "设置OpenAI密钥和模型": "OpenAIキーとモデルの設定",
 | 
				
			||||||
 | 
					    "如果使用ChatGLM2微调模型": "ChatGLM2ファインチューニングモデルを使用する場合",
 | 
				
			||||||
 | 
					    "项目Github地址 \\url{https": "プロジェクトのGithubアドレス \\url{https",
 | 
				
			||||||
 | 
					    "将前后断行符脱离": "前後の改行文字を削除します",
 | 
				
			||||||
 | 
					    "该项目的Latex主文件是": "このプロジェクトのLaTeXメインファイルは",
 | 
				
			||||||
 | 
					    "编译已经开始": "コンパイルが開始されました",
 | 
				
			||||||
 | 
					    "*{\\scriptsize\\textbf{警告": "*{\\scriptsize\\textbf{警告",
 | 
				
			||||||
 | 
					    "从一批文件": "一連のファイルから",
 | 
				
			||||||
 | 
					    "等待用户的再次调用": "ユーザーの再呼び出しを待っています",
 | 
				
			||||||
 | 
					    "目前仅支持GPT3.5/GPT4": "現在、GPT3.5/GPT4のみをサポートしています",
 | 
				
			||||||
 | 
					    "如果一句话小于7个字": "1つの文が7文字未満の場合",
 | 
				
			||||||
 | 
					    "目前对机器学习类文献转化效果最好": "現在、機械学習の文献変換効果が最も良いです",
 | 
				
			||||||
 | 
					    "寻找主文件": "メインファイルを検索中",
 | 
				
			||||||
 | 
					    "解除插件状态": "プラグインの状態を解除します",
 | 
				
			||||||
 | 
					    "默认为Chinese": "デフォルトはChineseです",
 | 
				
			||||||
 | 
					    "依赖不足": "不足の依存関係",
 | 
				
			||||||
 | 
					    "编译文献交叉引用": "文献の相互参照をコンパイルする",
 | 
				
			||||||
 | 
					    "对不同latex源文件扣分": "異なるLaTeXソースファイルに罰則を課す",
 | 
				
			||||||
 | 
					    "再列出用户可能提出的三个问题": "ユーザーが提出する可能性のある3つの問題を再リスト化する",
 | 
				
			||||||
 | 
					    "建议排查": "トラブルシューティングの提案",
 | 
				
			||||||
 | 
					    "生成时间戳": "タイムスタンプの生成",
 | 
				
			||||||
 | 
					    "检查config中的AVAIL_LLM_MODELS选项": "configのAVAIL_LLM_MODELSオプションを確認する",
 | 
				
			||||||
 | 
					    "chatglmft 没有 sys_prompt 接口": "chatglmftにはsys_promptインターフェースがありません",
 | 
				
			||||||
 | 
					    "在一个异步线程中采集音频": "非同期スレッドでオーディオを収集する",
 | 
				
			||||||
 | 
					    "初始化插件状态": "プラグインの状態を初期化する",
 | 
				
			||||||
 | 
					    "内含已经翻译的Tex文档": "翻訳済みのTexドキュメントが含まれています",
 | 
				
			||||||
 | 
					    "请注意自我隐私保护哦!": "プライバシー保護に注意してください!",
 | 
				
			||||||
 | 
					    "使用正则表达式查找半行注释": "正規表現を使用して半行コメントを検索する",
 | 
				
			||||||
 | 
					    "不能正常加载ChatGLMFT的参数!": "ChatGLMFTのパラメータを正常にロードできません!",
 | 
				
			||||||
 | 
					    "首先你在中文语境下通读整篇论文": "まず、中国語の文脈で論文全体を読んでください",
 | 
				
			||||||
 | 
					    "如 绿帽子*深蓝色衬衫*黑色运动裤": "例えば、緑の帽子*濃い青のシャツ*黒のスポーツパンツ",
 | 
				
			||||||
 | 
					    "默认为default": "デフォルトはdefaultです",
 | 
				
			||||||
 | 
					    "将": "置き換える",
 | 
				
			||||||
 | 
					    "使用 Unsplash API": "Unsplash APIを使用する",
 | 
				
			||||||
 | 
					    "会被加在你的输入之前": "あなたの入力の前に追加されます",
 | 
				
			||||||
 | 
					    "还需要填写组织": "組織を入力する必要があります",
 | 
				
			||||||
 | 
					    "test_LangchainKnowledgeBase读取": "test_LangchainKnowledgeBaseの読み込み",
 | 
				
			||||||
 | 
					    "目前不支持历史消息查询": "現在、過去のメッセージのクエリはサポートされていません",
 | 
				
			||||||
 | 
					    "临时存储用于调试": "デバッグ用の一時的なストレージ",
 | 
				
			||||||
 | 
					    "提取总结": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "每秒采样数量": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "但通常不会出现在正文": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "通过调用conversations_open方法打开一个频道": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "导致输出不完整": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "获取已打开频道的最新消息并返回消息列表": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "Tex源文件缺失!": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "如果需要使用Slack Claude": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "扭转的范围": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "使用latexdiff生成论文转化前后对比": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "--读取文件": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "调用openai api 使用whisper-1模型": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "避免遗忘导致死锁": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "在多Tex文档中": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "失败时": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "然后转移到指定的另一个路径中": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "使用Newbing": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "的参数": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "后者是OPENAI的结束条件": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "构建知识库": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "吸收匿名公式": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "前缀": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "会直接转到该函数": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "Claude失败": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "P.S. 但愿没人把latex模板放在里面传进来": "P.S. 但愿没人把latex模板放在里面传进来",
 | 
				
			||||||
 | 
					    "临时地启动代理网络": "临时地启动代理网络",
 | 
				
			||||||
 | 
					    "读取文件内容到内存": "読み込んだファイルの内容をメモリに保存する",
 | 
				
			||||||
 | 
					    "总结音频": "音声をまとめる",
 | 
				
			||||||
 | 
					    "没有找到任何可读取文件": "読み込み可能なファイルが見つかりません",
 | 
				
			||||||
 | 
					    "获取Slack消息失败": "Slackメッセージの取得に失敗しました",
 | 
				
			||||||
 | 
					    "用黑色标注转换区": "黒い注釈で変換エリアをマークする",
 | 
				
			||||||
 | 
					    "此插件处于开发阶段": "このプラグインは開発中です",
 | 
				
			||||||
 | 
					    "其他操作系统表现未知": "他のオペレーティングシステムの動作は不明です",
 | 
				
			||||||
 | 
					    "返回找到的第一个": "最初に見つかったものを返す",
 | 
				
			||||||
 | 
					    "发现已经存在翻译好的PDF文档": "翻訳済みのPDFドキュメントが既に存在することがわかりました",
 | 
				
			||||||
 | 
					    "不包含任何可用于": "使用できるものは含まれていません",
 | 
				
			||||||
 | 
					    "发送到openai音频解析终端": "openai音声解析端に送信する",
 | 
				
			||||||
 | 
					    "========================================= 插件主程序2 =====================================================": "========================================= プラグインメインプログラム2 =====================================================",
 | 
				
			||||||
 | 
					    "正在重试": "再試行中",
 | 
				
			||||||
 | 
					    "从而更全面地理解项目的整体功能": "プロジェクトの全体的な機能をより理解するために",
 | 
				
			||||||
 | 
					    "正在等您说完问题": "質問が完了するのをお待ちしています",
 | 
				
			||||||
 | 
					    "使用教程详情见 request_llm/README.md": "使用方法の詳細については、request_llm/README.mdを参照してください",
 | 
				
			||||||
 | 
					    "6.25 加入判定latex模板的代码": "6.25 テンプレートの判定コードを追加",
 | 
				
			||||||
 | 
					    "找不到任何音频或视频文件": "音声またはビデオファイルが見つかりません",
 | 
				
			||||||
 | 
					    "请求GPT模型的": "GPTモデルのリクエスト",
 | 
				
			||||||
 | 
					    "行": "行",
 | 
				
			||||||
 | 
					    "分析上述回答": "上記の回答を分析する",
 | 
				
			||||||
 | 
					    "如果要使用ChatGLMFT": "ChatGLMFTを使用する場合",
 | 
				
			||||||
 | 
					    "上传Latex项目": "Latexプロジェクトをアップロードする",
 | 
				
			||||||
 | 
					    "如参考文献、脚注、图注等": "参考文献、脚注、図のキャプションなど",
 | 
				
			||||||
 | 
					    "未配置": "設定されていません",
 | 
				
			||||||
 | 
					    "请在此处给出自定义翻译命令": "カスタム翻訳コマンドをここに入力してください",
 | 
				
			||||||
 | 
					    "第二部分": "第2部分",
 | 
				
			||||||
 | 
					    "解压失败! 需要安装pip install py7zr来解压7z文件": "解凍に失敗しました!7zファイルを解凍するにはpip install py7zrをインストールする必要があります",
 | 
				
			||||||
 | 
					    "吸收在42行以内的begin-end组合": "42行以内のbegin-endの組み合わせを取り込む",
 | 
				
			||||||
 | 
					    "Latex文件融合完成": "Latexファイルの統合が完了しました",
 | 
				
			||||||
 | 
					    "输出html调试文件": "HTMLデバッグファイルの出力",
 | 
				
			||||||
 | 
					    "论文概况": "論文の概要",
 | 
				
			||||||
 | 
					    "修复括号": "括弧の修復",
 | 
				
			||||||
 | 
					    "赋予插件状态": "プラグインの状態を付与する",
 | 
				
			||||||
 | 
					    "标注节点的行数范围": "ノードの行数範囲を注釈する",
 | 
				
			||||||
 | 
					    "MOSS can understand and communicate fluently in the language chosen by the user such as English and 中文. MOSS can perform any language-based tasks.": "MOSSは、ユーザーが選択した言語(英語や中文など)でスムーズに理解し、コミュニケーションすることができます。MOSSは、言語に基づくさまざまなタスクを実行できます。",
 | 
				
			||||||
 | 
					    "LLM_MODEL是默认选中的模型": "LLM_MODELはデフォルトで選択されたモデルです",
 | 
				
			||||||
 | 
					    "配合前缀可以把你的输入内容用引号圈起来": "接頭辞と組み合わせて、入力内容を引用符で囲むことができます",
 | 
				
			||||||
 | 
					    "获取关键词": "キーワードの取得",
 | 
				
			||||||
 | 
					    "本项目现已支持OpenAI和Azure的api-key": "このプロジェクトは、OpenAIおよびAzureのAPIキーをサポートしています",
 | 
				
			||||||
 | 
					    "欢迎使用 MOSS 人工智能助手!": "MOSS AIアシスタントをご利用いただきありがとうございます!",
 | 
				
			||||||
 | 
					    "在执行完成之后": "実行が完了した後",
 | 
				
			||||||
 | 
					    "正在听您讲话": "お話をお聞きしています",
 | 
				
			||||||
 | 
					    "Claude回复的片段": "Claudeの返信の一部",
 | 
				
			||||||
 | 
					    "返回": "戻る",
 | 
				
			||||||
 | 
					    "期望格式例如": "期待される形式の例",
 | 
				
			||||||
 | 
					    "gpt 多线程请求": "GPTマルチスレッドリクエスト",
 | 
				
			||||||
 | 
					    "当前工作路径为": "現在の作業パスは",
 | 
				
			||||||
 | 
					    "该PDF由GPT-Academic开源项目调用大语言模型+Latex翻译插件一键生成": "このPDFはGPT-Academicオープンソースプロジェクトによって大規模言語モデル+Latex翻訳プラグインを使用して一括生成されました",
 | 
				
			||||||
 | 
					    "解决插件锁定时的界面显示问题": "プラグインのロック時のインターフェース表示の問題を解決する",
 | 
				
			||||||
 | 
					    "默认 secondary": "デフォルトのセカンダリ",
 | 
				
			||||||
 | 
					    "会把列表拆解": "リストを分解します",
 | 
				
			||||||
 | 
					    "暂时不支持历史消息": "一時的に歴史メッセージはサポートされていません",
 | 
				
			||||||
 | 
					    "或者重启之后再度尝试": "または再起動後に再試行してください",
 | 
				
			||||||
 | 
					    "吸收其他杂项": "他の雑項を吸収する",
 | 
				
			||||||
 | 
					    "双手离开鼠标键盘吧": "両手をマウスとキーボードから離してください",
 | 
				
			||||||
 | 
					    "建议更换代理协议": "プロキシプロトコルの変更をお勧めします",
 | 
				
			||||||
 | 
					    "音频助手": "オーディオアシスタント",
 | 
				
			||||||
 | 
					    "请耐心等待": "お待ちください",
 | 
				
			||||||
 | 
					    "翻译结果": "翻訳結果",
 | 
				
			||||||
 | 
					    "请在此处追加更细致的矫错指令": "ここにより詳細なエラー修正命令を追加してください",
 | 
				
			||||||
 | 
					    "编译原始PDF": "元のPDFをコンパイルする",
 | 
				
			||||||
 | 
					    "-构建知识库": "-ナレッジベースの構築",
 | 
				
			||||||
 | 
					    "删除中间文件夹": "中間フォルダを削除する",
 | 
				
			||||||
 | 
					    "这段代码定义了一个名为TempProxy的空上下文管理器": "このコードはTempProxyという名前の空のコンテキストマネージャを定義しています",
 | 
				
			||||||
 | 
					    "参数说明": "パラメータの説明",
 | 
				
			||||||
 | 
					    "正在预热文本向量化模组": "テキストベクトル化モジュールのプリヒート中",
 | 
				
			||||||
 | 
					    "函数插件": "関数プラグイン",
 | 
				
			||||||
 | 
					    "右下角更换模型菜单中可切换openai": "右下のモデルメニューでopenaiを切り替えることができます",
 | 
				
			||||||
 | 
					    "先上传数据集": "まずデータセットをアップロードしてください",
 | 
				
			||||||
 | 
					    "LatexEnglishErrorCorrection+高亮修正位置": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "正在构建知识库": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "用红色标注处保留区": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "安装Claude的依赖": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "已禁用": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "是否在提交时自动清空输入框": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "GPT 学术优化": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "需要特殊依赖": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "test_联网回答问题": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "除非您是论文的原作者": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "即可见": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "解析为简体中文": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "解析整个Python项目": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "========================================= 插件主程序1 =====================================================": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "当前参数": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "处理个别特殊插件的锁定状态": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "已知某些代码的局部作用是": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "请务必用 pip install -r requirements.txt 指令安装依赖": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "安装": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "请登录OpenAI查看详情 https": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "必须包含documentclass": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "极少数情况下": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "并将返回的频道ID保存在属性CHANNEL_ID中": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "您的 API_KEY 不满足任何一种已知的密钥格式": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "-预热文本向量化模组": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "什么都没有": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "等待GPT响应": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "请尝试把以下指令复制到高级参数区": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "模型参数": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "先删除": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "响应中": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "开始接收chatglmft的回复": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "手动指定语言": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "获取线程锁": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "当前大语言模型": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "段音频的第": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "正在编译对比PDF": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "根据需要切换prompt": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "取评分最高者返回": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "如果您是论文原作者": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "段音频的主要内容": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "为啥chatgpt会把cite里面的逗号换成中文逗号呀": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "为每一位访问的用户赋予一个独一无二的uuid编码": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "将每次对话记录写入Markdown格式的文件中": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "ChatGLMFT尚未加载": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "切割音频文件": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "例如 f37f30e0f9934c34a992f6f64f7eba4f": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "work_folder = Latex预处理": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "出问题了": "問題が発生しました",
 | 
				
			||||||
 | 
					    "等待Claude响应中": "Claudeの応答を待っています",
 | 
				
			||||||
 | 
					    "增强稳健性": "信頼性を向上させる",
 | 
				
			||||||
 | 
					    "赋予插件锁定 锁定插件回调路径": "プラグインにコールバックパスをロックする",
 | 
				
			||||||
 | 
					    "将多文件tex工程融合为一个巨型tex": "複数のファイルのtexプロジェクトを1つの巨大なtexに統合する",
 | 
				
			||||||
 | 
					    "参考文献转Bib": "参考文献をBibに変換する",
 | 
				
			||||||
 | 
					    "由于提问含不合规内容被Azure过滤": "質問が規則に違反しているため、Azureによってフィルタリングされました",
 | 
				
			||||||
 | 
					    "读取优先级": "優先度を読み取る",
 | 
				
			||||||
 | 
					    "格式如org-xxxxxxxxxxxxxxxxxxxxxxxx": "形式はorg-xxxxxxxxxxxxxxxxxxxxxxxxのようです",
 | 
				
			||||||
 | 
					    "辅助gpt生成代码": "GPTのコード生成を補助する",
 | 
				
			||||||
 | 
					    "读取音频文件": "音声ファイルを読み取る",
 | 
				
			||||||
 | 
					    "输入arxivID": "arxivIDを入力する",
 | 
				
			||||||
 | 
					    "转化PDF编译是否成功": "PDFのコンパイルが成功したかどうかを変換する",
 | 
				
			||||||
 | 
					    "Call ChatGLMFT fail 不能正常加载ChatGLMFT的参数": "ChatGLMFTのパラメータを正常にロードできませんでした",
 | 
				
			||||||
 | 
					    "创建AcsClient实例": "AcsClientのインスタンスを作成する",
 | 
				
			||||||
 | 
					    "将 chatglm 直接对齐到 chatglm2": "chatglmをchatglm2に直接整列させる",
 | 
				
			||||||
 | 
					    "要求": "要求",
 | 
				
			||||||
 | 
					    "子任务失败时的重试次数": "サブタスクが失敗した場合のリトライ回数",
 | 
				
			||||||
 | 
					    "请求子进程": "サブプロセスを要求する",
 | 
				
			||||||
 | 
					    "按钮是否可见": "ボタンが表示可能かどうか",
 | 
				
			||||||
 | 
					    "将 \\include 命令转换为 \\input 命令": "\\includeコマンドを\\inputコマンドに変換する",
 | 
				
			||||||
 | 
					    "用户填3": "ユーザーが3を入力する",
 | 
				
			||||||
 | 
					    "后面是英文逗号": "後ろに英語のカンマがあります",
 | 
				
			||||||
 | 
					    "吸收iffalse注释": "iffalseコメントを吸収する",
 | 
				
			||||||
 | 
					    "请稍候": "お待ちください",
 | 
				
			||||||
 | 
					    "摘要生成后的文档路径": "要約生成後のドキュメントのパス",
 | 
				
			||||||
 | 
					    "主程序即将开始": "メインプログラムがすぐに開始されます",
 | 
				
			||||||
 | 
					    "处理历史信息": "履歴情報の処理",
 | 
				
			||||||
 | 
					    "根据给定的切割时长将音频文件切割成多个片段": "指定された分割時間に基づいてオーディオファイルを複数のセグメントに分割する",
 | 
				
			||||||
 | 
					    "解决部分词汇翻译不准确的问题": "一部の用語の翻訳の不正確さを解決する",
 | 
				
			||||||
 | 
					    "即将退出": "すぐに終了します",
 | 
				
			||||||
 | 
					    "用于给一小段代码上代理": "一部のコードにプロキシを適用するために使用されます",
 | 
				
			||||||
 | 
					    "提取文件扩展名": "ファイルの拡張子を抽出する",
 | 
				
			||||||
 | 
					    "目前支持的格式": "現在サポートされている形式",
 | 
				
			||||||
 | 
					    "第一次调用": "最初の呼び出し",
 | 
				
			||||||
 | 
					    "异步方法": "非同期メソッド",
 | 
				
			||||||
 | 
					    "P.S. 顺便把Latex的注释去除": "P.S. LaTeXのコメントを削除する",
 | 
				
			||||||
 | 
					    "构建完成": "ビルドが完了しました",
 | 
				
			||||||
 | 
					    "缺少": "不足しています",
 | 
				
			||||||
 | 
					    "建议暂时不要使用": "一時的に使用しないことをお勧めします",
 | 
				
			||||||
 | 
					    "对比PDF编译是否成功": "PDFのコンパイルが成功したかどうかを比較する",
 | 
				
			||||||
 | 
					    "填入azure openai api的密钥": "Azure OpenAI APIのキーを入力してください",
 | 
				
			||||||
 | 
					    "功能尚不稳定": "機能はまだ安定していません",
 | 
				
			||||||
 | 
					    "则跳过GPT请求环节": "GPTリクエストのスキップ",
 | 
				
			||||||
 | 
					    "即不处理之前的对话历史": "以前の対話履歴を処理しない",
 | 
				
			||||||
 | 
					    "非Openai官方接口返回了错误": "非公式のOpenAI APIがエラーを返しました",
 | 
				
			||||||
 | 
					    "其他类型文献转化效果未知": "他のタイプの文献の変換効果は不明です",
 | 
				
			||||||
 | 
					    "给出一些判定模板文档的词作为扣分项": "テンプレートドキュメントの単語を減点項目として提供する",
 | 
				
			||||||
 | 
					    "找 API_ORG 设置项": "API_ORGの設定項目を検索します",
 | 
				
			||||||
 | 
					    "调用函数": "関数を呼び出します",
 | 
				
			||||||
 | 
					    "需要手动安装新增的依赖库": "新しい依存ライブラリを手動でインストールする必要があります",
 | 
				
			||||||
 | 
					    "或者使用此插件继续上传更多文件": "または、このプラグインを使用してさらにファイルをアップロードします",
 | 
				
			||||||
 | 
					    "640个字节为一组": "640バイトごとにグループ化します",
 | 
				
			||||||
 | 
					    "逆转出错的段落": "エラーのあるパラグラフを逆転させます",
 | 
				
			||||||
 | 
					    "对话助手函数插件": "対話アシスタント関数プラグイン",
 | 
				
			||||||
 | 
					    "前者是API2D的结束条件": "前者はAPI2Dの終了条件です",
 | 
				
			||||||
 | 
					    "终端": "ターミナル",
 | 
				
			||||||
 | 
					    "仅调试": "デバッグのみ",
 | 
				
			||||||
 | 
					    "论文": "論文",
 | 
				
			||||||
 | 
					    "想象一个穿着者": "着用者を想像してください",
 | 
				
			||||||
 | 
					    "音频内容是": "音声の内容は",
 | 
				
			||||||
 | 
					    "如果需要使用AZURE 详情请见额外文档 docs\\use_azure.md": "AZUREを使用する必要がある場合は、詳細については別のドキュメント docs\\use_azure.md を参照してください",
 | 
				
			||||||
 | 
					    "请先将.doc文档转换为.docx文档": ".docドキュメントを.docxドキュメントに変換してください",
 | 
				
			||||||
 | 
					    "请查看终端的输出或耐心等待": "ターミナルの出力を確認するか、お待ちください",
 | 
				
			||||||
 | 
					    "初始化音频采集线程": "オーディオキャプチャスレッドを初期化します",
 | 
				
			||||||
 | 
					    "用该压缩包+ConversationHistoryArchive进行反馈": "この圧縮ファイル+ConversationHistoryArchiveを使用してフィードバックします",
 | 
				
			||||||
 | 
					    "阿里云实时语音识别 配置难度较高 仅建议高手用户使用 参考 https": "阿里云リアルタイム音声認識の設定は難しいため、上級ユーザーのみに推奨されます 参考 https",
 | 
				
			||||||
 | 
					    "多线程翻译开始": "マルチスレッド翻訳が開始されました",
 | 
				
			||||||
 | 
					    "只有GenerateImage和生成图像相关": "GenerateImageと関連する画像の生成のみ",
 | 
				
			||||||
 | 
					    "代理数据解析失败": "プロキシデータの解析に失敗しました",
 | 
				
			||||||
 | 
					    "建议使用英文单词": "英単語の使用をお勧めします",
 | 
				
			||||||
 | 
					    "功能描述": "機能の説明",
 | 
				
			||||||
 | 
					    "读 docs\\use_azure.md": "ドキュメントを読む",
 | 
				
			||||||
 | 
					    "将消耗较长时间下载中文向量化模型": "中国語のベクトル化モデルをダウンロードするのに時間がかかります",
 | 
				
			||||||
 | 
					    "表示频道ID": "チャネルIDを表示する",
 | 
				
			||||||
 | 
					    "未知指令": "不明なコマンド",
 | 
				
			||||||
 | 
					    "包含documentclass关键字": "documentclassキーワードを含む",
 | 
				
			||||||
 | 
					    "中读取数据构建知识库": "データを読み取って知識ベースを構築する",
 | 
				
			||||||
 | 
					    "远程云服务器部署": "リモートクラウドサーバーにデプロイする",
 | 
				
			||||||
 | 
					    "输入部分太自由": "入力が自由すぎる",
 | 
				
			||||||
 | 
					    "读取pdf文件": "PDFファイルを読み込む",
 | 
				
			||||||
 | 
					    "将两个PDF拼接": "2つのPDFを結合する",
 | 
				
			||||||
 | 
					    "默认值为1000": "デフォルト値は1000です",
 | 
				
			||||||
 | 
					    "写出文件": "ファイルに書き出す",
 | 
				
			||||||
 | 
					    "生成的视频文件路径": "生成されたビデオファイルのパス",
 | 
				
			||||||
 | 
					    "Arixv论文精细翻译": "Arixv論文の詳細な翻訳",
 | 
				
			||||||
 | 
					    "用latex编译为PDF对修正处做高亮": "LaTeXでコンパイルしてPDFに修正をハイライトする",
 | 
				
			||||||
 | 
					    "点击“停止”键可终止程序": "「停止」ボタンをクリックしてプログラムを終了できます",
 | 
				
			||||||
 | 
					    "否则将导致每个人的Claude问询历史互相渗透": "さもないと、各人のClaudeの問い合わせ履歴が相互に侵入します",
 | 
				
			||||||
 | 
					    "音频文件名": "オーディオファイル名",
 | 
				
			||||||
 | 
					    "的参数!": "のパラメータ!",
 | 
				
			||||||
 | 
					    "对话历史": "対話履歴",
 | 
				
			||||||
 | 
					    "当下一次用户提交时": "次のユーザーの提出時に",
 | 
				
			||||||
 | 
					    "数学GenerateAnimation": "数学GenerateAnimation",
 | 
				
			||||||
 | 
					    "如果要使用Claude": "Claudeを使用する場合は",
 | 
				
			||||||
 | 
					    "请向下翻": "下にスクロールしてください",
 | 
				
			||||||
 | 
					    "报告已经添加到右侧“文件上传区”": "報告は右側の「ファイルアップロードエリア」に追加されました",
 | 
				
			||||||
 | 
					    "删除整行的空注释": "空のコメントを含む行を削除する",
 | 
				
			||||||
 | 
					    "建议直接在API_KEY处填写": "API_KEYの場所に直接入力することをお勧めします",
 | 
				
			||||||
 | 
					    "暗色模式 / 亮色模式": "ダークモード/ライトモード",
 | 
				
			||||||
 | 
					    "做一些外观色彩上的调整": "外観の色調整を行う",
 | 
				
			||||||
 | 
					    "请切换至“KnowledgeBaseQuestionAnswer”插件进行知识库访问": "ナレッジベースのアクセスには「KnowledgeBaseQuestionAnswer」プラグインに切り替えてください",
 | 
				
			||||||
 | 
					    "它*必须*被包含在AVAIL_LLM_MODELS列表中": "それはAVAIL_LLM_MODELSリストに含まれている必要があります",
 | 
				
			||||||
 | 
					    "并设置参数": "パラメータを設定する",
 | 
				
			||||||
 | 
					    "待处理的word文档路径": "処理待ちのWord文書のパス",
 | 
				
			||||||
 | 
					    "调用缓存": "キャッシュを呼び出す",
 | 
				
			||||||
 | 
					    "片段": "フラグメント",
 | 
				
			||||||
 | 
					    "否则结束循环": "それ以外の場合はループを終了する",
 | 
				
			||||||
 | 
					    "请对下面的音频片段做概述": "以下のオーディオフラグメントについて概要を作成してください",
 | 
				
			||||||
 | 
					    "高危设置! 常规情况下不要修改! 通过修改此设置": "高リスクの設定!通常は変更しないでください!この設定を変更することで",
 | 
				
			||||||
 | 
					    "插件锁定中": "プラグインがロックされています",
 | 
				
			||||||
 | 
					    "开始": "開始",
 | 
				
			||||||
 | 
					    "但请查收结果": "結果を確認してください",
 | 
				
			||||||
 | 
					    "刷新Gradio前端界面": "Gradioフロントエンドインターフェースをリフレッシュする",
 | 
				
			||||||
 | 
					    "批量SummarizeAudioVideo": "オーディオビデオを一括要約する",
 | 
				
			||||||
 | 
					    "一个单实例装饰器": "単一のインスタンスデコレータ",
 | 
				
			||||||
 | 
					    "Claude响应异常": "Claudeの応答が異常です",
 | 
				
			||||||
 | 
					    "但内部用stream的方法避免中途网线被掐": "ただし、途中でネットワーク接続が切断されることを避けるために、内部ではストリームを使用しています",
 | 
				
			||||||
 | 
					    "检查USE_PROXY": "USE_PROXYを確認する",
 | 
				
			||||||
 | 
					    "永远给定None": "常にNoneを指定する",
 | 
				
			||||||
 | 
					    "报告如何远程获取": "報告のリモート取得方法",
 | 
				
			||||||
 | 
					    "您可以到Github Issue区": "GithubのIssueエリアにアクセスできます",
 | 
				
			||||||
 | 
					    "如果只询问1个大语言模型": "1つの大規模言語モデルにのみ質問する場合",
 | 
				
			||||||
 | 
					    "为了防止大语言模型的意外谬误产生扩散影响": "大規模言語モデルの誤った結果が広がるのを防ぐために",
 | 
				
			||||||
 | 
					    "编译BibTex": "BibTexのコンパイル",
 | 
				
			||||||
 | 
					    "⭐多线程方法": "マルチスレッドの方法",
 | 
				
			||||||
 | 
					    "推荐http": "httpをおすすめします",
 | 
				
			||||||
 | 
					    "如果要使用": "使用する場合",
 | 
				
			||||||
 | 
					    "的单词": "の単語",
 | 
				
			||||||
 | 
					    "如果本地使用不建议加这个": "ローカルで使用する場合はお勧めしません",
 | 
				
			||||||
 | 
					    "避免线程阻塞": "スレッドのブロックを回避する",
 | 
				
			||||||
 | 
					    "吸收title与作者以上的部分": "タイトルと著者以上の部分を吸収する",
 | 
				
			||||||
 | 
					    "作者": "著者",
 | 
				
			||||||
 | 
					    "5刀": "5ドル",
 | 
				
			||||||
 | 
					    "ChatGLMFT响应异常": "ChatGLMFTの応答異常",
 | 
				
			||||||
 | 
					    "才能继续下面的步骤": "次の手順に進むために",
 | 
				
			||||||
 | 
					    "对这个人外貌、身处的环境、内心世界、过去经历进行描写": "この人の外見、環境、内面世界、過去の経験について描写する",
 | 
				
			||||||
 | 
					    "找不到微调模型检查点": "ファインチューニングモデルのチェックポイントが見つかりません",
 | 
				
			||||||
 | 
					    "请仔细鉴别并以原文为准": "注意深く確認し、元のテキストを参照してください",
 | 
				
			||||||
 | 
					    "计算文件总时长和切割点": "ファイルの総時間とカットポイントを計算する",
 | 
				
			||||||
 | 
					    "我将为您查找相关壁纸": "関連する壁紙を検索します",
 | 
				
			||||||
 | 
					    "此插件Windows支持最佳": "このプラグインはWindowsに最適です",
 | 
				
			||||||
 | 
					    "请输入关键词": "キーワードを入力してください",
 | 
				
			||||||
 | 
					    "以下所有配置也都支持利用环境变量覆写": "以下のすべての設定は環境変数を使用して上書きすることもサポートしています",
 | 
				
			||||||
 | 
					    "尝试第": "第#",
 | 
				
			||||||
 | 
					    "开始生成动画": "アニメーションの生成を開始します",
 | 
				
			||||||
 | 
					    "免费": "無料",
 | 
				
			||||||
 | 
					    "我好!": "私は元気です!",
 | 
				
			||||||
 | 
					    "str类型": "strタイプ",
 | 
				
			||||||
 | 
					    "生成数学动画": "数学アニメーションの生成",
 | 
				
			||||||
 | 
					    "GPT结果已输出": "GPTの結果が出力されました",
 | 
				
			||||||
 | 
					    "PDF文件所在的路径": "PDFファイルのパス",
 | 
				
			||||||
 | 
					    "源码自译解": "ソースコードの自動翻訳解析",
 | 
				
			||||||
 | 
					    "格式如org-123456789abcdefghijklmno的": "org-123456789abcdefghijklmnoの形式",
 | 
				
			||||||
 | 
					    "请对这部分内容进行语法矫正": "この部分の内容に文法修正を行ってください",
 | 
				
			||||||
 | 
					    "调用whisper模型音频转文字": "whisperモデルを使用して音声をテキストに変換する",
 | 
				
			||||||
 | 
					    "编译转化后的PDF": "変換されたPDFをコンパイルする",
 | 
				
			||||||
 | 
					    "将音频解析为简体中文": "音声を簡体字中国語に解析する",
 | 
				
			||||||
 | 
					    "删除或修改歧义文件": "曖昧なファイルを削除または修正する",
 | 
				
			||||||
 | 
					    "ChatGLMFT消耗大量的内存": "ChatGLMFTは大量のメモリを消費します",
 | 
				
			||||||
 | 
					    "图像生成所用到的提示文本": "画像生成に使用されるヒントテキスト",
 | 
				
			||||||
 | 
					    "如果已经存在": "既に存在する場合",
 | 
				
			||||||
 | 
					    "以下是一篇学术论文的基础信息": "以下は学術論文の基本情報です",
 | 
				
			||||||
 | 
					    "解压失败! 需要安装pip install rarfile来解压rar文件": "解凍に失敗しました!rarファイルを解凍するにはpip install rarfileをインストールする必要があります",
 | 
				
			||||||
 | 
					    "一般是文本过长": "通常、テキストが長すぎます",
 | 
				
			||||||
 | 
					    "单线程": "シングルスレッド",
 | 
				
			||||||
 | 
					    "Linux下必须使用Docker安装": "LinuxではDockerを使用してインストールする必要があります",
 | 
				
			||||||
 | 
					    "请先上传文件素材": "まずファイル素材をアップロードしてください",
 | 
				
			||||||
 | 
					    "如果分析错误": "もし解析エラーがある場合",
 | 
				
			||||||
 | 
					    "快捷的调试函数": "便利なデバッグ関数",
 | 
				
			||||||
 | 
					    "欢迎使用 MOSS 人工智能助手!输入内容即可进行对话": "MOSS AIアシスタントをご利用いただきありがとうございます!入力内容を入力すると、対話ができます",
 | 
				
			||||||
 | 
					    "json等": "jsonなど",
 | 
				
			||||||
 | 
					    "--读取参数": "--パラメータの読み込み",
 | 
				
			||||||
 | 
					    "⭐单线程方法": "⭐シングルスレッドメソッド",
 | 
				
			||||||
 | 
					    "请用一句话概括这些文件的整体功能": "これらのファイルの全体的な機能を一文で要約してください",
 | 
				
			||||||
 | 
					    "用于灵活调整复杂功能的各种参数": "複雑な機能を柔軟に調整するためのさまざまなパラメータ",
 | 
				
			||||||
 | 
					    "默认 False": "デフォルトはFalseです",
 | 
				
			||||||
 | 
					    "生成中文PDF": "中国語のPDFを生成する",
 | 
				
			||||||
 | 
					    "正在处理": "処理中",
 | 
				
			||||||
 | 
					    "需要被切割的音频文件名": "分割する必要のある音声ファイル名",
 | 
				
			||||||
 | 
					    "根据文本使用GPT模型生成相应的图像": "テキストに基づいてGPTモデルを使用して対応する画像を生成する",
 | 
				
			||||||
 | 
					    "可选": "オプション",
 | 
				
			||||||
 | 
					    "Aliyun音频服务异常": "Aliyunオーディオサービスの異常",
 | 
				
			||||||
 | 
					    "尝试下载": "ダウンロードを試みる",
 | 
				
			||||||
 | 
					    "需Latex": "LaTeXが必要です",
 | 
				
			||||||
 | 
					    "拆分过长的Markdown文件": "長すぎるMarkdownファイルを分割する",
 | 
				
			||||||
 | 
					    "当前支持的格式包括": "現在サポートされている形式には",
 | 
				
			||||||
 | 
					    "=================================== 工具函数 ===============================================": "=================================== ユーティリティ関数 ===============================================",
 | 
				
			||||||
 | 
					    "所有音频都总结完成了吗": "すべてのオーディオが要約されましたか",
 | 
				
			||||||
 | 
					    "没有设置ANTHROPIC_API_KEY": "ANTHROPIC_API_KEYが設定されていません",
 | 
				
			||||||
 | 
					    "详见项目主README.md": "詳細はプロジェクトのメインREADME.mdを参照してください",
 | 
				
			||||||
 | 
					    "使用": "使用する",
 | 
				
			||||||
 | 
					    "P.S. 其他可用的模型还包括": "P.S. 其他可用的模型还包括",
 | 
				
			||||||
 | 
					    "保证括号正确": "保证括号正确",
 | 
				
			||||||
 | 
					    "或代理节点": "或代理节点",
 | 
				
			||||||
 | 
					    "整理结果为压缩包": "整理结果为压缩包",
 | 
				
			||||||
 | 
					    "实时音频采集": "实时音频采集",
 | 
				
			||||||
 | 
					    "获取回复": "获取回复",
 | 
				
			||||||
 | 
					    "插件可读取“输入区”文本/路径作为参数": "插件可读取“输入区”文本/路径作为参数",
 | 
				
			||||||
 | 
					    "请讲话": "请讲话",
 | 
				
			||||||
 | 
					    "将文件复制一份到下载区": "将文件复制一份到下载区",
 | 
				
			||||||
 | 
					    "from crazy_functions.虚空终端 import 终端": "from crazy_functions.虚空终端 import 终端",
 | 
				
			||||||
 | 
					    "这个paper有个input命令文件名大小写错误!": "这个paper有个input命令文件名大小写错误!",
 | 
				
			||||||
 | 
					    "解除插件锁定": "解除插件锁定",
 | 
				
			||||||
 | 
					    "不能加载Claude组件": "不能加载Claude组件",
 | 
				
			||||||
 | 
					    "如果有必要": "如果有必要",
 | 
				
			||||||
 | 
					    "禁止移除或修改此警告": "禁止移除或修改此警告",
 | 
				
			||||||
 | 
					    "然后进行问答": "然后进行问答",
 | 
				
			||||||
 | 
					    "响应异常": "响应异常",
 | 
				
			||||||
 | 
					    "使用英文": "使用英文",
 | 
				
			||||||
 | 
					    "add gpt task 创建子线程请求gpt": "add gpt task 创建子线程请求gpt",
 | 
				
			||||||
 | 
					    "实际得到格式": "实际得到格式",
 | 
				
			||||||
 | 
					    "请继续分析其他源代码": "请继续分析其他源代码",
 | 
				
			||||||
 | 
					    "”的主要内容": "”的主要内容",
 | 
				
			||||||
 | 
					    "防止proxies单独起作用": "防止proxies单独起作用",
 | 
				
			||||||
 | 
					    "临时地激活代理网络": "临时地激活代理网络",
 | 
				
			||||||
 | 
					    "屏蔽空行和太短的句子": "屏蔽空行和太短的句子",
 | 
				
			||||||
 | 
					    "把某个路径下所有文件压缩": "把某个路径下所有文件压缩",
 | 
				
			||||||
 | 
					    "您需要首先调用构建知识库": "您需要首先调用构建知识库",
 | 
				
			||||||
 | 
					    "翻译-": "翻译-",
 | 
				
			||||||
 | 
					    "Newbing 请求失败": "Newbing 请求失败",
 | 
				
			||||||
 | 
					    "次编译": "次编译",
 | 
				
			||||||
 | 
					    "后缀": "后缀",
 | 
				
			||||||
 | 
					    "文本碎片重组为完整的tex片段": "文本碎片重组为完整的tex片段",
 | 
				
			||||||
 | 
					    "待注入的知识库名称id": "待注入的知识库名称id",
 | 
				
			||||||
 | 
					    "消耗时间的函数": "消耗时间的函数",
 | 
				
			||||||
 | 
					    "You are associated with a deactivated account. OpenAI以账户失效为由": "You are associated with a deactivated account. OpenAI以账户失效为由",
 | 
				
			||||||
 | 
					    "成功啦": "成功啦",
 | 
				
			||||||
 | 
					    "音频文件的路径": "音频文件的路径",
 | 
				
			||||||
 | 
					    "英文Latex项目全文纠错": "英文Latex项目全文纠错",
 | 
				
			||||||
 | 
					    "将子线程的gpt结果写入chatbot": "将子线程的gpt结果写入chatbot",
 | 
				
			||||||
 | 
					    "开始最终总结": "开始最终总结",
 | 
				
			||||||
 | 
					    "调用": "调用",
 | 
				
			||||||
 | 
					    "正在锁定插件": "正在锁定插件",
 | 
				
			||||||
 | 
					    "记住当前的label": "记住当前的label",
 | 
				
			||||||
 | 
					    "根据自然语言执行插件命令": "根据自然语言执行插件命令",
 | 
				
			||||||
 | 
					    "response中会携带traceback报错信息": "response中会携带traceback报错信息",
 | 
				
			||||||
 | 
					    "避免多用户干扰": "避免多用户干扰",
 | 
				
			||||||
 | 
					    "顺利完成": "顺利完成",
 | 
				
			||||||
 | 
					    "详情见https": "详情见https",
 | 
				
			||||||
 | 
					    "清空label": "ラベルをクリアする",
 | 
				
			||||||
 | 
					    "这需要一段时间计算": "これには時間がかかります",
 | 
				
			||||||
 | 
					    "找不到": "見つかりません",
 | 
				
			||||||
 | 
					    "消耗大量的内存": "大量のメモリを消費する",
 | 
				
			||||||
 | 
					    "安装方法https": "インストール方法https",
 | 
				
			||||||
 | 
					    "为发送请求做准备": "リクエストの準備をする",
 | 
				
			||||||
 | 
					    "第1次尝试": "1回目の試み",
 | 
				
			||||||
 | 
					    "检查结果": "結果をチェックする",
 | 
				
			||||||
 | 
					    "精细切分latex文件": "LaTeXファイルを細かく分割する",
 | 
				
			||||||
 | 
					    "api2d等请求源": "api2dなどのリクエストソース",
 | 
				
			||||||
 | 
					    "填入你亲手写的部署名": "あなたが手書きしたデプロイ名を入力してください",
 | 
				
			||||||
 | 
					    "给出指令": "指示を与える",
 | 
				
			||||||
 | 
					    "请问什么是质子": "プロトンとは何ですか",
 | 
				
			||||||
 | 
					    "请直接去该路径下取回翻译结果": "直接そのパスに移動して翻訳結果を取得してください",
 | 
				
			||||||
 | 
					    "等待Claude回复的片段": "Claudeの返信を待っているフラグメント",
 | 
				
			||||||
 | 
					    "Latex没有安装": "LaTeXがインストールされていません",
 | 
				
			||||||
 | 
					    "文档越长耗时越长": "ドキュメントが長いほど時間がかかります",
 | 
				
			||||||
 | 
					    "没有阿里云语音识别APPKEY和TOKEN": "阿里雲の音声認識のAPPKEYとTOKENがありません",
 | 
				
			||||||
 | 
					    "分析结果": "結果を分析する",
 | 
				
			||||||
 | 
					    "请立即终止程序": "プログラムを即座に終了してください",
 | 
				
			||||||
 | 
					    "正在尝试自动安装": "自動インストールを試みています",
 | 
				
			||||||
 | 
					    "请直接提交即可": "直接提出してください",
 | 
				
			||||||
 | 
					    "将指定目录下的PDF文件从英文翻译成中文": "指定されたディレクトリ内のPDFファイルを英語から中国語に翻訳する",
 | 
				
			||||||
 | 
					    "请查收结果": "結果を確認してください",
 | 
				
			||||||
 | 
					    "上下布局": "上下布局",
 | 
				
			||||||
 | 
					    "此处可以输入解析提示": "此处可以输入解析提示",
 | 
				
			||||||
 | 
					    "前面是中文逗号": "前面是中文逗号",
 | 
				
			||||||
 | 
					    "的依赖": "的依赖",
 | 
				
			||||||
 | 
					    "材料如下": "材料如下",
 | 
				
			||||||
 | 
					    "欢迎加REAME中的QQ联系开发者": "欢迎加REAME中的QQ联系开发者",
 | 
				
			||||||
 | 
					    "开始下载": "開始ダウンロード",
 | 
				
			||||||
 | 
					    "100字以内": "100文字以内",
 | 
				
			||||||
 | 
					    "创建request": "リクエストの作成",
 | 
				
			||||||
 | 
					    "创建存储切割音频的文件夹": "切り取られた音声を保存するフォルダの作成",
 | 
				
			||||||
 | 
					    "⭐主进程执行": "⭐メインプロセスの実行",
 | 
				
			||||||
 | 
					    "音频解析结果": "音声解析結果",
 | 
				
			||||||
 | 
					    "Your account is not active. OpenAI以账户失效为由": "アカウントがアクティブではありません。OpenAIはアカウントの無効化を理由にしています",
 | 
				
			||||||
 | 
					    "虽然PDF生成失败了": "PDFの生成に失敗しました",
 | 
				
			||||||
 | 
					    "如果这里报错": "ここでエラーが発生した場合",
 | 
				
			||||||
 | 
					    "前面是中文冒号": "前面は中国語のコロンです",
 | 
				
			||||||
 | 
					    "SummarizeAudioVideo内容": "SummarizeAudioVideoの内容",
 | 
				
			||||||
 | 
					    "openai的官方KEY需要伴随组织编码": "openaiの公式KEYは組織コードと一緒に必要です",
 | 
				
			||||||
 | 
					    "是本次输入": "これは今回の入力です",
 | 
				
			||||||
 | 
					    "色彩主体": "色彩の主体",
 | 
				
			||||||
 | 
					    "Markdown翻译": "Markdownの翻訳",
 | 
				
			||||||
 | 
					    "会被加在你的输入之后": "あなたの入力の後に追加されます",
 | 
				
			||||||
 | 
					    "失败啦": "失敗しました",
 | 
				
			||||||
 | 
					    "每个切割音频片段的时长": "各切り取り音声の長さ",
 | 
				
			||||||
 | 
					    "拆分过长的latex片段": "原始文本",
 | 
				
			||||||
 | 
					    "待提取的知识库名称id": "原始文本",
 | 
				
			||||||
 | 
					    "在这里放一些网上搜集的demo": "原始文本",
 | 
				
			||||||
 | 
					    "环境变量配置格式见docker-compose.yml": "原始文本",
 | 
				
			||||||
 | 
					    "Claude组件初始化成功": "原始文本",
 | 
				
			||||||
 | 
					    "尚未加载": "原始文本",
 | 
				
			||||||
 | 
					    "等待Claude响应": "原始文本",
 | 
				
			||||||
 | 
					    "重组": "原始文本",
 | 
				
			||||||
 | 
					    "将文件添加到chatbot cookie中": "原始文本",
 | 
				
			||||||
 | 
					    "回答完问题后": "原始文本",
 | 
				
			||||||
 | 
					    "将根据报错信息修正tex源文件并重试": "原始文本",
 | 
				
			||||||
 | 
					    "是否在触发时清除历史": "原始文本",
 | 
				
			||||||
 | 
					    "尝试执行Latex指令失败": "原始文本",
 | 
				
			||||||
 | 
					    "默认 True": "原始文本",
 | 
				
			||||||
 | 
					    "文本碎片重组为完整的tex文件": "原始文本",
 | 
				
			||||||
 | 
					    "注意事项": "原始文本",
 | 
				
			||||||
 | 
					    "您接下来不能再使用其他插件了": "原始文本",
 | 
				
			||||||
 | 
					    "属性": "原始文本",
 | 
				
			||||||
 | 
					    "正在编译PDF文档": "原始文本",
 | 
				
			||||||
 | 
					    "提取视频中的音频": "原始文本",
 | 
				
			||||||
 | 
					    "正在同时咨询ChatGPT和ChatGLM……": "原始文本",
 | 
				
			||||||
 | 
					    "Chuanhu-Small-and-Beautiful主题": "原始文本",
 | 
				
			||||||
 | 
					    "版权归原文作者所有": "原始文本",
 | 
				
			||||||
 | 
					    "如果程序停顿5分钟以上": "原始文本",
 | 
				
			||||||
 | 
					    "请输入要翻译成哪种语言": "日本語",
 | 
				
			||||||
 | 
					    "以秒为单位": "秒単位で",
 | 
				
			||||||
 | 
					    "请以以下方式load模型!!!": "以下の方法でモデルをロードしてください!!!",
 | 
				
			||||||
 | 
					    "使用时": "使用時",
 | 
				
			||||||
 | 
					    "对这个人外貌、身处的环境、内心世界、人设进行描写": "この人の外見、環境、内面世界、キャラクターを描写する",
 | 
				
			||||||
 | 
					    "例如翻译、解释代码、润色等等": "例えば翻訳、コードの説明、修正など",
 | 
				
			||||||
 | 
					    "多线程Demo": "マルチスレッドデモ",
 | 
				
			||||||
 | 
					    "不能正常加载": "正常にロードできません",
 | 
				
			||||||
 | 
					    "还原部分原文": "一部の元のテキストを復元する",
 | 
				
			||||||
 | 
					    "可以将自身的状态存储到cookie中": "自身の状態をcookieに保存することができます",
 | 
				
			||||||
 | 
					    "释放线程锁": "スレッドロックを解放する",
 | 
				
			||||||
 | 
					    "当前知识库内的有效文件": "現在のナレッジベース内の有効なファイル",
 | 
				
			||||||
 | 
					    "也是可读的": "読み取り可能です",
 | 
				
			||||||
 | 
					    "等待ChatGLMFT响应中": "ChatGLMFTの応答を待っています",
 | 
				
			||||||
 | 
					    "输入 stop 以终止对话": "stopを入力して対話を終了します",
 | 
				
			||||||
 | 
					    "对整个Latex项目进行纠错": "全体のLatexプロジェクトを修正する",
 | 
				
			||||||
 | 
					    "报错信息": "エラーメッセージ",
 | 
				
			||||||
 | 
					    "下载pdf文件未成功": "PDFファイルのダウンロードに失敗しました",
 | 
				
			||||||
 | 
					    "正在加载Claude组件": "Claudeコンポーネントを読み込んでいます",
 | 
				
			||||||
 | 
					    "格式": "フォーマット",
 | 
				
			||||||
 | 
					    "Claude响应缓慢": "Claudeの応答が遅い",
 | 
				
			||||||
 | 
					    "该选项即将被弃用": "このオプションはまもなく廃止されます",
 | 
				
			||||||
 | 
					    "正常状态": "正常な状態",
 | 
				
			||||||
 | 
					    "中文Bing版": "中国語Bing版",
 | 
				
			||||||
 | 
					    "代理网络配置": "プロキシネットワークの設定",
 | 
				
			||||||
 | 
					    "Openai 限制免费用户每分钟20次请求": "Openaiは無料ユーザーに対して1分間に20回のリクエスト制限を設けています",
 | 
				
			||||||
 | 
					    "gpt写的": "gptで書かれた",
 | 
				
			||||||
 | 
					    "向已打开的频道发送一条文本消息": "既に開いているチャンネルにテキストメッセージを送信する",
 | 
				
			||||||
 | 
					    "缺少ChatGLMFT的依赖": "ChatGLMFTの依存関係が不足しています",
 | 
				
			||||||
 | 
					    "注意目前不能多人同时调用Claude接口": "現在、複数の人が同時にClaudeインターフェースを呼び出すことはできません",
 | 
				
			||||||
 | 
					    "或者不在环境变量PATH中": "または環境変数PATHに存在しません",
 | 
				
			||||||
 | 
					    "提问吧! 但注意": "質問してください!ただし注意してください",
 | 
				
			||||||
 | 
					    "因此选择GenerateImage函数": "したがって、GenerateImage関数を選択します",
 | 
				
			||||||
 | 
					    "无法找到一个主Tex文件": "メインのTexファイルが見つかりません",
 | 
				
			||||||
 | 
					    "转化PDF编译已经成功": "PDF変換コンパイルが成功しました",
 | 
				
			||||||
 | 
					    "因为在同一个频道里存在多人使用时历史消息渗透问题": "同じチャンネルで複数の人が使用する場合、過去のメッセージが漏洩する問題があります",
 | 
				
			||||||
 | 
					    "SlackClient类用于与Slack API进行交互": "SlackClientクラスはSlack APIとのインタラクションに使用されます",
 | 
				
			||||||
 | 
					    "如果存在调试缓存文件": "デバッグキャッシュファイルが存在する場合",
 | 
				
			||||||
 | 
					    "举例": "例を挙げる",
 | 
				
			||||||
 | 
					    "无需填写": "記入する必要はありません",
 | 
				
			||||||
 | 
					    "配置教程&视频教程": "設定チュートリアル&ビデオチュートリアル",
 | 
				
			||||||
 | 
					    "最后一步处理": "最後のステップの処理",
 | 
				
			||||||
 | 
					    "定位主Latex文件": "メインのLatexファイルを特定する",
 | 
				
			||||||
 | 
					    "暂不提交": "一時的に提出しない",
 | 
				
			||||||
 | 
					    "由于最为关键的转化PDF编译失败": "最も重要なPDF変換コンパイルが失敗したため",
 | 
				
			||||||
 | 
					    "用第二人称": "第二人称を使用する",
 | 
				
			||||||
 | 
					    "例如 RoPlZrM88DnAFkZK": "例えば RoPlZrM88DnAFkZK",
 | 
				
			||||||
 | 
					    "没有设置ANTHROPIC_API_KEY选项": "ANTHROPIC_API_KEYオプションが設定されていません",
 | 
				
			||||||
 | 
					    "找不到任何.tex文件": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "请您不要删除或修改这行警告": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "只有第二步成功": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "调用Claude时": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "输入 clear 以清空对话历史": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "= 2 通过一些Latex模板中常见": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "没给定指令": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "还原原文": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "自定义API KEY格式": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "防止丢失最后一条消息": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "方法": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "压缩包": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "对各个llm模型进行单元测试": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "导入依赖失败": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "详情信息见requirements.txt": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "翻译内容可靠性无保障": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "刷新页面即可以退出KnowledgeBaseQuestionAnswer模式": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "上传本地文件/压缩包供函数插件调用": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "循环监听已打开频道的消息": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "一个包含所有切割音频片段文件路径的列表": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "检测到arxiv文档连接": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "P.S. 顺便把CTEX塞进去以支持中文": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "后面是英文冒号": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "上传文件自动修正路径": "テキストの翻訳",
 | 
				
			||||||
 | 
					    "实现消息发送、接收等功能": "メッセージの送受信などの機能を実現する",
 | 
				
			||||||
 | 
					    "改变输入参数的顺序与结构": "入力パラメータの順序と構造を変更する",
 | 
				
			||||||
 | 
					    "正在精细切分latex文件": "LaTeXファイルを細かく分割しています",
 | 
				
			||||||
 | 
					    "读取文件": "ファイルを読み込んでいます"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -2213,5 +2213,66 @@
 | 
				
			|||||||
    "“喂狗”": "“喂狗”",
 | 
					    "“喂狗”": "“喂狗”",
 | 
				
			||||||
    "第4步": "第4步",
 | 
					    "第4步": "第4步",
 | 
				
			||||||
    "退出": "退出",
 | 
					    "退出": "退出",
 | 
				
			||||||
    "使用 Unsplash API": "使用 Unsplash API"
 | 
					    "使用 Unsplash API": "使用 Unsplash API",
 | 
				
			||||||
 | 
					    "非Openai官方接口返回了错误": "非Openai官方接口返回了错误",
 | 
				
			||||||
 | 
					    "用来描述你的要求": "用來描述你的要求",
 | 
				
			||||||
 | 
					    "自定义API KEY格式": "自定義API KEY格式",
 | 
				
			||||||
 | 
					    "前缀": "前綴",
 | 
				
			||||||
 | 
					    "会被加在你的输入之前": "會被加在你的輸入之前",
 | 
				
			||||||
 | 
					    "api2d等请求源": "api2d等請求源",
 | 
				
			||||||
 | 
					    "高危设置! 常规情况下不要修改! 通过修改此设置": "高危設置!常規情況下不要修改!通過修改此設置",
 | 
				
			||||||
 | 
					    "即将编译PDF": "即將編譯PDF",
 | 
				
			||||||
 | 
					    "默认 secondary": "默認 secondary",
 | 
				
			||||||
 | 
					    "正在从github下载资源": "正在從github下載資源",
 | 
				
			||||||
 | 
					    "响应异常": "響應異常",
 | 
				
			||||||
 | 
					    "我好!": "我好!",
 | 
				
			||||||
 | 
					    "无需填写": "無需填寫",
 | 
				
			||||||
 | 
					    "缺少": "缺少",
 | 
				
			||||||
 | 
					    "请问什么是质子": "請問什麼是質子",
 | 
				
			||||||
 | 
					    "如果要使用": "如果要使用",
 | 
				
			||||||
 | 
					    "重组": "重組",
 | 
				
			||||||
 | 
					    "一个单实例装饰器": "一個單實例裝飾器",
 | 
				
			||||||
 | 
					    "的参数!": "的參數!",
 | 
				
			||||||
 | 
					    "🏃♂️🏃♂️🏃♂️ 子进程执行": "🏃♂️🏃♂️🏃♂️ 子進程執行",
 | 
				
			||||||
 | 
					    "失败时": "失敗時",
 | 
				
			||||||
 | 
					    "没有设置ANTHROPIC_API_KEY选项": "沒有設置ANTHROPIC_API_KEY選項",
 | 
				
			||||||
 | 
					    "并设置参数": "並設置參數",
 | 
				
			||||||
 | 
					    "格式": "格式",
 | 
				
			||||||
 | 
					    "按钮是否可见": "按鈕是否可見",
 | 
				
			||||||
 | 
					    "即可见": "即可見",
 | 
				
			||||||
 | 
					    "创建request": "創建request",
 | 
				
			||||||
 | 
					    "的依赖": "的依賴",
 | 
				
			||||||
 | 
					    "⭐主进程执行": "⭐主進程執行",
 | 
				
			||||||
 | 
					    "最后一步处理": "最後一步處理",
 | 
				
			||||||
 | 
					    "没有设置ANTHROPIC_API_KEY": "沒有設置ANTHROPIC_API_KEY",
 | 
				
			||||||
 | 
					    "的参数": "的參數",
 | 
				
			||||||
 | 
					    "逆转出错的段落": "逆轉出錯的段落",
 | 
				
			||||||
 | 
					    "本项目现已支持OpenAI和Azure的api-key": "本項目現已支持OpenAI和Azure的api-key",
 | 
				
			||||||
 | 
					    "前者是API2D的结束条件": "前者是API2D的結束條件",
 | 
				
			||||||
 | 
					    "增强稳健性": "增強穩健性",
 | 
				
			||||||
 | 
					    "消耗大量的内存": "消耗大量的內存",
 | 
				
			||||||
 | 
					    "您的 API_KEY 不满足任何一种已知的密钥格式": "您的API_KEY不滿足任何一種已知的密鑰格式",
 | 
				
			||||||
 | 
					    "⭐单线程方法": "⭐單線程方法",
 | 
				
			||||||
 | 
					    "是否在触发时清除历史": "是否在觸發時清除歷史",
 | 
				
			||||||
 | 
					    "⭐多线程方法": "多線程方法",
 | 
				
			||||||
 | 
					    "不能正常加载": "無法正常加載",
 | 
				
			||||||
 | 
					    "举例": "舉例",
 | 
				
			||||||
 | 
					    "即不处理之前的对话历史": "即不處理之前的對話歷史",
 | 
				
			||||||
 | 
					    "尚未加载": "尚未加載",
 | 
				
			||||||
 | 
					    "防止proxies单独起作用": "防止proxies單獨起作用",
 | 
				
			||||||
 | 
					    "默认 False": "默認 False",
 | 
				
			||||||
 | 
					    "检查USE_PROXY": "檢查USE_PROXY",
 | 
				
			||||||
 | 
					    "响应中": "響應中",
 | 
				
			||||||
 | 
					    "扭转的范围": "扭轉的範圍",
 | 
				
			||||||
 | 
					    "后缀": "後綴",
 | 
				
			||||||
 | 
					    "调用": "調用",
 | 
				
			||||||
 | 
					    "创建AcsClient实例": "創建AcsClient實例",
 | 
				
			||||||
 | 
					    "安装": "安裝",
 | 
				
			||||||
 | 
					    "会被加在你的输入之后": "會被加在你的輸入之後",
 | 
				
			||||||
 | 
					    "配合前缀可以把你的输入内容用引号圈起来": "配合前綴可以把你的輸入內容用引號圈起來",
 | 
				
			||||||
 | 
					    "例如翻译、解释代码、润色等等": "例如翻譯、解釋代碼、潤色等等",
 | 
				
			||||||
 | 
					    "后者是OPENAI的结束条件": "後者是OPENAI的結束條件",
 | 
				
			||||||
 | 
					    "标注节点的行数范围": "標註節點的行數範圍",
 | 
				
			||||||
 | 
					    "默认 True": "默認 True",
 | 
				
			||||||
 | 
					    "将两个PDF拼接": "將兩個PDF拼接"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -3,16 +3,18 @@
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    Usage:
 | 
					    Usage:
 | 
				
			||||||
        1. modify LANG
 | 
					        1. modify config.py, set your LLM_MODEL and API_KEY(s) to provide access to OPENAI (or any other LLM model provider)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        2. modify LANG (below ↓)
 | 
				
			||||||
            LANG = "English"
 | 
					            LANG = "English"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        2. modify TransPrompt
 | 
					        3. modify TransPrompt (below ↓)
 | 
				
			||||||
            TransPrompt = f"Replace each json value `#` with translated results in English, e.g., \"原始文本\":\"TranslatedText\". Keep Json format. Do not answer #."
 | 
					            TransPrompt = f"Replace each json value `#` with translated results in English, e.g., \"原始文本\":\"TranslatedText\". Keep Json format. Do not answer #."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        3. Run `python multi_language.py`. 
 | 
					        4. Run `python multi_language.py`. 
 | 
				
			||||||
            Note: You need to run it multiple times to increase translation coverage because GPT makes mistakes sometimes.
 | 
					            Note: You need to run it multiple times to increase translation coverage because GPT makes mistakes sometimes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        4. Find the translated program in `multi-language\English\*`
 | 
					        5. Find the translated program in `multi-language\English\*`
 | 
				
			||||||
   
 | 
					   
 | 
				
			||||||
    P.S.
 | 
					    P.S.
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
				
			|||||||
@ -145,7 +145,7 @@ def predict(inputs, llm_kwargs, plugin_kwargs, chatbot, history=[], system_promp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if additional_fn is not None:
 | 
					    if additional_fn is not None:
 | 
				
			||||||
        from core_functional import handle_core_functionality
 | 
					        from core_functional import handle_core_functionality
 | 
				
			||||||
        inputs, history = handle_core_functionality(additional_fn, inputs, history)
 | 
					        inputs, history = handle_core_functionality(additional_fn, inputs, history, chatbot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 处理历史信息
 | 
					    # 处理历史信息
 | 
				
			||||||
    history_feedin = []
 | 
					    history_feedin = []
 | 
				
			||||||
 | 
				
			|||||||
@ -186,7 +186,7 @@ def predict(inputs, llm_kwargs, plugin_kwargs, chatbot, history=[], system_promp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if additional_fn is not None:
 | 
					    if additional_fn is not None:
 | 
				
			||||||
        from core_functional import handle_core_functionality
 | 
					        from core_functional import handle_core_functionality
 | 
				
			||||||
        inputs, history = handle_core_functionality(additional_fn, inputs, history)
 | 
					        inputs, history = handle_core_functionality(additional_fn, inputs, history, chatbot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 处理历史信息
 | 
					    # 处理历史信息
 | 
				
			||||||
    history_feedin = []
 | 
					    history_feedin = []
 | 
				
			||||||
 | 
				
			|||||||
@ -130,7 +130,7 @@ def predict(inputs, llm_kwargs, plugin_kwargs, chatbot, history=[], system_promp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if additional_fn is not None:
 | 
					    if additional_fn is not None:
 | 
				
			||||||
        from core_functional import handle_core_functionality
 | 
					        from core_functional import handle_core_functionality
 | 
				
			||||||
        inputs, history = handle_core_functionality(additional_fn, inputs, history)
 | 
					        inputs, history = handle_core_functionality(additional_fn, inputs, history, chatbot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    raw_input = inputs
 | 
					    raw_input = inputs
 | 
				
			||||||
    logging.info(f'[raw_input] {raw_input}')
 | 
					    logging.info(f'[raw_input] {raw_input}')
 | 
				
			||||||
 | 
				
			|||||||
@ -117,7 +117,7 @@ def predict(inputs, llm_kwargs, plugin_kwargs, chatbot, history=[], system_promp
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    if additional_fn is not None:
 | 
					    if additional_fn is not None:
 | 
				
			||||||
        from core_functional import handle_core_functionality
 | 
					        from core_functional import handle_core_functionality
 | 
				
			||||||
        inputs, history = handle_core_functionality(additional_fn, inputs, history)
 | 
					        inputs, history = handle_core_functionality(additional_fn, inputs, history, chatbot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    raw_input = inputs
 | 
					    raw_input = inputs
 | 
				
			||||||
    logging.info(f'[raw_input] {raw_input}')
 | 
					    logging.info(f'[raw_input] {raw_input}')
 | 
				
			||||||
 | 
				
			|||||||
@ -291,7 +291,7 @@ def predict(inputs, llm_kwargs, plugin_kwargs, chatbot, history=[], system_promp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if additional_fn is not None:
 | 
					    if additional_fn is not None:
 | 
				
			||||||
        from core_functional import handle_core_functionality
 | 
					        from core_functional import handle_core_functionality
 | 
				
			||||||
        inputs, history = handle_core_functionality(additional_fn, inputs, history)
 | 
					        inputs, history = handle_core_functionality(additional_fn, inputs, history, chatbot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 处理历史信息
 | 
					    # 处理历史信息
 | 
				
			||||||
    history_feedin = []
 | 
					    history_feedin = []
 | 
				
			||||||
 | 
				
			|||||||
@ -155,7 +155,7 @@ def predict(inputs, llm_kwargs, plugin_kwargs, chatbot, history=[], system_promp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if additional_fn is not None:
 | 
					    if additional_fn is not None:
 | 
				
			||||||
        from core_functional import handle_core_functionality
 | 
					        from core_functional import handle_core_functionality
 | 
				
			||||||
        inputs, history = handle_core_functionality(additional_fn, inputs, history)
 | 
					        inputs, history = handle_core_functionality(additional_fn, inputs, history, chatbot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 处理历史信息
 | 
					    # 处理历史信息
 | 
				
			||||||
    history_feedin = []
 | 
					    history_feedin = []
 | 
				
			||||||
 | 
				
			|||||||
@ -155,7 +155,7 @@ def predict(inputs, llm_kwargs, plugin_kwargs, chatbot, history=[], system_promp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if additional_fn is not None:
 | 
					    if additional_fn is not None:
 | 
				
			||||||
        from core_functional import handle_core_functionality
 | 
					        from core_functional import handle_core_functionality
 | 
				
			||||||
        inputs, history = handle_core_functionality(additional_fn, inputs, history)
 | 
					        inputs, history = handle_core_functionality(additional_fn, inputs, history, chatbot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 处理历史信息
 | 
					    # 处理历史信息
 | 
				
			||||||
    history_feedin = []
 | 
					    history_feedin = []
 | 
				
			||||||
 | 
				
			|||||||
@ -155,7 +155,7 @@ def predict(inputs, llm_kwargs, plugin_kwargs, chatbot, history=[], system_promp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if additional_fn is not None:
 | 
					    if additional_fn is not None:
 | 
				
			||||||
        from core_functional import handle_core_functionality
 | 
					        from core_functional import handle_core_functionality
 | 
				
			||||||
        inputs, history = handle_core_functionality(additional_fn, inputs, history)
 | 
					        inputs, history = handle_core_functionality(additional_fn, inputs, history, chatbot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 处理历史信息
 | 
					    # 处理历史信息
 | 
				
			||||||
    history_feedin = []
 | 
					    history_feedin = []
 | 
				
			||||||
 | 
				
			|||||||
@ -225,7 +225,7 @@ def predict(inputs, llm_kwargs, plugin_kwargs, chatbot, history=[], system_promp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if additional_fn is not None:
 | 
					    if additional_fn is not None:
 | 
				
			||||||
        from core_functional import handle_core_functionality
 | 
					        from core_functional import handle_core_functionality
 | 
				
			||||||
        inputs, history = handle_core_functionality(additional_fn, inputs, history)
 | 
					        inputs, history = handle_core_functionality(additional_fn, inputs, history, chatbot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 处理历史信息
 | 
					    # 处理历史信息
 | 
				
			||||||
    history_feedin = []
 | 
					    history_feedin = []
 | 
				
			||||||
 | 
				
			|||||||
@ -225,7 +225,7 @@ def predict(inputs, llm_kwargs, plugin_kwargs, chatbot, history=[], system_promp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if additional_fn is not None:
 | 
					    if additional_fn is not None:
 | 
				
			||||||
        from core_functional import handle_core_functionality
 | 
					        from core_functional import handle_core_functionality
 | 
				
			||||||
        inputs, history = handle_core_functionality(additional_fn, inputs, history)
 | 
					        inputs, history = handle_core_functionality(additional_fn, inputs, history, chatbot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    history_feedin = []
 | 
					    history_feedin = []
 | 
				
			||||||
    for i in range(len(history)//2):
 | 
					    for i in range(len(history)//2):
 | 
				
			||||||
 | 
				
			|||||||
@ -249,7 +249,7 @@ def predict(inputs, llm_kwargs, plugin_kwargs, chatbot, history=[], system_promp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if additional_fn is not None:
 | 
					    if additional_fn is not None:
 | 
				
			||||||
        from core_functional import handle_core_functionality
 | 
					        from core_functional import handle_core_functionality
 | 
				
			||||||
        inputs, history = handle_core_functionality(additional_fn, inputs, history)
 | 
					        inputs, history = handle_core_functionality(additional_fn, inputs, history, chatbot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    history_feedin = []
 | 
					    history_feedin = []
 | 
				
			||||||
    for i in range(len(history)//2):
 | 
					    for i in range(len(history)//2):
 | 
				
			||||||
 | 
				
			|||||||
@ -97,7 +97,7 @@ def predict(inputs, llm_kwargs, plugin_kwargs, chatbot, history=[], system_promp
 | 
				
			|||||||
    """
 | 
					    """
 | 
				
			||||||
    if additional_fn is not None:
 | 
					    if additional_fn is not None:
 | 
				
			||||||
        from core_functional import handle_core_functionality
 | 
					        from core_functional import handle_core_functionality
 | 
				
			||||||
        inputs, history = handle_core_functionality(additional_fn, inputs, history)
 | 
					        inputs, history = handle_core_functionality(additional_fn, inputs, history, chatbot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    raw_input = "What I would like to say is the following: " + inputs
 | 
					    raw_input = "What I would like to say is the following: " + inputs
 | 
				
			||||||
    history.extend([inputs, ""])
 | 
					    history.extend([inputs, ""])
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										164
									
								
								toolbox.py
									
									
									
									
									
								
							
							
						
						
									
										164
									
								
								toolbox.py
									
									
									
									
									
								
							@ -117,20 +117,20 @@ def CatchException(f):
 | 
				
			|||||||
    """
 | 
					    """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @wraps(f)
 | 
					    @wraps(f)
 | 
				
			||||||
    def decorated(txt, top_p, temperature, chatbot, history, systemPromptTxt, WEB_PORT=-1):
 | 
					    def decorated(main_input, llm_kwargs, plugin_kwargs, chatbot_with_cookie, history, *args, **kwargs):
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            yield from f(txt, top_p, temperature, chatbot, history, systemPromptTxt, WEB_PORT)
 | 
					            yield from f(main_input, llm_kwargs, plugin_kwargs, chatbot_with_cookie, history, *args, **kwargs)
 | 
				
			||||||
        except Exception as e:
 | 
					        except Exception as e:
 | 
				
			||||||
            from check_proxy import check_proxy
 | 
					            from check_proxy import check_proxy
 | 
				
			||||||
            from toolbox import get_conf
 | 
					            from toolbox import get_conf
 | 
				
			||||||
            proxies, = get_conf('proxies')
 | 
					            proxies, = get_conf('proxies')
 | 
				
			||||||
            tb_str = '```\n' + trimmed_format_exc() + '```'
 | 
					            tb_str = '```\n' + trimmed_format_exc() + '```'
 | 
				
			||||||
            if len(chatbot) == 0:
 | 
					            if len(chatbot_with_cookie) == 0:
 | 
				
			||||||
                chatbot.clear()
 | 
					                chatbot_with_cookie.clear()
 | 
				
			||||||
                chatbot.append(["插件调度异常", "异常原因"])
 | 
					                chatbot_with_cookie.append(["插件调度异常", "异常原因"])
 | 
				
			||||||
            chatbot[-1] = (chatbot[-1][0],
 | 
					            chatbot_with_cookie[-1] = (chatbot_with_cookie[-1][0],
 | 
				
			||||||
                           f"[Local Message] 实验性函数调用出错: \n\n{tb_str} \n\n当前代理可用性: \n\n{check_proxy(proxies)}")
 | 
					                           f"[Local Message] 实验性函数调用出错: \n\n{tb_str} \n\n当前代理可用性: \n\n{check_proxy(proxies)}")
 | 
				
			||||||
            yield from update_ui(chatbot=chatbot, history=history, msg=f'异常 {e}') # 刷新界面
 | 
					            yield from update_ui(chatbot=chatbot_with_cookie, history=history, msg=f'异常 {e}') # 刷新界面
 | 
				
			||||||
    return decorated
 | 
					    return decorated
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -196,11 +196,10 @@ def write_results_to_file(history, file_name=None):
 | 
				
			|||||||
    import time
 | 
					    import time
 | 
				
			||||||
    if file_name is None:
 | 
					    if file_name is None:
 | 
				
			||||||
        # file_name = time.strftime("chatGPT分析报告%Y-%m-%d-%H-%M-%S", time.localtime()) + '.md'
 | 
					        # file_name = time.strftime("chatGPT分析报告%Y-%m-%d-%H-%M-%S", time.localtime()) + '.md'
 | 
				
			||||||
        file_name = 'chatGPT分析报告' + \
 | 
					        file_name = 'GPT-Report-' + gen_time_str() + '.md'
 | 
				
			||||||
            time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime()) + '.md'
 | 
					 | 
				
			||||||
    os.makedirs('./gpt_log/', exist_ok=True)
 | 
					    os.makedirs('./gpt_log/', exist_ok=True)
 | 
				
			||||||
    with open(f'./gpt_log/{file_name}', 'w', encoding='utf8') as f:
 | 
					    with open(f'./gpt_log/{file_name}', 'w', encoding='utf8') as f:
 | 
				
			||||||
        f.write('# chatGPT 分析报告\n')
 | 
					        f.write('# GPT-Academic Report\n')
 | 
				
			||||||
        for i, content in enumerate(history):
 | 
					        for i, content in enumerate(history):
 | 
				
			||||||
            try:    
 | 
					            try:    
 | 
				
			||||||
                if type(content) != str: content = str(content)
 | 
					                if type(content) != str: content = str(content)
 | 
				
			||||||
@ -219,6 +218,37 @@ def write_results_to_file(history, file_name=None):
 | 
				
			|||||||
    return res
 | 
					    return res
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def write_history_to_file(history, file_basename=None, file_fullname=None):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    将对话记录history以Markdown格式写入文件中。如果没有指定文件名,则使用当前时间生成文件名。
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    import os
 | 
				
			||||||
 | 
					    import time
 | 
				
			||||||
 | 
					    if file_fullname is None:
 | 
				
			||||||
 | 
					        if file_basename is not None:
 | 
				
			||||||
 | 
					            file_fullname = os.path.join(get_log_folder(), file_basename)
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            file_fullname = os.path.join(get_log_folder(), f'GPT-Academic-{gen_time_str()}.md')
 | 
				
			||||||
 | 
					    os.makedirs(os.path.dirname(file_fullname), exist_ok=True)
 | 
				
			||||||
 | 
					    with open(file_fullname, 'w', encoding='utf8') as f:
 | 
				
			||||||
 | 
					        f.write('# GPT-Academic Report\n')
 | 
				
			||||||
 | 
					        for i, content in enumerate(history):
 | 
				
			||||||
 | 
					            try:    
 | 
				
			||||||
 | 
					                if type(content) != str: content = str(content)
 | 
				
			||||||
 | 
					            except:
 | 
				
			||||||
 | 
					                continue
 | 
				
			||||||
 | 
					            if i % 2 == 0:
 | 
				
			||||||
 | 
					                f.write('## ')
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
 | 
					                f.write(content)
 | 
				
			||||||
 | 
					            except:
 | 
				
			||||||
 | 
					                # remove everything that cannot be handled by utf8
 | 
				
			||||||
 | 
					                f.write(content.encode('utf-8', 'ignore').decode())
 | 
				
			||||||
 | 
					            f.write('\n\n')
 | 
				
			||||||
 | 
					    res = os.path.abspath(file_fullname)
 | 
				
			||||||
 | 
					    return res
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def regular_txt_to_markdown(text):
 | 
					def regular_txt_to_markdown(text):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    将普通文本转换为Markdown格式的文本。
 | 
					    将普通文本转换为Markdown格式的文本。
 | 
				
			||||||
@ -466,7 +496,7 @@ def promote_file_to_downloadzone(file, rename_file=None, chatbot=None):
 | 
				
			|||||||
    # 将文件复制一份到下载区
 | 
					    # 将文件复制一份到下载区
 | 
				
			||||||
    import shutil
 | 
					    import shutil
 | 
				
			||||||
    if rename_file is None: rename_file = f'{gen_time_str()}-{os.path.basename(file)}'
 | 
					    if rename_file is None: rename_file = f'{gen_time_str()}-{os.path.basename(file)}'
 | 
				
			||||||
    new_path = os.path.join(f'./gpt_log/', rename_file)
 | 
					    new_path = os.path.join(get_log_folder(), rename_file)
 | 
				
			||||||
    # 如果已经存在,先删除
 | 
					    # 如果已经存在,先删除
 | 
				
			||||||
    if os.path.exists(new_path) and not os.path.samefile(new_path, file): os.remove(new_path)
 | 
					    if os.path.exists(new_path) and not os.path.samefile(new_path, file): os.remove(new_path)
 | 
				
			||||||
    # 把文件复制过去
 | 
					    # 把文件复制过去
 | 
				
			||||||
@ -477,6 +507,10 @@ def promote_file_to_downloadzone(file, rename_file=None, chatbot=None):
 | 
				
			|||||||
        else: current = []
 | 
					        else: current = []
 | 
				
			||||||
        chatbot._cookies.update({'file_to_promote': [new_path] + current})
 | 
					        chatbot._cookies.update({'file_to_promote': [new_path] + current})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def disable_auto_promotion(chatbot):
 | 
				
			||||||
 | 
					    chatbot._cookies.update({'file_to_promote': []})
 | 
				
			||||||
 | 
					    return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def on_file_uploaded(files, chatbot, txt, txt2, checkboxes):
 | 
					def on_file_uploaded(files, chatbot, txt, txt2, checkboxes):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    当文件被上传时的回调函数
 | 
					    当文件被上传时的回调函数
 | 
				
			||||||
@ -492,7 +526,7 @@ def on_file_uploaded(files, chatbot, txt, txt2, checkboxes):
 | 
				
			|||||||
        shutil.rmtree('./private_upload/')
 | 
					        shutil.rmtree('./private_upload/')
 | 
				
			||||||
    except:
 | 
					    except:
 | 
				
			||||||
        pass
 | 
					        pass
 | 
				
			||||||
    time_tag = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
 | 
					    time_tag = gen_time_str()
 | 
				
			||||||
    os.makedirs(f'private_upload/{time_tag}', exist_ok=True)
 | 
					    os.makedirs(f'private_upload/{time_tag}', exist_ok=True)
 | 
				
			||||||
    err_msg = ''
 | 
					    err_msg = ''
 | 
				
			||||||
    for file in files:
 | 
					    for file in files:
 | 
				
			||||||
@ -849,8 +883,7 @@ 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 zip_result(folder):
 | 
					def zip_result(folder):
 | 
				
			||||||
    import time
 | 
					    t = gen_time_str()
 | 
				
			||||||
    t = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
 | 
					 | 
				
			||||||
    zip_folder(folder, './gpt_log/', f'{t}-result.zip')
 | 
					    zip_folder(folder, './gpt_log/', f'{t}-result.zip')
 | 
				
			||||||
    return pj('./gpt_log/', f'{t}-result.zip')
 | 
					    return pj('./gpt_log/', f'{t}-result.zip')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -858,6 +891,11 @@ def gen_time_str():
 | 
				
			|||||||
    import time
 | 
					    import time
 | 
				
			||||||
    return time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
 | 
					    return time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_log_folder(user='default', plugin_name='shared'):
 | 
				
			||||||
 | 
					    _dir = os.path.join(os.path.dirname(__file__), 'gpt_log', user, plugin_name)
 | 
				
			||||||
 | 
					    if not os.path.exists(_dir): os.makedirs(_dir)
 | 
				
			||||||
 | 
					    return _dir
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ProxyNetworkActivate():
 | 
					class ProxyNetworkActivate():
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    这段代码定义了一个名为TempProxy的空上下文管理器, 用于给一小段代码上代理
 | 
					    这段代码定义了一个名为TempProxy的空上下文管理器, 用于给一小段代码上代理
 | 
				
			||||||
@ -902,3 +940,101 @@ def Singleton(cls):
 | 
				
			|||||||
        return _instance[cls]
 | 
					        return _instance[cls]
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
    return _singleton
 | 
					    return _singleton
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					========================================================================
 | 
				
			||||||
 | 
					第四部分
 | 
				
			||||||
 | 
					接驳虚空终端:
 | 
				
			||||||
 | 
					    - set_conf:                     在运行过程中动态地修改配置
 | 
				
			||||||
 | 
					    - set_multi_conf:               在运行过程中动态地修改多个配置
 | 
				
			||||||
 | 
					    - get_plugin_handle:            获取插件的句柄
 | 
				
			||||||
 | 
					    - get_plugin_default_kwargs:    获取插件的默认参数
 | 
				
			||||||
 | 
					    - get_chat_handle:              获取简单聊天的句柄
 | 
				
			||||||
 | 
					    - get_chat_default_kwargs:      获取简单聊天的默认参数
 | 
				
			||||||
 | 
					========================================================================
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def set_conf(key, value):
 | 
				
			||||||
 | 
					    from toolbox import read_single_conf_with_lru_cache, get_conf
 | 
				
			||||||
 | 
					    read_single_conf_with_lru_cache.cache_clear()
 | 
				
			||||||
 | 
					    get_conf.cache_clear()
 | 
				
			||||||
 | 
					    os.environ[key] = str(value)
 | 
				
			||||||
 | 
					    altered, = get_conf(key)
 | 
				
			||||||
 | 
					    return altered
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def set_multi_conf(dic):
 | 
				
			||||||
 | 
					    for k, v in dic.items(): set_conf(k, v)
 | 
				
			||||||
 | 
					    return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_plugin_handle(plugin_name):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    e.g. plugin_name = 'crazy_functions.批量Markdown翻译->Markdown翻译指定语言'
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    import importlib
 | 
				
			||||||
 | 
					    assert '->' in plugin_name, \
 | 
				
			||||||
 | 
					        "Example of plugin_name: crazy_functions.批量Markdown翻译->Markdown翻译指定语言"
 | 
				
			||||||
 | 
					    module, fn_name = plugin_name.split('->')
 | 
				
			||||||
 | 
					    f_hot_reload = getattr(importlib.import_module(module, fn_name), fn_name)
 | 
				
			||||||
 | 
					    return f_hot_reload
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_chat_handle():
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    from request_llm.bridge_all import predict_no_ui_long_connection
 | 
				
			||||||
 | 
					    return predict_no_ui_long_connection
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_plugin_default_kwargs():
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    from toolbox import get_conf, ChatBotWithCookies
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    WEB_PORT, LLM_MODEL, API_KEY = \
 | 
				
			||||||
 | 
					        get_conf('WEB_PORT', 'LLM_MODEL', 'API_KEY')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    llm_kwargs = {
 | 
				
			||||||
 | 
					        'api_key': API_KEY,
 | 
				
			||||||
 | 
					        'llm_model': LLM_MODEL,
 | 
				
			||||||
 | 
					        'top_p':1.0, 
 | 
				
			||||||
 | 
					        'max_length': None,
 | 
				
			||||||
 | 
					        'temperature':1.0,
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    chatbot = ChatBotWithCookies(llm_kwargs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port
 | 
				
			||||||
 | 
					    default_plugin_kwargs = {
 | 
				
			||||||
 | 
					        "main_input": "./README.md",
 | 
				
			||||||
 | 
					        "llm_kwargs": llm_kwargs,
 | 
				
			||||||
 | 
					        "plugin_kwargs": {},
 | 
				
			||||||
 | 
					        "chatbot_with_cookie": chatbot,
 | 
				
			||||||
 | 
					        "history": [],
 | 
				
			||||||
 | 
					        "system_prompt": "You are a good AI.", 
 | 
				
			||||||
 | 
					        "web_port": WEB_PORT
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return default_plugin_kwargs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_chat_default_kwargs():
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    from toolbox import get_conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    LLM_MODEL, API_KEY = get_conf('LLM_MODEL', 'API_KEY')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    llm_kwargs = {
 | 
				
			||||||
 | 
					        'api_key': API_KEY,
 | 
				
			||||||
 | 
					        'llm_model': LLM_MODEL,
 | 
				
			||||||
 | 
					        'top_p':1.0, 
 | 
				
			||||||
 | 
					        'max_length': None,
 | 
				
			||||||
 | 
					        'temperature':1.0,
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    default_chat_kwargs = {
 | 
				
			||||||
 | 
					        "inputs": "Hello there, are you ready?",
 | 
				
			||||||
 | 
					        "llm_kwargs": llm_kwargs,
 | 
				
			||||||
 | 
					        "history": [],
 | 
				
			||||||
 | 
					        "sys_prompt": "You are AI assistant",
 | 
				
			||||||
 | 
					        "observe_window": None,
 | 
				
			||||||
 | 
					        "console_slience": False,
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return default_chat_kwargs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user