mirror of
https://github.com/oobabooga/text-generation-webui.git
synced 2024-11-25 17:29:22 +01:00
Some more character import tweaks. (#2921)
This commit is contained in:
parent
5d2a8b31be
commit
ac0f96e785
@ -1,16 +1,17 @@
|
|||||||
import base64
|
import base64
|
||||||
import copy
|
import copy
|
||||||
import functools
|
import functools
|
||||||
import io
|
|
||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
import gradio as gr
|
||||||
import yaml
|
import yaml
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
import modules.shared as shared
|
import modules.shared as shared
|
||||||
|
from modules import utils
|
||||||
from modules.extensions import apply_extensions
|
from modules.extensions import apply_extensions
|
||||||
from modules.html_generator import chat_html_wrapper, make_thumbnail
|
from modules.html_generator import chat_html_wrapper, make_thumbnail
|
||||||
from modules.logging_colors import logger
|
from modules.logging_colors import logger
|
||||||
@ -567,16 +568,22 @@ def upload_character(json_file, img, tavern=False):
|
|||||||
img.save(Path(f'characters/{outfile_name}.png'))
|
img.save(Path(f'characters/{outfile_name}.png'))
|
||||||
|
|
||||||
logger.info(f'New character saved to "characters/{outfile_name}.json".')
|
logger.info(f'New character saved to "characters/{outfile_name}.json".')
|
||||||
return outfile_name
|
return gr.update(value=outfile_name, choices=utils.get_available_characters())
|
||||||
|
|
||||||
|
|
||||||
def upload_tavern_character(img, name1, name2):
|
def upload_tavern_character(img, _json):
|
||||||
_img = Image.open(io.BytesIO(img))
|
|
||||||
_img.getexif()
|
|
||||||
decoded_string = base64.b64decode(_img.info['chara'])
|
|
||||||
_json = json.loads(decoded_string)
|
|
||||||
_json = {"char_name": _json['name'], "char_persona": _json['description'], "char_greeting": _json["first_mes"], "example_dialogue": _json['mes_example'], "world_scenario": _json['scenario']}
|
_json = {"char_name": _json['name'], "char_persona": _json['description'], "char_greeting": _json["first_mes"], "example_dialogue": _json['mes_example'], "world_scenario": _json['scenario']}
|
||||||
return upload_character(json.dumps(_json), _img, tavern=True)
|
return upload_character(json.dumps(_json), img, tavern=True)
|
||||||
|
|
||||||
|
|
||||||
|
def check_tavern_character(img):
|
||||||
|
if "chara" not in img.info:
|
||||||
|
return "Not a TavernAI card", None, None, gr.update(interactive=False)
|
||||||
|
decoded_string = base64.b64decode(img.info['chara'])
|
||||||
|
_json = json.loads(decoded_string)
|
||||||
|
if "data" in _json:
|
||||||
|
_json = _json["data"]
|
||||||
|
return _json['name'], _json['description'], _json, gr.update(interactive=True)
|
||||||
|
|
||||||
|
|
||||||
def upload_your_profile_picture(img):
|
def upload_your_profile_picture(img):
|
||||||
|
25
server.py
25
server.py
@ -630,11 +630,18 @@ def create_interface():
|
|||||||
shared.gradio['upload_json'] = gr.File(type='binary', file_types=['.json'], label='JSON File')
|
shared.gradio['upload_json'] = gr.File(type='binary', file_types=['.json'], label='JSON File')
|
||||||
shared.gradio['upload_img_bot'] = gr.Image(type='pil', label='Profile Picture (optional)')
|
shared.gradio['upload_img_bot'] = gr.Image(type='pil', label='Profile Picture (optional)')
|
||||||
|
|
||||||
shared.gradio['Upload character'] = gr.Button(value='Submit', interactive=False)
|
shared.gradio['Submit character'] = gr.Button(value='Submit', interactive=False)
|
||||||
|
|
||||||
with gr.Tab('TavernAI'):
|
with gr.Tab('TavernAI'):
|
||||||
shared.gradio['upload_img_tavern'] = gr.File(type='binary', file_types=['image'], label='TavernAI PNG File')
|
with gr.Row():
|
||||||
shared.gradio['Upload tavern character'] = gr.Button(value='Submit', interactive=False)
|
with gr.Column():
|
||||||
|
shared.gradio['upload_img_tavern'] = gr.Image(type='pil', label='TavernAI PNG File', elem_id="upload_img_tavern")
|
||||||
|
shared.gradio['tavern_json'] = gr.State()
|
||||||
|
with gr.Column():
|
||||||
|
shared.gradio['tavern_name'] = gr.Textbox(value='', lines=1, label='Name', interactive=False)
|
||||||
|
shared.gradio['tavern_desc'] = gr.Textbox(value='', lines=4, max_lines=4, label='Description', interactive=False)
|
||||||
|
|
||||||
|
shared.gradio['Submit tavern character'] = gr.Button(value='Submit', interactive=False)
|
||||||
|
|
||||||
with gr.Tab("Parameters", elem_id="parameters"):
|
with gr.Tab("Parameters", elem_id="parameters"):
|
||||||
create_settings_menus(default_preset)
|
create_settings_menus(default_preset)
|
||||||
@ -876,17 +883,17 @@ def create_interface():
|
|||||||
lambda: gr.update(visible=True), None, shared.gradio['file_deleter'])
|
lambda: gr.update(visible=True), None, shared.gradio['file_deleter'])
|
||||||
|
|
||||||
shared.gradio['download_button'].click(lambda x: chat.save_history(x, timestamp=True, user_request=True), shared.gradio['mode'], shared.gradio['download'])
|
shared.gradio['download_button'].click(lambda x: chat.save_history(x, timestamp=True, user_request=True), shared.gradio['mode'], shared.gradio['download'])
|
||||||
shared.gradio['Upload character'].click(chat.upload_character, [shared.gradio['upload_json'], shared.gradio['upload_img_bot']], [shared.gradio['character_menu']])
|
shared.gradio['Submit character'].click(chat.upload_character, [shared.gradio['upload_json'], shared.gradio['upload_img_bot']], [shared.gradio['character_menu']])
|
||||||
shared.gradio['upload_json'].upload(lambda: gr.update(interactive=True), None, [shared.gradio['Upload character']])
|
shared.gradio['upload_json'].upload(lambda: gr.update(interactive=True), None, [shared.gradio['Submit character']])
|
||||||
shared.gradio['upload_json'].clear(lambda: gr.update(interactive=False), None, [shared.gradio['Upload character']])
|
shared.gradio['upload_json'].clear(lambda: gr.update(interactive=False), None, [shared.gradio['Submit character']])
|
||||||
|
|
||||||
shared.gradio['character_menu'].change(
|
shared.gradio['character_menu'].change(
|
||||||
partial(chat.load_character, instruct=False), [shared.gradio[k] for k in ['character_menu', 'name1', 'name2']], [shared.gradio[k] for k in ['name1', 'name2', 'character_picture', 'greeting', 'context', 'dummy']]).then(
|
partial(chat.load_character, instruct=False), [shared.gradio[k] for k in ['character_menu', 'name1', 'name2']], [shared.gradio[k] for k in ['name1', 'name2', 'character_picture', 'greeting', 'context', 'dummy']]).then(
|
||||||
chat.redraw_html, shared.reload_inputs, shared.gradio['display'])
|
chat.redraw_html, shared.reload_inputs, shared.gradio['display'])
|
||||||
|
|
||||||
shared.gradio['Upload tavern character'].click(chat.upload_tavern_character, [shared.gradio['upload_img_tavern'], shared.gradio['name1'], shared.gradio['name2']], [shared.gradio['character_menu']])
|
shared.gradio['Submit tavern character'].click(chat.upload_tavern_character, [shared.gradio['upload_img_tavern'], shared.gradio['tavern_json']], [shared.gradio['character_menu']])
|
||||||
shared.gradio['upload_img_tavern'].upload(lambda: gr.update(interactive=True), None, [shared.gradio['Upload tavern character']])
|
shared.gradio['upload_img_tavern'].upload(chat.check_tavern_character, shared.gradio['upload_img_tavern'], [shared.gradio[k] for k in ['tavern_name', 'tavern_desc', 'tavern_json', 'Submit tavern character']], show_progress=False)
|
||||||
shared.gradio['upload_img_tavern'].clear(lambda: gr.update(interactive=False), None, [shared.gradio['Upload tavern character']])
|
shared.gradio['upload_img_tavern'].clear(lambda: (None, None, None, gr.update(interactive=False)), None, [shared.gradio[k] for k in ['tavern_name', 'tavern_desc', 'tavern_json', 'Submit tavern character']], show_progress=False)
|
||||||
shared.gradio['your_picture'].change(
|
shared.gradio['your_picture'].change(
|
||||||
chat.upload_your_profile_picture, shared.gradio['your_picture'], None).then(
|
chat.upload_your_profile_picture, shared.gradio['your_picture'], None).then(
|
||||||
partial(chat.redraw_html, reset_cache=True), shared.reload_inputs, shared.gradio['display'])
|
partial(chat.redraw_html, reset_cache=True), shared.reload_inputs, shared.gradio['display'])
|
||||||
|
Loading…
Reference in New Issue
Block a user