| 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 |
| 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:" |
| """ |
| return ( |
| "<|system|>You are a helpful assistant that specializes in Boston public school enrollment.<|end|>\n" |
| f"<|user|>{user_input}<|end|>\n" |
| "<|assistant|>" |
| ) |
| |
| 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.format_prompt() to format the user's input |
| - Use self.client to generate responses |
| """ |
| prompt = self.format_prompt(user_input) |
| response = self.client.text_generation( |
| prompt, |
| max_new_tokens=512, |
| temperature=0.7, |
| top_p=0.9, |
| stop_sequences=["<|end|>"] |
| ) |
| return response.strip() |