import streamlit as st from grouped_sampling import GroupedSamplingPipeLine from supported_models import get_supported_model_names SUPPORTED_MODEL_NAMES = get_supported_model_names() def create_pipeline(model_name: str, group_size) -> GroupedSamplingPipeLine: """ Creates a pipeline with the given model name and group size. :param model_name: The name of the model to use. :param group_size: The size of the groups to use. :return: A pipeline with the given model name and group size. """ return GroupedSamplingPipeLine( model_name=model_name, group_size=group_size, end_of_sentence_stop=True, ) @st.cache def on_form_submit(model_name: str, group_size: int, prompt: str) -> str: """ Called when the user submits the form. :param model_name: The name of the model to use. :param group_size: The size of the groups to use. :param prompt: The prompt to use. :return: The output of the model. """ if model_name not in SUPPORTED_MODEL_NAMES: raise ValueError(f"The selected model {model_name} is not supported." f"Supported models are all the models in:" f" https://huggingface.co/models?pipeline_tag=text-generation&library=pytorch") pipeline = create_pipeline( model_name, group_size, ) return pipeline(prompt)["generated_text"]