import gradio as gr import json from dialogue_management import manage_dialogue from function_trigger import trigger_function from config import load_config from skill_repository import load_skills, save_skills, add_skill, delete_skill config = load_config() skills = load_skills() # 对话功能 def respond(user_input): response, action = manage_dialogue(user_input, skills) result = trigger_function(action, config) return response, result # 显示指令库文件 def show_skills(): with open('skills.json', 'r', encoding='utf-8') as file: skills_data = json.load(file) return json.dumps(skills_data, ensure_ascii=False, indent=4) # 添加新的技能 def add_new_skill(triggers, action): trigger_list = [trigger.strip() for trigger in triggers.split(',')] new_skill = { "triggers": trigger_list, "action": action } add_skill(new_skill) return show_skills() # 删除技能 def remove_skill(action): delete_skill(action) return show_skills() with gr.Blocks() as demo: with gr.Tab("AI Assistant Response"): skills = load_skills() gr.Markdown("## AI Assistant Response") user_input = gr.Textbox(label="User Input") ai_response = gr.Markdown() action_result = gr.Textbox(label="Action Result") respond_button = gr.Button("Respond") respond_button.click( respond, inputs=user_input, outputs=[ai_response, action_result] ) with gr.Tab("View Skills Library"): gr.Markdown("## Skills Library") skills_output = gr.Code(label="Skills Library") load_skills_button = gr.Button("Load Skills") load_skills_button.click( show_skills, outputs=skills_output ) with gr.Tab("Add Skill"): gr.Markdown("## Add Skill") new_triggers = gr.Textbox(label="Triggers (comma separated)") new_action = gr.Textbox(label="Action") add_skill_output = gr.Code(label="Updated Skills Library") add_skill_button = gr.Button("Add Skill") add_skill_button.click( add_new_skill, inputs=[new_triggers, new_action], outputs=add_skill_output ) with gr.Tab("Delete Skill"): gr.Markdown("## Delete Skill") delete_action = gr.Textbox(label="Action to Delete") delete_skill_output = gr.Code(label="Updated Skills Library") delete_skill_button = gr.Button("Delete Skill") delete_skill_button.click( remove_skill, inputs=delete_action, outputs=delete_skill_output ) if __name__ == "__main__": demo.launch()