Spaces:
Sleeping
Sleeping
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, AutoModelForCausalLM | |
import streamlit as st | |
def load_models(): | |
question_model_name = "mrm8488/t5-base-finetuned-question-generation-ap" | |
recipe_model_name = "flax-community/t5-recipe-generation" | |
instruct_model_name = "norallm/normistral-7b-warm-instruct" | |
# Load T5-based models for question generation and recipe generation | |
question_model = AutoModelForSeq2SeqLM.from_pretrained(question_model_name) | |
question_tokenizer = AutoTokenizer.from_pretrained(question_model_name) | |
recipe_model = AutoModelForSeq2SeqLM.from_pretrained(recipe_model_name) | |
recipe_tokenizer = AutoTokenizer.from_pretrained(recipe_model_name) | |
# Load the instruction model as a causal language model | |
instruct_model = AutoModelForCausalLM.from_pretrained(instruct_model_name) | |
instruct_tokenizer = AutoTokenizer.from_pretrained(instruct_model_name) | |
return (question_model, question_tokenizer), (recipe_model, recipe_tokenizer), (instruct_model, instruct_tokenizer) | |
# Function to generate questions using the question model | |
def generate_question(text, model, tokenizer): | |
input_text = f"generate question: {text}" | |
input_ids = tokenizer.encode(input_text, return_tensors="pt") | |
outputs = model.generate(input_ids) | |
return tokenizer.decode(outputs[0], skip_special_tokens=True) | |
# Function to generate recipes using the recipe model | |
def generate_recipe(ingredients, model, tokenizer): | |
input_text = f"generate recipe: {ingredients}" | |
input_ids = tokenizer.encode(input_text, return_tensors="pt") | |
outputs = model.generate(input_ids) | |
return tokenizer.decode(outputs[0], skip_special_tokens=True) | |
# Function to generate instructions using the instruction model | |
def generate_instruction(prompt, model, tokenizer): | |
input_ids = tokenizer.encode(prompt, return_tensors="pt") | |
outputs = model.generate(input_ids) | |
return tokenizer.decode(outputs[0], skip_special_tokens=True) | |
# Streamlit Interface | |
def main(): | |
st.title("Multi-Model Application") | |
# Load all models | |
(question_model, question_tokenizer), (recipe_model, recipe_tokenizer), (instruct_model, instruct_tokenizer) = load_models() | |
# Tabs for different functionalities | |
tab = st.selectbox("Choose task", ["Question Generation", "Recipe Generation", "Instruction Following"]) | |
if tab == "Question Generation": | |
passage = st.text_area("Enter a passage for question generation") | |
if st.button("Generate Question"): | |
question = generate_question(passage, question_model, question_tokenizer) | |
st.write("Generated Question:", question) | |
elif tab == "Recipe Generation": | |
ingredients = st.text_area("Enter ingredients for recipe generation") | |
if st.button("Generate Recipe"): | |
recipe = generate_recipe(ingredients, recipe_model, recipe_tokenizer) | |
st.write("Generated Recipe:", recipe) | |
elif tab == "Instruction Following": | |
instruction_prompt = st.text_area("Enter an instruction prompt") | |
if st.button("Generate Instruction"): | |
instruction = generate_instruction(instruction_prompt, instruct_model, instruct_tokenizer) | |
st.write("Generated Instruction:", instruction) | |
if __name__ == "__main__": | |
main() | |