Skip to content

ChatGPT - For Code Writing

ChatGPT can serve as a versatile companion, assisting developers in various coding tasks such as generating code snippets, explaining code, fixing bugs, suggesting optimizations, aiding in rapid prototyping, and translating code between languages. This chapter will guide you, through practical Python examples using the updated OpenAI API, on how ChatGPT can enhance your coding experience.

We can create code snippets in various programming languages effortlessly with ChatGPT. Let’s see an example where we use the OpenAI API to generate Python code to check if a given number is an Armstrong number.

from openai import OpenAI
import os
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
# Provide a prompt for code generation
messages = [
{"role": "system", "content": "You are a helpful coding assistant that generates Python code."},
{"role": "user", "content": "Generate Python code to check if a number is an Armstrong number. Include a function and an example usage."}
]
# Make a request to the OpenAI API for code completion
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=messages,
max_tokens=250
)
# Extract and print the generated code from the API response
generated_code = response.choices[0].message.content
print(generated_code)

The above code snippet might give us Python code similar to the following, which we can use to check if a given number is an Armstrong number:

def is_armstrong_number(num):
# Convert number to string to find the number of digits
s = str(num)
n = len(s)
sum_val = 0
temp = num
while temp > 0:
digit = temp % 10
sum_val += digit ** n
temp //= 10
return num == sum_val
# Example usage:
number_to_check = 153
if is_armstrong_number(number_to_check):
print(f"{number_to_check} is an Armstrong number.")
else:
print(f"{number_to_check} is not an Armstrong number.")
number_to_check = 123
if is_armstrong_number(number_to_check):
print(f"{number_to_check} is an Armstrong number.")
else:
print(f"{number_to_check} is not an Armstrong number.")

Remember to use environment variables for your API key in real applications. You can find more information on setting up environment variables in the introductory sections or online resources.

ChatGPT can help identify and fix bugs in your code. It can also provide insights to make your code more robust and error-free. Let’s look at an example:

from openai import OpenAI
import os
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
# Example code with a bug
code_with_bug = """
def print_numbers():
for j in range(5):
print(i) # Bug: 'i' is not defined
"""
# Provide a prompt to fix the bug in the code
messages = [
{"role": "system", "content": "You are a helpful coding assistant that identifies and fixes bugs in Python code."},
{"role": "user", "content": f"Fix the bug in the following Python code and explain the fix:\n\n{code_with_bug}"}
]
# Make a request to the OpenAI API for bug fixing
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=messages,
max_tokens=200
)
# Extract and print the fixed code and explanation from the API response
fixed_code_and_explanation = response.choices[0].message.content
print(fixed_code_and_explanation)

After running the above code snippet, ChatGPT might provide an explanation and the corrected code:

The bug in the provided code is that the variable `i` is used within the `print` statement inside the loop, but the loop iterates using the variable `j`. The variable `i` is not defined in this scope.
To fix this, the `print` statement should use the loop variable `j`.
Here's the corrected code:
```python
def print_numbers():
for j in range(5):
print(j)
## Code Optimization Using ChatGPT
ChatGPT can generate code snippets and help fix bugs. Another crucial part of the development process is code optimization, which helps improve performance and efficiency. ChatGPT can offer suggestions for optimizing your code.
### Example
The following code shows how ChatGPT can assist in optimizing a Python snippet:
```python
from openai import OpenAI
import os
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
# Example code to optimize
code_to_optimize = "# Calculate the sum of squares of numbers from 0 to 999,999\nsum_of_squares = 0\nfor i in range(1000000):\n sum_of_squares += i**2"
# Provide a prompt to optimize the code
messages = [
{"role": "system", "content": "You are a helpful coding assistant that suggests optimizations for Python code."},
{"role": "user", "content": f"Optimize the following Python code for better performance or readability:\n\n{code_to_optimize}"}
]
# Make a request to the OpenAI API for code optimization
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=messages,
max_tokens=250
)
# Extract and print the optimized code suggestions from the API response
optimized_code_suggestions = response.choices[0].message.content
print(optimized_code_suggestions)

ChatGPT might provide suggestions like the following:

The provided code calculates the sum of squares using a manual loop. Here are a couple of ways to optimize it in Python:
1. **Using a generator expression with `sum()`**:
This is often more Pythonic and can be more memory-efficient for very large ranges as it doesn't create the full list in memory at once.
```python
# Calculate the sum of squares of numbers from 0 to 999,999
sum_of_squares = sum(i**2 for i in range(1000000))
```
2. **Using `map()` and `sum()`**:
Another functional approach.
```python
# Calculate the sum of squares of numbers from 0 to 999,999
sum_of_squares = sum(map(lambda x: x**2, range(1000000)))
```
Both of these alternatives are generally more concise and often perform well. The generator expression (`sum(i**2 for i in range(1000000))`) is a common and recommended way to perform such summations efficiently in Python.

It’s important to test optimizations in your specific environment, as performance can depend on various factors. ChatGPT provides plausible suggestions, but understanding the underlying principles (like memory usage vs. computation speed) is key.

Rapid prototyping is crucial for quickly testing and iterating on ideas. ChatGPT, with its ability to generate code snippets, can be a valuable tool for swift prototyping.

In this example, we’ll explore how ChatGPT can assist in creating a Python code snippet for fetching data from a public web API (e.g., JSONPlaceholder) and printing the titles of the first 3 posts.

from openai import OpenAI
import os
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
# Provide a prompt for rapid prototyping
messages = [
{"role": "system", "content": "You are a helpful coding assistant that generates Python code for prototyping."},
{"role": "user", "content": "Create a Python code snippet to fetch data from 'https://jsonplaceholder.typicode.com/posts' and print the 'title' of the first 3 posts. Use the 'requests' library."}
]
# Make a request to the OpenAI API for code completion
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=messages,
max_tokens=300
)
# Extract and print the prototyped code from the API response
prototyped_code = response.choices[0].message.content
print(prototyped_code)

ChatGPT might generate code similar to this (you’ll need the requests library installed: pip install requests):

import requests
import json
def fetch_and_print_post_titles():
url = "https://jsonplaceholder.typicode.com/posts"
try:
response = requests.get(url)
response.raise_for_status() # Raises an HTTPError for bad responses (4XX or 5XX)
posts = response.json()
# Print the titles of the first 3 posts
for i, post in enumerate(posts[:3]):
print(f"Post {i+1} Title: {post.get('title', 'N/A')}")
except requests.exceptions.RequestException as e:
print(f"Error fetching data: {e}")
except json.JSONDecodeError:
print("Error: Could not decode JSON response.")
if __name__ == "__main__":
fetch_and_print_post_titles()

Expected Output (will vary slightly based on API content):

Section titled “Expected Output (will vary slightly based on API content):”

Post 1 Title: sunt aut facere repellat provident occaecati excepturi optio reprehenderit

Section titled “Post 1 Title: sunt aut facere repellat provident occaecati excepturi optio reprehenderit”

Post 3 Title: ea molestias quasi exercitationem repellat qui ipsa sit aut

Section titled “Post 3 Title: ea molestias quasi exercitationem repellat qui ipsa sit aut”

Code Translation and Migration Using ChatGPT

Section titled “Code Translation and Migration Using ChatGPT”

One of the common challenges when working on diverse projects is code translation or migration between programming languages or frameworks. ChatGPT can streamline this process by generating code translations, allowing developers to adapt code snippets more easily.

In this example, we’ll explore how ChatGPT can assist in translating a simple Python code snippet to JavaScript.

from openai import OpenAI
import os
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
# Example Python code for translation
original_python_code = """
def greet(name):
return f"Hello, {name}!"
message = greet("World")
print(message)
"""
# Provide a prompt to translate the code to JavaScript
messages = [
{"role": "system", "content": "You are a helpful coding assistant that translates code between programming languages."},
{"role": "user", "content": f"Translate the following Python code to JavaScript:\n\n{original_python_code}"}
]
# Make a request to the OpenAI API for code translation
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=messages,
max_tokens=200
)
# Extract and print the translated code from the API response
translated_code = response.choices[0].message.content
print(translated_code)

ChatGPT might provide the following JavaScript translation:

function greet(name) {
return `Hello, ${name}!`;
}
let message = greet("World");
console.log(message);

This chapter showcased how ChatGPT can be a powerful assistant in various coding tasks. We learned how to use it to generate code, explain and fix bugs, suggest optimizations, prototype quickly, and even translate code between languages, all using the modern OpenAI API with Python. Remember to always review and test AI-generated code thoroughly.