Spaces:
Running
Running
import streamlit as st | |
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM | |
import json | |
import requests | |
import os | |
# Streamlit app configuration | |
st.set_page_config(page_title="AI Chatbot", layout="centered") | |
# Fix the model's configuration before loading | |
def fix_model_config(model_name): | |
# Download the configuration file from the model repository | |
config_url = f"https://huggingface.co/{model_name}/resolve/main/config.json" | |
config_path = "config.json" | |
if not os.path.exists(config_path): | |
response = requests.get(config_url) | |
response.raise_for_status() # Raise an error if the request fails | |
with open(config_path, "w") as f: | |
f.write(response.text) | |
# Load the configuration and modify rope_scaling if necessary | |
with open(config_path, "r") as f: | |
config = json.load(f) | |
if "rope_scaling" in config: | |
config["rope_scaling"] = { | |
"type": "linear", # Replace the problematic rope_scaling type | |
"factor": config["rope_scaling"].get("factor", 1.0) | |
} | |
# Save the modified configuration | |
with open(config_path, "w") as f: | |
json.dump(config, f) | |
return config_path | |
# Load the model pipeline | |
def load_pipeline(): | |
model_name = "Orenguteng/Llama-3.1-8B-Lexi-Uncensored-V2" | |
# Fix the model configuration | |
fixed_config_path = fix_model_config(model_name) | |
# Load tokenizer and model | |
tokenizer = AutoTokenizer.from_pretrained(model_name) | |
model = AutoModelForCausalLM.from_pretrained( | |
model_name, | |
config=fixed_config_path, | |
device_map="auto" # Use GPU if available | |
) | |
return pipeline("text-generation", model=model, tokenizer=tokenizer) | |
pipe = load_pipeline() | |
# Streamlit App UI | |
st.title("🤖 AI Chatbot") | |
st.markdown( | |
""" | |
Welcome to the **AI Chatbot** powered by Hugging Face's **Llama-3.1-8B-Lexi-Uncensored-V2** model. | |
Type your message below and interact with the AI! | |
""" | |
) | |
# User input area | |
user_input = st.text_area( | |
"Your Message", | |
placeholder="Type your message here...", | |
height=100 | |
) | |
# Button to generate response | |
if st.button("Generate Response"): | |
if user_input.strip(): | |
with st.spinner("Generating response..."): | |
try: | |
response = pipe(user_input, max_length=150, num_return_sequences=1) | |
st.text_area("Response", value=response[0]["generated_text"], height=200) | |
except Exception as e: | |
st.error(f"An error occurred: {e}") | |
else: | |
st.warning("Please enter a message before clicking the button.") | |
# Footer | |
st.markdown("---") | |
st.markdown("Made with ❤️ using [Streamlit](https://streamlit.io) and [Hugging Face](https://huggingface.co).") |