File size: 2,530 Bytes
8a2df3b 0dfa860 4dbb2b2 c2e2d51 8a2df3b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
from openai import OpenAI
import os
import time
import gradio as gr
# Initialize clients with API keys
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY", "<your OpenAI API key if not set as env var>"))
# Step 1: Create an Assistant
assistant = client.beta.assistants.create(
name="WEA Emergency Message Generator",
instructions="You are an emergency message generator. You will write emergency messages of 360 characters or less to broadcast to wireless phones. Do not include hashtags or emojis.",
model="gpt-4-turbo-preview",
tools=[{"type": "retrieval"}]
)
# Step 2: Create a Thread
thread = client.beta.threads.create()
def main(query):
# Step 3: Add a Message to a Thread
message = client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content=query
)
# Step 4: Run the Assistant
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id,
instructions="You are an emergency message generator. You will write emergency messages of 360 characters or less to broadcast to wireless phones. Do not include hashtags or emojis."
)
while True:
# Wait for 5 seconds
time.sleep(5)
# Retrieve the run status
run_status = client.beta.threads.runs.retrieve(
thread_id=thread.id,
run_id=run.id
)
# If run is completed, get messages
if run_status.status == 'completed':
messages = client.beta.threads.messages.list(
thread_id=thread.id,
limit=1
)
response = ""
# Loop through messages and print content based on role
for msg in messages.data:
role = msg.role
content = msg.content[0].text.value
response += f"{role.capitalize()}: {content}\n\n"
return response+"\n\n"
else:
continue
# Create a Gradio Interface
iface = gr.Interface(
fn=main,
inputs=[gr.Textbox(label="Describe the warning here", lines=4)],
outputs=[gr.Textbox(label="Suggested Message", lines=4)],
allow_flagging="never",
title="WEA Emergency Message Assistant",
description="Hello. I'm Emmy your emergency messaging bot. Please describe the message you would like me to generate. NOTE: this is the original experimental bot and is not designed for use in actual emergencies.",
article="All input and output will be saved for research purposes.").launch()
iface.launch()
|