feat: add test connection feature (#166)
* feat: add test connection feature * fix: typo
This commit is contained in:
parent
c1e8c37e5e
commit
041d229282
|
@ -52,6 +52,18 @@ class EmbeddingManagement(BasePage):
|
||||||
lines=10,
|
lines=10,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
with gr.Accordion(
|
||||||
|
label="Test connection", visible=False, open=False
|
||||||
|
) as self._check_connection_panel:
|
||||||
|
with gr.Row():
|
||||||
|
with gr.Column(scale=4):
|
||||||
|
self.connection_logs = gr.HTML(
|
||||||
|
"Logs",
|
||||||
|
)
|
||||||
|
|
||||||
|
with gr.Column(scale=1):
|
||||||
|
self.btn_test_connection = gr.Button("Test")
|
||||||
|
|
||||||
with gr.Row(visible=False) as self._selected_panel_btn:
|
with gr.Row(visible=False) as self._selected_panel_btn:
|
||||||
with gr.Column():
|
with gr.Column():
|
||||||
self.btn_edit_save = gr.Button(
|
self.btn_edit_save = gr.Button(
|
||||||
|
@ -174,9 +186,11 @@ class EmbeddingManagement(BasePage):
|
||||||
self.edit_spec,
|
self.edit_spec,
|
||||||
self.edit_spec_desc,
|
self.edit_spec_desc,
|
||||||
self.edit_default,
|
self.edit_default,
|
||||||
|
self._check_connection_panel,
|
||||||
],
|
],
|
||||||
show_progress="hidden",
|
show_progress="hidden",
|
||||||
)
|
).success(lambda: gr.update(value=""), outputs=[self.connection_logs])
|
||||||
|
|
||||||
self.btn_delete.click(
|
self.btn_delete.click(
|
||||||
self.on_btn_delete_click,
|
self.on_btn_delete_click,
|
||||||
inputs=[],
|
inputs=[],
|
||||||
|
@ -221,6 +235,12 @@ class EmbeddingManagement(BasePage):
|
||||||
outputs=[self.selected_emb_name],
|
outputs=[self.selected_emb_name],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self.btn_test_connection.click(
|
||||||
|
self.check_connection,
|
||||||
|
inputs=[self.selected_emb_name],
|
||||||
|
outputs=[self.connection_logs],
|
||||||
|
)
|
||||||
|
|
||||||
def create_emb(self, name, choices, spec, default):
|
def create_emb(self, name, choices, spec, default):
|
||||||
try:
|
try:
|
||||||
spec = yaml.load(spec, Loader=YAMLNoDateSafeLoader)
|
spec = yaml.load(spec, Loader=YAMLNoDateSafeLoader)
|
||||||
|
@ -266,6 +286,7 @@ class EmbeddingManagement(BasePage):
|
||||||
|
|
||||||
def on_selected_emb_change(self, selected_emb_name):
|
def on_selected_emb_change(self, selected_emb_name):
|
||||||
if selected_emb_name == "":
|
if selected_emb_name == "":
|
||||||
|
_check_connection_panel = gr.update(visible=False)
|
||||||
_selected_panel = gr.update(visible=False)
|
_selected_panel = gr.update(visible=False)
|
||||||
_selected_panel_btn = gr.update(visible=False)
|
_selected_panel_btn = gr.update(visible=False)
|
||||||
btn_delete = gr.update(visible=True)
|
btn_delete = gr.update(visible=True)
|
||||||
|
@ -275,6 +296,7 @@ class EmbeddingManagement(BasePage):
|
||||||
edit_spec_desc = gr.update(value="")
|
edit_spec_desc = gr.update(value="")
|
||||||
edit_default = gr.update(value=False)
|
edit_default = gr.update(value=False)
|
||||||
else:
|
else:
|
||||||
|
_check_connection_panel = gr.update(visible=True)
|
||||||
_selected_panel = gr.update(visible=True)
|
_selected_panel = gr.update(visible=True)
|
||||||
_selected_panel_btn = gr.update(visible=True)
|
_selected_panel_btn = gr.update(visible=True)
|
||||||
btn_delete = gr.update(visible=True)
|
btn_delete = gr.update(visible=True)
|
||||||
|
@ -298,6 +320,7 @@ class EmbeddingManagement(BasePage):
|
||||||
edit_spec,
|
edit_spec,
|
||||||
edit_spec_desc,
|
edit_spec_desc,
|
||||||
edit_default,
|
edit_default,
|
||||||
|
_check_connection_panel,
|
||||||
)
|
)
|
||||||
|
|
||||||
def on_btn_delete_click(self):
|
def on_btn_delete_click(self):
|
||||||
|
@ -307,6 +330,39 @@ class EmbeddingManagement(BasePage):
|
||||||
|
|
||||||
return btn_delete, btn_delete_yes, btn_delete_no
|
return btn_delete, btn_delete_yes, btn_delete_no
|
||||||
|
|
||||||
|
def check_connection(self, selected_emb_name):
|
||||||
|
log_content: str = ""
|
||||||
|
|
||||||
|
try:
|
||||||
|
log_content += f"- Testing model: {selected_emb_name}<br>"
|
||||||
|
yield log_content
|
||||||
|
|
||||||
|
emb = embedding_models_manager.get(selected_emb_name)
|
||||||
|
|
||||||
|
if emb is None:
|
||||||
|
raise Exception(f"Can not found model: {selected_emb_name}")
|
||||||
|
|
||||||
|
log_content += "- Sending a message `Hi`<br>"
|
||||||
|
yield log_content
|
||||||
|
_ = emb("Hi")
|
||||||
|
|
||||||
|
log_content += (
|
||||||
|
"<mark style='background: yellow; color: red'>- Connection success. "
|
||||||
|
"</mark><br>"
|
||||||
|
)
|
||||||
|
yield log_content
|
||||||
|
|
||||||
|
gr.Info(f"Embedding {selected_emb_name} connect successfully")
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
log_content += (
|
||||||
|
f"<mark style='color: yellow; background: red'>- Connection failed. "
|
||||||
|
f"Got error:\n {str(e)}</mark>"
|
||||||
|
)
|
||||||
|
yield log_content
|
||||||
|
|
||||||
|
return log_content
|
||||||
|
|
||||||
def save_emb(self, selected_emb_name, default, spec):
|
def save_emb(self, selected_emb_name, default, spec):
|
||||||
try:
|
try:
|
||||||
spec = yaml.load(spec, Loader=YAMLNoDateSafeLoader)
|
spec = yaml.load(spec, Loader=YAMLNoDateSafeLoader)
|
||||||
|
|
|
@ -51,6 +51,16 @@ class LLMManagement(BasePage):
|
||||||
lines=10,
|
lines=10,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
with gr.Accordion(
|
||||||
|
label="Test connection", visible=False, open=False
|
||||||
|
) as self._check_connection_panel:
|
||||||
|
with gr.Row():
|
||||||
|
with gr.Column(scale=4):
|
||||||
|
self.connection_logs = gr.HTML("Logs")
|
||||||
|
|
||||||
|
with gr.Column(scale=1):
|
||||||
|
self.btn_test_connection = gr.Button("Test")
|
||||||
|
|
||||||
with gr.Row(visible=False) as self._selected_panel_btn:
|
with gr.Row(visible=False) as self._selected_panel_btn:
|
||||||
with gr.Column():
|
with gr.Column():
|
||||||
self.btn_edit_save = gr.Button(
|
self.btn_edit_save = gr.Button(
|
||||||
|
@ -171,9 +181,12 @@ class LLMManagement(BasePage):
|
||||||
self.edit_spec,
|
self.edit_spec,
|
||||||
self.edit_spec_desc,
|
self.edit_spec_desc,
|
||||||
self.edit_default,
|
self.edit_default,
|
||||||
|
# check connection panel
|
||||||
|
self._check_connection_panel,
|
||||||
],
|
],
|
||||||
show_progress="hidden",
|
show_progress="hidden",
|
||||||
)
|
).success(lambda: gr.update(value=""), outputs=[self.connection_logs])
|
||||||
|
|
||||||
self.btn_delete.click(
|
self.btn_delete.click(
|
||||||
self.on_btn_delete_click,
|
self.on_btn_delete_click,
|
||||||
inputs=[],
|
inputs=[],
|
||||||
|
@ -218,6 +231,12 @@ class LLMManagement(BasePage):
|
||||||
outputs=[self.selected_llm_name],
|
outputs=[self.selected_llm_name],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self.btn_test_connection.click(
|
||||||
|
self.check_connection,
|
||||||
|
inputs=[self.selected_llm_name],
|
||||||
|
outputs=[self.connection_logs],
|
||||||
|
)
|
||||||
|
|
||||||
def create_llm(self, name, choices, spec, default):
|
def create_llm(self, name, choices, spec, default):
|
||||||
try:
|
try:
|
||||||
spec = yaml.load(spec, Loader=YAMLNoDateSafeLoader)
|
spec = yaml.load(spec, Loader=YAMLNoDateSafeLoader)
|
||||||
|
@ -263,6 +282,7 @@ class LLMManagement(BasePage):
|
||||||
|
|
||||||
def on_selected_llm_change(self, selected_llm_name):
|
def on_selected_llm_change(self, selected_llm_name):
|
||||||
if selected_llm_name == "":
|
if selected_llm_name == "":
|
||||||
|
_check_connection_panel = gr.update(visible=False)
|
||||||
_selected_panel = gr.update(visible=False)
|
_selected_panel = gr.update(visible=False)
|
||||||
_selected_panel_btn = gr.update(visible=False)
|
_selected_panel_btn = gr.update(visible=False)
|
||||||
btn_delete = gr.update(visible=True)
|
btn_delete = gr.update(visible=True)
|
||||||
|
@ -272,6 +292,7 @@ class LLMManagement(BasePage):
|
||||||
edit_spec_desc = gr.update(value="")
|
edit_spec_desc = gr.update(value="")
|
||||||
edit_default = gr.update(value=False)
|
edit_default = gr.update(value=False)
|
||||||
else:
|
else:
|
||||||
|
_check_connection_panel = gr.update(visible=True)
|
||||||
_selected_panel = gr.update(visible=True)
|
_selected_panel = gr.update(visible=True)
|
||||||
_selected_panel_btn = gr.update(visible=True)
|
_selected_panel_btn = gr.update(visible=True)
|
||||||
btn_delete = gr.update(visible=True)
|
btn_delete = gr.update(visible=True)
|
||||||
|
@ -295,6 +316,7 @@ class LLMManagement(BasePage):
|
||||||
edit_spec,
|
edit_spec,
|
||||||
edit_spec_desc,
|
edit_spec_desc,
|
||||||
edit_default,
|
edit_default,
|
||||||
|
_check_connection_panel,
|
||||||
)
|
)
|
||||||
|
|
||||||
def on_btn_delete_click(self):
|
def on_btn_delete_click(self):
|
||||||
|
@ -304,6 +326,38 @@ class LLMManagement(BasePage):
|
||||||
|
|
||||||
return btn_delete, btn_delete_yes, btn_delete_no
|
return btn_delete, btn_delete_yes, btn_delete_no
|
||||||
|
|
||||||
|
def check_connection(self, selected_llm_name: str):
|
||||||
|
log_content: str = ""
|
||||||
|
|
||||||
|
try:
|
||||||
|
log_content += f"- Testing model: {selected_llm_name}<br>"
|
||||||
|
yield log_content
|
||||||
|
|
||||||
|
llm = llms.get(key=selected_llm_name, default=None)
|
||||||
|
|
||||||
|
if llm is None:
|
||||||
|
raise Exception(f"Can not found model: {selected_llm_name}")
|
||||||
|
|
||||||
|
log_content += "- Sending a message `Hi`<br>"
|
||||||
|
yield log_content
|
||||||
|
respond = llm("Hi")
|
||||||
|
|
||||||
|
log_content += (
|
||||||
|
f"<mark style='background: yellow; color: red'>- Connection success. "
|
||||||
|
f"Got response:\n {respond}</mark><br>"
|
||||||
|
)
|
||||||
|
yield log_content
|
||||||
|
|
||||||
|
gr.Info(f"LLM {selected_llm_name} connect successfully")
|
||||||
|
except Exception as e:
|
||||||
|
log_content += (
|
||||||
|
f"<mark style='color: yellow; background: red'>- Connection failed. "
|
||||||
|
f"Got error:\n {e}</mark>"
|
||||||
|
)
|
||||||
|
yield log_content
|
||||||
|
|
||||||
|
return log_content
|
||||||
|
|
||||||
def save_llm(self, selected_llm_name, default, spec):
|
def save_llm(self, selected_llm_name, default, spec):
|
||||||
try:
|
try:
|
||||||
spec = yaml.load(spec, Loader=YAMLNoDateSafeLoader)
|
spec = yaml.load(spec, Loader=YAMLNoDateSafeLoader)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user