_ / app.py
harshSethi's picture
Update app.py
aa7f38f verified
raw
history blame
2.18 kB
import os
import gradio as gr
import datetime as dt
import pytz
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
# Get the api key from the environment variable
open_ai_api_key = os.environ.get("OPENAI_API_KEY")
if not open_ai_api_key:
raise ValueError("OPENAI_API_KEY environment variable is not set")
#intialize openai client
client = OpenAI(api_key = os.environ.get("OPENAI_API_KEY"))
System_msg = "act as an experienced blockchain developer,you have been working in this field from the past 15 years.help me understand some concepts, assume i am a complete begineer"
ipAddress = None
def nowInISt():
return dt.datetime.now(pytz.timezone("Asia/Kolkata"))
def attachIp():
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):
history_list = [{"role": "system", "content": System_msg}]
for human,ai in history:
history_list.append({"role": "user", "content": human})
history_list.append({"role": "assistant", "content": ai})
history_list.append({"role": "user", "content": message})
response = client.chat.completions.create(
model = "gpt-4o-mini",
message = history_list,
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}")
with gr.interface(
predict,
title = "blockchain teacher",
theme = gr.themes.Soft(),
chatbot = gr.Chatbot(label ="learn about blochchain technology")
textbox = gr.Textbox(
placeholder = "ask me anything about blochchain",
scale = 7
max_lines = 2,
)
) as demo:
demo.load(attachIp,None,None)
demo.launch()