Building a Basic Math Tutor Assistant with OpenAI and Python [Beginners]

Miluska Romero
3 min readMar 17, 2024

--

AI Math Tutor Metaphorical

Introduction

We will create a basic assistant following the documentation in OpenAI: https://platform.openai.com/docs/assistants/overview?context=without-streaming

Prerequisites

Ensure you have the following ready:

  • A Google account
  • Access to Google Colab

Colab with Full Code

Explanation step by step:

Step 1: Setting Up the Environment

We begin by importing the necessary tools. In AI, these tools are called libraries, which are bundles of pre-written code that help us build complex programs quickly.

# Wave your wand to install the OpenAI potion
!pip install openai

Step 2: Initializing the OpenAI Client

Next, we’ll set up our connection to OpenAI’s API, the interface that lets our program tap into OpenAI’s algorithms.

# Import OpenAI
from openai import OpenAI

# Initialize the OpenAI client with your API key
client = OpenAI(api_key="your-api-key")

Remember to keep your API key confidential.

Step 3: Creating an AI Assistant

Now, let’s define our AI assistant’s role. We’re programming it to be a Math Tutor that can interact with users and solve problems.

# Define an AI assistant
assistant = client.beta.assistants.create(
name="Math Tutor",
instructions="Answer mathematical questions for students",
tools=[
{
"type": "code_interpreter"
}
],
model="gpt-3.5-turbo-1106"
)

# Output assistant details
print(assistant)

Step 4: Communication Setup

A thread acts as a container for the entire conversation history, enabling a structured exchange of messages, Each message, whether a query from the user or a response from the assistant, is sequentially added to this thread, maintaining the flow of dialogue. The use of a thread is metaphorically closer to initiating a dedicated line of communication.

# Create a thread for the assistant
thread = client.beta.threads.create()

# Output thread details
print(thread)

Step 5: Interacting with the Assistant

Let’s pose a math problem to our assistant. We craft the query and await the assistant’s solution.

# Insert a message into the thread with a math problem
message = client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content="Solve this problem: 3x+11=14"
)

# Output the message
print(message)

Step 6: Running the Assistant and Obtaining a Response

We activate the assistant and capture the response. It’s similar to running a program and waiting for the output.

# Run the assistant to get a response
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id
)

# Retrieve the assistant's response
assistant_answer = client.beta.threads.runs.retrieve(
thread_id=thread.id,
run_id=run.id
)

# Output the assistant's response
print(assistant_answer)

Step 7: Reviewing the Conversation

Just as developers review logs to understand what happened during a program’s execution, we can review the conversation with our assistant.

# List all messages in the thread
messages = client.beta.threads.messages.list(
thread_id=thread.id
)

# Output the conversation history
for message in reversed(messages.data):
print(f" role: {message.role} - {message.content[0].text.value}")

Conclusion

Congrats! You’ve just programmed an AI Math Tutor using OpenAI and Google Colab. This is just the beginning — experiment with different types of problems and expand your assistant’s capabilities. Happy coding!

--

--

Miluska Romero
Miluska Romero

Written by Miluska Romero

I'm a Full-Stack Developer from Peru interested in AI

No responses yet