File size: 2,014 Bytes
d88613b 492ffb8 d88613b 492ffb8 d88613b 492ffb8 d88613b 492ffb8 d88613b 492ffb8 d88613b 492ffb8 d88613b 492ffb8 d88613b 492ffb8 d88613b 492ffb8 d88613b 492ffb8 d88613b 492ffb8 d88613b 492ffb8 d88613b 492ffb8 d88613b 492ffb8 d88613b |
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 |
import gradio as gr
from transformers import GPT2LMHeadModel, GPT2Tokenizer
# Load model and tokenizer from Hugging Face Hub
model_name = "Electricarchmage/cookbookgpt"
model = GPT2LMHeadModel.from_pretrained(model_name)
tokenizer = GPT2Tokenizer.from_pretrained(model_name)
# Define the respond function
def respond(
message,
history: list[tuple[str, str]],
system_message,
max_tokens,
temperature,
top_p,
):
# Preparing the messages for context (the history and the new message)
input_text = system_message + "\n"
for val in history:
if val[0]:
input_text += f"User: {val[0]}\n"
if val[1]:
input_text += f"Assistant: {val[1]}\n"
input_text += f"User: {message}\nAssistant:"
# Tokenize the input and generate a response
inputs = tokenizer(input_text, return_tensors="pt", max_length=1024, truncation=True)
# Generate output tokens
output = model.generate(
inputs["input_ids"],
max_length=max_tokens + len(inputs["input_ids"][0]),
temperature=temperature,
top_p=top_p,
num_return_sequences=1,
no_repeat_ngram_size=2,
)
# Decode the output tokens into text
response = tokenizer.decode(output[0], skip_special_tokens=True)
# Extract only the assistant's reply
assistant_reply = response.split("Assistant:")[-1].strip()
return assistant_reply
# Define the Gradio interface
demo = gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(value="You are a friendly Chatbot.", label="System message"),
gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.95,
step=0.05,
label="Top-p (nucleus sampling)",
),
],
)
# Launch the app
if __name__ == "__main__":
demo.launch()
|