oceansweep's picture
Upload 169 files
c5b0bb7 verified
# Keywords.py
# Purpose: This file contains the functions to create the Keywords tab in the Gradio UI.
#
# The Keywords tab allows the user to add, delete, view, and export keywords from the database.
#
# Imports:
#
# External Imports
import gradio as gr
from App_Function_Libraries.DB.Character_Chat_DB import view_char_keywords, add_char_keywords, delete_char_keyword, \
export_char_keywords_to_csv
#
# Internal Imports
from App_Function_Libraries.DB.DB_Manager import add_keyword, delete_keyword, keywords_browser_interface, export_keywords_to_csv
from App_Function_Libraries.DB.Prompts_DB import view_prompt_keywords, delete_prompt_keyword, \
export_prompt_keywords_to_csv
from App_Function_Libraries.DB.RAG_QA_Chat_DB import view_rag_keywords, get_all_collections, \
get_keywords_for_collection, create_keyword_collection, add_keyword_to_collection, delete_rag_keyword, \
export_rag_keywords_to_csv
#
######################################################################################################################
#
# Functions:
def create_export_keywords_tab():
with gr.TabItem("Export MediaDB Keywords", visible=True):
with gr.Row():
with gr.Column():
export_keywords_button = gr.Button("Export Keywords")
with gr.Column():
export_keywords_output = gr.File(label="Download Exported Keywords")
export_keywords_status = gr.Textbox(label="Export Status")
export_keywords_button.click(
fn=export_keywords_to_csv,
outputs=[export_keywords_status, export_keywords_output]
)
def create_view_keywords_tab():
with gr.TabItem("View MediaDB Keywords", visible=True):
gr.Markdown("# Browse MediaDB Keywords")
with gr.Column():
browse_output = gr.Markdown()
browse_button = gr.Button("View Existing Keywords")
browse_button.click(fn=keywords_browser_interface, outputs=browse_output)
def create_add_keyword_tab():
with gr.TabItem("Add MediaDB Keywords", visible=True):
with gr.Row():
with gr.Column():
gr.Markdown("# Add Keywords to the Database")
add_input = gr.Textbox(label="Add Keywords (comma-separated)", placeholder="Enter keywords here...")
add_button = gr.Button("Add Keywords")
with gr.Row():
add_output = gr.Textbox(label="Result")
add_button.click(fn=add_keyword, inputs=add_input, outputs=add_output)
def create_delete_keyword_tab():
with gr.Tab("Delete MediaDB Keywords", visible=True):
with gr.Row():
with gr.Column():
gr.Markdown("# Delete Keywords from the Database")
delete_input = gr.Textbox(label="Delete Keyword", placeholder="Enter keyword to delete here...")
delete_button = gr.Button("Delete Keyword")
with gr.Row():
delete_output = gr.Textbox(label="Result")
delete_button.click(fn=delete_keyword, inputs=delete_input, outputs=delete_output)
#
# End of Media DB Keyword tabs
##########################################################
############################################################
#
# Character DB Keyword functions
def create_character_keywords_tab():
"""Creates the Character Keywords management tab"""
with gr.Tab("Character Keywords"):
gr.Markdown("# Character Keywords Management")
with gr.Tabs():
# View Character Keywords Tab
with gr.TabItem("View Keywords"):
with gr.Column():
refresh_char_keywords = gr.Button("Refresh Character Keywords")
char_keywords_output = gr.Markdown()
view_char_keywords()
refresh_char_keywords.click(
fn=view_char_keywords,
outputs=char_keywords_output
)
# Add Character Keywords Tab
with gr.TabItem("Add Keywords"):
with gr.Column():
char_name = gr.Textbox(label="Character Name")
new_keywords = gr.Textbox(label="New Keywords (comma-separated)")
add_char_keyword_btn = gr.Button("Add Keywords")
add_char_result = gr.Markdown()
add_char_keyword_btn.click(
fn=add_char_keywords,
inputs=[char_name, new_keywords],
outputs=add_char_result
)
# Delete Character Keywords Tab (New)
with gr.TabItem("Delete Keywords"):
with gr.Column():
delete_char_name = gr.Textbox(label="Character Name")
delete_char_keyword_input = gr.Textbox(label="Keyword to Delete")
delete_char_keyword_btn = gr.Button("Delete Keyword")
delete_char_result = gr.Markdown()
delete_char_keyword_btn.click(
fn=delete_char_keyword,
inputs=[delete_char_name, delete_char_keyword_input],
outputs=delete_char_result
)
# Export Character Keywords Tab (New)
with gr.TabItem("Export Keywords"):
with gr.Column():
export_char_keywords_btn = gr.Button("Export Character Keywords")
export_char_file = gr.File(label="Download Exported Keywords")
export_char_status = gr.Textbox(label="Export Status")
export_char_keywords_btn.click(
fn=export_char_keywords_to_csv,
outputs=[export_char_status, export_char_file]
)
#
# End of Character Keywords tab
##########################################################
############################################################
#
# RAG QA Keywords functions
def create_rag_qa_keywords_tab():
"""Creates the RAG QA Keywords management tab"""
with gr.Tab("RAG QA Keywords"):
gr.Markdown("# RAG QA Keywords Management")
with gr.Tabs():
# View RAG QA Keywords Tab
with gr.TabItem("View Keywords"):
with gr.Column():
refresh_rag_keywords = gr.Button("Refresh RAG QA Keywords")
rag_keywords_output = gr.Markdown()
view_rag_keywords()
refresh_rag_keywords.click(
fn=view_rag_keywords,
outputs=rag_keywords_output
)
# Add RAG QA Keywords Tab
with gr.TabItem("Add Keywords"):
with gr.Column():
new_rag_keywords = gr.Textbox(label="New Keywords (comma-separated)")
add_rag_keyword_btn = gr.Button("Add Keywords")
add_rag_result = gr.Markdown()
add_rag_keyword_btn.click(
fn=add_keyword,
inputs=new_rag_keywords,
outputs=add_rag_result
)
# Delete RAG QA Keywords Tab (New)
with gr.TabItem("Delete Keywords"):
with gr.Column():
delete_rag_keyword_input = gr.Textbox(label="Keyword to Delete")
delete_rag_keyword_btn = gr.Button("Delete Keyword")
delete_rag_result = gr.Markdown()
delete_rag_keyword_btn.click(
fn=delete_rag_keyword,
inputs=delete_rag_keyword_input,
outputs=delete_rag_result
)
# Export RAG QA Keywords Tab (New)
with gr.TabItem("Export Keywords"):
with gr.Column():
export_rag_keywords_btn = gr.Button("Export RAG QA Keywords")
export_rag_file = gr.File(label="Download Exported Keywords")
export_rag_status = gr.Textbox(label="Export Status")
export_rag_keywords_btn.click(
fn=export_rag_keywords_to_csv,
outputs=[export_rag_status, export_rag_file]
)
#
# End of RAG QA Keywords tab
##########################################################
############################################################
#
# Prompt Keywords functions
def create_prompt_keywords_tab():
"""Creates the Prompt Keywords management tab"""
with gr.Tab("Prompt Keywords"):
gr.Markdown("# Prompt Keywords Management")
with gr.Tabs():
# View Keywords Tab
with gr.TabItem("View Keywords"):
with gr.Column():
refresh_prompt_keywords = gr.Button("Refresh Prompt Keywords")
prompt_keywords_output = gr.Markdown()
refresh_prompt_keywords.click(
fn=view_prompt_keywords,
outputs=prompt_keywords_output
)
# Add Keywords Tab (using existing prompt management functions)
with gr.TabItem("Add Keywords"):
gr.Markdown("""
To add keywords to prompts, please use the Prompt Management interface.
Keywords can be added when creating or editing a prompt.
""")
# Delete Keywords Tab
with gr.TabItem("Delete Keywords"):
with gr.Column():
delete_prompt_keyword_input = gr.Textbox(label="Keyword to Delete")
delete_prompt_keyword_btn = gr.Button("Delete Keyword")
delete_prompt_result = gr.Markdown()
delete_prompt_keyword_btn.click(
fn=delete_prompt_keyword,
inputs=delete_prompt_keyword_input,
outputs=delete_prompt_result
)
# Export Keywords Tab
with gr.TabItem("Export Keywords"):
with gr.Column():
export_prompt_keywords_btn = gr.Button("Export Prompt Keywords")
export_prompt_status = gr.Textbox(label="Export Status", interactive=False)
export_prompt_file = gr.File(label="Download Exported Keywords", interactive=False)
def handle_export():
status, file_path = export_prompt_keywords_to_csv()
if file_path:
return status, file_path
return status, None
export_prompt_keywords_btn.click(
fn=handle_export,
outputs=[export_prompt_status, export_prompt_file]
)
#
# End of Prompt Keywords tab
############################################################
############################################################
#
# Meta-Keywords functions
def create_meta_keywords_tab():
"""Creates the Meta-Keywords management tab"""
with gr.Tab("Meta-Keywords"):
gr.Markdown("# Meta-Keywords Management")
with gr.Tabs():
# View Meta-Keywords Tab
with gr.TabItem("View Collections"):
with gr.Column():
refresh_collections = gr.Button("Refresh Collections")
collections_output = gr.Markdown()
def view_collections():
try:
collections, _, _ = get_all_collections()
if collections:
result = "### Keyword Collections:\n"
for collection in collections:
keywords = get_keywords_for_collection(collection)
result += f"\n**{collection}**:\n"
result += "\n".join([f"- {k}" for k in keywords])
result += "\n"
return result
return "No collections found."
except Exception as e:
return f"Error retrieving collections: {str(e)}"
refresh_collections.click(
fn=view_collections,
outputs=collections_output
)
# Create Collection Tab
with gr.TabItem("Create Collection"):
with gr.Column():
collection_name = gr.Textbox(label="Collection Name")
create_collection_btn = gr.Button("Create Collection")
create_result = gr.Markdown()
def create_collection(name: str):
try:
create_keyword_collection(name)
return f"Successfully created collection: {name}"
except Exception as e:
return f"Error creating collection: {str(e)}"
create_collection_btn.click(
fn=create_collection,
inputs=collection_name,
outputs=create_result
)
# Add Keywords to Collection Tab
with gr.TabItem("Add to Collection"):
with gr.Column():
collection_select = gr.Textbox(label="Collection Name")
keywords_to_add = gr.Textbox(label="Keywords to Add (comma-separated)")
add_to_collection_btn = gr.Button("Add Keywords to Collection")
add_to_collection_result = gr.Markdown()
def add_keywords_to_collection(collection: str, keywords: str):
try:
keywords_list = [k.strip() for k in keywords.split(",") if k.strip()]
for keyword in keywords_list:
add_keyword_to_collection(collection, keyword)
return f"Successfully added {len(keywords_list)} keywords to collection {collection}"
except Exception as e:
return f"Error adding keywords to collection: {str(e)}"
add_to_collection_btn.click(
fn=add_keywords_to_collection,
inputs=[collection_select, keywords_to_add],
outputs=add_to_collection_result
)
#
# End of Meta-Keywords tab
##########################################################
#
# End of Keywords.py
######################################################################################################################