|
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) |
|
|