zhou005 commited on
Commit
378605e
1 Parent(s): 68ff366

Upload 2 files

Browse files
Files changed (2) hide show
  1. config_private.py +342 -0
  2. core_functional.py +151 -93
config_private.py ADDED
@@ -0,0 +1,342 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ 以下所有配置也都支持利用环境变量覆写,环境变量配置格式见docker-compose.yml。
3
+ 读取优先级:环境变量 > config_private.py > config.py
4
+ --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
5
+ All the following configurations also support using environment variables to override,
6
+ and the environment variable configuration format can be seen in docker-compose.yml.
7
+ Configuration reading priority: environment variable > config_private.py > config.py
8
+ """
9
+
10
+ # [step 1]>> API_KEY = "ak-SG7fqdmWfDQs5N99ejy0uLkvd6oG6YD3CiU681qWFP4IdY14"。极少数情况下,还需要填写组织(格式如org-123456789abcdefghijklmno的),请向下翻,找 API_ORG 设置项
11
+ API_KEY = "ghu_zRDjm7nLr6xtDiIT22sRwHEPtepPgF3P0mSb" # 可同时填写多个API-KEY,用英文逗号分割,例如API_KEY = "sk-openaikey1,sk-openaikey2,fkxxxx-api2dkey3,azure-apikey4"
12
+
13
+ # [step 2]>> 改为True应用代理,如果直接在海外服务器部署,此处不修改;如果使用本地或无地域限制的大模型时,此处也不需要修改
14
+ USE_PROXY = False
15
+ if USE_PROXY:
16
+ """
17
+ 代理网络的地址,打开你的代理软件查看代理协议(socks5h / http)、地址(localhost)和端口(11284)
18
+ 填写格式是 [协议]:// [地址] :[端口],填写之前不要忘记把USE_PROXY改成True,如果直接在海外服务器部署,此处不修改
19
+ <配置教程&视频教程> https://github.com/binary-husky/gpt_academic/issues/1>
20
+ [协议] 常见协议无非socks5h/http; 例如 v2**y 和 ss* 的默认本地协议是socks5h; 而cl**h 的默认本地协议是http
21
+ [地址] 填localhost或者127.0.0.1(localhost意思是代理软件安装在本机上)
22
+ [端口] 在代理软件的设置里找。虽然不同的代理软件界面不一样,但端口号都应该在最显眼的位置上
23
+ """
24
+ proxies = {
25
+ # [协议]:// [地址] :[端口]
26
+ "http":
27
+ "http://127.0.0.1:7890", # 再例如 "http": "http://127.0.0.1:7890",
28
+ "https":
29
+ "http://127.0.0.1:7890", # 再例如 "https": "http://127.0.0.1:7890",
30
+ }
31
+ else:
32
+ proxies = None
33
+
34
+ # [step 3]>> 模型选择是 (注意: LLM_MODEL是默认选中的模型, 它*必须*被包含在AVAIL_LLM_MODELS列表中 )
35
+ LLM_MODEL = "gpt-4" # 可选 ↓↓↓
36
+ AVAIL_LLM_MODELS = [
37
+ "gpt-4-1106-preview", "gpt-4-turbo-preview", "gpt-4-vision-preview",
38
+ "gpt-3.5-turbo-1106", "gpt-3.5-turbo-16k", "gpt-3.5-turbo",
39
+ "azure-gpt-3.5", "gpt-4", "gpt-4-32k", "azure-gpt-4", "glm-4",
40
+ "glm-3-turbo", "gemini-pro", "chatglm3"
41
+ ]
42
+ # --- --- --- ---
43
+ # P.S. 其他可用的模型还包括
44
+ # AVAIL_LLM_MODELS = [
45
+ # "qianfan", "deepseekcoder",
46
+ # "spark", "sparkv2", "sparkv3", "sparkv3.5",
47
+ # "qwen-turbo", "qwen-plus", "qwen-max", "qwen-local",
48
+ # "moonshot-v1-128k", "moonshot-v1-32k", "moonshot-v1-8k",
49
+ # "gpt-3.5-turbo-0613", "gpt-3.5-turbo-16k-0613", "gpt-3.5-turbo-0125"
50
+ # "claude-3-sonnet-20240229","claude-3-opus-20240229", "claude-2.1", "claude-instant-1.2",
51
+ # "moss", "llama2", "chatglm_onnx", "internlm", "jittorllms_pangualpha", "jittorllms_llama",
52
+ # ]
53
+ # --- --- --- ---
54
+ # 此外,为了更灵活地接入one-api多模型管理界面,您还可以在接入one-api时,
55
+ # 使用"one-api-*"前缀直接使用非标准方式接入的模型,例如
56
+ # AVAIL_LLM_MODELS = ["one-api-claude-3-sonnet-20240229(max_token=100000)"]
57
+ # --- --- --- ---
58
+
59
+ # --------------- 以下配置可以优化体验 ---------------
60
+
61
+ # 重新URL重新定向,实现更换API_URL的作用(高危设置! 常规情况下不要修改! 通过修改此设置,您将把您的API-KEY和对话隐私完全暴露给您设定的中间人!)
62
+ # 格式: API_URL_REDIRECT = {"https://api.openai.com/v1/chat/completions": "在这里填写重定向的api.openai.com的URL"}
63
+ # 举例: API_URL_REDIRECT = {"https://api.openai.com/v1/chat/completions": "https://reverse-proxy-url/v1/chat/completions"}
64
+ # http://localhost:8080/v1/chat/completions
65
+
66
+ API_URL_REDIRECT = {}
67
+ API_URL_REDIRECT = {
68
+ "https://api.openai.com/v1/chat/completions":
69
+ "https://proxy.cocopilot.org/v1/chat/completions"
70
+ }
71
+
72
+ # 多线程函数插件中,默认允许多少路线程同时访问OpenAI。Free trial users的限制是每分钟3次,Pay-as-you-go users的限制是每分钟3500次
73
+ # 一言以蔽之:免费(5刀)用户填3,OpenAI绑了信用卡的用户可以填 16 或者更高。提高限制请查询:https://platform.openai.com/docs/guides/rate-limits/overview
74
+ DEFAULT_WORKER_NUM = 3
75
+
76
+ # 色彩主题, 可选 ["Default", "Chuanhu-Small-and-Beautiful", "High-Contrast"]
77
+ # 更多主题, 请查阅Gradio主题商店: https://huggingface.co/spaces/gradio/theme-gallery 可选 ["Gstaff/Xkcd", "NoCrypt/Miku", ...]
78
+ THEME = "Default"
79
+ AVAIL_THEMES = [
80
+ "Default", "Chuanhu-Small-and-Beautiful", "High-Contrast", "Gstaff/Xkcd",
81
+ "NoCrypt/Miku"
82
+ ]
83
+
84
+ # 默认的系统提示词(system prompt)
85
+ INIT_SYS_PROMPT = "Serve me as a writing and programming assistant."
86
+
87
+ # 对话窗的高度 (仅在LAYOUT="TOP-DOWN"时生效)
88
+ CHATBOT_HEIGHT = 1115
89
+
90
+ # 代码高亮
91
+ CODE_HIGHLIGHT = True
92
+
93
+ # 窗口布局
94
+ LAYOUT = "LEFT-RIGHT" # "LEFT-RIGHT"(左右布局) # "TOP-DOWN"(上下布局)
95
+
96
+ # 暗色模式 / 亮色模式
97
+ DARK_MODE = True
98
+
99
+ # 发送请求到OpenAI后,等待多久判定为超时
100
+ TIMEOUT_SECONDS = 30
101
+
102
+ # 网页的端口, -1代表随机端口
103
+ # WEB_PORT = -1
104
+ WEB_PORT = 8520
105
+
106
+ # 如果OpenAI不响应(网络卡顿、代理失败、KEY失效),重试的次数限制
107
+ MAX_RETRY = 2
108
+
109
+ # 插件分类默认选项
110
+ DEFAULT_FN_GROUPS = ['对话', '编程', '学术', '智能体']
111
+
112
+ # 定义界面上“询问多个GPT模型”插件应该使用哪些模型,请从AVAIL_LLM_MODELS中选择,并在不同模型之间用`&`间隔,例如"gpt-3.5-turbo&chatglm3&azure-gpt-4"
113
+ MULTI_QUERY_LLM_MODELS = "gpt-3.5-turbo&chatglm3"
114
+
115
+ # 选择本地模型变体(只有当AVAIL_LLM_MODELS包含了对应本地模型时,才会起作用)
116
+ # 如果你选择Qwen系列的模型,那么请在下面的QWEN_MODEL_SELECTION中指定具体的模型
117
+ # 也可以是具体的模型路径
118
+ QWEN_LOCAL_MODEL_SELECTION = "Qwen/Qwen-1_8B-Chat-Int8"
119
+
120
+ # 接入通义千问在线大模型 https://dashscope.console.aliyun.com/
121
+ DASHSCOPE_API_KEY = "" # 阿里灵积云API_KEY
122
+
123
+ # 百度千帆(LLM_MODEL="qianfan")
124
+ BAIDU_CLOUD_API_KEY = ''
125
+ BAIDU_CLOUD_SECRET_KEY = ''
126
+ BAIDU_CLOUD_QIANFAN_MODEL = 'ERNIE-Bot' # 可选 "ERNIE-Bot-4"(文心大模型4.0), "ERNIE-Bot"(文心一言), "ERNIE-Bot-turbo", "BLOOMZ-7B", "Llama-2-70B-Chat", "Llama-2-13B-Chat", "Llama-2-7B-Chat"
127
+
128
+ # 如果使用ChatGLM2微调模型,请把 LLM_MODEL="chatglmft",并在此处指定模型路径
129
+ CHATGLM_PTUNING_CHECKPOINT = "" # 例如"/home/hmp/ChatGLM2-6B/ptuning/output/6b-pt-128-1e-2/checkpoint-100"
130
+
131
+ # 本地LLM模型如ChatGLM的执行方式 CPU/GPU
132
+ LOCAL_MODEL_DEVICE = "cpu" # 可选 "cuda"
133
+ LOCAL_MODEL_QUANT = "FP16" # 默认 "FP16" "INT4" 启用量化INT4版本 "INT8" 启用量化INT8版本
134
+
135
+ # 设置gradio的并行线程数(不需要修改)
136
+ CONCURRENT_COUNT = 100
137
+
138
+ # 是否在提交时自动清空输入框
139
+ AUTO_CLEAR_TXT = False
140
+
141
+ # 加一个live2d装饰
142
+ ADD_WAIFU = False
143
+
144
+ # 设置用户名和密码(不需要修改)(相关功能不稳定,与gradio版本和网络都相关,如果本地使用不建议加这个)
145
+ # [("username", "password"), ("username2", "password2"), ...]
146
+ AUTHENTICATION = []
147
+
148
+ # 如果需要在二级路径下运行(常规情况下,不要修改!!)(需要配合修改main.py才能生效!)
149
+ CUSTOM_PATH = "/"
150
+
151
+ # HTTPS 秘钥和证书(不需要修改)
152
+ SSL_KEYFILE = ""
153
+ SSL_CERTFILE = ""
154
+
155
+ # 极少数情况下,openai的官方KEY需要伴随组织编码(格式如org-xxxxxxxxxxxxxxxxxxxxxxxx)使用
156
+ API_ORG = ""
157
+
158
+ # 如果需要使用Slack Claude,使用教程详情见 request_llms/README.md
159
+ SLACK_CLAUDE_BOT_ID = ''
160
+ SLACK_CLAUDE_USER_TOKEN = ''
161
+
162
+ # 如果需要使用AZURE(方法一:单个azure模型部署)详情请见额外文档 docs\use_azure.md
163
+ AZURE_ENDPOINT = "https://你亲手写的api名称.openai.azure.com/"
164
+ AZURE_API_KEY = "填入azure openai api的密钥" # 建议直接在API_KEY处填写,该选项即将被弃用
165
+ AZURE_ENGINE = "填入你亲手写的部署名" # 读 docs\use_azure.md
166
+
167
+ # 如果需要使用AZURE(方法二:多个azure模型部署+动态切换)详情请见额外文档 docs\use_azure.md
168
+ AZURE_CFG_ARRAY = {}
169
+
170
+ # 阿里云实时语音识别 配置难度较高
171
+ # 参考 https://github.com/binary-husky/gpt_academic/blob/master/docs/use_audio.md
172
+ ENABLE_AUDIO = False
173
+ ALIYUN_TOKEN = "" # 例如 f37f30e0f9934c34a992f6f64f7eba4f
174
+ ALIYUN_APPKEY = "" # 例如 RoPlZrM88DnAFkZK
175
+ ALIYUN_ACCESSKEY = "" # (无需填写)
176
+ ALIYUN_SECRET = "" # (无需填写)
177
+
178
+ # 接入讯飞星火大模型 https://console.xfyun.cn/services/iat
179
+ XFYUN_APPID = "00000000"
180
+ XFYUN_API_SECRET = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
181
+ XFYUN_API_KEY = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
182
+
183
+ # 接入智谱大模型
184
+ ZHIPUAI_API_KEY = ""
185
+ ZHIPUAI_MODEL = "" # 此选项已废弃,不再需要填写
186
+
187
+ # Claude API KEY
188
+ ANTHROPIC_API_KEY = ""
189
+
190
+ # 月之暗面 API KEY
191
+ MOONSHOT_API_KEY = ""
192
+
193
+ # Mathpix 拥有执行PDF的OCR功能,但是需要注册账号
194
+ MATHPIX_APPID = ""
195
+ MATHPIX_APPKEY = ""
196
+
197
+ # 自定义API KEY格式
198
+ CUSTOM_API_KEY_PATTERN = "[a-zA-Z0-9]+[_-][a-zA-Z0-9]+"
199
+
200
+ # Google Gemini API-Key
201
+ GEMINI_API_KEY = ''
202
+
203
+ # HUGGINGFACE的TOKEN,下载LLAMA时起作用 https://huggingface.co/docs/hub/security-tokens
204
+ HUGGINGFACE_ACCESS_TOKEN = "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"
205
+
206
+ # GROBID服务器地址(填写多个可以均衡负载),用于高质量地读取PDF文档
207
+ # 获取方法:复制以下空间https://huggingface.co/spaces/qingxu98/grobid,设为public,然后GROBID_URL = "https://(你的hf用户名如qingxu98)-(你的填写的空间名如grobid).hf.space"
208
+ GROBID_URLS = [
209
+ "https://qingxu98-grobid.hf.space",
210
+ "https://qingxu98-grobid2.hf.space",
211
+ "https://qingxu98-grobid3.hf.space",
212
+ "https://qingxu98-grobid4.hf.space",
213
+ "https://qingxu98-grobid5.hf.space",
214
+ "https://qingxu98-grobid6.hf.space",
215
+ "https://qingxu98-grobid7.hf.space",
216
+ "https://qingxu98-grobid8.hf.space",
217
+ ]
218
+
219
+ # 是否允许通过自然语言描述修改本页的配置,该功能具有一定的危险性,默认关闭
220
+ ALLOW_RESET_CONFIG = False
221
+
222
+ # 在使用AutoGen插件时,是否使用Docker容器运行代码
223
+ AUTOGEN_USE_DOCKER = False
224
+
225
+ # 临时的上传文件夹位置,请勿修改
226
+ PATH_PRIVATE_UPLOAD = "private_upload"
227
+
228
+ # 日志文件夹的位置,请勿修改
229
+ PATH_LOGGING = "gpt_log"
230
+
231
+ # 除了连接OpenAI之外,还有哪些场合允许使用代理,请勿修改
232
+ WHEN_TO_USE_PROXY = [
233
+ "Download_LLM", "Download_Gradio_Theme", "Connect_Grobid",
234
+ "Warmup_Modules", "Nougat_Download", "AutoGen"
235
+ ]
236
+
237
+ # *实验性功能*: 自动检测并屏蔽失效的KEY,请勿使用
238
+ BLOCK_INVALID_APIKEY = False
239
+
240
+ # 启用插件热加载
241
+ PLUGIN_HOT_RELOAD = False
242
+
243
+ # 自定义按钮的最大数量限制
244
+ NUM_CUSTOM_BASIC_BTN = 4
245
+ """
246
+ --------------- 配置关联关系说明 ---------------
247
+
248
+ 在线大模型配置关联关系示意图
249
+
250
+ ├── "gpt-3.5-turbo" 等openai模型
251
+ │ ├── API_KEY
252
+ │ ├── CUSTOM_API_KEY_PATTERN(不常用)
253
+ │ ├── API_ORG(不常用)
254
+ │ └── API_URL_REDIRECT(不常用)
255
+
256
+ ├── "azure-gpt-3.5" 等azure模型(单个azure模型,不需要动态切换)
257
+ │ ├── API_KEY
258
+ │ ├── AZURE_ENDPOINT
259
+ │ ├── AZURE_API_KEY
260
+ │ ├── AZURE_ENGINE
261
+ │ └── API_URL_REDIRECT
262
+
263
+ ├── "azure-gpt-3.5" 等azure模型(多个azure模型,需要动态切换,高优先级)
264
+ │ └── AZURE_CFG_ARRAY
265
+
266
+ ├── "spark" 星火认知大模型 spark & sparkv2
267
+ │ ├── XFYUN_APPID
268
+ │ ├── XFYUN_API_SECRET
269
+ │ └── XFYUN_API_KEY
270
+
271
+ ├── "claude-3-opus-20240229" 等claude模型
272
+ │ └── ANTHROPIC_API_KEY
273
+
274
+ ├── "stack-claude"
275
+ │ ├── SLACK_CLAUDE_BOT_ID
276
+ │ └── SLACK_CLAUDE_USER_TOKEN
277
+
278
+ ├── "qianfan" 百度千帆大模型库
279
+ │ ├── BAIDU_CLOUD_QIANFAN_MODEL
280
+ │ ├── BAIDU_CLOUD_API_KEY
281
+ │ └── BAIDU_CLOUD_SECRET_KEY
282
+
283
+ ├── "glm-4", "glm-3-turbo", "zhipuai" 智谱AI大模型
284
+ │ └── ZHIPUAI_API_KEY
285
+
286
+ ├── "qwen-turbo" 等通义千问大模型
287
+ │ └── DASHSCOPE_API_KEY
288
+
289
+ ├── "Gemini"
290
+ │ └── GEMINI_API_KEY
291
+
292
+ └── "one-api-...(max_token=...)" 用一种更方便的方式接入one-api多模型管理界面
293
+ ├── AVAIL_LLM_MODELS
294
+ ├── API_KEY
295
+ └── API_URL_REDIRECT
296
+
297
+
298
+ 本地大模型示意图
299
+
300
+ ├── "chatglm3"
301
+ ├── "chatglm"
302
+ ├── "chatglm_onnx"
303
+ ├── "chatglmft"
304
+ ├── "internlm"
305
+ ├── "moss"
306
+ ├── "jittorllms_pangualpha"
307
+ ├── "jittorllms_llama"
308
+ ├── "deepseekcoder"
309
+ ├── "qwen-local"
310
+ ├── RWKV的支持见Wiki
311
+ └── "llama2"
312
+
313
+
314
+ 用户图形界面布局依赖关系示意图
315
+
316
+ ├── CHATBOT_HEIGHT 对话窗的高度
317
+ ├── CODE_HIGHLIGHT 代码高亮
318
+ ├── LAYOUT 窗口布局
319
+ ├── DARK_MODE 暗色模式 / 亮色模式
320
+ ├── DEFAULT_FN_GROUPS 插件分类默认选项
321
+ ├── THEME 色彩主题
322
+ ├── AUTO_CLEAR_TXT 是否在提交时自动清空输入框
323
+ ├── ADD_WAIFU 加一个live2d装饰
324
+ └── ALLOW_RESET_CONFIG 是否允许通过自然语言描述修改本页的配置,该功能具有一定的危险性
325
+
326
+
327
+ 插件在线服务配置依赖关系示意图
328
+
329
+ ├── 语音功能
330
+ │ ├── ENABLE_AUDIO
331
+ │ ├── ALIYUN_TOKEN
332
+ │ ├── ALIYUN_APPKEY
333
+ │ ├── ALIYUN_ACCESSKEY
334
+ │ └── ALIYUN_SECRET
335
+
336
+ └── PDF文档精准解析
337
+ ├── GROBID_URLS
338
+ ├── MATHPIX_APPID
339
+ └── MATHPIX_APPKEY
340
+
341
+
342
+ """
core_functional.py CHANGED
@@ -7,43 +7,94 @@ from toolbox import apply_gpt_academic_string_mask_langbased
7
  from toolbox import build_gpt_academic_masked_string_langbased
8
  from textwrap import dedent
9
 
 
10
  def get_core_functions():
11
  return {
12
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  "学术语料润色": {
14
  # [1*] 前缀字符串,会被加在你的输入之前。例如,用来描述你的要求,例如翻译、解释代码、润色等等。
15
  # 这里填一个提示词字符串就行了,这里为了区分中英文情景搞复杂了一点
16
- "Prefix": build_gpt_academic_masked_string_langbased(
17
- text_show_english=
18
- r"Below is a paragraph from an academic paper. Polish the writing to meet the academic style, "
19
- r"improve the spelling, grammar, clarity, concision and overall readability. When necessary, rewrite the whole sentence. "
20
- r"Firstly, you should provide the polished paragraph. "
21
- r"Secondly, you should list all your modification and explain the reasons to do so in markdown table.",
22
- text_show_chinese=
23
- r"作为一名中文学术论文写作改进助理,你的任务是改进所提供文本的拼写、语法、清晰、简洁和整体可读性,"
24
- r"同时分解长句,减少重复,并提供改进建议。请先提供文本的更正版本,然后在markdown表格中列出修改的内容,并给出修改的理由:"
25
- ) + "\n\n",
 
26
  # [2*] 后缀字符串,会被加在你的输入之后。例如,配合前缀可以把你的输入内容用引号圈起来
27
- "Suffix": r"",
 
28
  # [3] 按钮颜色 (可选参数,默认 secondary)
29
- "Color": r"secondary",
 
30
  # [4] 按钮是否可见 (可选参数,默认 True,即可见)
31
- "Visible": True,
 
32
  # [5] 是否在触发时清除历史 (可选参数,默认 False,即不处理之前的对话历史)
33
- "AutoClearHistory": False,
 
34
  # [6] 文本预处理 (可选参数,默认 None,举例:写个函数移除所有的换行符)
35
- "PreProcess": None,
 
36
  },
37
-
38
-
39
  "总结绘制脑图": {
40
  # 前缀,会被加在你的输入之前。例如,用来描述你的要求,例如翻译、解释代码、润色等等
41
- "Prefix": r"",
 
42
  # 后缀,会被加在你的输入之后。例如,配合前缀可以把你的输入内容用引号圈起来
43
  "Suffix":
44
- # dedent() 函数用于去除多行字符串的缩进
45
- dedent("\n"+r'''
46
- ==============================
47
 
48
  使用mermaid flowchart对以上文本进行总结,概括上述段落的内容以及内在逻辑关系,例如:
49
 
@@ -57,117 +108,124 @@ def get_core_functions():
57
  C --> |"箭头名2"| F["节点名6"]
58
  ```
59
 
60
- 警告:
61
  (1)使用中文
62
  (2)节点名字使用引号包裹,如["Laptop"]
63
  (3)`|` 和 `"`之间不要存在空格
64
  (4)根据情况选择flowchart LR(从左到右)或者flowchart TD(从上到下)
65
  '''),
66
  },
67
-
68
-
69
  "查找语法错误": {
70
- "Prefix": r"Help me ensure that the grammar and the spelling is correct. "
71
- r"Do not try to polish the text, if no mistake is found, tell me that this paragraph is good. "
72
- r"If you find grammar or spelling mistakes, please list mistakes you find in a two-column markdown table, "
73
- r"put the original text the first column, "
74
- r"put the corrected text in the second column and highlight the key words you fixed. "
75
- r"Finally, please provide the proofreaded text.""\n\n"
76
- r"Example:""\n"
77
- r"Paragraph: How is you? Do you knows what is it?""\n"
78
- r"| Original sentence | Corrected sentence |""\n"
79
- r"| :--- | :--- |""\n"
80
- r"| How **is** you? | How **are** you? |""\n"
81
- r"| Do you **knows** what **is** **it**? | Do you **know** what **it** **is** ? |""\n\n"
82
- r"Below is a paragraph from an academic paper. "
83
- r"You need to report all grammar and spelling mistakes as the example before."
84
- + "\n\n",
85
- "Suffix": r"",
86
- "PreProcess": clear_line_break, # 预处理:清除换行符
 
 
 
 
 
 
 
 
 
 
87
  },
88
-
89
-
90
  "中译英": {
91
- "Prefix": r"Please translate following sentence to English:" + "\n\n",
92
- "Suffix": r"",
 
93
  },
94
-
95
-
96
  "学术英中互译": {
97
- "Prefix": build_gpt_academic_masked_string_langbased(
98
- text_show_chinese=
99
- r"I want you to act as a scientific English-Chinese translator, "
100
- r"I will provide you with some paragraphs in one language "
101
- r"and your task is to accurately and academically translate the paragraphs only into the other language. "
102
- r"Do not repeat the original provided paragraphs after translation. "
103
- r"You should use artificial intelligence tools, "
104
- r"such as natural language processing, and rhetorical knowledge "
105
- r"and experience about effective writing techniques to reply. "
106
- r"I'll give you my paragraphs as follows, tell me what language it is written in, and then translate:",
107
- text_show_english=
108
- r"你是经验丰富的翻译,请把以下学术文章段落翻译成中文,"
109
- r"并同时充分考虑中文的语法、清晰、简洁和整体可读性,"
110
- r"必要时,你可以修改整个句子的顺序以确保翻译后的段落符合中文的语言习惯。"
111
- r"你需要翻译的文本如下:"
112
- ) + "\n\n",
113
- "Suffix": r"",
114
  },
115
-
116
-
117
  "英译中": {
118
- "Prefix": r"翻译成地道的中文:" + "\n\n",
119
- "Suffix": r"",
120
- "Visible": False,
121
  },
122
-
123
-
124
  "找图片": {
125
- "Prefix": r"我需要你找一张网络图片。使用Unsplash API(https://source.unsplash.com/960x640/?<英语关键词>)获取图片URL,"
126
- r"然后请使用Markdown格式封装,并且不要有反斜线,不要用代码块。现在,请按以下描述给我发送图片:" + "\n\n",
127
- "Suffix": r"",
128
- "Visible": False,
 
 
 
129
  },
130
-
131
-
132
  "解释代码": {
133
- "Prefix": r"请解释以下代码:" + "\n```\n",
134
- "Suffix": "\n```\n",
135
  },
136
-
137
-
138
  "参考文献转Bib": {
139
- "Prefix": r"Here are some bibliography items, please transform them into bibtex style."
140
- r"Note that, reference styles maybe more than one kind, you should transform each item correctly."
141
- r"Items need to be transformed:" + "\n\n",
142
- "Visible": False,
143
- "Suffix": r"",
 
 
 
144
  }
145
  }
146
 
147
 
148
  def handle_core_functionality(additional_fn, inputs, history, chatbot):
149
  import core_functional
150
- importlib.reload(core_functional) # 热更新prompt
151
  core_functional = core_functional.get_core_functions()
152
  addition = chatbot._cookies['customize_fn_overwrite']
153
  if additional_fn in addition:
154
  # 自定义功能
155
- inputs = addition[additional_fn]["Prefix"] + inputs + addition[additional_fn]["Suffix"]
 
156
  return inputs, history
157
  else:
158
  # 预制功能
159
  if "PreProcess" in core_functional[additional_fn]:
160
  if core_functional[additional_fn]["PreProcess"] is not None:
161
- inputs = core_functional[additional_fn]["PreProcess"](inputs) # 获取预处理函数(如果有的话)
 
162
  # 为字符串加上上面定义的前缀和后缀。
163
  inputs = apply_gpt_academic_string_mask_langbased(
164
- string = core_functional[additional_fn]["Prefix"] + inputs + core_functional[additional_fn]["Suffix"],
165
- lang_reference = inputs,
 
166
  )
167
  if core_functional[additional_fn].get("AutoClearHistory", False):
168
  history = []
169
  return inputs, history
170
 
 
171
  if __name__ == "__main__":
172
  t = get_core_functions()["总结绘制脑图"]
173
- print(t["Prefix"] + t["Suffix"])
 
7
  from toolbox import build_gpt_academic_masked_string_langbased
8
  from textwrap import dedent
9
 
10
+
11
  def get_core_functions():
12
  return {
13
+ "中文学位论文润色": {
14
+ "Prefix":
15
+ r"请对以下的博士论文进行润色,使其符合中国博士论文写作的规范。请注意以下几点要求:" + "\n"
16
+ r"1. 保证用词符合学术规范,使用专业、精准的术语; " + "\n"
17
+ r"2. 避免使用第一人称词汇,如“我们”,应当使用被动语态或无主语句型以维持客观性;" + "\n"
18
+ r"3. 语句应严谨、逻辑清晰,避免产生歧义;" + "\n"
19
+ r"4. 对于技术术语及概念描述需准确无误;" + "\n"
20
+ r"5. 结构上要体现出论文的原创性、逻辑性和科学性;" + "\n"
21
+ r"6. 确保润色的内容具有条理性,既突出理论深度也强调技术创新;" + "\n"
22
+ r"7. 确保润色符合中国博士论文格式与学术道德规范。以下是我的论文:" + "\n\n",
23
+ "Suffix":
24
+ r"",
25
+ # [3] 按钮颜色 (可选参数,默认 secondary)
26
+ "Color":
27
+ r"secondary",
28
+ # [4] 按钮是否可见 (可选参数,默认 True,即可见)
29
+ "Visible":
30
+ True,
31
+ # [5] 是否在触发时清除历史 (可选参数,默认 False,即不处理之前的对话历史)
32
+ "AutoClearHistory":
33
+ False,
34
+ # [6] 文本预处理 (可选参数,默认 None,举例:写个函数移除所有的换行符)
35
+ "PreProcess":
36
+ None,
37
+ },
38
+ "中文学位论文降重": {
39
+ "Prefix":
40
+ r"尊敬的语言模型,我需要您的帮助来改写以下这段论文内容,以降低其与原文的相似度。请确保在保持原意不变的前提下,使用不同的词汇、语法结构和表达方式。"
41
+ + "\n\n",
42
+ "Suffix":
43
+ "\n\n" + r"请对我的原文进行深度改写,确保:" + "\n" + r"1. 保持原文的意思和论点不变。" + "\n" +
44
+ r"2. 尽可能使用不同的词汇和表达方式。" + "\n" + r"3. 优化句子结构,使其更加清晰和准确。" + "\n" +
45
+ r"4. 避免使用任何可能引起抄袭嫌疑的相似表述。",
46
+ # [3] 按钮颜色 (可选参数,默认 secondary)
47
+ "Color":
48
+ r"secondary",
49
+ # [4] 按钮是否可见 (可选参数,默认 True,即可见)
50
+ "Visible":
51
+ True,
52
+ # [5] 是否在触发时清除历史 (可选参数,默认 False,即不处理之前的对话历史)
53
+ "AutoClearHistory":
54
+ False,
55
+ # [6] 文本预处理 (可选参数,默认 None,举例:写个函数移除所有的换行符)
56
+ "PreProcess":
57
+ None,
58
+ },
59
  "学术语料润色": {
60
  # [1*] 前缀字符串,会被加在你的输入之前。例如,用来描述你的要求,例如翻译、解释代码、润色等等。
61
  # 这里填一个提示词字符串就行了,这里为了区分中英文情景搞复杂了一点
62
+ "Prefix":
63
+ build_gpt_academic_masked_string_langbased(
64
+ text_show_english=
65
+ r"Below is a paragraph from an academic paper. Polish the writing to meet the academic style, "
66
+ r"improve the spelling, grammar, clarity, concision and overall readability. When necessary, rewrite the whole sentence. "
67
+ r"Firstly, you should provide the polished paragraph. "
68
+ r"Secondly, you should list all your modification and explain the reasons to do so in markdown table.",
69
+ text_show_chinese=
70
+ r"作为一名中文学术论文写作改进助理���你的任务是改进所提供文本的拼写、语法、清晰、简洁和整体可读性,"
71
+ r"同时分解长句,减少重复,并提供改进建议。请先提供文本的更正版本,然后在markdown表格中列出修改的内容,并给出修改的理由:"
72
+ ) + "\n\n",
73
  # [2*] 后缀字符串,会被加在你的输入之后。例如,配合前缀可以把你的输入内容用引号圈起来
74
+ "Suffix":
75
+ r"",
76
  # [3] 按钮颜色 (可选参数,默认 secondary)
77
+ "Color":
78
+ r"secondary",
79
  # [4] 按钮是否可见 (可选参数,默认 True,即可见)
80
+ "Visible":
81
+ True,
82
  # [5] 是否在触发时清除历史 (可选参数,默认 False,即不处理之前的对话历史)
83
+ "AutoClearHistory":
84
+ False,
85
  # [6] 文本预处理 (可选参数,默认 None,举例:写个函数移除所有的换行符)
86
+ "PreProcess":
87
+ None,
88
  },
 
 
89
  "总结绘制脑图": {
90
  # 前缀,会被加在你的输入之前。例如,用来描述你的要求,例如翻译、解释代码、润色等等
91
+ "Prefix":
92
+ '''"""\n\n''',
93
  # 后缀,会被加在你的输入之后。例如,配合前缀可以把你的输入内容用引号圈起来
94
  "Suffix":
95
+ # dedent() 函数用于去除多行字符串的缩进
96
+ dedent("\n\n" + r'''
97
+ """
98
 
99
  使用mermaid flowchart对以上文本进行总结,概括上述段落的内容以及内在逻辑关系,例如:
100
 
 
108
  C --> |"箭头名2"| F["节点名6"]
109
  ```
110
 
111
+ 注意:
112
  (1)使用中文
113
  (2)节点名字使用引号包裹,如["Laptop"]
114
  (3)`|` 和 `"`之间不要存在空格
115
  (4)根据情况选择flowchart LR(从左到右)或者flowchart TD(从上到下)
116
  '''),
117
  },
 
 
118
  "查找语法错误": {
119
+ "Prefix":
120
+ r"Help me ensure that the grammar and the spelling is correct. "
121
+ r"Do not try to polish the text, if no mistake is found, tell me that this paragraph is good. "
122
+ r"If you find grammar or spelling mistakes, please list mistakes you find in a two-column markdown table, "
123
+ r"put the original text the first column, "
124
+ r"put the corrected text in the second column and highlight the key words you fixed. "
125
+ r"Finally, please provide the proofreaded text."
126
+ "\n\n"
127
+ r"Example:"
128
+ "\n"
129
+ r"Paragraph: How is you? Do you knows what is it?"
130
+ "\n"
131
+ r"| Original sentence | Corrected sentence |"
132
+ "\n"
133
+ r"| :--- | :--- |"
134
+ "\n"
135
+ r"| How **is** you? | How **are** you? |"
136
+ "\n"
137
+ r"| Do you **knows** what **is** **it**? | Do you **know** what **it** **is** ? |"
138
+ "\n\n"
139
+ r"Below is a paragraph from an academic paper. "
140
+ r"You need to report all grammar and spelling mistakes as the example before."
141
+ + "\n\n",
142
+ "Suffix":
143
+ r"",
144
+ "PreProcess":
145
+ clear_line_break, # 预处理:清除换行符
146
  },
 
 
147
  "中译英": {
148
+ "Prefix":
149
+ r"Please translate following sentence to English:" + "\n\n",
150
+ "Suffix": r"",
151
  },
 
 
152
  "学术英中互译": {
153
+ "Prefix":
154
+ build_gpt_academic_masked_string_langbased(
155
+ text_show_chinese=
156
+ r"I want you to act as a scientific English-Chinese translator, "
157
+ r"I will provide you with some paragraphs in one language "
158
+ r"and your task is to accurately and academically translate the paragraphs only into the other language. "
159
+ r"Do not repeat the original provided paragraphs after translation. "
160
+ r"You should use artificial intelligence tools, "
161
+ r"such as natural language processing, and rhetorical knowledge "
162
+ r"and experience about effective writing techniques to reply. "
163
+ r"I'll give you my paragraphs as follows, tell me what language it is written in, and then translate:",
164
+ text_show_english=r"你是经验丰富的翻译,请把以下学术文章段落翻译成中文,"
165
+ r"并同时充分考虑中文的语法、清晰、简洁和整体可读性,"
166
+ r"必要时,你可以修改整个句子的顺序以确保翻译后的段落符合中文的语言习惯。"
167
+ r"你需要翻译的文本如下:") + "\n\n",
168
+ "Suffix":
169
+ r"",
170
  },
 
 
171
  "英译中": {
172
+ "Prefix": r"翻译成地道的中文:" + "\n\n",
173
+ "Suffix": r"",
174
+ "Visible": False,
175
  },
 
 
176
  "找图片": {
177
+ "Prefix":
178
+ r"我需要你找一张网络图片。使用Unsplash API(https://source.unsplash.com/960x640/?<英语关键词>)获取图片URL,"
179
+ r"然后请使用Markdown格式封装,并且不要有反斜线,不要用代码块。现在,请按以下描述给我发送图片:" + "\n\n",
180
+ "Suffix":
181
+ r"",
182
+ "Visible":
183
+ False,
184
  },
 
 
185
  "解释代码": {
186
+ "Prefix": r"请解释以下代码:" + "\n```\n",
187
+ "Suffix": "\n```\n",
188
  },
 
 
189
  "参考文献转Bib": {
190
+ "Prefix":
191
+ r"Here are some bibliography items, please transform them into bibtex style."
192
+ r"Note that, reference styles maybe more than one kind, you should transform each item correctly."
193
+ r"Items need to be transformed:" + "\n\n",
194
+ "Visible":
195
+ False,
196
+ "Suffix":
197
+ r"",
198
  }
199
  }
200
 
201
 
202
  def handle_core_functionality(additional_fn, inputs, history, chatbot):
203
  import core_functional
204
+ importlib.reload(core_functional) # 热更新prompt
205
  core_functional = core_functional.get_core_functions()
206
  addition = chatbot._cookies['customize_fn_overwrite']
207
  if additional_fn in addition:
208
  # 自定义功能
209
+ inputs = addition[additional_fn]["Prefix"] + inputs + addition[
210
+ additional_fn]["Suffix"]
211
  return inputs, history
212
  else:
213
  # 预制功能
214
  if "PreProcess" in core_functional[additional_fn]:
215
  if core_functional[additional_fn]["PreProcess"] is not None:
216
+ inputs = core_functional[additional_fn]["PreProcess"](
217
+ inputs) # 获取预处理函数(如果有的话)
218
  # 为字符串加上上面定义的前缀和后缀。
219
  inputs = apply_gpt_academic_string_mask_langbased(
220
+ string=core_functional[additional_fn]["Prefix"] + inputs +
221
+ core_functional[additional_fn]["Suffix"],
222
+ lang_reference=inputs,
223
  )
224
  if core_functional[additional_fn].get("AutoClearHistory", False):
225
  history = []
226
  return inputs, history
227
 
228
+
229
  if __name__ == "__main__":
230
  t = get_core_functions()["总结绘制脑图"]
231
+ print(t["Prefix"] + t["Suffix"])