AlexTian's picture
add skill library
225fe85
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()