| | from toolbox import get_conf |
| | from toolbox import set_conf |
| | from toolbox import set_multi_conf |
| | from toolbox import get_plugin_handle |
| | from toolbox import get_plugin_default_kwargs |
| | from toolbox import get_chat_handle |
| | from toolbox import get_chat_default_kwargs |
| | from functools import wraps |
| | import sys |
| | import os |
| |
|
| | def chat_to_markdown_str(chat): |
| | result = "" |
| | for i, cc in enumerate(chat): |
| | result += f'\n\n{cc[0]}\n\n{cc[1]}' |
| | if i != len(chat)-1: |
| | result += '\n\n---' |
| | return result |
| |
|
| | def silence_stdout(func): |
| | @wraps(func) |
| | def wrapper(*args, **kwargs): |
| | _original_stdout = sys.stdout |
| | sys.stdout = open(os.devnull, 'w') |
| | sys.stdout.reconfigure(encoding='utf-8') |
| | for q in func(*args, **kwargs): |
| | sys.stdout = _original_stdout |
| | yield q |
| | sys.stdout = open(os.devnull, 'w') |
| | sys.stdout.reconfigure(encoding='utf-8') |
| | sys.stdout.close() |
| | sys.stdout = _original_stdout |
| | return wrapper |
| |
|
| | def silence_stdout_fn(func): |
| | @wraps(func) |
| | def wrapper(*args, **kwargs): |
| | _original_stdout = sys.stdout |
| | sys.stdout = open(os.devnull, 'w') |
| | sys.stdout.reconfigure(encoding='utf-8') |
| | result = func(*args, **kwargs) |
| | sys.stdout.close() |
| | sys.stdout = _original_stdout |
| | return result |
| | return wrapper |
| |
|
| | class VoidTerminal(): |
| | def __init__(self) -> None: |
| | pass |
| | |
| | vt = VoidTerminal() |
| | vt.get_conf = silence_stdout_fn(get_conf) |
| | vt.set_conf = silence_stdout_fn(set_conf) |
| | vt.set_multi_conf = silence_stdout_fn(set_multi_conf) |
| | vt.get_plugin_handle = silence_stdout_fn(get_plugin_handle) |
| | vt.get_plugin_default_kwargs = silence_stdout_fn(get_plugin_default_kwargs) |
| | vt.get_chat_handle = silence_stdout_fn(get_chat_handle) |
| | vt.get_chat_default_kwargs = silence_stdout_fn(get_chat_default_kwargs) |
| | vt.chat_to_markdown_str = (chat_to_markdown_str) |
| | proxies, WEB_PORT, LLM_MODEL, CONCURRENT_COUNT, AUTHENTICATION, CHATBOT_HEIGHT, LAYOUT, API_KEY = \ |
| | vt.get_conf('proxies', 'WEB_PORT', 'LLM_MODEL', 'CONCURRENT_COUNT', 'AUTHENTICATION', 'CHATBOT_HEIGHT', 'LAYOUT', 'API_KEY') |
| |
|
| | def plugin_test(main_input, plugin, advanced_arg=None, debug=True): |
| | from rich.live import Live |
| | from rich.markdown import Markdown |
| |
|
| | vt.set_conf(key="API_KEY", value=API_KEY) |
| | vt.set_conf(key="LLM_MODEL", value=LLM_MODEL) |
| |
|
| | plugin = vt.get_plugin_handle(plugin) |
| | plugin_kwargs = vt.get_plugin_default_kwargs() |
| | plugin_kwargs['main_input'] = main_input |
| | if advanced_arg is not None: |
| | plugin_kwargs['plugin_kwargs'] = advanced_arg |
| | if debug: |
| | my_working_plugin = (plugin)(**plugin_kwargs) |
| | else: |
| | my_working_plugin = silence_stdout(plugin)(**plugin_kwargs) |
| |
|
| | with Live(Markdown(""), auto_refresh=False, vertical_overflow="visible") as live: |
| | for cookies, chat, hist, msg in my_working_plugin: |
| | md_str = vt.chat_to_markdown_str(chat) |
| | md = Markdown(md_str) |
| | live.update(md, refresh=True) |