|
import gradio as gr |
|
import os |
|
from openai import OpenAI |
|
import time |
|
|
|
css = """ |
|
h1 { |
|
text-align: center; |
|
display:block; |
|
} |
|
""" |
|
video_path= "demo_video_gaidio.mp4" |
|
|
|
key_passw = os.environ.get('passw_gaidio', None) |
|
key_usr = os.environ.get('usr_gaidio', None) |
|
|
|
assistant_id = os.environ.get('asst_id', None) |
|
client = OpenAI(api_key=os.environ.get('AI_key', None)) |
|
|
|
|
|
thread = client.beta.threads.create() |
|
print(thread.id) |
|
|
|
def main_chat_bot(query,history): |
|
|
|
message = client.beta.threads.messages.create( |
|
thread_id=thread.id, |
|
role="user", |
|
content=query |
|
) |
|
|
|
|
|
run = client.beta.threads.runs.create( |
|
thread_id=thread.id, |
|
assistant_id=assistant_id, |
|
) |
|
|
|
while True: |
|
time.sleep(3) |
|
|
|
run_status = client.beta.threads.runs.retrieve( |
|
thread_id=thread.id, |
|
run_id=run.id |
|
) |
|
|
|
if run_status.status == 'completed': |
|
messages = client.beta.threads.messages.list( |
|
thread_id=thread.id |
|
) |
|
response = "" |
|
for msg in messages.data: |
|
role = msg.role |
|
content = msg.content[0].text.value |
|
response += f"{role.capitalize()}: {content}\n\n" |
|
break |
|
return response+ "\n\n" |
|
else: |
|
continue |
|
|
|
with gr.Blocks(css=css) as demo: |
|
gr.Markdown( |
|
""" |
|
# gAIdio (Proof of concept) |
|
Fråga mig om uppgiftskrav! |
|
""") |
|
|
|
|
|
with gr.Tab("Chatbot"): |
|
chatbot = gr.Chatbot(placeholder="<strong>gAIdio</strong><br>Fråga mig om uppgiftskrav!", render=False) |
|
|
|
gr.ChatInterface(fn=main_chat_bot, chatbot=chatbot) |
|
with gr.Tab("Instruktioner"): |
|
with gr.Row(): |
|
gr.Markdown( |
|
""" |
|
# Bakgrund |
|
Funderar du på att starta en ny verksamhet? Eller vill du kanske utöka din nuvarande verksamhet? |
|
<br>Denna assistent hjälper dig att få svar på vilka uppgiftskrav som kan vara relevanta för just dig. |
|
## Data |
|
Den data som assistenten har tillgång till är 860 st uppgiftskrav från [Uppgiftskrav.se](https://www.uppgiftskrav.se/uppgiftskrav/ 'Uppgiftskrav'). |
|
## Instruktioner |
|
Ge en kortfattad verksamhetsbeskrivning, alternativt ställ en fråga som rör din planerade verksamhet. |
|
## Format |
|
Assistenten kommer att lista relevanta uppgiftskrav med kortfattade beskrivningar av dessa och <br>länka till uppgiftskravens sidor på Uppgiftskrav.se. |
|
""") |
|
with gr.Tab("Videoexempel"): |
|
with gr.Row(): |
|
gr.Markdown("Det kan ta några sekunder för exempelvideon att ladda.") |
|
with gr.Row(): |
|
gr.PlayableVideo(video_path) |
|
|
|
demo.launch(auth=(key_usr, key_passw)) |