DEV Community

parmarjatin4911@gmail.com
parmarjatin4911@gmail.com

Posted on

OpenAI Assistants API + Gradio

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

By praison

Post date

November 13, 2023
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

if name == "main":
main()

Top comments (0)