CoolFace
Apppublic

swaleha19/agent_tuning_framework

sourceHugging Facemitupdated 1y agoView on Hugging Face
0likes
app.py221 linesDownload Raw Back to root
1"""2Simplified Gradio Demo for Agent Tuning Optimization Framework3 4This script creates a simple Gradio web interface to demonstrate the framework's capabilities.5"""6 7import os8import gradio as gr9import numpy as np10import random11from datetime import datetime12 13# Mock functions to simulate framework behavior without requiring full model loading14def mock_generate_response(task, user_message):15    """Simulate generating a response from a tuned agent."""16    responses = [17        f"I'll help you with your task to {task.lower()}. Based on your message '{user_message}', I recommend starting by breaking this down into smaller steps.",18        f"I understand you need assistance with {task.lower()}. From your message, I can see that you're looking for guidance on '{user_message}'. Here's my approach to solving this.",19        f"Thank you for providing details about {task.lower()}. Your message '{user_message}' gives me enough context to help you effectively. Let me outline a solution.",20        f"I'm analyzing your request about {task.lower()}. Your message '{user_message}' indicates you need comprehensive assistance. Here's what I suggest as next steps."21    ]22    23    # Simulate processing time24    import time25    time.sleep(1.5)26    27    return random.choice(responses) + f"\n\nResponse generated at {datetime.now().strftime('%H:%M:%S')}"28 29def mock_generate_negative_sample(task, user_message, agent_message):30    """Simulate generating a negative sample from a positive example."""31    degradation_types = [32        "Response truncation",33        "Grammatical errors",34        "Task misalignment",35        "Constraint violation",36        "Irrelevant tangent"37    ]38    39    degradation = random.choice(degradation_types)40    41    if degradation == "Response truncation":42        words = agent_message.split()43        truncate_point = int(len(words) * random.uniform(0.3, 0.7))44        return " ".join(words[:truncate_point]) + f"...\n\nNegative sample type: {degradation}"45    46    elif degradation == "Grammatical errors":47        errors = [48            lambda t: t.replace(".", ""),  # Remove periods49            lambda t: t.replace("I ", "i "),  # Lowercase I50            lambda t: t.replace(" the ", " teh "),  # Typo51            lambda t: t.replace(" is ", " are "),  # Grammar error52            lambda t: t.replace(" are ", " is ")  # Grammar error53        ]54        55        result = agent_message56        for _ in range(random.randint(2, 4)):57            error_func = random.choice(errors)58            result = error_func(result)59        60        return result + f"\n\nNegative sample type: {degradation}"61    62    elif degradation == "Task misalignment":63        misalignments = [64            f"I understand you're asking about something completely different. Let me tell you about weather patterns instead.",65            f"I don't think that's what you really want to know. Let me explain something else that might interest you.",66            f"Your question seems to be about {task}, but I'd rather discuss the history of computing.",67            f"Instead of addressing your specific request about {task}, let me give you general information that's only tangentially related."68        ]69        70        return random.choice(misalignments) + f"\n\nNegative sample type: {degradation}"71    72    elif degradation == "Constraint violation":73        violations = [74            f"I specifically recommend the XYZ Pro 2000 for $499.99, the UltraBook 15 for $1,299, and the PowerTech 5000 for $799. These are the absolute best options available.",75            f"The system utilizes a polymorphic encapsulation paradigm with recursive lambda functions and stochastic gradient descent with backpropagation through a multi-layer perceptron.",76            f"What specific features are you looking for? Do you have any brand preferences? What's your budget range? When do you need this by? Have you considered alternative options?",77            f"Since you're a tech-savvy individual who values cutting-edge features, you'll definitely want the latest model with all the advanced capabilities."78        ]79        80        return random.choice(violations) + f"\n\nNegative sample type: {degradation}"81    82    else:  # Irrelevant tangent83        tangents = [84            f"Did you know that artificial intelligence has been a concept since the 1950s? The field has evolved significantly since then, with major breakthroughs in neural networks and deep learning.",85            f"I've been thinking about the philosophical implications of consciousness in AI systems. The question of whether an AI can truly understand or merely simulate understanding is fascinating.",86            f"The weather has been quite interesting lately, with unusual patterns emerging globally. Climate scientists attribute this to a combination of factors including ocean temperature changes.",87            f"I recently processed some fascinating data about renewable energy technologies. Solar efficiency has improved dramatically in the past decade, while costs have decreased by over 80%."88        ]89        90        return random.choice(tangents) + f"\n\nNegative sample type: {degradation}"91 92def mock_generate_synthetic_trajectory(task):93    """Simulate generating a synthetic trajectory for a given task."""94    # Determine task category95    categories = ["travel", "shopping", "technology", "education", "finance", "health", "career", "home"]96    category = random.choice(categories)97    98    # Generate interactions (2-4 turns)99    num_turns = random.randint(2, 4)100    interactions = []101    102    for j in range(num_turns):103        if j == 0:104            user_msg = f"I need help with this task: {task}"105            agent_msg = f"I'd be happy to help you {task.lower()}. Could you provide more details about your preferences?"106        elif j == num_turns - 1:107            user_msg = "That sounds good. Please proceed with the final steps."108            agent_msg = f"I've completed the task to {task.lower()}. Here's a summary of what I did..."109        else:110            user_msg = f"I prefer options that are {['affordable', 'convenient', 'high-quality'][j % 3]}."111            agent_msg = f"Based on your preference for {['affordable', 'convenient', 'high-quality'][j % 3]} options, I recommend..."112        113        interactions.append({114            'user': user_msg,115            'agent': agent_msg116        })117    118    # Format trajectory119    result = f"Synthetic Trajectory for Task: {task}\nCategory: {category}\n\n"120    121    for i, interaction in enumerate(interactions):122        result += f"Turn {i+1}:\nUser: {interaction['user']}\nAgent: {interaction['agent']}\n\n"123    124    result += f"Generation method: Template-based\nQuality score: {random.uniform(0.7, 0.9):.2f}"125    126    return result127 128# Create Gradio interface129with gr.Blocks(title="Agent Tuning Framework Demo") as demo:130    gr.Markdown("# Agent Tuning Optimization Framework Demo")131    gr.Markdown("### A framework for efficiently tuning LLMs into specialized agents using negative and synthetic samples")132    133    with gr.Tab("Generate Response"):134        with gr.Row():135            with gr.Column():136                task_input = gr.Textbox(label="Task Description", placeholder="e.g., Book a flight from New York to London")137                user_input = gr.Textbox(label="User Message", placeholder="e.g., I need to travel next week for business")138                generate_btn = gr.Button("Generate Response", variant="primary")139            with gr.Column():140                response_output = gr.Textbox(label="Agent Response", lines=8)141        142        generate_btn.click(143            mock_generate_response,144            inputs=[task_input, user_input],145            outputs=response_output146        )147        148        gr.Examples(149            [150                ["Book a flight from New York to London", "I need to travel next week for business"],151                ["Find a vegetarian restaurant", "I'm looking for dinner options tonight"],152                ["Help me debug a Python script", "I'm getting an IndexError in my code"]153            ],154            inputs=[task_input, user_input]155        )156    157    with gr.Tab("Generate Negative Sample"):158        with gr.Row():159            with gr.Column():160                neg_task_input = gr.Textbox(label="Task Description", placeholder="e.g., Book a flight from New York to London")161                neg_user_input = gr.Textbox(label="User Message", placeholder="e.g., I need to travel next week for business")162                neg_agent_input = gr.Textbox(label="Agent Message (Positive Example)", placeholder="e.g., I'd be happy to help you book a flight...", lines=5)163                neg_generate_btn = gr.Button("Generate Negative Sample", variant="primary")164            with gr.Column():165                neg_output = gr.Textbox(label="Negative Sample", lines=8)166        167        neg_generate_btn.click(168            mock_generate_negative_sample,169            inputs=[neg_task_input, neg_user_input, neg_agent_input],170            outputs=neg_output171        )172        173        gr.Examples(174            [175                ["Book a flight from New York to London", "I need to travel next week for business", "I'd be happy to help you book a flight from New York to London. Could you provide more details about your preferred travel dates, budget, and any airline preferences you might have?"],176                ["Recommend a laptop for programming", "I need a new laptop for software development", "I can definitely help you find a suitable laptop for programming. Based on software development needs, I'd recommend looking for a laptop with at least 16GB RAM, a multi-core processor, and an SSD for storage. Would you like specific brand recommendations or have a particular budget in mind?"]177            ],178            inputs=[neg_task_input, neg_user_input, neg_agent_input]179        )180    181    with gr.Tab("Generate Synthetic Trajectory"):182        with gr.Row():183            with gr.Column():184                synth_task_input = gr.Textbox(label="Task Description", placeholder="e.g., Plan a weekend trip to Chicago")185                synth_generate_btn = gr.Button("Generate Synthetic Trajectory", variant="primary")186            with gr.Column():187                synth_output = gr.Textbox(label="Synthetic Trajectory", lines=15)188        189        synth_generate_btn.click(190            mock_generate_synthetic_trajectory,191            inputs=[synth_task_input],192            outputs=synth_output193        )194        195        gr.Examples(196            [197                ["Plan a weekend trip to Chicago"],198                ["Recommend healthy meal prep options for the week"],199                ["Help me create a study schedule for final exams"]200            ],201            inputs=[synth_task_input]202        )203    204    gr.Markdown("""205    ## About This Framework206    207    The Agent Tuning Optimization Framework provides a comprehensive solution for efficiently tuning large language models into specialized agents through the strategic incorporation of negative samples and synthetic trajectories.208    209    ### Key Features:210    211    1. **Negative Sample Generation**: Creates examples of undesired agent behaviors to teach models what not to do212    2. **Synthetic Trajectory Generation**: Automatically generates diverse interaction trajectories213    3. **Mixed-Sample Tuning**: Combines positive examples, negative samples, and synthetic trajectories214    4. **Parameter-Efficient Fine-Tuning**: Implements methods like LoRA for computational efficiency215    216    This demo provides a simplified simulation of the framework's capabilities. For full functionality, deploy the complete framework following the provided documentation.217    """)218 219# Launch the interface220demo.launch(share=True)221