OpenAI Custom Assistant Responding Differently Between Web Interface and Python API

I'm developing a Python application using the OpenAI Assistants API, and I've noticed a significant discrepancy in the assistant's responses. When I use the same custom assistant in the OpenAI web interface, it provides more precise and contextually accurate responses compared to when I run the same query through my Python application.

Specific concerns:
- The system prompt and user message are identical in both environments
- The response quality and adherence to instructions vary noticeably
- I've verified the API key, assistant configuration, and basic implementation

Questions:
1. Could there be subtle differences in how the context or instructions are interpreted between the web interface and the Python API?
2. Are there any known issues with context passing or instruction handling in the current version of the OpenAI API?
3. What debugging steps can I take to identify the root cause of these inconsistent responses?

Code snippet for reference:

def generate_response(user_prompt, system_prompt):
    thread = client_openai.beta.threads.create()

    message = client_openai.beta.threads.messages.create(
        thread_id=thread.id,
        role="user",
        content=user_prompt
    )

    run = client_openai.beta.threads.runs.create(
        thread_id=thread.id,
        assistant_id=wsp_assistant,
        instructions=system_prompt
    )

    while True:
        run_status = client_openai.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id)
        if run_status.status == "completed":
            break
        elif run_status.status == "failed":
            print("Run failed:", run_status.last_error)
            break
        time.sleep(2)  # wait for 2 seconds before checking again

    messages = client_openai.beta.threads.messages.list(thread_id=thread.id)

    response = ""

    for message in reversed(messages.data):
        role = message.role  
        for content in message.content:
            if content.type == 'text':
                partial_response = content.text.value 
                print(f'\n{role}: {partial_response}')
                if(role == "assistant"):
                    # print(json.loads(partial_response))
                    response = json.loads(partial_response)
                    print(">> Object response!!")
                    print(response)
                    # response = response + " " + object_response["message"]
    return response