Creating Custom ChatGPT Using the OpenAI API (97/100 Days of Python)

Martin Mirakyan
3 min readApr 8, 2023

--

Day 97 of the “100 Days of Python” blog post series covering how to create your own custom ChatGPT model

In this tutorial, we will walk you through the process of creating your own custom ChatGPT model in Python, utilizing the OpenAI API. With this custom ChatGPT model, you can build applications for a wide range of tasks such as drafting emails, writing code, creating conversational agents, translating languages, and more.

Prerequisites

Before we begin, make sure you have the following:

  1. Python 3 is installed on your computer.
  2. An API key from OpenAI: Get one here.
  3. Your Organization Id: Get it here.

Getting Started

First, let’s install the OpenAI Python library:

pip install openai

Next, create a new Python file and import the necessary libraries and configure the OpenAI API with your API key:

import openai

openai.organization = 'your-organization'
openai.api_key = 'your-api-key'

Creating a Custom ChatGPT Model

Let’s create a custom ChatGPT Python Assistant using the OpenAI API. This Python Assistant can suggest project ideas, help debug code, and answer challenging questions about Python.

We will create a function called python_assistant that takes a list of messages as input and returns the model-generated message as output.

def python_assistant(messages):
response = openai.ChatCompletion.create(
model='gpt-3.5-turbo',
messages=messages
)

return response['choices'][0]['message']['content']

Using the Python Assistant

Now that we have our python_assistant function, we can use it to interact with the ChatGPT model for Python-related tasks:

messages = [
{'role': 'system', 'content': 'You are a helpful Python assistant.'},
{'role': 'user', 'content': 'Suggest a Python project idea for a beginner.'}
]

response = python_assistant(messages)
print(response)

The role of the system message in a chat-based language model like ChatGPT is to set the initial context or behavior for the assistant. It serves as a high-level instruction that guides the assistant’s responses throughout the conversation.

System messages are typically placed at the beginning of the conversation, and they can help define the character, theme, or expertise of the assistant. For example, a system message like “You are a helpful Python assistant” sets the context that the assistant should focus on providing help related to Python programming.

However, it’s important to note that some models, like gpt-3.5-turbo, may not pay strong attention to the system message. In such cases, placing important instructions within user messages can be more effective in guiding the model’s behavior.

To get help with debugging code, use a message that describes the issue and provides the relevant code:

messages = [
{'role': 'system', 'content': 'You are a helpful Python assistant.'},
{'role': 'user', 'content': 'I\'m having trouble with my Python code. It raises a TypeError when I try to concatenate a string and an integer. Here\'s the code: `x = 5; y = \'Hello \'; print(y + x)`'}
]

response = python_assistant(messages)
print(response)

To ask a challenging Python question, simply include the question in a user message:

messages = [
{'role': 'system', 'content': 'You are a helpful Python assistant.'},
{'role': 'user', 'content': 'Explain the difference between a list and a tuple in Python.'}
]

response = python_assistant(messages)
print(response)

You can provide multiple messages to represent a conversation and the model will continue by responding to the last message.

You can modify and change the system message to change the model behavior and tune it to your needs. Keep in mind that GPT-4 models pay more attention to the system message, while the GPT-3 models pay less attention to it.

Project Idea

Create a Streamlit app that would allow changing different settings of the GPT model and would get a text from a user and print the result of the ChatGPT model.

What’s next?

--

--

Martin Mirakyan
Martin Mirakyan

Written by Martin Mirakyan

Software Engineer | Machine Learning | Founder of Profound Academy (https://profound.academy)

No responses yet