Spaces:
Sleeping
Sleeping
| import logging | |
| import gradio as gr | |
| import os | |
| import json | |
| import csv | |
| #模板目录 | |
| TEMPLATES_DIR = "PromptTemplete" | |
| def get_template_names(plain=False): | |
| logging.info("获取模板文件名列表") | |
| return get_file_names(TEMPLATES_DIR, plain, filetypes=[".csv", "json"]) | |
| def get_file_names(dir, plain=False, filetypes=[".json"]): | |
| logging.info(f"获取文件名列表,目录为{dir},文件类型为{filetypes},是否为纯文本列表{plain}") | |
| files = [] | |
| try: | |
| for type in filetypes: | |
| files += [f for f in os.listdir(dir) if f.endswith(type)] | |
| except FileNotFoundError: | |
| files = [] | |
| # files = sorted_by_pinyin(files) | |
| if files == []: | |
| files = [""] | |
| if plain: | |
| return files | |
| else: | |
| return gr.Dropdown.update(choices=files) | |
| def load_template(filename, mode=0): | |
| # logging.info(f"加载模板文件{filename},模式为{mode}(0为返回字典和下拉菜单,1为返回下拉菜单,2为返回字典)") | |
| lines = [] | |
| # logging.info("Loading template...") | |
| if filename.endswith(".json"): | |
| with open(os.path.join(TEMPLATES_DIR, filename), "r", encoding="utf8") as f: | |
| lines = json.load(f) | |
| lines = [[i["act"], i["prompt"]] for i in lines] | |
| else: | |
| with open( | |
| os.path.join(TEMPLATES_DIR, filename), "r", encoding="utf8" | |
| ) as csvfile: | |
| reader = csv.reader(csvfile) | |
| lines = list(reader) | |
| lines = lines[1:] | |
| if mode == 1: | |
| return ([row[0] for row in lines]) | |
| elif mode == 2: | |
| return {row[0]: row[1] for row in lines} | |
| else: | |
| choices = ([row[0] for row in lines]) | |
| return {row[0]: row[1] for row in lines}, gr.Dropdown.update( | |
| choices=choices, value=choices[0] | |
| ) | |
| def get_template_content(templates, selection, original_system_prompt): | |
| logging.info(f"应用模板中,选择为{selection},原始系统提示为{original_system_prompt}") | |
| try: | |
| return templates[selection] | |
| except: | |
| return original_system_prompt |