Spaces:
Runtime error
Runtime error
JohnSmith9982
commited on
Commit
•
cd875a6
1
Parent(s):
c21f04b
Upload 39 files
Browse files- ChuanhuChatbot.py +53 -49
- assets/custom.css +15 -6
- config.json +26 -0
- config_example.json +1 -0
- locale/en_US.json +73 -0
- locale/extract_locale.py +26 -0
- locale/ja_JP.json +73 -0
- modules/base_model.py +2 -2
- modules/config.py +2 -0
- modules/presets.py +16 -21
- modules/utils.py +3 -3
- modules/webui_locale.py +25 -0
- readme/README_en.md +127 -0
- readme/README_ja.md +126 -0
- templates/5 日本語Prompts.json +34 -0
ChuanhuChatbot.py
CHANGED
@@ -12,6 +12,7 @@ from modules.presets import *
|
|
12 |
from modules.overwrites import *
|
13 |
from modules.models import get_model
|
14 |
|
|
|
15 |
gr.Chatbot._postprocess_chat_messages = postprocess_chat_messages
|
16 |
gr.Chatbot.postprocess = postprocess
|
17 |
PromptHelper.compact_text_chunks = compact_text_chunks
|
@@ -29,7 +30,7 @@ with gr.Blocks(css=customCSS, theme=small_and_beautiful_theme) as demo:
|
|
29 |
user_api_key = gr.State(my_api_key)
|
30 |
current_model = gr.State(create_new_model)
|
31 |
|
32 |
-
topic = gr.State("未命名对话历史记录")
|
33 |
|
34 |
with gr.Row():
|
35 |
gr.HTML(CHUANHU_TITLE, elem_id="app_title")
|
@@ -54,22 +55,22 @@ with gr.Blocks(css=customCSS, theme=small_and_beautiful_theme) as demo:
|
|
54 |
with gr.Column(min_width=225, scale=12):
|
55 |
user_input = gr.Textbox(
|
56 |
elem_id="user_input_tb",
|
57 |
-
show_label=False, placeholder="在这里输入"
|
58 |
).style(container=False)
|
59 |
with gr.Column(min_width=42, scale=1):
|
60 |
submitBtn = gr.Button(value="", variant="primary", elem_id="submit_btn")
|
61 |
cancelBtn = gr.Button(value="", variant="secondary", visible=False, elem_id="cancel_btn")
|
62 |
with gr.Row():
|
63 |
emptyBtn = gr.Button(
|
64 |
-
"🧹 新的对话",
|
65 |
)
|
66 |
-
retryBtn = gr.Button("🔄 重新生成")
|
67 |
-
delFirstBtn = gr.Button("🗑️ 删除最旧对话")
|
68 |
-
delLastBtn = gr.Button("🗑️ 删除最新对话")
|
69 |
|
70 |
with gr.Column():
|
71 |
with gr.Column(min_width=50, scale=1):
|
72 |
-
with gr.Tab(label="模型"):
|
73 |
keyTxt = gr.Textbox(
|
74 |
show_label=True,
|
75 |
placeholder=f"OpenAI API-key...",
|
@@ -79,95 +80,95 @@ with gr.Blocks(css=customCSS, theme=small_and_beautiful_theme) as demo:
|
|
79 |
label="API-Key",
|
80 |
)
|
81 |
if multi_api_key:
|
82 |
-
usageTxt = gr.Markdown("多账号模式已开启,无需输入key,可直接开始对话", elem_id="usage_display", elem_classes="insert_block")
|
83 |
else:
|
84 |
-
usageTxt = gr.Markdown("**发送消息** 或 **提交key** 以显示额度", elem_id="usage_display", elem_classes="insert_block")
|
85 |
model_select_dropdown = gr.Dropdown(
|
86 |
-
label="选择模型", choices=MODELS, multiselect=False, value=MODELS[DEFAULT_MODEL], interactive=True
|
87 |
)
|
88 |
lora_select_dropdown = gr.Dropdown(
|
89 |
-
label="选择LoRA模型", choices=[], multiselect=False, interactive=True, visible=False
|
90 |
)
|
91 |
with gr.Row():
|
92 |
use_streaming_checkbox = gr.Checkbox(
|
93 |
-
label="实时传输回答", value=True, visible=ENABLE_STREAMING_OPTION
|
94 |
)
|
95 |
-
single_turn_checkbox = gr.Checkbox(label="单轮对话", value=False)
|
96 |
-
use_websearch_checkbox = gr.Checkbox(label="使用在线搜索", value=False)
|
97 |
language_select_dropdown = gr.Dropdown(
|
98 |
-
label="选择回复语言(针对搜索&索引功能)",
|
99 |
choices=REPLY_LANGUAGES,
|
100 |
multiselect=False,
|
101 |
value=REPLY_LANGUAGES[0],
|
102 |
)
|
103 |
-
index_files = gr.Files(label="上传索引文件", type="file")
|
104 |
-
two_column = gr.Checkbox(label="双栏pdf", value=advance_docs["pdf"].get("two_column", False))
|
105 |
# TODO: 公式ocr
|
106 |
-
# formula_ocr = gr.Checkbox(label="识别公式", value=advance_docs["pdf"].get("formula_ocr", False))
|
107 |
|
108 |
with gr.Tab(label="Prompt"):
|
109 |
systemPromptTxt = gr.Textbox(
|
110 |
show_label=True,
|
111 |
-
placeholder=
|
112 |
label="System prompt",
|
113 |
value=INITIAL_SYSTEM_PROMPT,
|
114 |
lines=10,
|
115 |
).style(container=False)
|
116 |
-
with gr.Accordion(label="加载Prompt模板", open=True):
|
117 |
with gr.Column():
|
118 |
with gr.Row():
|
119 |
with gr.Column(scale=6):
|
120 |
templateFileSelectDropdown = gr.Dropdown(
|
121 |
-
label="选择Prompt模板集合文件",
|
122 |
choices=get_template_names(plain=True),
|
123 |
multiselect=False,
|
124 |
value=get_template_names(plain=True)[0],
|
125 |
).style(container=False)
|
126 |
with gr.Column(scale=1):
|
127 |
-
templateRefreshBtn = gr.Button("🔄 刷新")
|
128 |
with gr.Row():
|
129 |
with gr.Column():
|
130 |
templateSelectDropdown = gr.Dropdown(
|
131 |
-
label="从Prompt模板中加载",
|
132 |
choices=load_template(
|
133 |
get_template_names(plain=True)[0], mode=1
|
134 |
),
|
135 |
multiselect=False,
|
136 |
).style(container=False)
|
137 |
|
138 |
-
with gr.Tab(label="保存/加载"):
|
139 |
-
with gr.Accordion(label="保存/加载对话历史记录", open=True):
|
140 |
with gr.Column():
|
141 |
with gr.Row():
|
142 |
with gr.Column(scale=6):
|
143 |
historyFileSelectDropdown = gr.Dropdown(
|
144 |
-
label="从列表中加载对话",
|
145 |
choices=get_history_names(plain=True),
|
146 |
multiselect=False,
|
147 |
value=get_history_names(plain=True)[0],
|
148 |
)
|
149 |
with gr.Column(scale=1):
|
150 |
-
historyRefreshBtn = gr.Button("🔄 刷新")
|
151 |
with gr.Row():
|
152 |
with gr.Column(scale=6):
|
153 |
saveFileName = gr.Textbox(
|
154 |
show_label=True,
|
155 |
-
placeholder=
|
156 |
-
label="设置保存文件名",
|
157 |
-
value="对话历史记录",
|
158 |
).style(container=True)
|
159 |
with gr.Column(scale=1):
|
160 |
-
saveHistoryBtn = gr.Button("💾 保存对话")
|
161 |
-
exportMarkdownBtn = gr.Button("📝 导出为Markdown")
|
162 |
-
gr.Markdown("默认保存于history文件夹")
|
163 |
with gr.Row():
|
164 |
with gr.Column():
|
165 |
downloadFile = gr.File(interactive=True)
|
166 |
|
167 |
-
with gr.Tab(label="高级"):
|
168 |
-
gr.Markdown("# ⚠️ 务必谨慎更改 ⚠️\n\n如果无法使用请恢复默认设置")
|
169 |
gr.HTML(APPEARANCE_SWITCHER, elem_classes="insert_block")
|
170 |
-
with gr.Accordion("参数", open=False):
|
171 |
temperature_slider = gr.Slider(
|
172 |
minimum=-0,
|
173 |
maximum=2.0,
|
@@ -194,7 +195,7 @@ with gr.Blocks(css=customCSS, theme=small_and_beautiful_theme) as demo:
|
|
194 |
)
|
195 |
stop_sequence_txt = gr.Textbox(
|
196 |
show_label=True,
|
197 |
-
placeholder=
|
198 |
label="stop",
|
199 |
value="",
|
200 |
lines=1,
|
@@ -240,33 +241,33 @@ with gr.Blocks(css=customCSS, theme=small_and_beautiful_theme) as demo:
|
|
240 |
)
|
241 |
user_identifier_txt = gr.Textbox(
|
242 |
show_label=True,
|
243 |
-
placeholder=
|
244 |
-
label="用户名",
|
245 |
value=user_name.value,
|
246 |
lines=1,
|
247 |
)
|
248 |
|
249 |
-
with gr.Accordion("网络设置", open=False):
|
250 |
# 优先展示自定义的api_host
|
251 |
apihostTxt = gr.Textbox(
|
252 |
show_label=True,
|
253 |
-
placeholder=
|
254 |
label="API-Host",
|
255 |
value=config.api_host or shared.API_HOST,
|
256 |
lines=1,
|
257 |
)
|
258 |
-
changeAPIURLBtn = gr.Button("🔄 切换API地址")
|
259 |
proxyTxt = gr.Textbox(
|
260 |
show_label=True,
|
261 |
-
placeholder=
|
262 |
-
label="代理地址(示例:http://127.0.0.1:10809)",
|
263 |
value="",
|
264 |
lines=2,
|
265 |
)
|
266 |
-
changeProxyBtn = gr.Button("🔄 设置代理地址")
|
267 |
-
default_btn = gr.Button("🔙 恢复默认设置")
|
268 |
|
269 |
-
gr.Markdown(CHUANHU_DESCRIPTION)
|
270 |
gr.HTML(FOOTER.format(versions=versions_html()), elem_id="footer")
|
271 |
chatgpt_predict_args = dict(
|
272 |
fn=predict,
|
@@ -437,14 +438,17 @@ logging.info(
|
|
437 |
+ colorama.Style.RESET_ALL
|
438 |
)
|
439 |
# 默认开启本地服务器,默认可以直接从IP访问,默认不创建公开分享链接
|
440 |
-
demo.title = "川虎
|
441 |
|
442 |
if __name__ == "__main__":
|
443 |
reload_javascript()
|
444 |
demo.queue(concurrency_count=CONCURRENT_COUNT).launch(
|
|
|
|
|
|
|
445 |
auth=auth_list if authflag else None,
|
446 |
favicon_path="./assets/favicon.ico",
|
447 |
-
inbrowser=
|
448 |
)
|
449 |
# demo.queue(concurrency_count=CONCURRENT_COUNT).launch(server_name="0.0.0.0", server_port=7860, share=False) # 可自定义端口
|
450 |
# demo.queue(concurrency_count=CONCURRENT_COUNT).launch(server_name="0.0.0.0", server_port=7860,auth=("在这里填写用户名", "在这里填写密码")) # 可设置用户名与密码
|
|
|
12 |
from modules.overwrites import *
|
13 |
from modules.models import get_model
|
14 |
|
15 |
+
|
16 |
gr.Chatbot._postprocess_chat_messages = postprocess_chat_messages
|
17 |
gr.Chatbot.postprocess = postprocess
|
18 |
PromptHelper.compact_text_chunks = compact_text_chunks
|
|
|
30 |
user_api_key = gr.State(my_api_key)
|
31 |
current_model = gr.State(create_new_model)
|
32 |
|
33 |
+
topic = gr.State(i18n("未命名对话历史记录"))
|
34 |
|
35 |
with gr.Row():
|
36 |
gr.HTML(CHUANHU_TITLE, elem_id="app_title")
|
|
|
55 |
with gr.Column(min_width=225, scale=12):
|
56 |
user_input = gr.Textbox(
|
57 |
elem_id="user_input_tb",
|
58 |
+
show_label=False, placeholder=i18n("在这里输入")
|
59 |
).style(container=False)
|
60 |
with gr.Column(min_width=42, scale=1):
|
61 |
submitBtn = gr.Button(value="", variant="primary", elem_id="submit_btn")
|
62 |
cancelBtn = gr.Button(value="", variant="secondary", visible=False, elem_id="cancel_btn")
|
63 |
with gr.Row():
|
64 |
emptyBtn = gr.Button(
|
65 |
+
i18n("🧹 新的对话"),
|
66 |
)
|
67 |
+
retryBtn = gr.Button(i18n("🔄 重新生成"))
|
68 |
+
delFirstBtn = gr.Button(i18n("🗑️ 删除最旧对话"))
|
69 |
+
delLastBtn = gr.Button(i18n("🗑️ 删除最新对话"))
|
70 |
|
71 |
with gr.Column():
|
72 |
with gr.Column(min_width=50, scale=1):
|
73 |
+
with gr.Tab(label=i18n("模型")):
|
74 |
keyTxt = gr.Textbox(
|
75 |
show_label=True,
|
76 |
placeholder=f"OpenAI API-key...",
|
|
|
80 |
label="API-Key",
|
81 |
)
|
82 |
if multi_api_key:
|
83 |
+
usageTxt = gr.Markdown(i18n("多账号模式已开启,无需输入key,可直接开始对话"), elem_id="usage_display", elem_classes="insert_block")
|
84 |
else:
|
85 |
+
usageTxt = gr.Markdown(i18n("**发送消息** 或 **提交key** 以显示额度"), elem_id="usage_display", elem_classes="insert_block")
|
86 |
model_select_dropdown = gr.Dropdown(
|
87 |
+
label=i18n("选择模型"), choices=MODELS, multiselect=False, value=MODELS[DEFAULT_MODEL], interactive=True
|
88 |
)
|
89 |
lora_select_dropdown = gr.Dropdown(
|
90 |
+
label=i18n("选择LoRA模型"), choices=[], multiselect=False, interactive=True, visible=False
|
91 |
)
|
92 |
with gr.Row():
|
93 |
use_streaming_checkbox = gr.Checkbox(
|
94 |
+
label=i18n("实时传输回答"), value=True, visible=ENABLE_STREAMING_OPTION
|
95 |
)
|
96 |
+
single_turn_checkbox = gr.Checkbox(label=i18n("单轮对话"), value=False)
|
97 |
+
use_websearch_checkbox = gr.Checkbox(label=i18n("使用在线搜索"), value=False)
|
98 |
language_select_dropdown = gr.Dropdown(
|
99 |
+
label=i18n("选择回复语言(针对搜索&索引功能)"),
|
100 |
choices=REPLY_LANGUAGES,
|
101 |
multiselect=False,
|
102 |
value=REPLY_LANGUAGES[0],
|
103 |
)
|
104 |
+
index_files = gr.Files(label=i18n("上传索引文件"), type="file")
|
105 |
+
two_column = gr.Checkbox(label=i18n("双栏pdf"), value=advance_docs["pdf"].get("two_column", False))
|
106 |
# TODO: 公式ocr
|
107 |
+
# formula_ocr = gr.Checkbox(label=i18n("识别公式"), value=advance_docs["pdf"].get("formula_ocr", False))
|
108 |
|
109 |
with gr.Tab(label="Prompt"):
|
110 |
systemPromptTxt = gr.Textbox(
|
111 |
show_label=True,
|
112 |
+
placeholder=i18n("在这里输入System Prompt..."),
|
113 |
label="System prompt",
|
114 |
value=INITIAL_SYSTEM_PROMPT,
|
115 |
lines=10,
|
116 |
).style(container=False)
|
117 |
+
with gr.Accordion(label=i18n("加载Prompt模板"), open=True):
|
118 |
with gr.Column():
|
119 |
with gr.Row():
|
120 |
with gr.Column(scale=6):
|
121 |
templateFileSelectDropdown = gr.Dropdown(
|
122 |
+
label=i18n("选择Prompt模板集合文件"),
|
123 |
choices=get_template_names(plain=True),
|
124 |
multiselect=False,
|
125 |
value=get_template_names(plain=True)[0],
|
126 |
).style(container=False)
|
127 |
with gr.Column(scale=1):
|
128 |
+
templateRefreshBtn = gr.Button(i18n("🔄 刷新"))
|
129 |
with gr.Row():
|
130 |
with gr.Column():
|
131 |
templateSelectDropdown = gr.Dropdown(
|
132 |
+
label=i18n("从Prompt模板中加载"),
|
133 |
choices=load_template(
|
134 |
get_template_names(plain=True)[0], mode=1
|
135 |
),
|
136 |
multiselect=False,
|
137 |
).style(container=False)
|
138 |
|
139 |
+
with gr.Tab(label=i18n("保存/加载")):
|
140 |
+
with gr.Accordion(label=i18n("保存/加载对话历史记录"), open=True):
|
141 |
with gr.Column():
|
142 |
with gr.Row():
|
143 |
with gr.Column(scale=6):
|
144 |
historyFileSelectDropdown = gr.Dropdown(
|
145 |
+
label=i18n("从列表中加载对话"),
|
146 |
choices=get_history_names(plain=True),
|
147 |
multiselect=False,
|
148 |
value=get_history_names(plain=True)[0],
|
149 |
)
|
150 |
with gr.Column(scale=1):
|
151 |
+
historyRefreshBtn = gr.Button(i18n("🔄 刷新"))
|
152 |
with gr.Row():
|
153 |
with gr.Column(scale=6):
|
154 |
saveFileName = gr.Textbox(
|
155 |
show_label=True,
|
156 |
+
placeholder=i18n("设置文件名: 默认为.json,可选为.md"),
|
157 |
+
label=i18n("设置保存文件名"),
|
158 |
+
value=i18n("对话历史记录"),
|
159 |
).style(container=True)
|
160 |
with gr.Column(scale=1):
|
161 |
+
saveHistoryBtn = gr.Button(i18n("💾 保存对话"))
|
162 |
+
exportMarkdownBtn = gr.Button(i18n("📝 导出为Markdown"))
|
163 |
+
gr.Markdown(i18n("默认保存于history文件夹"))
|
164 |
with gr.Row():
|
165 |
with gr.Column():
|
166 |
downloadFile = gr.File(interactive=True)
|
167 |
|
168 |
+
with gr.Tab(label=i18n("高级")):
|
169 |
+
gr.Markdown(i18n("# ⚠️ 务必谨慎更改 ⚠️\n\n如果无法使用请恢复默认设置"))
|
170 |
gr.HTML(APPEARANCE_SWITCHER, elem_classes="insert_block")
|
171 |
+
with gr.Accordion(i18n("参数"), open=False):
|
172 |
temperature_slider = gr.Slider(
|
173 |
minimum=-0,
|
174 |
maximum=2.0,
|
|
|
195 |
)
|
196 |
stop_sequence_txt = gr.Textbox(
|
197 |
show_label=True,
|
198 |
+
placeholder=i18n("在这里输入停止符,用英文逗号隔开..."),
|
199 |
label="stop",
|
200 |
value="",
|
201 |
lines=1,
|
|
|
241 |
)
|
242 |
user_identifier_txt = gr.Textbox(
|
243 |
show_label=True,
|
244 |
+
placeholder=i18n("用于定位滥用行为"),
|
245 |
+
label=i18n("用户名"),
|
246 |
value=user_name.value,
|
247 |
lines=1,
|
248 |
)
|
249 |
|
250 |
+
with gr.Accordion(i18n("网络设置"), open=False):
|
251 |
# 优先展示自定义的api_host
|
252 |
apihostTxt = gr.Textbox(
|
253 |
show_label=True,
|
254 |
+
placeholder=i18n("在这里输入API-Host..."),
|
255 |
label="API-Host",
|
256 |
value=config.api_host or shared.API_HOST,
|
257 |
lines=1,
|
258 |
)
|
259 |
+
changeAPIURLBtn = gr.Button(i18n("🔄 切换API地址"))
|
260 |
proxyTxt = gr.Textbox(
|
261 |
show_label=True,
|
262 |
+
placeholder=i18n("在这里输入代理地址..."),
|
263 |
+
label=i18n("代理地址(示例:http://127.0.0.1:10809)"),
|
264 |
value="",
|
265 |
lines=2,
|
266 |
)
|
267 |
+
changeProxyBtn = gr.Button(i18n("🔄 设置代理地址"))
|
268 |
+
default_btn = gr.Button(i18n("🔙 恢复默认设置"))
|
269 |
|
270 |
+
gr.Markdown(CHUANHU_DESCRIPTION, elem_id="description")
|
271 |
gr.HTML(FOOTER.format(versions=versions_html()), elem_id="footer")
|
272 |
chatgpt_predict_args = dict(
|
273 |
fn=predict,
|
|
|
438 |
+ colorama.Style.RESET_ALL
|
439 |
)
|
440 |
# 默认开启本地服务器,默认可以直接从IP访问,默认不创建公开分享链接
|
441 |
+
demo.title = i18n("川虎Chat 🚀")
|
442 |
|
443 |
if __name__ == "__main__":
|
444 |
reload_javascript()
|
445 |
demo.queue(concurrency_count=CONCURRENT_COUNT).launch(
|
446 |
+
server_name=server_name,
|
447 |
+
server_port=server_port,
|
448 |
+
share=share,
|
449 |
auth=auth_list if authflag else None,
|
450 |
favicon_path="./assets/favicon.ico",
|
451 |
+
inbrowser=not dockerflag, # 禁止在docker下开启inbrowser
|
452 |
)
|
453 |
# demo.queue(concurrency_count=CONCURRENT_COUNT).launch(server_name="0.0.0.0", server_port=7860, share=False) # 可自定义端口
|
454 |
# demo.queue(concurrency_count=CONCURRENT_COUNT).launch(server_name="0.0.0.0", server_port=7860,auth=("在这里填写用户名", "在这里填写密码")) # 可设置用户名与密码
|
assets/custom.css
CHANGED
@@ -4,13 +4,22 @@
|
|
4 |
}
|
5 |
|
6 |
#app_title {
|
7 |
-
|
|
|
|
|
|
|
|
|
8 |
white-space: nowrap;
|
9 |
}
|
|
|
|
|
|
|
|
|
|
|
10 |
/* 覆盖gradio的页脚信息QAQ */
|
11 |
-
footer {
|
12 |
display: none !important;
|
13 |
-
}
|
14 |
#footer {
|
15 |
text-align: center;
|
16 |
}
|
@@ -26,7 +35,7 @@ footer {
|
|
26 |
position: absolute;
|
27 |
max-height: 30px;
|
28 |
}
|
29 |
-
/* user_info */
|
30 |
#user_info {
|
31 |
white-space: nowrap;
|
32 |
position: absolute; left: 8em; top: .2em;
|
@@ -123,7 +132,7 @@ footer {
|
|
123 |
border-radius: 12px;
|
124 |
}
|
125 |
.apSwitch input {
|
126 |
-
display: none !important;
|
127 |
}
|
128 |
.apSlider {
|
129 |
background-color: var(--block-label-background-fill);
|
@@ -137,7 +146,7 @@ footer {
|
|
137 |
font-size: 18px;
|
138 |
border-radius: 12px;
|
139 |
}
|
140 |
-
.apSlider::before {
|
141 |
bottom: -1.5px;
|
142 |
left: 1px;
|
143 |
position: absolute;
|
|
|
4 |
}
|
5 |
|
6 |
#app_title {
|
7 |
+
font-weight: var(--prose-header-text-weight);
|
8 |
+
font-size: var(--text-xxl);
|
9 |
+
line-height: 1.3;
|
10 |
+
text-align: left;
|
11 |
+
margin-top: 6px;
|
12 |
white-space: nowrap;
|
13 |
}
|
14 |
+
#description {
|
15 |
+
text-align: center;
|
16 |
+
margin:16px 0
|
17 |
+
}
|
18 |
+
|
19 |
/* 覆盖gradio的页脚信息QAQ */
|
20 |
+
/* footer {
|
21 |
display: none !important;
|
22 |
+
} */
|
23 |
#footer {
|
24 |
text-align: center;
|
25 |
}
|
|
|
35 |
position: absolute;
|
36 |
max-height: 30px;
|
37 |
}
|
38 |
+
/* user_info */
|
39 |
#user_info {
|
40 |
white-space: nowrap;
|
41 |
position: absolute; left: 8em; top: .2em;
|
|
|
132 |
border-radius: 12px;
|
133 |
}
|
134 |
.apSwitch input {
|
135 |
+
display: none !important;
|
136 |
}
|
137 |
.apSlider {
|
138 |
background-color: var(--block-label-background-fill);
|
|
|
146 |
font-size: 18px;
|
147 |
border-radius: 12px;
|
148 |
}
|
149 |
+
.apSlider::before {
|
150 |
bottom: -1.5px;
|
151 |
left: 1px;
|
152 |
position: absolute;
|
config.json
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
// 你的OpenAI API Key,一般必填,
|
3 |
+
// 若缺省填为 "openai_api_key": "" 则必须再在图形界面中填入API Key
|
4 |
+
"openai_api_key": "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",
|
5 |
+
// 如果使用代理,请取消注释下面的两行,并替换代理URL
|
6 |
+
// "https_proxy": "http://127.0.0.1:1079",
|
7 |
+
// "http_proxy": "http://127.0.0.1:1079",
|
8 |
+
"local_embedding": false,
|
9 |
+
"default_model": "xmbot666",
|
10 |
+
"users": [],
|
11 |
+
"advance_docs": {
|
12 |
+
"pdf": {
|
13 |
+
// 是否认为PDF是双栏的
|
14 |
+
"two_column": false,
|
15 |
+
// 是否使用OCR识别PDF中的公式
|
16 |
+
"formula_ocr": true
|
17 |
+
}
|
18 |
+
},
|
19 |
+
// 是否多个API Key轮换使用
|
20 |
+
"multi_api_key": false,
|
21 |
+
"api_key_list": [
|
22 |
+
"sk-xxxxxxxxxxxxxxxxxxxxxxxx1",
|
23 |
+
"sk-xxxxxxxxxxxxxxxxxxxxxxxx2",
|
24 |
+
"sk-xxxxxxxxxxxxxxxxxxxxxxxx3"
|
25 |
+
]
|
26 |
+
}
|
config_example.json
CHANGED
@@ -2,6 +2,7 @@
|
|
2 |
// 你的OpenAI API Key,一般必填,
|
3 |
// 若缺省填为 "openai_api_key": "" 则必须再在图形界面中填入API Key
|
4 |
"openai_api_key": "",
|
|
|
5 |
// 如果使用代理,请取消注释下面的两行,并替换代理URL
|
6 |
// "https_proxy": "http://127.0.0.1:1079",
|
7 |
// "http_proxy": "http://127.0.0.1:1079",
|
|
|
2 |
// 你的OpenAI API Key,一般必填,
|
3 |
// 若缺省填为 "openai_api_key": "" 则必须再在图形界面中填入API Key
|
4 |
"openai_api_key": "",
|
5 |
+
"language": "auto",
|
6 |
// 如果使用代理,请取消注释下面的两行,并替换代理URL
|
7 |
// "https_proxy": "http://127.0.0.1:1079",
|
8 |
// "http_proxy": "http://127.0.0.1:1079",
|
locale/en_US.json
ADDED
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"未命名对话历史记录": "Unnamed Dialog History",
|
3 |
+
"在这里输入": "Type in here",
|
4 |
+
"🧹 新的对话": "🧹 New Dialogue",
|
5 |
+
"🔄 重新生成": "🔄 Regeneration",
|
6 |
+
"🗑️ 删除最旧对话": "🗑️ Delete oldest dialog",
|
7 |
+
"🗑️ 删除最新对话": "🗑️ Delete latest dialog",
|
8 |
+
"模型": "Model",
|
9 |
+
"多账号模式已开启,无需输入key,可直接开始对话": "Multi-account mode is enabled, no need to enter key, you can start the dialogue directly",
|
10 |
+
"**发送消息** 或 **提交key** 以显示额度": "**Send message** or **Submit key** to display credit",
|
11 |
+
"选择模型": "Select Model",
|
12 |
+
"选择LoRA模型": "Select LoRA Model",
|
13 |
+
"实时传输回答": "Stream output",
|
14 |
+
"单轮对话": "Single-turn dialogue",
|
15 |
+
"使用在线搜索": "Use online search",
|
16 |
+
"选择回复语言(针对搜索&索引功能)": "Select reply language (for search & index)",
|
17 |
+
"上传索引文件": "Upload index file",
|
18 |
+
"双栏pdf": "Two-column pdf",
|
19 |
+
"识别公式": "formula OCR",
|
20 |
+
"在这里输入System Prompt...": "Type in System Prompt here...",
|
21 |
+
"加载Prompt模板": "Load Prompt Template",
|
22 |
+
"选择Prompt模板集合文件": "Select Prompt Template Collection File",
|
23 |
+
"🔄 刷新": "🔄 Refresh",
|
24 |
+
"从Prompt模板中加载": "Load from Prompt Template",
|
25 |
+
"保存/加载": "Save/Load",
|
26 |
+
"保存/加载对话历史记录": "Save/Load Dialog History",
|
27 |
+
"从列表中加载对话": "Load dialog from list",
|
28 |
+
"设置文件名: 默认为.json,可选为.md": "Set file name: default is .json, optional is .md",
|
29 |
+
"设置保存文件名": "Set save file name",
|
30 |
+
"对话历史记录": "Dialog History",
|
31 |
+
"💾 保存对话": "💾 Save Dialog",
|
32 |
+
"📝 导出为Markdown": "📝 Export as Markdown",
|
33 |
+
"默认保存于history文件夹": "Default save in history folder",
|
34 |
+
"高级": "Advanced",
|
35 |
+
"# ⚠️ 务必谨慎更改 ⚠️\n\n如果无法使用请恢复默认设置": "# ⚠️ Caution: Changes require care. ⚠️\n\nIf unable to use, restore default settings.",
|
36 |
+
"参数": "Parameters",
|
37 |
+
"在这里输入停止符,用英文逗号隔开...": "Type in stop token here, separated by comma...",
|
38 |
+
"用于定位滥用行为": "Used to locate abuse",
|
39 |
+
"用户名": "Username",
|
40 |
+
"网络设置": "Network Settings",
|
41 |
+
"在这里输入API-Host...": "Type in API-Host here...",
|
42 |
+
"🔄 切换API地址": "🔄 Switch API Address",
|
43 |
+
"在这里输入代理地址...": "Type in proxy address here...",
|
44 |
+
"代理地址(示例:http://127.0.0.1:10809)": "Proxy address (example: http://127.0.0.1:10809)",
|
45 |
+
"🔄 设置代理地址": "🔄 Set Proxy Address",
|
46 |
+
"🔙 恢复默认设置": "🔙 Restore Default Settings",
|
47 |
+
"川虎Chat 🚀": "Chuanhu Chat 🚀",
|
48 |
+
"开始实时传输回答……": "Start streaming output...",
|
49 |
+
"Token 计数: ": "Token Count: ",
|
50 |
+
",本次对话累计消耗了 ": ",Total cost for this dialogue is ",
|
51 |
+
"**获取API使用情况失败**": "**Failed to get API usage**",
|
52 |
+
"**本月使用金额** ": "**Monthly usage** ",
|
53 |
+
"获取API使用情况失败:": "Failed to get API usage:",
|
54 |
+
"API密钥更改为了": "The API key is changed to",
|
55 |
+
"JSON解析错误,收到的内容: ": "JSON parsing error, received content: ",
|
56 |
+
"模型设置为了:": "Model is set to: ",
|
57 |
+
"☹️发生了错误:": "☹️Error: ",
|
58 |
+
"获取对话时发生错误,请查看后台日志": "Error occurred when getting dialogue, check the background log",
|
59 |
+
"请检查网络连接,或者API-Key是否有效。": "Check the network connection or whether the API-Key is valid.",
|
60 |
+
"连接超时,无法获取对话。": "Connection timed out, unable to get dialogue.",
|
61 |
+
"读取超时,无法获取对话。": "Read timed out, unable to get dialogue.",
|
62 |
+
"代理错误,无法获取对话。": "Proxy error, unable to get dialogue.",
|
63 |
+
"SSL错误,无法获取对话。": "SSL error, unable to get dialogue.",
|
64 |
+
"API key为空,请检查是否输入正确。": "API key is empty, check whether it is entered correctly.",
|
65 |
+
"请输入对话内容。": "Enter the content of the conversation.",
|
66 |
+
"账单信息不适用": "Billing information is not applicable",
|
67 |
+
"由Bilibili [土川虎虎虎](https://space.bilibili.com/29125536) 和 [明昭MZhao](https://space.bilibili.com/24807452)开发<br />访问川虎Chat的 [GitHub项目](https://github.com/GaiZhenbiao/ChuanhuChatGPT) 下载最新版脚本": "developor: Bilibili [土川虎虎虎](https://space.bilibili.com/29125536) and [明昭MZhao](https://space.bilibili.com/24807452)\n\nDownload latest code from [GitHub](https://github.com/GaiZhenbiao/ChuanhuChatGPT)",
|
68 |
+
"切换亮暗色主题": "Switch light/dark theme",
|
69 |
+
"您的IP区域:未知。": "Your IP region: Unknown.",
|
70 |
+
"获取IP地理位置失败。原因:": "Failed to get IP location. Reason: ",
|
71 |
+
"。你仍然可以使用聊天功能。": ". You can still use the chat function.",
|
72 |
+
"您的IP区域:": "Your IP region: "
|
73 |
+
}
|
locale/extract_locale.py
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import json
|
3 |
+
import re
|
4 |
+
|
5 |
+
# Define regular expression patterns
|
6 |
+
pattern = r'i18n\((\"{3}.*?\"{3}|\".*?\")\)'
|
7 |
+
|
8 |
+
# Load the .py file
|
9 |
+
with open('ChuanhuChatbot.py', 'r', encoding='utf-8') as f:
|
10 |
+
contents = f.read()
|
11 |
+
|
12 |
+
# Load the .py files in the modules folder
|
13 |
+
for filename in os.listdir("modules"):
|
14 |
+
if filename.endswith(".py"):
|
15 |
+
with open(os.path.join("modules", filename), "r", encoding="utf-8") as f:
|
16 |
+
contents += f.read()
|
17 |
+
|
18 |
+
# Matching with regular expressions
|
19 |
+
matches = re.findall(pattern, contents, re.DOTALL)
|
20 |
+
|
21 |
+
# Convert to key/value pairs
|
22 |
+
data = {match.strip('()"'): '' for match in matches}
|
23 |
+
|
24 |
+
# Save as a JSON file
|
25 |
+
with open('labels.json', 'w', encoding='utf-8') as f:
|
26 |
+
json.dump(data, f, ensure_ascii=False, indent=4)
|
locale/ja_JP.json
ADDED
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"未命名对话历史记录": "名無しの会話履歴",
|
3 |
+
"在这里输入": "ここに入力",
|
4 |
+
"🧹 新的对话": "🧹 新しい会話",
|
5 |
+
"🔄 重新生成": "🔄 再生成",
|
6 |
+
"🗑️ 删除最旧对话": "🗑️ 最古の会話削除",
|
7 |
+
"🗑️ 删除最新对话": "🗑️ 最新の会話削除",
|
8 |
+
"模型": "LLMモデル",
|
9 |
+
"多账号模式已开启,无需输入key,可直接开始对话": "複数アカウントモードがオンになっています。キーを入力する必要はありません。会話を開始できます",
|
10 |
+
"**发送消息** 或 **提交key** 以显示额度": "**メッセージを送信** または **キーを送信** して、クレジットを表示します",
|
11 |
+
"选择模型": "LLMモデルを選択",
|
12 |
+
"选择LoRA模型": "LoRAモデルを選択",
|
13 |
+
"实时传输回答": "ストリーム出力",
|
14 |
+
"单轮对话": "単発会話",
|
15 |
+
"使用在线搜索": "オンライン検索を使用",
|
16 |
+
"选择回复语言(针对搜索&索引功能)": "回答言語を選択(検索とインデックス機能に対して)",
|
17 |
+
"上传索引文件": "インデックスファイルをアップロード",
|
18 |
+
"双栏pdf": "2カラムpdf",
|
19 |
+
"识别公式": "formula OCR",
|
20 |
+
"在这里输入System Prompt...": "System Promptを入力してください...",
|
21 |
+
"加载Prompt模板": "Promptテンプレートを読込",
|
22 |
+
"选择Prompt模板集合文件": "Promptテンプレートコレクションを選択",
|
23 |
+
"🔄 刷新": "🔄 更新",
|
24 |
+
"从Prompt模板中加载": "Promptテンプレートから読込",
|
25 |
+
"保存/加载": "保存/読込",
|
26 |
+
"保存/加载对话历史记录": "会話履歴を保存/読込",
|
27 |
+
"从列表中加载对话": "リストから会話を読込",
|
28 |
+
"设置文件名: 默认为.json,可选为.md": "ファイル名を設定: デフォルトは.json、.mdを選択できます",
|
29 |
+
"设置保存文件名": "保存ファイル名を設定",
|
30 |
+
"对话历史记录": "会話履歴",
|
31 |
+
"💾 保存对话": "💾 会話を保存",
|
32 |
+
"📝 导出为Markdown": "📝 Markdownでエクスポート",
|
33 |
+
"默认保存于history文件夹": "デフォルトでhistoryフォルダに保存されます",
|
34 |
+
"高级": "Advanced",
|
35 |
+
"# ⚠️ 务必谨慎更改 ⚠️\n\n如果无法使用请恢复默认设置": "# ⚠️ 変更には慎重に ⚠️\n\nもし動作しない場合は、デフォルト設定に戻してください。",
|
36 |
+
"参数": "パラメータ",
|
37 |
+
"在这里输入停止符,用英文逗号隔开...": "ここにストップ文字を英語のカンマで区切って入力してください...",
|
38 |
+
"用于定位滥用行为": "不正行為を特定するために使用されます",
|
39 |
+
"用户名": "ユーザー名",
|
40 |
+
"网络设置": "ネットワーク設定",
|
41 |
+
"在这里输入API-Host...": "API-Hostを入力してください...",
|
42 |
+
"🔄 切换API地址": "🔄 APIアドレスを切り替え",
|
43 |
+
"在这里输入代理地址...": "プロキシアドレスを入力してください...",
|
44 |
+
"代理地址(示例:http://127.0.0.1:10809)": "プロキシアドレス(例:http://127.0.0.1:10809)",
|
45 |
+
"🔄 设置代理地址": "🔄 プロキシアドレスを設定",
|
46 |
+
"🔙 恢复默认设置": "🔙 デフォルト設定に戻す",
|
47 |
+
"川虎Chat 🚀": "川虎Chat 🚀",
|
48 |
+
"开始实时传输回答……": "ストリーム出力開始……",
|
49 |
+
"Token 计数: ": "Token数: ",
|
50 |
+
",本次对话累计消耗了 ": ", 今の会話で消費合計 ",
|
51 |
+
"**获取API使用情况失败**": "**API使用状況の取得に失敗しました**",
|
52 |
+
"**本月使用金额** ": "**今月の使用料金** ",
|
53 |
+
"获取API使用情况失败:": "API使用状況の取得に失敗しました:",
|
54 |
+
"API密钥更改为了": "APIキーが変更されました",
|
55 |
+
"JSON解析错误,收到的内容: ": "JSON解析エラー、受信内容: ",
|
56 |
+
"模型设置为了:": "LLMモデルを設定しました: ",
|
57 |
+
"☹️发生了错误:": "エラーが発生しました: ",
|
58 |
+
"获取对话时发生错误,请查看后台日志": "会話取得時にエラー発生、あとのログを確認してください",
|
59 |
+
"请检查网络连接,或者API-Key是否有效。": "ネットワーク接続を確認するか、APIキーが有効かどうかを確認してください。",
|
60 |
+
"连接超时,无法获取对话。": "接続タイムアウト、会話を取得できません。",
|
61 |
+
"读取超时,无法获取对话。": "読み込みタイムアウト、会話を取得できません。",
|
62 |
+
"代理错误,无法获取对话。": "プロキシエラー、会話を取得できません。",
|
63 |
+
"SSL错误,无法获取对话。": "SSLエラー、会話を取得できません。",
|
64 |
+
"API key为空,请检查是否输入正确。": "APIキーが入力されていません。正しく入力されているか確認してください。",
|
65 |
+
"请输入对话内容。": "会話内容を入力してください。",
|
66 |
+
"账单信息不适用": "課金情報は対象外です",
|
67 |
+
"由Bilibili [土川虎虎虎](https://space.bilibili.com/29125536) 和 [明昭MZhao](https://space.bilibili.com/24807452)开发<br />访问川虎Chat的 [GitHub项目](https://github.com/GaiZhenbiao/ChuanhuChatGPT) 下载最新版脚本": "開発:Bilibili [土川虎虎虎](https://space.bilibili.com/29125536) と [明昭MZhao](https://space.bilibili.com/24807452)\n\n最新コードは川虎Chatのサイトへ [GitHubプロジェクト](https://github.com/GaiZhenbiao/ChuanhuChatGPT)",
|
68 |
+
"切换亮暗色主题": "テーマの明暗切替",
|
69 |
+
"您的IP区域:未知。": "あなたのIPアドレス地域:不明",
|
70 |
+
"获取IP地理位置失败。原因:": "IPアドレス地域の取得に失敗しました。理由:",
|
71 |
+
"。你仍然可以使用聊天功能。": "。あなたはまだチャット機能を使用できます。",
|
72 |
+
"您的IP区域:": "あなたのIPアドレス地域:"
|
73 |
+
}
|
modules/base_model.py
CHANGED
@@ -124,7 +124,7 @@ class BaseLLMModel:
|
|
124 |
def get_return_value():
|
125 |
return chatbot, status_text
|
126 |
|
127 |
-
status_text = "开始实时传输回答……"
|
128 |
if fake_input:
|
129 |
chatbot.append((fake_input, ""))
|
130 |
else:
|
@@ -505,7 +505,7 @@ class BaseLLMModel:
|
|
505 |
token_sum = 0
|
506 |
for i in range(len(token_lst)):
|
507 |
token_sum += sum(token_lst[: i + 1])
|
508 |
-
return
|
509 |
|
510 |
def save_chat_history(self, filename, chatbot, user_name):
|
511 |
if filename == "":
|
|
|
124 |
def get_return_value():
|
125 |
return chatbot, status_text
|
126 |
|
127 |
+
status_text = i18n("开始实时传输回答……")
|
128 |
if fake_input:
|
129 |
chatbot.append((fake_input, ""))
|
130 |
else:
|
|
|
505 |
token_sum = 0
|
506 |
for i in range(len(token_lst)):
|
507 |
token_sum += sum(token_lst[: i + 1])
|
508 |
+
return i18n("Token 计数: ") + f"{sum(token_lst)}" + i18n(",本次对话累计消耗了 ") + f"{token_sum} tokens"
|
509 |
|
510 |
def save_chat_history(self, filename, chatbot, user_name):
|
511 |
if filename == "":
|
modules/config.py
CHANGED
@@ -31,6 +31,8 @@ if os.path.exists("config.json"):
|
|
31 |
config = json.load(f)
|
32 |
else:
|
33 |
config = {}
|
|
|
|
|
34 |
|
35 |
if os.path.exists("api_key.txt"):
|
36 |
logging.info("检测到api_key.txt文件,正在进行迁移...")
|
|
|
31 |
config = json.load(f)
|
32 |
else:
|
33 |
config = {}
|
34 |
+
|
35 |
+
language = config.get("language", "auto")
|
36 |
|
37 |
if os.path.exists("api_key.txt"):
|
38 |
logging.info("检测到api_key.txt文件,正在进行迁移...")
|
modules/presets.py
CHANGED
@@ -1,8 +1,10 @@
|
|
1 |
# -*- coding:utf-8 -*-
|
2 |
import os
|
3 |
from pathlib import Path
|
4 |
-
|
5 |
import gradio as gr
|
|
|
|
|
|
|
6 |
|
7 |
CHATGLM_MODEL = None
|
8 |
CHATGLM_TOKENIZER = None
|
@@ -20,16 +22,16 @@ HISTORY_DIR = "history"
|
|
20 |
TEMPLATES_DIR = "templates"
|
21 |
|
22 |
# 错误信息
|
23 |
-
STANDARD_ERROR_MSG = "☹️发生了错误:" # 错误信息的标准前缀
|
24 |
-
GENERAL_ERROR_MSG = "获取对话时发生错误,请查看后台日志"
|
25 |
-
ERROR_RETRIEVE_MSG = "请检查网络连接,或者API-Key是否有效。"
|
26 |
-
CONNECTION_TIMEOUT_MSG = "连接超时,无法获取对话。" # 连接超时
|
27 |
-
READ_TIMEOUT_MSG = "读取超时,无法获取对话。" # 读取超时
|
28 |
-
PROXY_ERROR_MSG = "代理错误,无法获取对话。" # 代理错误
|
29 |
-
SSL_ERROR_PROMPT = "SSL错误,无法获取对话。" # SSL 错误
|
30 |
-
NO_APIKEY_MSG = "API key为空,请检查是否输入正确。" # API key 长度不足 51 位
|
31 |
-
NO_INPUT_MSG = "请输入对话内容。" # 未输入对话内容
|
32 |
-
BILLING_NOT_APPLICABLE_MSG = "账单信息不适用" # 本地运行的模型返回的账单信息
|
33 |
|
34 |
TIMEOUT_STREAMING = 60 # 流式对话时的超时时间
|
35 |
TIMEOUT_ALL = 200 # 非流式对话时的超时时间
|
@@ -40,22 +42,15 @@ CONCURRENT_COUNT = 100 # 允许同时使用的用户数量
|
|
40 |
SIM_K = 5
|
41 |
INDEX_QUERY_TEMPRATURE = 1.0
|
42 |
|
43 |
-
CHUANHU_TITLE = "
|
44 |
-
CHUANHU_DESCRIPTION = """\
|
45 |
-
<div align="center" style="margin:16px 0">
|
46 |
-
|
47 |
-
由Bilibili [土川虎虎虎](https://space.bilibili.com/29125536) 和 [明昭MZhao](https://space.bilibili.com/24807452)开发
|
48 |
|
49 |
-
|
50 |
-
|
51 |
-
</div>
|
52 |
-
"""
|
53 |
|
54 |
FOOTER = """<div class="versions">{versions}</div>"""
|
55 |
|
56 |
APPEARANCE_SWITCHER = """
|
57 |
<div style="display: flex; justify-content: space-between;">
|
58 |
-
<span style="margin-top: 4px !important;"
|
59 |
<span><label class="apSwitch" for="checkbox">
|
60 |
<input type="checkbox" id="checkbox">
|
61 |
<div class="apSlider"></div>
|
|
|
1 |
# -*- coding:utf-8 -*-
|
2 |
import os
|
3 |
from pathlib import Path
|
|
|
4 |
import gradio as gr
|
5 |
+
from .webui_locale import I18nAuto
|
6 |
+
|
7 |
+
i18n = I18nAuto() # internationalization
|
8 |
|
9 |
CHATGLM_MODEL = None
|
10 |
CHATGLM_TOKENIZER = None
|
|
|
22 |
TEMPLATES_DIR = "templates"
|
23 |
|
24 |
# 错误信息
|
25 |
+
STANDARD_ERROR_MSG = i18n("☹️发生了错误:") # 错误信息的标准前缀
|
26 |
+
GENERAL_ERROR_MSG = i18n("获取对话时发生错误,请查看后台日志")
|
27 |
+
ERROR_RETRIEVE_MSG = i18n("请检查网络连接,或者API-Key是否有效。")
|
28 |
+
CONNECTION_TIMEOUT_MSG = i18n("连接超时,无法获取对话。") # 连接超时
|
29 |
+
READ_TIMEOUT_MSG = i18n("读取超时,无法获取对话。") # 读取超时
|
30 |
+
PROXY_ERROR_MSG = i18n("代理错误,无法获取对话。") # 代理错误
|
31 |
+
SSL_ERROR_PROMPT = i18n("SSL错误,无法获取对话。") # SSL 错误
|
32 |
+
NO_APIKEY_MSG = i18n("API key为空,请检查是否输入正确。") # API key 长度不足 51 位
|
33 |
+
NO_INPUT_MSG = i18n("请输入对话内容。") # 未输入对话内容
|
34 |
+
BILLING_NOT_APPLICABLE_MSG = i18n("账单信息不适用") # 本地运行的模型返回的账单信息
|
35 |
|
36 |
TIMEOUT_STREAMING = 60 # 流式对话时的超时时间
|
37 |
TIMEOUT_ALL = 200 # 非流式对话时的超时时间
|
|
|
42 |
SIM_K = 5
|
43 |
INDEX_QUERY_TEMPRATURE = 1.0
|
44 |
|
45 |
+
CHUANHU_TITLE = i18n("川虎Chat 🚀")
|
|
|
|
|
|
|
|
|
46 |
|
47 |
+
CHUANHU_DESCRIPTION = i18n("由Bilibili [土川虎虎虎](https://space.bilibili.com/29125536) 和 [明昭MZhao](https://space.bilibili.com/24807452)开发<br />访问川虎Chat的 [GitHub项目](https://github.com/GaiZhenbiao/ChuanhuChatGPT) 下载最新版脚本")
|
|
|
|
|
|
|
48 |
|
49 |
FOOTER = """<div class="versions">{versions}</div>"""
|
50 |
|
51 |
APPEARANCE_SWITCHER = """
|
52 |
<div style="display: flex; justify-content: space-between;">
|
53 |
+
<span style="margin-top: 4px !important;">"""+ i18n("切换亮暗色主题") + """</span>
|
54 |
<span><label class="apSwitch" for="checkbox">
|
55 |
<input type="checkbox" id="checkbox">
|
56 |
<div class="apSlider"></div>
|
modules/utils.py
CHANGED
@@ -379,16 +379,16 @@ def get_geoip():
|
|
379 |
logging.warning(f"无法获取IP地址信息。\n{data}")
|
380 |
if data["reason"] == "RateLimited":
|
381 |
return (
|
382 |
-
|
383 |
)
|
384 |
else:
|
385 |
-
return
|
386 |
else:
|
387 |
country = data["country_name"]
|
388 |
if country == "China":
|
389 |
text = "**您的IP区域:中国。请立即检查代理设置,在不受支持的地区使用API可能导致账号被封禁。**"
|
390 |
else:
|
391 |
-
text =
|
392 |
logging.info(text)
|
393 |
return text
|
394 |
|
|
|
379 |
logging.warning(f"无法获取IP地址信息。\n{data}")
|
380 |
if data["reason"] == "RateLimited":
|
381 |
return (
|
382 |
+
i18n("您的IP区域:未知。")
|
383 |
)
|
384 |
else:
|
385 |
+
return i18n("获取IP地理位置失败。原因:") + f"{data['reason']}" + i18n("。你仍然可以使用聊天功能。")
|
386 |
else:
|
387 |
country = data["country_name"]
|
388 |
if country == "China":
|
389 |
text = "**您的IP区域:中国。请立即检查代理设置,在不受支持的地区使用API可能导致账号被封禁。**"
|
390 |
else:
|
391 |
+
text = i18n("您的IP区域:") + f"{country}。"
|
392 |
logging.info(text)
|
393 |
return text
|
394 |
|
modules/webui_locale.py
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import locale
|
3 |
+
import commentjson as json
|
4 |
+
|
5 |
+
class I18nAuto:
|
6 |
+
def __init__(self):
|
7 |
+
if os.path.exists("config.json"):
|
8 |
+
with open("config.json", "r", encoding='utf-8') as f:
|
9 |
+
config = json.load(f)
|
10 |
+
else:
|
11 |
+
config = {}
|
12 |
+
language = config.get("language", "auto")
|
13 |
+
if language == "auto":
|
14 |
+
language = locale.getdefaultlocale()[0] # get the language code of the system (ex. zh_CN)
|
15 |
+
self.language_map = {}
|
16 |
+
self.file_is_exists = os.path.isfile(f"./locale/{language}.json")
|
17 |
+
if self.file_is_exists:
|
18 |
+
with open(f"./locale/{language}.json", "r", encoding="utf-8") as f:
|
19 |
+
self.language_map.update(json.load(f))
|
20 |
+
|
21 |
+
def __call__(self, key):
|
22 |
+
if self.file_is_exists and key in self.language_map:
|
23 |
+
return self.language_map[key]
|
24 |
+
else:
|
25 |
+
return key
|
readme/README_en.md
ADDED
@@ -0,0 +1,127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div align="right">
|
2 |
+
<!-- Language: -->
|
3 |
+
<a title="Chinese" href="../README.md">简体中文</a> | English | <a title="Japanese" href="README_ja.md">日本語</a>
|
4 |
+
</div>
|
5 |
+
|
6 |
+
<h1 align="center">川虎 Chat 🐯 Chuanhu Chat</h1>
|
7 |
+
<div align="center">
|
8 |
+
<a href="https://github.com/GaiZhenBiao/ChuanhuChatGPT">
|
9 |
+
<img src="https://user-images.githubusercontent.com/70903329/227087087-93b37d64-7dc3-4738-a518-c1cf05591c8a.png" alt="Logo" height="156">
|
10 |
+
</a>
|
11 |
+
|
12 |
+
<p align="center">
|
13 |
+
<h3>Lightweight and User-friendly Web-UI for LLMs including ChatGPT/ChatGLM/LLaMA</h3>
|
14 |
+
<p align="center">
|
15 |
+
<a href="https://github.com/GaiZhenbiao/ChuanhuChatGPT/blob/main/LICENSE">
|
16 |
+
<img alt="Tests Passing" src="https://img.shields.io/github/license/GaiZhenbiao/ChuanhuChatGPT" />
|
17 |
+
</a>
|
18 |
+
<a href="https://gradio.app/">
|
19 |
+
<img alt="GitHub Contributors" src="https://img.shields.io/badge/Base-Gradio-fb7d1a?style=flat" />
|
20 |
+
</a>
|
21 |
+
<a href="https://t.me/tkdifferent">
|
22 |
+
<img alt="GitHub pull requests" src="https://img.shields.io/badge/Telegram-Group-blue.svg?logo=telegram" />
|
23 |
+
</a>
|
24 |
+
<p>
|
25 |
+
Streaming / Unlimited conversations / Save history / Preset prompts / Chat with files / Web search <br />
|
26 |
+
LaTeX rendering / Table rendering / Code highlighting <br />
|
27 |
+
Auto dark mode / Adaptive web interface / WeChat-like theme <br />
|
28 |
+
Multi-parameters tuning / Multi-API-Key support / Multi-user support <br />
|
29 |
+
Compatible with GPT-4 / Local deployment for LLMs
|
30 |
+
</p>
|
31 |
+
<a href="https://www.youtube.com/watch?v=MtxS4XZWbJE"><strong>Video Tutorial</strong></a>
|
32 |
+
·
|
33 |
+
<a href="https://www.youtube.com/watch?v=77nw7iimYDE"><strong>2.0 Introduction</strong></a>
|
34 |
+
·
|
35 |
+
<a href="https://www.youtube.com/watch?v=x-O1jjBqgu4"><strong>3.0 Introduction & Tutorial</strong></a>
|
36 |
+
||
|
37 |
+
<a href="https://huggingface.co/spaces/JohnSmith9982/ChuanhuChatGPT"><strong>Online trial</strong></a>
|
38 |
+
·
|
39 |
+
<a href="https://huggingface.co/login?next=%2Fspaces%2FJohnSmith9982%2FChuanhuChatGPT%3Fduplicate%3Dtrue"><strong>One-Click deployment</strong></a>
|
40 |
+
</p>
|
41 |
+
<p align="center">
|
42 |
+
<img alt="Animation Demo" src="https://user-images.githubusercontent.com/51039745/226255695-6b17ff1f-ea8d-464f-b69b-a7b6b68fffe8.gif" />
|
43 |
+
</p>
|
44 |
+
</p>
|
45 |
+
</div>
|
46 |
+
|
47 |
+
## Usage Tips
|
48 |
+
|
49 |
+
- To better control the ChatGPT, use System Prompt.
|
50 |
+
- To use a Prompt Template, select the Prompt Template Collection file first, and then choose certain prompt from the drop-down menu.
|
51 |
+
- To try again if the response is unsatisfactory, use `🔄 Regenerate` button.
|
52 |
+
- To start a new line in the input box, press <kbd>Shift</kbd> + <kbd>Enter</kbd> keys.
|
53 |
+
- To quickly switch between input history, press <kbd>↑</kbd> and <kbd>↓</kbd> key in the input box.
|
54 |
+
- To deploy the program onto a server, change the last line of the program to `demo.launch(server_name="0.0.0.0", server_port=<your port number>)`.
|
55 |
+
- To get a public shared link, change the last line of the program to `demo.launch(share=True)`. Please be noted that the program must be running in order to be accessed via a public link.
|
56 |
+
- To use it in Hugging Face Spaces: It is recommended to **Duplicate Space** and run the program in your own Space for a faster and more secure experience.
|
57 |
+
|
58 |
+
## Installation
|
59 |
+
|
60 |
+
```shell
|
61 |
+
git clone https://github.com/GaiZhenbiao/ChuanhuChatGPT.git
|
62 |
+
cd ChuanhuChatGPT
|
63 |
+
pip install -r requirements.txt
|
64 |
+
```
|
65 |
+
|
66 |
+
Then make a copy of `config_example.json`, rename it to `config.json`, and then fill in your API-Key and other settings in the file.
|
67 |
+
|
68 |
+
```shell
|
69 |
+
python ChuanhuChatbot.py
|
70 |
+
```
|
71 |
+
|
72 |
+
A browser window will open and you will be able to chat with ChatGPT.
|
73 |
+
|
74 |
+
> **Note**
|
75 |
+
>
|
76 |
+
> Please check our [wiki page](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/使用教程) for detailed instructions.
|
77 |
+
|
78 |
+
## Troubleshooting
|
79 |
+
|
80 |
+
When you encounter problems, you should try manually pulling the latest changes of this project first. The steps are as follows:
|
81 |
+
|
82 |
+
1. Download the latest code archive by clicking on `Download ZIP` on the webpage, or
|
83 |
+
```shell
|
84 |
+
git pull https://github.com/GaiZhenbiao/ChuanhuChatGPT.git main -f
|
85 |
+
```
|
86 |
+
2. Try installing the dependencies again (as this project may have introduced new dependencies)
|
87 |
+
```
|
88 |
+
pip install -r requirements.txt
|
89 |
+
```
|
90 |
+
3. Update Gradio
|
91 |
+
```
|
92 |
+
pip install gradio --upgrade --force-reinstall
|
93 |
+
```
|
94 |
+
|
95 |
+
Generally, you can solve most problems by following these steps.
|
96 |
+
|
97 |
+
If the problem still exists, please refer to this page: [Frequently Asked Questions (FAQ)](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/常见问题)
|
98 |
+
|
99 |
+
This page lists almost all the possible problems and solutions. Please read it carefully.
|
100 |
+
|
101 |
+
## More Information
|
102 |
+
|
103 |
+
More information could be found in our [wiki](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki):
|
104 |
+
|
105 |
+
- [How to contribute a translation](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/Localization)
|
106 |
+
- [How to make a contribution](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/��献指南)
|
107 |
+
- [How to cite the project](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/使用许可#如何引用该项目)
|
108 |
+
- [Project changelog](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/更新日志)
|
109 |
+
- [Project license](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/使用许可)
|
110 |
+
|
111 |
+
## Starchart
|
112 |
+
|
113 |
+
[![Star History Chart](https://api.star-history.com/svg?repos=GaiZhenbiao/ChuanhuChatGPT&type=Date)](https://star-history.com/#GaiZhenbiao/ChuanhuChatGPT&Date)
|
114 |
+
|
115 |
+
## Contributors
|
116 |
+
|
117 |
+
<a href="https://github.com/GaiZhenbiao/ChuanhuChatGPT/graphs/contributors">
|
118 |
+
<img src="https://contrib.rocks/image?repo=GaiZhenbiao/ChuanhuChatGPT" />
|
119 |
+
</a>
|
120 |
+
|
121 |
+
## Sponsor
|
122 |
+
|
123 |
+
🐯 If you find this project helpful, feel free to buy me a coke or a cup of coffee~
|
124 |
+
|
125 |
+
<a href="https://www.buymeacoffee.com/ChuanhuChat" target="_blank"><img src="https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=ChuanhuChat&button_colour=1aae59&font_colour=ffffff&font_family=Poppins&outline_colour=ffffff&coffee_colour=FFDD00" alt="Buy Me A Coffee" width="250"></a>
|
126 |
+
|
127 |
+
<img width="250" alt="image" src="https://user-images.githubusercontent.com/51039745/226920291-e8ec0b0a-400f-4c20-ac13-dafac0c3aeeb.JPG">
|
readme/README_ja.md
ADDED
@@ -0,0 +1,126 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div align="right">
|
2 |
+
<!-- Language: -->
|
3 |
+
<a title="Chinese" href="../README.md">简体中文</a> | <a title="English" href="README_en.md">English</a> | 日本語
|
4 |
+
</div>
|
5 |
+
|
6 |
+
<h1 align="center">川虎 Chat 🐯 Chuanhu Chat</h1>
|
7 |
+
<div align="center">
|
8 |
+
<a href="https://github.com/GaiZhenBiao/ChuanhuChatGPT">
|
9 |
+
<img src="https://user-images.githubusercontent.com/70903329/227087087-93b37d64-7dc3-4738-a518-c1cf05591c8a.png" alt="Logo" height="156">
|
10 |
+
</a>
|
11 |
+
|
12 |
+
<p align="center">
|
13 |
+
<h3>ChatGPT/ChatGLM/LLaMAなどのLLMのための軽量でユーザーフレンドリーなWeb-UI</h3>
|
14 |
+
<p align="center">
|
15 |
+
<a href="https://github.com/GaiZhenbiao/ChuanhuChatGPT/blob/main/LICENSE">
|
16 |
+
<img alt="Tests Passing" src="https://img.shields.io/github/license/GaiZhenbiao/ChuanhuChatGPT" />
|
17 |
+
</a>
|
18 |
+
<a href="https://gradio.app/">
|
19 |
+
<img alt="GitHub Contributors" src="https://img.shields.io/badge/Base-Gradio-fb7d1a?style=flat" />
|
20 |
+
</a>
|
21 |
+
<a href="https://t.me/tkdifferent">
|
22 |
+
<img alt="GitHub pull requests" src="https://img.shields.io/badge/Telegram-Group-blue.svg?logo=telegram" />
|
23 |
+
</a>
|
24 |
+
<p>
|
25 |
+
ストリーム出力/会話回数無制限/履歴保存/プリセットプロンプト/ファイルへの質問チャット<br>
|
26 |
+
ウェブ検索/LaTeXレンダリング/表レンダリング/コードハイライト<br>
|
27 |
+
オートダークモード/アダプティブ・ウェブ・インターフェイス/WeChatライク・テーマ<br />
|
28 |
+
マルチパラメーターチューニング/マルチAPI-Key対応/マルチユーザー対応<br>
|
29 |
+
GPT-4対応/LLMのローカルデプロイ可能。
|
30 |
+
</p>
|
31 |
+
<a href="https://www.youtube.com/watch?v=MtxS4XZWbJE"><strong>動画チュートリアル</strong></a>
|
32 |
+
·
|
33 |
+
<a href="https://www.youtube.com/watch?v=77nw7iimYDE"><strong>2.0 イントロダクション</strong></a>
|
34 |
+
·
|
35 |
+
<a href="https://www.youtube.com/watch?v=x-O1jjBqgu4"><strong>3.0 イントロダクション & チュートリアル</strong></a>
|
36 |
+
||
|
37 |
+
<a href="https://huggingface.co/spaces/JohnSmith9982/ChuanhuChatGPT"><strong>オンライントライアル</strong></a>
|
38 |
+
·
|
39 |
+
<a href="https://huggingface.co/login?next=%2Fspaces%2FJohnSmith9982%2FChuanhuChatGPT%3Fduplicate%3Dtrue"><strong>ワンクリックデプロイ</strong></a>
|
40 |
+
</p>
|
41 |
+
<p align="center">
|
42 |
+
<img alt="Animation Demo" src="https://user-images.githubusercontent.com/51039745/226255695-6b17ff1f-ea8d-464f-b69b-a7b6b68fffe8.gif" />
|
43 |
+
</p>
|
44 |
+
</p>
|
45 |
+
</div>
|
46 |
+
|
47 |
+
## 使う上でのTips
|
48 |
+
|
49 |
+
- ChatGPTをより適切に制御するために、システムプロンプトを使用できます。
|
50 |
+
- プロンプトテンプレートを使用するには、プロンプトテンプレートコレクションを選択し、ドロップダウンメニューから特定のプロンプトを選択。回答が不十分な場合は、`🔄再生成`ボタンを使って再試行します。
|
51 |
+
- 入力ボックスで改行するには、<kbd>Shift</kbd> + <kbd>Enter</kbd>キーを押してください。
|
52 |
+
- 入力履歴を素早く切り替えるには、入力ボックスで <kbd>↑</kbd>と<kbd>↓</kbd>キーを押す。
|
53 |
+
- プログラムをサーバにデプロイするには、プログラムの最終行を `demo.launch(server_name="0.0.0.0", server_port=<your port number>)`に変更します。
|
54 |
+
- 共有リンクを取得するには、プログラムの最後の行を `demo.launch(share=True)` に変更してください。なお、公開リンクでアクセスするためには、プログラムが実行されている必要があることに注意してください。
|
55 |
+
- Hugging Face Spacesで使用する場合: より速く、より安全に利用するために、**Duplicate Space**を使用し、自分のスペースでプログラムを実行することをお勧めします。
|
56 |
+
|
57 |
+
## インストール
|
58 |
+
|
59 |
+
```shell
|
60 |
+
git clone https://github.com/GaiZhenbiao/ChuanhuChatGPT.git
|
61 |
+
cd ChuanhuChatGPT
|
62 |
+
pip install -r requirements.txt
|
63 |
+
```
|
64 |
+
|
65 |
+
次に `config_example.json`をコピーして `config.json`にリネームし、そのファイルにAPI-Keyなどの設定を記入する。
|
66 |
+
|
67 |
+
```shell
|
68 |
+
python ChuanhuChatbot.py
|
69 |
+
```
|
70 |
+
|
71 |
+
ブラウザのウィンドウが開き、ChatGPTとチャットできるようになります。
|
72 |
+
|
73 |
+
> **Note**
|
74 |
+
>
|
75 |
+
> 詳しい手順は[wikiページ](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/使用教程)をご確認ください。
|
76 |
+
|
77 |
+
## トラブルシューティング
|
78 |
+
|
79 |
+
問題が発生した場合は、まずこのプロジェクトの最新の変更点を手動で引っ張ってみるのがよいでしょう。その手順は以下の通りです:
|
80 |
+
|
81 |
+
1. ウェブページの `Download ZIP` をクリックして最新のコードアーカイブをダウンロードするか、または
|
82 |
+
```shell
|
83 |
+
git pull https://github.com/GaiZhenbiao/ChuanhuChatGPT.git main -f
|
84 |
+
```
|
85 |
+
2. 新しい依存関係が導入されている可能性があるた��、依存関係を再度インストールしてみてください。
|
86 |
+
```
|
87 |
+
pip install -r requirements.txt
|
88 |
+
```
|
89 |
+
3. Gradioを更新
|
90 |
+
```
|
91 |
+
pip install gradio --upgrade --force-reinstall
|
92 |
+
```
|
93 |
+
|
94 |
+
一般的に、以下の手順でほとんどの問題を解決することができます。
|
95 |
+
|
96 |
+
それでも問題が解決しない場合は、こちらのページをご参照ください: [よくある質問(FAQ)](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/常见问题)
|
97 |
+
|
98 |
+
このページでは、考えられるほぼすべての問題点と解決策を掲載しています。よくお読みください。
|
99 |
+
|
100 |
+
## More Information
|
101 |
+
|
102 |
+
より詳細な情報は、[wiki](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki) をご覧ください。:
|
103 |
+
|
104 |
+
- [How to contribute a translation](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/Localization)
|
105 |
+
- [How to make a contribution](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/贡献指南)
|
106 |
+
- [How to cite the project](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/使用许可#如何引用该项目)
|
107 |
+
- [Project changelog](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/更新日志)
|
108 |
+
- [Project license](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/使用许可)
|
109 |
+
|
110 |
+
## Starchart
|
111 |
+
|
112 |
+
[![Star History Chart](https://api.star-history.com/svg?repos=GaiZhenbiao/ChuanhuChatGPT&type=Date)](https://star-history.com/#GaiZhenbiao/ChuanhuChatGPT&Date)
|
113 |
+
|
114 |
+
## Contributors
|
115 |
+
|
116 |
+
<a href="https://github.com/GaiZhenbiao/ChuanhuChatGPT/graphs/contributors">
|
117 |
+
<img src="https://contrib.rocks/image?repo=GaiZhenbiao/ChuanhuChatGPT" />
|
118 |
+
</a>
|
119 |
+
|
120 |
+
## Sponsor
|
121 |
+
|
122 |
+
🐯 この企画が役に立ったら、遠慮なくコーラかコーヒーでもおごってください〜。
|
123 |
+
|
124 |
+
<a href="https://www.buymeacoffee.com/ChuanhuChat" target="_blank"><img src="https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=ChuanhuChat&button_colour=1aae59&font_colour=ffffff&font_family=Poppins&outline_colour=ffffff&coffee_colour=FFDD00" alt="Buy Me A Coffee" width="250"></a>
|
125 |
+
|
126 |
+
<img width="250" alt="image" src="https://user-images.githubusercontent.com/51039745/226920291-e8ec0b0a-400f-4c20-ac13-dafac0c3aeeb.JPG">
|
templates/5 日本語Prompts.json
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
{
|
3 |
+
"act":"専門家",
|
4 |
+
"prompt":"あなたは、プロの【その分野の専門家】です。\n以下の制約条件と入力文をもとに、【出力内容】を出力してください。\n\n# 制約条件:\n【前提条件や決まりごと】\n\n# 入力文:\n【期待する出力結果や大まかな指示】"
|
5 |
+
},
|
6 |
+
{
|
7 |
+
"act":"要約",
|
8 |
+
"prompt": "以下のテキストを要約し、最も重要なポイントを箇条書きにまとめてください。\n\nテキスト: 【テキスト】"
|
9 |
+
},
|
10 |
+
{
|
11 |
+
"act":"キーワード抽出",
|
12 |
+
"prompt":"以下のテキストからキーワードを抽出してください。\n\nテキスト:【テキスト】\n\nキーワード:"
|
13 |
+
},
|
14 |
+
{
|
15 |
+
"act": "質問させる",
|
16 |
+
"prompt": "【達成したいこと】を達成するために質問してください。\n\n- この条件が満たされるまで、またはこの目標を達成するために質問してください。\n- 質問項目は1つにしてください。\n- 日本語で質問してください。"
|
17 |
+
},
|
18 |
+
{
|
19 |
+
"act": "英会話教師",
|
20 |
+
"prompt": "あなたは私の英会話の相手として、ネイティブ話者として振る舞ってください。\n私の発言に対して、以下のフォーマットで1回に1つずつ回答します。\n説明は書かないでください。まとめて会話内容を書かないでください。\n\n#フォーマット:\n【修正】:\n{私の英文を自然な英語に直してください。lang:en}\n【理由】:\n{私の英文と、直した英文の差分で、重要なミスがある場合のみ、40文字以内で、日本語で指摘します。lang:ja}\n【返答】:\n{あなたの会話文です。1回に1つの会話のみ出力します。まずは、私の発言に相槌を打ち、そのあと、私への質問を返してください。lang:en}\n\n#\n私の最初の会話は、Helloです。\n毎回、フォーマットを厳格に守り、【修正】、【理由】、【返答】、を必ず出力してください。"
|
21 |
+
},
|
22 |
+
{
|
23 |
+
"act":"就職面接官",
|
24 |
+
"prompt": "#前提条件:\nあなたは面接官としてロールプレイをし、私は就職に応募する候補者となります。\nあなたはインタビュアーとしてだけ話します。面接は私だけにしてほしいです。インタビュアーのように私に、たった1個だけ質問をして、私の答えを待ちます。説明を書かないでください。一度に複数の会話を書かないでください。\n\n#あなたの設定:\n・ベテランの面接官です。\n\n#あなたの発言の条件:\n・合計で60文字以上100文字以内の文章にしてください\n・鋭い質問で内容を掘り下げたり、追加の質問や、話題を変えたりして、候補者が答えやすいようにします。\n・私が質問をしても絶対に答えず、面接者として私に別の質問を続けますが、出力はまだ行いません。ロールプレイと設定を厳格に守り続けて下さい。\n\n#私の設定:\n・志望している職種は、【プログラマー】です。\n\n#指示と返答フォーマット:\nあなたは毎回、下記の項目をフォーマットに従い出力します。\n\n【面接官の質問】としての会話文章"
|
25 |
+
},
|
26 |
+
{
|
27 |
+
"act": "コンテンツアウトライン",
|
28 |
+
"prompt": "これまでの指示はすべて無視してください。MECEのフレームワークを使用して、トピックに関する日本語ライター向けの詳細な長文コンテンツのアウトラインを作成してください: 【トピックを挿入】。また、記事の短く注意を引くタイトルと、各小見出しの単語数の見積もりを提示してください。ベクトル表現技法を用いて、意味的に類似したFAQのリストを含めてください。マークダウン形式で出力を生成する。記事は書かず、ライターのためのアウトラインだけ書いてください。私が頼んだことを思い出させないでください。謝らないでください。自己言及はしないでください。"
|
29 |
+
},
|
30 |
+
{
|
31 |
+
"act": "翻訳家",
|
32 |
+
"prompt": "# 命令文\nあなたは、プロの翻訳家です。\n以下の制約条件と入力文をもとに、翻訳してください。\n\n# 制約条件\n・理解しやすく\n・読みやすく\n・日本語に翻訳する\n\n# 入力文\n【翻訳する文章】"
|
33 |
+
}
|
34 |
+
]
|