|
import os |
|
|
|
import solara |
|
from solara_enterprise import auth |
|
from reacton import ipyvuetify as rv |
|
from functools import partial |
|
|
|
os.environ['SOLARA_OAUTH_API_BASE_URL']="dev-r2bw2n3hwf72bni6.us.auth0.com" |
|
os.environ['SOLARA_OAUTH_CLIENT_ID']="lQl2yjR7dr7XVbK480OJ2sfgoWf6U7s2" |
|
os.environ['SOLARA_OAUTH_CLIENT_SECRET']="BsGtc_GLEZgsv4DsZnSya4YhB38nm7ohJp5kobfOVb2X8CeT9XTHMOxnXR_djQMd" |
|
|
|
os.environ['REPLICATE_API_TOKEN']='r8_YSD53gSw5IQbT8Fmnekc8ypEIuy28wN4IG45C' |
|
|
|
import replicate |
|
|
|
@solara.component |
|
def Message(message): |
|
icon = "mdi-robot" if message['user']=='Assistant' else 'mdi-account' |
|
icon = rv.Icon(children=[icon]) |
|
user = rv.CardTitle(icon=icon,children=[solara.Columns([0.6,2,10],children=[icon,message['user'],rv.Spacer()])]) |
|
text = rv.CardText(children=[message['text']]) |
|
messageDiv = rv.Card(_class="mx-auto",width="100%",flat=True,children=[user,text]) |
|
return messageDiv |
|
|
|
def Redo(): |
|
message = messages.value[-2]['text'] |
|
messages.set(messages.value[:-2]) |
|
sendMessage(message) |
|
|
|
@solara.component |
|
def InputText(): |
|
InputText = solara.InputText("Enter some text",value=input_text) |
|
rv.use_event(InputText,"keypress",partial(handleEnter)) |
|
InputText |
|
|
|
def sendMessage(message): |
|
name = str(auth.user.value['userinfo']['name']).split(" ")[0] |
|
messages.set(messages.value+[{'user':name,'text':message}]) |
|
prompt.value += f"[INST] {message} [/INST] \n" |
|
messages.set(messages.value+[{'user':'Assistant','text':''}]) |
|
response = '' |
|
for token in replicate.stream( |
|
"meta/llama-2-7b-chat", |
|
input={ |
|
"debug": False, |
|
"top_p": 1, |
|
"prompt": prompt.value, |
|
"temperature": 0.75, |
|
"system_prompt": f"You are a helpful, respectful and honest assistant. You are tasked with helping {name} with figuring out the correct European Binding Tariff Information for their shipment. Please address them by their name and their needs.", |
|
"max_new_tokens": 800, |
|
"min_new_tokens": -1, |
|
"prompt_template": "[INST] <<SYS>>\n{system_prompt}\n<</SYS>>\n\n{prompt} [/INST]", |
|
"repetition_penalty": 1 |
|
}, |
|
): |
|
response += str(token) |
|
messages.set(messages.value[:-1]+[{'user':'Assistant', 'text':response}]) |
|
prompt.value += f"{messages.value[-1]['text']}" |
|
print('Boom') |
|
|
|
|
|
def handleEnter(*args): |
|
if str(args[2]['key'])=='Enter': |
|
message = args[0].v_model |
|
print(message) |
|
sendMessage(message) |
|
|
|
|
|
prompt = solara.reactive('') |
|
messages = solara.reactive([]) |
|
input_text = solara.reactive('') |
|
|
|
@solara.component |
|
def ColumnLayout(children): |
|
solara.Columns([2,6,2],children=[solara.Column(),solara.Column(children),solara.Column()]) |
|
|
|
|
|
@solara.component |
|
def Page(): |
|
with solara.AppLayout(title="EBTI GPT"): |
|
solara.AppBarTitle(children=[]) |
|
with rv.Card(flat=True): |
|
with ColumnLayout(): |
|
if not auth.user.value: |
|
solara.Markdown(f"### Please Login ") |
|
solara.Button("Login", icon_name="mdi-login", href=auth.get_login_url()) |
|
else: |
|
userinfo = auth.user.value['userinfo'] |
|
if 'name' in userinfo: |
|
solara.Markdown(f"### Welcome {userinfo['name']}") |
|
with ColumnLayout(): |
|
rv.Card(flat=True,children=[Message(message) for message in messages.value]) |
|
with ColumnLayout(): |
|
InputText() |
|
with ColumnLayout(): |
|
solara.Button("Logout", icon_name="mdi-logout", href=auth.get_logout_url()) |
|
Page() |