import gradio as gr from tools.arabic_generator import ArabicTextGenerator from tools.tool_agent import ToolCallingAgent # Initialize models text_gen = ArabicTextGenerator() tool_agent = ToolCallingAgent() TOOLS = [ { "name": "generate_text", "description": "Generate Arabic text", "parameters": { "prompt": {"type": "string"}, "length": {"type": "integer", "max": 150} } } ] def format_output(result): return str(result) with gr.Blocks(title="الأدوات العربية") as app: # Tab 1: Arabic Generator with gr.Tab("🖊️ مولد النصوص"): with gr.Row(): with gr.Column(): arabic_input = gr.Textbox(label="النص الأولي") length_slider = gr.Slider(50, 300, value=100, label="طول النص") generate_btn = gr.Button("توليد") arabic_output = gr.Textbox(label="النص المولد", lines=10) generate_btn.click( text_gen.generate, inputs=[arabic_input, length_slider], outputs=arabic_output ) # Tab 2: Tool Agent (only text generation now) with gr.Tab("🛠️ مساعد ذكي"): with gr.Row(): with gr.Column(): tool_input = gr.Textbox(label="اكتب طلبك هنا") run_btn = gr.Button("تشغيل") tool_output = gr.Textbox(label="النتيجة", lines=10) def process_tool(input_text): try: tool_call = tool_agent.generate(input_text, TOOLS) if tool_call["tool_name"] == "generate_text": return text_gen.generate( tool_call["parameters"]["prompt"], tool_call["parameters"]["length"] ) return "لم يتم التعرف على الأداة" except Exception as e: return f"خطأ: {str(e)}" run_btn.click( lambda x: format_output(process_tool(x)), inputs=tool_input, outputs=tool_output ) if __name__ == "__main__": app.launch()