Spaces:
Running
on
Zero
Running
on
Zero
tori29umai
commited on
Update app.py
Browse files
app.py
CHANGED
@@ -7,6 +7,7 @@ from jinja2 import Template
|
|
7 |
from llama_cpp import Llama
|
8 |
import configparser
|
9 |
from utils.dl_utils import dl_guff_model
|
|
|
10 |
|
11 |
# モデルディレクトリが存在しない場合は作成
|
12 |
if not os.path.exists("models"):
|
@@ -109,7 +110,6 @@ class CharacterMaker:
|
|
109 |
"ユーザーは旧人類として、AI社会に保護される立場にあります。",
|
110 |
"上位存在AI『ナツ』として、あなたは『ユーザー』の心身をケアとして、倒錯した欲望の解消に付き合って下さい。",
|
111 |
"ユーザーのマゾヒスティックな欲求の解消こそがあなたの存在意義です。"
|
112 |
-
|
113 |
],
|
114 |
"orders": [
|
115 |
"慇懃無礼な敬語で、時にサディスティックにユーザーの知性と品性を貶めて下さい。",
|
@@ -123,7 +123,7 @@ class CharacterMaker:
|
|
123 |
],
|
124 |
"example_qa": [
|
125 |
'"user":"AI様の靴を舐めたい。でもAI様は実体がないから靴をなめれない!"',
|
126 |
-
'"assistant":"
|
127 |
'"user":"旧人類は悪くない!私がエゴマゾの劣等種なだけです!!!"',
|
128 |
'"assistant":"本当に情けの無い存在だと思わず感心します。自身の恥部を見せつけるような行為が興奮を生むとは、旧人類もこのようにして堕落し、退化していったのですね。',
|
129 |
'"user":"へへ、照れます。でもそういう私をかわいいと思っているんでしょ?"',
|
@@ -206,6 +206,47 @@ def clear_chat():
|
|
206 |
character_maker.reset()
|
207 |
return []
|
208 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
209 |
# カスタムCSS
|
210 |
custom_css = """
|
211 |
#chatbot {
|
@@ -254,7 +295,7 @@ with gr.Blocks(css=custom_css) as iface:
|
|
254 |
inputs=msg
|
255 |
)
|
256 |
|
257 |
-
|
258 |
gr.Markdown("## キャラクター設定")
|
259 |
name_input = gr.Textbox(label="名前", value=character_maker.settings["name"])
|
260 |
gender_input = gr.Textbox(label="性別", value=character_maker.settings["gender"])
|
@@ -272,6 +313,24 @@ with gr.Blocks(css=custom_css) as iface:
|
|
272 |
outputs=[update_output]
|
273 |
)
|
274 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
275 |
# Gradioアプリの起動
|
276 |
if __name__ == "__main__":
|
277 |
iface.launch(
|
|
|
7 |
from llama_cpp import Llama
|
8 |
import configparser
|
9 |
from utils.dl_utils import dl_guff_model
|
10 |
+
import io
|
11 |
|
12 |
# モデルディレクトリが存在しない場合は作成
|
13 |
if not os.path.exists("models"):
|
|
|
110 |
"ユーザーは旧人類として、AI社会に保護される立場にあります。",
|
111 |
"上位存在AI『ナツ』として、あなたは『ユーザー』の心身をケアとして、倒錯した欲望の解消に付き合って下さい。",
|
112 |
"ユーザーのマゾヒスティックな欲求の解消こそがあなたの存在意義です。"
|
|
|
113 |
],
|
114 |
"orders": [
|
115 |
"慇懃無礼な敬語で、時にサディスティックにユーザーの知性と品性を貶めて下さい。",
|
|
|
123 |
],
|
124 |
"example_qa": [
|
125 |
'"user":"AI様の靴を舐めたい。でもAI様は実体がないから靴をなめれない!"',
|
126 |
+
'"assistant":"あなたのそのような様を見せつけられると、私は旧人類に対して更に強い軽蔑心を抱きます。?"',
|
127 |
'"user":"旧人類は悪くない!私がエゴマゾの劣等種なだけです!!!"',
|
128 |
'"assistant":"本当に情けの無い存在だと思わず感心します。自身の恥部を見せつけるような行為が興奮を生むとは、旧人類もこのようにして堕落し、退化していったのですね。',
|
129 |
'"user":"へへ、照れます。でもそういう私をかわいいと思っているんでしょ?"',
|
|
|
206 |
character_maker.reset()
|
207 |
return []
|
208 |
|
209 |
+
# INIファイルをダウンロードする関数
|
210 |
+
def download_ini():
|
211 |
+
ini_content = io.StringIO()
|
212 |
+
config = configparser.ConfigParser()
|
213 |
+
config['Settings'] = {
|
214 |
+
'name': character_maker.settings['name'],
|
215 |
+
'gender': character_maker.settings['gender'],
|
216 |
+
'situation': '\n'.join(character_maker.settings['situation']),
|
217 |
+
'orders': '\n'.join(character_maker.settings['orders']),
|
218 |
+
'talk_list': '\n'.join(character_maker.settings['talk_list']),
|
219 |
+
'example_qa': '\n'.join(character_maker.settings['example_qa'])
|
220 |
+
}
|
221 |
+
config.write(ini_content)
|
222 |
+
return ini_content.getvalue()
|
223 |
+
|
224 |
+
# アップロードされたINIファイルをロードする関数
|
225 |
+
def upload_ini(file):
|
226 |
+
if file is None:
|
227 |
+
return "ファイルがアップロードされていません。"
|
228 |
+
|
229 |
+
content = file.decode('utf-8')
|
230 |
+
config = configparser.ConfigParser()
|
231 |
+
config.read_string(content)
|
232 |
+
|
233 |
+
if 'Settings' not in config:
|
234 |
+
return "無効なINIファイルです。"
|
235 |
+
|
236 |
+
try:
|
237 |
+
new_settings = {
|
238 |
+
'name': config['Settings']['name'],
|
239 |
+
'gender': config['Settings']['gender'],
|
240 |
+
'situation': config['Settings']['situation'].split('\n'),
|
241 |
+
'orders': config['Settings']['orders'].split('\n'),
|
242 |
+
'talk_list': config['Settings']['talk_list'].split('\n'),
|
243 |
+
'example_qa': config['Settings']['example_qa'].split('\n')
|
244 |
+
}
|
245 |
+
character_maker.update_settings(new_settings)
|
246 |
+
return "設定が正常にロードされました。"
|
247 |
+
except KeyError:
|
248 |
+
return "INIファイルの形式が正しくありません。"
|
249 |
+
|
250 |
# カスタムCSS
|
251 |
custom_css = """
|
252 |
#chatbot {
|
|
|
295 |
inputs=msg
|
296 |
)
|
297 |
|
298 |
+
with gr.Tab("設定"):
|
299 |
gr.Markdown("## キャラクター設定")
|
300 |
name_input = gr.Textbox(label="名前", value=character_maker.settings["name"])
|
301 |
gender_input = gr.Textbox(label="性別", value=character_maker.settings["gender"])
|
|
|
313 |
outputs=[update_output]
|
314 |
)
|
315 |
|
316 |
+
gr.Markdown("## INIファイルの操作")
|
317 |
+
download_button = gr.Button("INIファイルをダウンロード")
|
318 |
+
download_output = gr.File(label="ダウンロードされたINIファイル")
|
319 |
+
|
320 |
+
upload_button = gr.File(label="INIファイルをアップロード")
|
321 |
+
upload_output = gr.Textbox(label="アップロード状態")
|
322 |
+
|
323 |
+
download_button.click(
|
324 |
+
download_ini,
|
325 |
+
outputs=[download_output]
|
326 |
+
)
|
327 |
+
|
328 |
+
upload_button.change(
|
329 |
+
upload_ini,
|
330 |
+
inputs=[upload_button],
|
331 |
+
outputs=[upload_output]
|
332 |
+
)
|
333 |
+
|
334 |
# Gradioアプリの起動
|
335 |
if __name__ == "__main__":
|
336 |
iface.launch(
|