| import sys |
| !{sys.executable} -m pip install streamlit transformers accelerate torch |
|
|
| import streamlit as st |
|
|
| HF_API_TOKEN = "your_huggingface_api_token_here" |
| MODEL_ID = "mistralai/Mistral-7B-Instruct-v0.2" |
| API_URL = f"https://api-inference.huggingface.co/models/{MODEL_ID}" |
| HEADERS = {"Authorization": f"Bearer {HF_API_TOKEN}"} |
|
|
| import streamlit as st |
| from transformers import AutoTokenizer, AutoModelForCausalLM, AutoConfig |
| import torch |
|
|
| st.title("📚 AI Adaptive Learning (Local Small Model)") |
|
|
| MODEL_ID = "microsoft/phi-2" |
|
|
| @st.cache_resource |
| def load_model(): |
| tokenizer = AutoTokenizer.from_pretrained(MODEL_ID) |
| |
| if tokenizer.pad_token_id is None: |
| tokenizer.pad_token_id = tokenizer.eos_token_id |
|
|
| |
| config = AutoConfig.from_pretrained(MODEL_ID) |
|
|
| |
| if not hasattr(config, 'pad_token_id') or config.pad_token_id is None: |
| config.pad_token_id = tokenizer.pad_token_id |
|
|
| model = AutoModelForCausalLM.from_pretrained( |
| MODEL_ID, |
| config=config, |
| torch_dtype=torch.float32, |
| device_map="auto" |
| ) |
| return tokenizer, model |
|
|
| tokenizer, model = load_model() |
|
|
| |
| user_input = st.text_input("Ask a question:") |
|
|
| if st.button("Submit") and user_input: |
| inputs = tokenizer(user_input, return_tensors="pt") |
|
|
| with torch.no_grad(): |
| outputs = model.generate( |
| **inputs, |
| max_new_tokens=150, |
| do_sample=True, |
| temperature=0.7 |
| ) |
|
|
| answer = tokenizer.decode(outputs[0], skip_special_tokens=True) |
|
|
| st.subheader("AI Answer:") |
| st.write(answer) |