File size: 2,369 Bytes
dfd8be4 2f61e1e e904b78 a49af47 2f61e1e a49af47 e904b78 a49af47 2f61e1e e904b78 2f61e1e e904b78 2f61e1e e904b78 2f61e1e e904b78 2f61e1e e904b78 2f61e1e a49af47 2f61e1e e904b78 2f61e1e e904b78 2f61e1e e904b78 2f61e1e e904b78 2f61e1e e904b78 2f61e1e e904b78 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | import streamlit as st
from huggingface_hub import hf_hub_download
from llama_cpp import Llama
# 1. Configurazione Interfaccia
st.set_page_config(
page_title="Limba 2.0",
page_icon="https://upload.wikimedia.org/wikipedia/commons/6/65/Flag_of_Sardinia.svg"
)
# 2. Mostra il LOGO
# Il blocco try-except evita che l'app si blocchi se il file non è ancora presente
try:
st.image("logo.png", width=150)
except:
pass # Se il logo non c'è, prosegue senza mostrare errori grafici
# 3. Titolo aggiornato (Senza "Mentor")
st.title("Limba 2.0")
st.markdown("### Su mentore tuo in limba sarda")
# 2. Caricamento del Modello GGUF
@st.cache_resource
def load_model():
try:
# Scarica il file specifico dal tuo profilo
model_path = hf_hub_download(
repo_id="FPll/limba-mentor-llama3-gguf",
filename="Meta-Llama-3.1-8B.Q4_K_M.gguf"
)
# n_threads=2 è il limite ottimale per l'hardware gratuito di HF
return Llama(model_path=model_path, n_ctx=2048, n_threads=2)
except Exception as e:
st.error(f"Errore nel caricamento del modello: {e}")
return None
with st.spinner("Sto caricando Limba 2.0..."):
llm = load_model()
# 3. Gestione della Chat
if "messages" not in st.session_state:
st.session_state.messages = []
# Mostra i messaggi della conversazione corrente
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
# Input dell'utente
if prompt := st.chat_input("Iscrie inoghe..."):
st.session_state.messages.append({"role": "user", "content": prompt})
with st.chat_message("user"):
st.markdown(prompt)
# Generazione della risposta dell'AI
with st.chat_message("assistant"):
# Formattazione prompt per Llama 3.1
full_prompt = f"### Istruzione:\n{prompt}\n\n### Risposta:\n"
if llm:
response = llm(
full_prompt,
max_tokens=512,
stop=["###", "<|end_of_text|>", "</s>"],
echo=False
)
answer = response["choices"][0]["text"].strip()
st.markdown(answer)
st.session_state.messages.append({"role": "assistant", "content": answer})
else:
st.error("Il modello non è stato caricato correttamente.") |