Spaces:
Runtime error
Runtime error
import streamlit as st | |
from typing import Generator | |
from transformers import AutoTokenizer, AutoModelForCausalLM | |
import torch | |
st.set_page_config( | |
page_icon="π¬", | |
page_title="Chat App", | |
layout="wide", | |
) | |
model_name = "JuliaTsk/SuccinctLabs-chat-finetuned" | |
tokenizer = AutoTokenizer.from_pretrained(model_name) | |
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="cpu", low_cpu_mem_usage=True) | |
st.title("ChatGPT-like clone π") | |
def generate_chat_responses(chat_completion) -> Generator[str, None, None]: | |
for chunk in chat_completion: | |
if chunk.choices[0].delta.content: | |
yield chunk.choices[0].delta.content | |
left, right = st.columns([2, 6], vertical_alignment="top") | |
max_tokens_range = 32768 | |
max_tokens = left.slider( | |
label="Max Tokens:", | |
min_value=128, | |
max_value=max_tokens_range, | |
# Default value or max allowed if less | |
value=min(1024, max_tokens_range), | |
step=128, | |
help=f"Adjust the maximum number of tokens (words) for the model's response." | |
) | |
temperature = left.slider( | |
label="Temperature:", | |
min_value=0.0, | |
max_value=1.0, | |
value=0.7, | |
step=0.01, | |
help=f"Controls randomness: a low value means less random responses." | |
) | |
if "messages" not in st.session_state: | |
st.session_state.messages = [] | |
for message in st.session_state.messages: | |
avatar = 'π€' if message["role"] == "assistant" else 'π¨βπ»' | |
with right.chat_message(message["role"], avatar=avatar): | |
right.markdown(message["content"]) | |
prompt = st.chat_input("Say something") | |
if prompt: | |
with right.chat_message("user", avatar='π¨βπ»'): | |
right.markdown(prompt) | |
st.session_state.messages.append({"role": "user", "content": prompt}) | |
with right.chat_message("assistant"): | |
inputs = tokenizer(prompt, return_tensors="pt") | |
outputs = model.generate(inputs["input_ids"], max_length=100, num_return_sequences=1) | |
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True) | |
st.session_state.messages.append({"role": "assistant", "content": generated_text}) | |