Spaces:
Sleeping
Sleeping
| from huggingface_hub import InferenceClient | |
| from config import BASE_MODEL, MY_MODEL, HF_TOKEN | |
| class SchoolChatbot: | |
| """ | |
| This class is extra scaffolding around a model. Modify this class to specify how the model recieves prompts and generates responses. | |
| Example usage: | |
| chatbot = SchoolChatbot() | |
| response = chatbot.get_response("What schools offer Spanish programs?") | |
| """ | |
| def __init__(self): | |
| """ | |
| Initialize the chatbot with a HF model ID | |
| """ | |
| model_id = MY_MODEL if MY_MODEL else BASE_MODEL # define MY_MODEL in config.py if you create a new model in the HuggingFace Hub | |
| self.client = InferenceClient(model=model_id, token=HF_TOKEN) | |
| def format_prompt(self, user_input): | |
| """ | |
| TODO: Implement this method to format the user's input into a proper prompt. | |
| This method should: | |
| 1. Add any necessary system context or instructions | |
| 2. Format the user's input appropriately | |
| 3. Add any special tokens or formatting the model expects | |
| Args: | |
| user_input (str): The user's question about Boston schools | |
| Returns: | |
| str: A formatted prompt ready for the model | |
| Example prompt format: | |
| "You are a helpful assistant that specializes in Boston schools... | |
| User: {user_input} | |
| Assistant:" | |
| """ | |
| system_prompt = """You are a helpful assistant that specializes in helping parents choose Boston public schools. | |
| You provide accurate information about school programs, locations, enrollment processes, and other important details. | |
| Always be professional, clear, and focused on helping parents make informed decisions about schools. | |
| """ | |
| # Combine system prompt with user input | |
| formatted_prompt = f""" | |
| {system_prompt} | |
| User: {user_input} | |
| Assistant:""" | |
| return formatted_prompt | |
| def get_response(self, user_input): | |
| """ | |
| TODO: Implement this method to generate responses to user questions. | |
| This method should: | |
| 1. Use format_prompt() to prepare the input | |
| 2. Generate a response using the model | |
| 3. Clean up and return the response | |
| Args: | |
| user_input (str): The user's question about Boston schools | |
| Returns: | |
| str: The chatbot's response | |
| Implementation tips: | |
| - Use self.tokenizer to convert text to tokens | |
| - Use self.model.generate() for text generation | |
| - Consider parameters like temperature and max_length | |
| - Clean up the response before returning it | |
| """ | |
| prompt = self.format_prompt(user_input) | |
| try: | |
| print("Generating response...") | |
| response = self.client.text_generation( | |
| prompt, | |
| max_new_tokens=300, | |
| temperature=0.7, | |
| top_p=0.95, | |
| do_sample=True, | |
| return_full_text=False | |
| ) | |
| return response.strip().split("Assistant:")[-1].strip() | |
| except Exception as e: | |
| print(f"API error: {e}") | |
| return f"I apologize, but I encountered an error: {str(e)}" |