Spaces:
				
			
			
	
			
			
		Runtime error
		
	
	
	
			
			
	
	
	
	
		
		
		Runtime error
		
	
		jenbenarye
		
	commited on
		
		
					Commit 
							
							·
						
						e39f857
	
1
								Parent(s):
							
							6b3efd9
								
removed VLMs
Browse files- app/app.py +25 -25
    	
        app/app.py
    CHANGED
    
    | @@ -70,16 +70,16 @@ CLIENT = create_inference_client() | |
| 70 |  | 
| 71 | 
             
            def get_persistent_storage_path(filename: str) -> tuple[Path, bool]:
         | 
| 72 | 
             
                """Check if persistent storage is available and return the appropriate path.
         | 
| 73 | 
            -
             | 
| 74 | 
             
                Args:
         | 
| 75 | 
             
                    filename: The name of the file to check/create
         | 
| 76 | 
            -
             | 
| 77 | 
             
                Returns:
         | 
| 78 | 
             
                    A tuple containing (file_path, is_persistent)
         | 
| 79 | 
             
                """
         | 
| 80 | 
             
                persistent_path = Path("/data") / filename
         | 
| 81 | 
             
                local_path = Path(__file__).parent / filename
         | 
| 82 | 
            -
             | 
| 83 | 
             
                # Check if persistent storage is available and writable
         | 
| 84 | 
             
                use_persistent = False
         | 
| 85 | 
             
                if Path("/data").exists() and Path("/data").is_dir():
         | 
| @@ -92,7 +92,7 @@ def get_persistent_storage_path(filename: str) -> tuple[Path, bool]: | |
| 92 | 
             
                    except (PermissionError, OSError):
         | 
| 93 | 
             
                        print("Persistent storage exists but is not writable, falling back to local storage")
         | 
| 94 | 
             
                        use_persistent = False
         | 
| 95 | 
            -
             | 
| 96 | 
             
                return (persistent_path if use_persistent else local_path, use_persistent)
         | 
| 97 |  | 
| 98 |  | 
| @@ -100,7 +100,7 @@ def load_languages() -> dict[str, str]: | |
| 100 | 
             
                """Load languages from JSON file or persistent storage"""
         | 
| 101 | 
             
                languages_path, use_persistent = get_persistent_storage_path("languages.json")
         | 
| 102 | 
             
                local_path = Path(__file__).parent / "languages.json"
         | 
| 103 | 
            -
             | 
| 104 | 
             
                # If persistent storage is available but file doesn't exist yet, copy the local file to persistent storage
         | 
| 105 | 
             
                if use_persistent and not languages_path.exists():
         | 
| 106 | 
             
                    try:
         | 
| @@ -115,10 +115,10 @@ def load_languages() -> dict[str, str]: | |
| 115 | 
             
                    except Exception as e:
         | 
| 116 | 
             
                        print(f"Error setting up persistent storage: {e}")
         | 
| 117 | 
             
                        languages_path = local_path  # Fall back to local path if any error occurs
         | 
| 118 | 
            -
             | 
| 119 | 
             
                if not languages_path.exists() and local_path.exists():
         | 
| 120 | 
             
                    languages_path = local_path
         | 
| 121 | 
            -
             | 
| 122 | 
             
                if languages_path.exists():
         | 
| 123 | 
             
                    with open(languages_path, "r", encoding="utf-8") as f:
         | 
| 124 | 
             
                        return json.load(f)
         | 
| @@ -129,7 +129,7 @@ def load_languages() -> dict[str, str]: | |
| 129 | 
             
            LANGUAGES = load_languages()
         | 
| 130 |  | 
| 131 | 
             
            USER_AGREEMENT = """
         | 
| 132 | 
            -
            You have been asked to participate in a research study conducted by Lingo Lab from the Computer Science and Artificial Intelligence Laboratory at the Massachusetts Institute of Technology (M.I.T.), together with huggingface. | 
| 133 |  | 
| 134 | 
             
            The purpose of this study is the collection of multilingual human feedback to improve language models. As part of this study you will interat with a language model in a langugage of your choice, and provide indication to wether its reponses are helpful or not.
         | 
| 135 |  | 
| @@ -268,17 +268,17 @@ def call_pipeline(messages: list, language: str): | |
| 268 | 
             
                if ZERO_GPU:
         | 
| 269 | 
             
                    tokenizer = CLIENT["tokenizer"]
         | 
| 270 | 
             
                    formatted_prompt = tokenizer.apply_chat_template(
         | 
| 271 | 
            -
                        messages, | 
| 272 | 
            -
                        tokenize=False, | 
| 273 | 
             
                    )
         | 
| 274 | 
            -
             | 
| 275 | 
             
                    response = CLIENT["pipeline"](
         | 
| 276 | 
             
                        formatted_prompt,
         | 
| 277 | 
             
                        clean_up_tokenization_spaces=False,
         | 
| 278 | 
             
                        max_length=2000,
         | 
| 279 | 
             
                        return_full_text=False,
         | 
| 280 | 
             
                    )
         | 
| 281 | 
            -
             | 
| 282 | 
             
                    return response[0]["generated_text"]
         | 
| 283 | 
             
                else:
         | 
| 284 | 
             
                    response = CLIENT(
         | 
| @@ -299,7 +299,7 @@ def respond( | |
| 299 |  | 
| 300 | 
             
                Return the history with the new message"""
         | 
| 301 | 
             
                messages = format_history_as_messages(history)
         | 
| 302 | 
            -
             | 
| 303 | 
             
                if ZERO_GPU:
         | 
| 304 | 
             
                    content = call_pipeline(messages, language)
         | 
| 305 | 
             
                else:
         | 
| @@ -311,7 +311,7 @@ def respond( | |
| 311 | 
             
                        temperature=temperature,
         | 
| 312 | 
             
                    )
         | 
| 313 | 
             
                    content = response.choices[0].message.content
         | 
| 314 | 
            -
             | 
| 315 | 
             
                message = gr.ChatMessage(role="assistant", content=content)
         | 
| 316 | 
             
                history.append(message)
         | 
| 317 | 
             
                return history
         | 
| @@ -500,29 +500,29 @@ def close_add_language_modal(): | |
| 500 |  | 
| 501 | 
             
            def save_new_language(lang_name, system_prompt):
         | 
| 502 | 
             
                """Save the new language and system prompt to persistent storage if available, otherwise to local file."""
         | 
| 503 | 
            -
                global LANGUAGES | 
| 504 | 
            -
             | 
| 505 | 
             
                languages_path, use_persistent = get_persistent_storage_path("languages.json")
         | 
| 506 | 
             
                local_path = Path(__file__).parent / "languages.json"
         | 
| 507 | 
            -
             | 
| 508 | 
             
                if languages_path.exists():
         | 
| 509 | 
             
                    with open(languages_path, "r", encoding="utf-8") as f:
         | 
| 510 | 
             
                        data = json.load(f)
         | 
| 511 | 
             
                else:
         | 
| 512 | 
             
                    data = {}
         | 
| 513 | 
            -
             | 
| 514 | 
             
                data[lang_name] = system_prompt
         | 
| 515 |  | 
| 516 | 
             
                with open(languages_path, "w", encoding="utf-8") as f:
         | 
| 517 | 
             
                    json.dump(data, f, ensure_ascii=False, indent=2)
         | 
| 518 | 
            -
             | 
| 519 | 
             
                if use_persistent and local_path != languages_path:
         | 
| 520 | 
             
                    try:
         | 
| 521 | 
             
                        with open(local_path, "w", encoding="utf-8") as f:
         | 
| 522 | 
             
                            json.dump(data, f, ensure_ascii=False, indent=2)
         | 
| 523 | 
             
                    except Exception as e:
         | 
| 524 | 
             
                        print(f"Error updating local backup: {e}")
         | 
| 525 | 
            -
             | 
| 526 | 
             
                LANGUAGES.update({lang_name: system_prompt})
         | 
| 527 | 
             
                return gr.Group(visible=False), gr.HTML("<script>window.location.reload();</script>"), gr.Dropdown(choices=list(LANGUAGES.keys()))
         | 
| 528 |  | 
| @@ -552,14 +552,14 @@ button#add-language-btn { | |
| 552 | 
             
            with gr.Blocks(css=css) as demo:
         | 
| 553 | 
             
                # State variable to track if user has consented
         | 
| 554 | 
             
                user_consented = gr.State(False)
         | 
| 555 | 
            -
             | 
| 556 | 
             
                # Landing page with user agreement
         | 
| 557 | 
             
                with gr.Group(visible=True) as landing_page:
         | 
| 558 | 
             
                    gr.Markdown("# Welcome to FeeL")
         | 
| 559 | 
             
                    with gr.Group(elem_classes=["user-agreement-container"]):
         | 
| 560 | 
             
                        gr.Markdown(USER_AGREEMENT)
         | 
| 561 | 
             
                    consent_btn = gr.Button("I agree")
         | 
| 562 | 
            -
             | 
| 563 | 
             
                # Main application interface (initially hidden)
         | 
| 564 | 
             
                with gr.Group(visible=False) as main_app:
         | 
| 565 | 
             
                    ##############################
         | 
| @@ -572,7 +572,7 @@ with gr.Blocks(css=css) as demo: | |
| 572 | 
             
                    with gr.Accordion("About") as explanation:
         | 
| 573 | 
             
                        gr.Markdown(f"""
         | 
| 574 | 
             
                        FeeL is a collaboration between Hugging Face and MIT.
         | 
| 575 | 
            -
                        It is a community-driven project to provide a real-time feedback loop for  | 
| 576 | 
             
                        The [dataset](https://huggingface.co/datasets/{scheduler.repo_id}), [code](https://github.com/huggingface/feel) and [models](https://huggingface.co/collections/feel-fl/feel-models-67a9b6ef0fdd554315e295e8) are public.
         | 
| 577 |  | 
| 578 | 
             
                        Start by selecting your language, chat with the model with text and images and provide feedback in different ways.
         | 
| @@ -593,7 +593,7 @@ with gr.Blocks(css=css) as demo: | |
| 593 | 
             
                                    scale=8
         | 
| 594 | 
             
                                )
         | 
| 595 | 
             
                                add_language_btn = gr.Button(
         | 
| 596 | 
            -
                                    "+", | 
| 597 | 
             
                                    elem_id="add-language-btn",
         | 
| 598 | 
             
                                    size="sm"
         | 
| 599 | 
             
                                )
         | 
| @@ -719,7 +719,7 @@ with gr.Blocks(css=css) as demo: | |
| 719 | 
             
                    global LANGUAGES
         | 
| 720 | 
             
                    LANGUAGES = load_languages()
         | 
| 721 | 
             
                    language_choices = list(LANGUAGES.keys())
         | 
| 722 | 
            -
             | 
| 723 | 
             
                    return str(uuid.uuid4()), gr.Dropdown(choices=language_choices, value=language_choices[0])
         | 
| 724 |  | 
| 725 | 
             
                demo.load(
         | 
|  | |
| 70 |  | 
| 71 | 
             
            def get_persistent_storage_path(filename: str) -> tuple[Path, bool]:
         | 
| 72 | 
             
                """Check if persistent storage is available and return the appropriate path.
         | 
| 73 | 
            +
             | 
| 74 | 
             
                Args:
         | 
| 75 | 
             
                    filename: The name of the file to check/create
         | 
| 76 | 
            +
             | 
| 77 | 
             
                Returns:
         | 
| 78 | 
             
                    A tuple containing (file_path, is_persistent)
         | 
| 79 | 
             
                """
         | 
| 80 | 
             
                persistent_path = Path("/data") / filename
         | 
| 81 | 
             
                local_path = Path(__file__).parent / filename
         | 
| 82 | 
            +
             | 
| 83 | 
             
                # Check if persistent storage is available and writable
         | 
| 84 | 
             
                use_persistent = False
         | 
| 85 | 
             
                if Path("/data").exists() and Path("/data").is_dir():
         | 
|  | |
| 92 | 
             
                    except (PermissionError, OSError):
         | 
| 93 | 
             
                        print("Persistent storage exists but is not writable, falling back to local storage")
         | 
| 94 | 
             
                        use_persistent = False
         | 
| 95 | 
            +
             | 
| 96 | 
             
                return (persistent_path if use_persistent else local_path, use_persistent)
         | 
| 97 |  | 
| 98 |  | 
|  | |
| 100 | 
             
                """Load languages from JSON file or persistent storage"""
         | 
| 101 | 
             
                languages_path, use_persistent = get_persistent_storage_path("languages.json")
         | 
| 102 | 
             
                local_path = Path(__file__).parent / "languages.json"
         | 
| 103 | 
            +
             | 
| 104 | 
             
                # If persistent storage is available but file doesn't exist yet, copy the local file to persistent storage
         | 
| 105 | 
             
                if use_persistent and not languages_path.exists():
         | 
| 106 | 
             
                    try:
         | 
|  | |
| 115 | 
             
                    except Exception as e:
         | 
| 116 | 
             
                        print(f"Error setting up persistent storage: {e}")
         | 
| 117 | 
             
                        languages_path = local_path  # Fall back to local path if any error occurs
         | 
| 118 | 
            +
             | 
| 119 | 
             
                if not languages_path.exists() and local_path.exists():
         | 
| 120 | 
             
                    languages_path = local_path
         | 
| 121 | 
            +
             | 
| 122 | 
             
                if languages_path.exists():
         | 
| 123 | 
             
                    with open(languages_path, "r", encoding="utf-8") as f:
         | 
| 124 | 
             
                        return json.load(f)
         | 
|  | |
| 129 | 
             
            LANGUAGES = load_languages()
         | 
| 130 |  | 
| 131 | 
             
            USER_AGREEMENT = """
         | 
| 132 | 
            +
            You have been asked to participate in a research study conducted by Lingo Lab from the Computer Science and Artificial Intelligence Laboratory at the Massachusetts Institute of Technology (M.I.T.), together with huggingface.
         | 
| 133 |  | 
| 134 | 
             
            The purpose of this study is the collection of multilingual human feedback to improve language models. As part of this study you will interat with a language model in a langugage of your choice, and provide indication to wether its reponses are helpful or not.
         | 
| 135 |  | 
|  | |
| 268 | 
             
                if ZERO_GPU:
         | 
| 269 | 
             
                    tokenizer = CLIENT["tokenizer"]
         | 
| 270 | 
             
                    formatted_prompt = tokenizer.apply_chat_template(
         | 
| 271 | 
            +
                        messages,
         | 
| 272 | 
            +
                        tokenize=False,
         | 
| 273 | 
             
                    )
         | 
| 274 | 
            +
             | 
| 275 | 
             
                    response = CLIENT["pipeline"](
         | 
| 276 | 
             
                        formatted_prompt,
         | 
| 277 | 
             
                        clean_up_tokenization_spaces=False,
         | 
| 278 | 
             
                        max_length=2000,
         | 
| 279 | 
             
                        return_full_text=False,
         | 
| 280 | 
             
                    )
         | 
| 281 | 
            +
             | 
| 282 | 
             
                    return response[0]["generated_text"]
         | 
| 283 | 
             
                else:
         | 
| 284 | 
             
                    response = CLIENT(
         | 
|  | |
| 299 |  | 
| 300 | 
             
                Return the history with the new message"""
         | 
| 301 | 
             
                messages = format_history_as_messages(history)
         | 
| 302 | 
            +
             | 
| 303 | 
             
                if ZERO_GPU:
         | 
| 304 | 
             
                    content = call_pipeline(messages, language)
         | 
| 305 | 
             
                else:
         | 
|  | |
| 311 | 
             
                        temperature=temperature,
         | 
| 312 | 
             
                    )
         | 
| 313 | 
             
                    content = response.choices[0].message.content
         | 
| 314 | 
            +
             | 
| 315 | 
             
                message = gr.ChatMessage(role="assistant", content=content)
         | 
| 316 | 
             
                history.append(message)
         | 
| 317 | 
             
                return history
         | 
|  | |
| 500 |  | 
| 501 | 
             
            def save_new_language(lang_name, system_prompt):
         | 
| 502 | 
             
                """Save the new language and system prompt to persistent storage if available, otherwise to local file."""
         | 
| 503 | 
            +
                global LANGUAGES
         | 
| 504 | 
            +
             | 
| 505 | 
             
                languages_path, use_persistent = get_persistent_storage_path("languages.json")
         | 
| 506 | 
             
                local_path = Path(__file__).parent / "languages.json"
         | 
| 507 | 
            +
             | 
| 508 | 
             
                if languages_path.exists():
         | 
| 509 | 
             
                    with open(languages_path, "r", encoding="utf-8") as f:
         | 
| 510 | 
             
                        data = json.load(f)
         | 
| 511 | 
             
                else:
         | 
| 512 | 
             
                    data = {}
         | 
| 513 | 
            +
             | 
| 514 | 
             
                data[lang_name] = system_prompt
         | 
| 515 |  | 
| 516 | 
             
                with open(languages_path, "w", encoding="utf-8") as f:
         | 
| 517 | 
             
                    json.dump(data, f, ensure_ascii=False, indent=2)
         | 
| 518 | 
            +
             | 
| 519 | 
             
                if use_persistent and local_path != languages_path:
         | 
| 520 | 
             
                    try:
         | 
| 521 | 
             
                        with open(local_path, "w", encoding="utf-8") as f:
         | 
| 522 | 
             
                            json.dump(data, f, ensure_ascii=False, indent=2)
         | 
| 523 | 
             
                    except Exception as e:
         | 
| 524 | 
             
                        print(f"Error updating local backup: {e}")
         | 
| 525 | 
            +
             | 
| 526 | 
             
                LANGUAGES.update({lang_name: system_prompt})
         | 
| 527 | 
             
                return gr.Group(visible=False), gr.HTML("<script>window.location.reload();</script>"), gr.Dropdown(choices=list(LANGUAGES.keys()))
         | 
| 528 |  | 
|  | |
| 552 | 
             
            with gr.Blocks(css=css) as demo:
         | 
| 553 | 
             
                # State variable to track if user has consented
         | 
| 554 | 
             
                user_consented = gr.State(False)
         | 
| 555 | 
            +
             | 
| 556 | 
             
                # Landing page with user agreement
         | 
| 557 | 
             
                with gr.Group(visible=True) as landing_page:
         | 
| 558 | 
             
                    gr.Markdown("# Welcome to FeeL")
         | 
| 559 | 
             
                    with gr.Group(elem_classes=["user-agreement-container"]):
         | 
| 560 | 
             
                        gr.Markdown(USER_AGREEMENT)
         | 
| 561 | 
             
                    consent_btn = gr.Button("I agree")
         | 
| 562 | 
            +
             | 
| 563 | 
             
                # Main application interface (initially hidden)
         | 
| 564 | 
             
                with gr.Group(visible=False) as main_app:
         | 
| 565 | 
             
                    ##############################
         | 
|  | |
| 572 | 
             
                    with gr.Accordion("About") as explanation:
         | 
| 573 | 
             
                        gr.Markdown(f"""
         | 
| 574 | 
             
                        FeeL is a collaboration between Hugging Face and MIT.
         | 
| 575 | 
            +
                        It is a community-driven project to provide a real-time feedback loop for LMs, where your feedback is continuously used to fine-tune the underlying models.
         | 
| 576 | 
             
                        The [dataset](https://huggingface.co/datasets/{scheduler.repo_id}), [code](https://github.com/huggingface/feel) and [models](https://huggingface.co/collections/feel-fl/feel-models-67a9b6ef0fdd554315e295e8) are public.
         | 
| 577 |  | 
| 578 | 
             
                        Start by selecting your language, chat with the model with text and images and provide feedback in different ways.
         | 
|  | |
| 593 | 
             
                                    scale=8
         | 
| 594 | 
             
                                )
         | 
| 595 | 
             
                                add_language_btn = gr.Button(
         | 
| 596 | 
            +
                                    "+",
         | 
| 597 | 
             
                                    elem_id="add-language-btn",
         | 
| 598 | 
             
                                    size="sm"
         | 
| 599 | 
             
                                )
         | 
|  | |
| 719 | 
             
                    global LANGUAGES
         | 
| 720 | 
             
                    LANGUAGES = load_languages()
         | 
| 721 | 
             
                    language_choices = list(LANGUAGES.keys())
         | 
| 722 | 
            +
             | 
| 723 | 
             
                    return str(uuid.uuid4()), gr.Dropdown(choices=language_choices, value=language_choices[0])
         | 
| 724 |  | 
| 725 | 
             
                demo.load(
         | 
