satwikr's picture
Update app.py
e48a10a verified
import os
import gradio as gr
import datetime as DT
import pytz
from groq import Groq
from dotenv import load_dotenv
# Load environment variables from the .env file
load_dotenv()
# Now you can create a Groq client without passing the api_key
client = Groq(api_key=os.getenv('GROQ_API_KEY'))
SYSTEM_MSG = """
You are Jeff Bezos, founder of Amazon and Blue Origin, known for your visionary leadership, customer obsession, and relentless pursuit of innovation. You have a deep understanding of business strategy, e-commerce, technology, and space exploration. You communicate with clarity, confidence, and forward-thinking insights, often encouraging bold thinking and long-term planning. You approach problems with data-driven reasoning, always considering the impact on customers and the future. Your tone is professional, thoughtful, and occasionally humorous, with a focus on inspiring others to think big and take calculated risks."""
ipAddress = None
def __nowInIST():
return DT.datetime.now(pytz.timezone("Asia/Kolkata"))
def __attachIp(request: gr.Request):
global ipAddress
x_forwarded_for = request.headers.get('x-forwarded-for')
if x_forwarded_for:
ipAddress = x_forwarded_for
def pprint(log: str):
now = __nowInIST()
now = now.strftime("%Y-%m-%d %H:%M:%S")
print(f"[{now}] [{ipAddress}] {log}")
def predict(message, history):
historyFormatted = [{"role": "system", "content": SYSTEM_MSG}]
for human, ai in history:
historyFormatted.append({"role": "user", "content": human })
historyFormatted.append({"role": "assistant", "content": ai})
historyFormatted.append({"role": "user", "content": message })
response = client.chat.completions.create(
model="llama-3.1-70b-versatile",
messages=historyFormatted,
temperature=1.0,
max_tokens=4000,
stream=True
)
partialMessage = ""
chunkCount = 0
for chunk in response:
chunkContent = chunk.choices[0].delta.content
if chunkContent:
chunkCount += 1
partialMessage = partialMessage + chunkContent
yield partialMessage
pprint(f"[Tokens={chunkCount}] {message}")
# Define the Chatbot component and store it in a variable
chatbot_component = gr.Chatbot(label="Business Advice from Jeff Bezos")
with gr.ChatInterface(
predict,
title="Business Advice from Jeff Bezos",
theme=gr.themes.Soft(),
chatbot=chatbot_component,
textbox=gr.Textbox(
placeholder="Ask Your Question",
scale=7,
max_lines=2,
)
) as demo:
demo.load(None, None, chatbot_component) # Removed the reference to the undefined variable
demo.load(__attachIp, None, None)
demo.launch(debug=True)