llama / app.py
aieeshashafique's picture
Update app.py
bb50d71 verified
raw
history blame
3.9 kB
import gradio as gr
from openai import OpenAI
import os
import json
css = '''
.gradio-container{max-width: 1000px !important}
h1{text-align:center}
footer {
visibility: hidden
}
'''
# Access token for Hugging Face
ACCESS_TOKEN = os.getenv("HF_TOKEN")
# Initialize the client for the OpenAI model
client = OpenAI(
base_url="https://api-inference.huggingface.co/v1/",
api_key=ACCESS_TOKEN,
)
# File path for storing user preferences
USER_DATA_PATH = "user_data.json"
# Load user preferences if they exist
def load_user_preferences():
if os.path.exists(USER_DATA_PATH):
with open(USER_DATA_PATH, "r") as file:
return json.load(file)
return {}
# Save user preferences
def save_user_preferences(data):
with open(USER_DATA_PATH, "w") as file:
json.dump(data, file)
# Respond function that generates the assistant's reply
def respond(
message,
history: list[tuple[str, str]],
system_message,
max_tokens,
temperature,
top_p,
):
# Load user preferences
user_data = load_user_preferences()
# Custom welcome message or save user input
if message.lower().startswith("my name is"):
user_data["name"] = message.split("is")[-1].strip()
save_user_preferences(user_data)
response = f"Nice to meet you, {user_data['name']}! How can I assist you with your travel plans today?"
yield response
return
if message.lower().startswith("i like to travel to"):
user_data["favorite_destination"] = message.split("to")[-1].strip()
save_user_preferences(user_data)
response = f"Got it! I noted that you enjoy traveling to {user_data['favorite_destination']}."
yield response
return
if message.lower().startswith("my budget is"):
user_data["budget"] = message.split("is")[-1].strip()
save_user_preferences(user_data)
response = f"Understood! I'll keep your budget of {user_data['budget']} in mind when suggesting travel options."
yield response
return
# Use user's name and preferences in responses if available
name = user_data.get("name", "Traveler")
favorite_destination = user_data.get("favorite_destination", "various places")
budget = user_data.get("budget", "not specified")
messages = [{"role": "system", "content": system_message}]
for val in history:
if val[0]:
messages.append({"role": "user", "content": val[0]})
if val[1]:
messages.append({"role": "assistant", "content": val[1]})
# Add the current user message
messages.append({"role": "user", "content": message})
response = f"Hello {name}! You mentioned you like traveling to {favorite_destination}. Let's plan something exciting within your budget of {budget}.\n"
# Generate a response using the OpenAI client
for message in client.chat.completions.create(
model="meta-llama/Meta-Llama-3.1-8B-Instruct",
max_tokens=max_tokens,
stream=True,
temperature=temperature,
top_p=top_p,
messages=messages,
):
token = message.choices[0].delta.content
response += token
yield response
# Gradio interface
demo = gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(
value="You are a friendly travel assistant. Offer personalized travel tips and remember user preferences.",
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",
),
],
css=css,
theme="allenai/gradio-theme",
)
if __name__ == "__main__":
demo.launch()