import openai
import time
import gradio as gr
Initialize the client
client = openai.OpenAI()
file = client.files.create(
file=open("songs.txt", "rb"),
purpose='assistants'
)
Step 1: Create an Assistant
assistant = client.beta.assistants.create(
name="Customer Service Assistant",
instructions="You are a customer support chatbot. Use your knowledge base to best respond to customer queries.",
model="gpt-4-1106-preview",
file_ids=[file.id],
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="Please address the user as Mervin Praison"
)
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
)
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="textbox", outputs="textbox", title="Chatbot").launch()
iface.launch()
Categories
AI
OpenAI Assistants API + Streamlit
Post author
By praison
Post date
November 13, 2023
import openai
import time
import streamlit as st
def main():
if 'client' not in st.session_state:
# Initialize the client
st.session_state.client = openai.OpenAI()
st.session_state.file = st.session_state.client.files.create(
file=open("songs.txt", "rb"),
purpose='assistants'
)
# Step 1: Create an Assistant
st.session_state.assistant = st.session_state.client.beta.assistants.create(
name="Customer Service Assistant",
instructions="You are a customer support chatbot. Use your knowledge base to best respond to customer queries.",
model="gpt-4-1106-preview",
file_ids=[st.session_state.file.id],
tools=[{"type": "retrieval"}]
)
# Step 2: Create a Thread
st.session_state.thread = st.session_state.client.beta.threads.create()
user_query = st.text_input("Enter your query:", "Tell me about Dance Monkey")
if st.button('Submit'):
# Step 3: Add a Message to a Thread
message = st.session_state.client.beta.threads.messages.create(
thread_id=st.session_state.thread.id,
role="user",
content=user_query
)
# Step 4: Run the Assistant
run = st.session_state.client.beta.threads.runs.create(
thread_id=st.session_state.thread.id,
assistant_id=st.session_state.assistant.id,
instructions="Please address the user as Mervin Praison"
)
while True:
# Wait for 5 seconds
time.sleep(5)
# Retrieve the run status
run_status = st.session_state.client.beta.threads.runs.retrieve(
thread_id=st.session_state.thread.id,
run_id=run.id
)
# If run is completed, get messages
if run_status.status == 'completed':
messages = st.session_state.client.beta.threads.messages.list(
thread_id=st.session_state.thread.id
)
# Loop through messages and print content based on role
for msg in messages.data:
role = msg.role
content = msg.content[0].text.value
st.write(f"{role.capitalize()}: {content}")
break
else:
st.write("Waiting for the Assistant to process...")
time.sleep(5)
if name == "main":
main()