Really working logs
Browse files
    	
        app.py
    CHANGED
    
    | @@ -451,17 +451,11 @@ def chat_message_to_json(obj): | |
| 451 | 
             
                    return obj
         | 
| 452 |  | 
| 453 |  | 
| 454 | 
            -
            def save_final_status(folder, status: str,  | 
| 455 | 
             
                metadata_path = os.path.join(folder, "metadata.json")
         | 
| 456 | 
            -
                 | 
| 457 | 
            -
                 | 
| 458 | 
            -
                 | 
| 459 | 
            -
                    if getattr(memory_step, "observations_images", None):
         | 
| 460 | 
            -
                        memory_step.observations_images = None
         | 
| 461 | 
            -
                a = open(metadata_path,"w")
         | 
| 462 | 
            -
                summary = memory.get_succinct_steps()
         | 
| 463 | 
            -
                a.write(json.dumps({"status":status, "summary":summary, "error_message": error_message}, default=chat_message_to_json))
         | 
| 464 | 
            -
                a.close()
         | 
| 465 |  | 
| 466 | 
             
            def initialize_session(interactive_mode, request: gr.Request):
         | 
| 467 | 
             
                session_hash = request.session_hash
         | 
| @@ -504,9 +498,12 @@ class EnrichedGradioUI(GradioUI): | |
| 504 | 
             
                        os.makedirs(data_dir)
         | 
| 505 |  | 
| 506 |  | 
| 507 | 
            -
                    if "agent"  | 
|  | |
|  | |
| 508 | 
             
                        session_state["agent"] = create_agent(data_dir=data_dir, desktop=desktop)
         | 
| 509 |  | 
|  | |
| 510 | 
             
                    # Construct the full task with instructions
         | 
| 511 | 
             
                    full_task = task_input + dedent(f"""
         | 
| 512 | 
             
                        The desktop has a resolution of {WIDTH}x{HEIGHT}, take it into account to decide clicking coordinates.
         | 
| @@ -536,7 +533,13 @@ class EnrichedGradioUI(GradioUI): | |
| 536 | 
             
                            yield stored_messages
         | 
| 537 |  | 
| 538 | 
             
                        yield stored_messages
         | 
| 539 | 
            -
                         | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 540 |  | 
| 541 | 
             
                    # # TODO: uncomment below after testing
         | 
| 542 | 
             
                    except Exception as e:
         | 
| @@ -544,7 +547,7 @@ class EnrichedGradioUI(GradioUI): | |
| 544 | 
             
                        stored_messages.append(gr.ChatMessage(role="assistant", content=error_message))
         | 
| 545 | 
             
                        yield stored_messages
         | 
| 546 | 
             
                        raise e
         | 
| 547 | 
            -
                        save_final_status(data_dir, "failed", summary= | 
| 548 |  | 
| 549 | 
             
                    finally:
         | 
| 550 | 
             
                        upload_to_hf_and_remove(data_dir)
         | 
| @@ -708,14 +711,12 @@ with gr.Blocks(theme=theme, css=custom_css, js=custom_js, fill_width=True) as de | |
| 708 | 
             
                    fn=clear_and_set_view_only,
         | 
| 709 | 
             
                    inputs=[task_input], 
         | 
| 710 | 
             
                    outputs=[results_output, sandbox_html, results_container]
         | 
| 711 | 
            -
                )
         | 
| 712 | 
            -
                view_only_event.then(agent_ui.interact_with_agent, [task_input, stored_messages, session_state, session_hash_state], [chatbot_display]).then(
         | 
| 713 | 
             
                    fn=set_interactive,
         | 
| 714 | 
             
                    inputs=[],
         | 
| 715 | 
             
                    outputs=sandbox_html
         | 
| 716 | 
             
                )
         | 
| 717 |  | 
| 718 | 
            -
             | 
| 719 | 
             
                demo.load(
         | 
| 720 | 
             
                    fn=initialize_session,
         | 
| 721 | 
             
                    inputs=[is_interactive],
         | 
|  | |
| 451 | 
             
                    return obj
         | 
| 452 |  | 
| 453 |  | 
| 454 | 
            +
            def save_final_status(folder, status: str, summary, error_message = None) -> None:
         | 
| 455 | 
             
                metadata_path = os.path.join(folder, "metadata.json")
         | 
| 456 | 
            +
                output_file = open(metadata_path,"w")
         | 
| 457 | 
            +
                output_file.write(json.dumps({"status":status, "summary":summary, "error_message": error_message}, default=chat_message_to_json))
         | 
| 458 | 
            +
                output_file.close()
         | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 459 |  | 
| 460 | 
             
            def initialize_session(interactive_mode, request: gr.Request):
         | 
| 461 | 
             
                session_hash = request.session_hash
         | 
|  | |
| 498 | 
             
                        os.makedirs(data_dir)
         | 
| 499 |  | 
| 500 |  | 
| 501 | 
            +
                    if "agent" in session_state:
         | 
| 502 | 
            +
                        session_state["agent"].data_dir = data_dir # Update data dir to new interaction
         | 
| 503 | 
            +
                    else:
         | 
| 504 | 
             
                        session_state["agent"] = create_agent(data_dir=data_dir, desktop=desktop)
         | 
| 505 |  | 
| 506 | 
            +
                    
         | 
| 507 | 
             
                    # Construct the full task with instructions
         | 
| 508 | 
             
                    full_task = task_input + dedent(f"""
         | 
| 509 | 
             
                        The desktop has a resolution of {WIDTH}x{HEIGHT}, take it into account to decide clicking coordinates.
         | 
|  | |
| 533 | 
             
                            yield stored_messages
         | 
| 534 |  | 
| 535 | 
             
                        yield stored_messages
         | 
| 536 | 
            +
                        # THIS ERASES IMAGES FROM MEMORY, USE WITH CAUTION
         | 
| 537 | 
            +
                        memory = session_state["agent"].memory
         | 
| 538 | 
            +
                        for memory_step in memory.steps:
         | 
| 539 | 
            +
                            if getattr(memory_step, "observations_images", None):
         | 
| 540 | 
            +
                                memory_step.observations_images = None
         | 
| 541 | 
            +
                        summary = memory.get_succinct_steps()
         | 
| 542 | 
            +
                        save_final_status(data_dir, "completed", summary = summary)
         | 
| 543 |  | 
| 544 | 
             
                    # # TODO: uncomment below after testing
         | 
| 545 | 
             
                    except Exception as e:
         | 
|  | |
| 547 | 
             
                        stored_messages.append(gr.ChatMessage(role="assistant", content=error_message))
         | 
| 548 | 
             
                        yield stored_messages
         | 
| 549 | 
             
                        raise e
         | 
| 550 | 
            +
                        save_final_status(data_dir, "failed", summary=[], error_message=error_message)
         | 
| 551 |  | 
| 552 | 
             
                    finally:
         | 
| 553 | 
             
                        upload_to_hf_and_remove(data_dir)
         | 
|  | |
| 711 | 
             
                    fn=clear_and_set_view_only,
         | 
| 712 | 
             
                    inputs=[task_input], 
         | 
| 713 | 
             
                    outputs=[results_output, sandbox_html, results_container]
         | 
| 714 | 
            +
                ).then(agent_ui.interact_with_agent, [task_input, stored_messages, session_state, session_hash_state], [chatbot_display]).then(
         | 
|  | |
| 715 | 
             
                    fn=set_interactive,
         | 
| 716 | 
             
                    inputs=[],
         | 
| 717 | 
             
                    outputs=sandbox_html
         | 
| 718 | 
             
                )
         | 
| 719 |  | 
|  | |
| 720 | 
             
                demo.load(
         | 
| 721 | 
             
                    fn=initialize_session,
         | 
| 722 | 
             
                    inputs=[is_interactive],
         | 

