Dec. 8, 2022, 10:07 a.m.
IT

OpenAI GPT-3 Bot - Bad Code

Some people have had very doomsday like reactions towards the newly released GPT-3 bot from OpenAI. They showed how it can generate code from a pure english problem statement, identify bugs, and understand what a piece of code does. This is all true - it is scarily good. However, do not trust it blindly. It is not nearly as good as a skilled programmer. I asked him-her this:

How do I calculate the amount of months difference between two dates in Python?

She-him responded:

You can calculate the amount of months difference between two dates in Python by using the relativedelta function from the dateutil package. To use it, you would first need to import the function from the package. For example:

from dateutil.relativedelta import relativedelta

Then you can use the relativedelta function to calculate the difference between two dates. For example:

date1 = datetime.date(year1, month1, day1)
date2 = datetime.date(year2, month2, day2)

month_difference = relativedelta(date2, date1).months

print(month_difference)

This will print out the number of months difference between the two dates.

Close but this is wrong. Try it with these dates:

import dateutils
d1 = datetime.strptime("2021-01-01", "%Y-%m-%d")
d2 = datetime.strptime("2022-01-01", "%Y-%m-%d")
dateutils.relativedelta(d1,d2).months

The output will be:

0

since the code above shows the months difference but it does not include the years. So it is only a valid solution if the difference is less than a year. The correct solution would be:

import dateutils
d1 = datetime.strptime("2021-01-01", "%Y-%m-%d")
d2 = datetime.strptime("2022-01-01", "%Y-%m-%d")
dateutils.relativedelta(d1,d2).years*12 + dateutils.relativedelta(d1,d2).months

which will print out the correct result of:

-12

(ignore the sign). Since this bot is trained to infer intent, she-him should have understood that the more correct answer is to show total months. To confirm I asked:

Is that the total month difference?

She-him responded:

Yes, this is the total month difference between the two dates.