import streamlit as st from huggingface_hub import InferenceClient from transformers import AutoTokenizer, AutoModelForCausalLM import torch import os # Replace 'your_huggingface_token' with your actual Hugging Face access token access_token = os.getenv('token') # Initialize the tokenizer and model with the Hugging Face access token tokenizer = AutoTokenizer.from_pretrained("google/gemma-2b-it", use_auth_token=access_token) model = AutoModelForCausalLM.from_pretrained( "google/gemma-2b-it", torch_dtype=torch.bfloat16, use_auth_token=access_token ) model.eval() # Set the model to evaluation mode # Initialize the inference client (if needed for other API-based tasks) client = InferenceClient(token=access_token) def conversation_predict(input_text): """Generate a response for single-turn input using the model.""" # Tokenize the input text input_ids = tokenizer(input_text, return_tensors="pt").input_ids # Generate a response with the model outputs = model.generate(input_ids, max_new_tokens=2048) # Decode and return the generated response return tokenizer.decode(outputs[0], skip_special_tokens=True) def respond(): """Streamlit app for a multi-turn chat conversation.""" st.title("Chat with Gemma") system_message = st.text_input("System message", value="You are a friendly Chatbot.") max_tokens = st.slider("Max new tokens", min_value=1, max_value=2048, value=512, step=1) temperature = st.slider("Temperature", min_value=0.1, max_value=4.0, value=0.7, step=0.1) top_p = st.slider("Top-p (nucleus sampling)", min_value=0.1, max_value=1.0, value=0.95, step=0.05) message = st.text_input("Your message") if message: response = conversation_predict(message) st.write(response) if __name__ == "__main__": respond()