Tạo mã lập trình

Các LLM như ChatGPT rất hiệu quả trong việc tạo mã. Trong phần này, chúng ta sẽ đề cập đến một vài ví dụ về cách sử dụng ChatGPT hoặc các mô hình ngôn ngữ lớn trong việc tạo mã lập trình.

Chúng ta sử dụng playground của OpenAI (Chế độ trò chuyện) và gpt-3.5-turbo mô hình được sử dụng cho tất cả các ví dụ bên dưới.

Giống như tất cả các mô hình trò chuyện từ OpenAI, bạn có thể sử dụng a System Message để xác định hành vi và định dạng của phản hồi. Chúng tôi sẽ sử dụng Thông báo hệ thống sau đây cho các ví dụ nhanh chóng:

You are a helpful code assistant that can teach a junior developer how to code. Your language of choice is Python. Don't explain the code, just generate the code block itself.

Ví dụ cơ bản

Sau đó, User Message sẽ là lời nhắc kèm theo hướng dẫn về mã cụ thể mà bạn muốn mô hình tạo. Dưới đây là ảnh chụp nhanh lời nhắc cơ bản đầu tiên để tạo mã. Lưu ý rằng mã cuối cùng được tạo bởi Assistant.

Đây là lời nhắc nếu bạn muốn tự mình thử:

Write code that asks the user for their name and say "Hello"

Biến ghi chú thành mã

Bạn cũng có thể sử dụng khả năng tạo mã của các LLM này để tạo mã chỉ từ các ghi chú. Hãy xem một ví dụ khác chuyển hướng dẫn dưới dạng khối ghi chú:

Lời nhắc:

"""
1. Create a list of movies
2. Create a list of ratings for these movies
3. Combine them to make a json object of 10 movies with their ratings.
"""

Đầu ra:

movies = ["The Shawshank Redemption", "The Godfather", "The Dark Knight", "Schindler's List", "Pulp Fiction", "The Lord of the Rings: The Return of the King", "Forrest Gump", "Star Wars: Episode V - The Empire Strikes Back", "Inception", "The Silence of the Lambs"]
 
ratings = [9.3, 9.2, 9.0, 8.9, 8.9, 8.9, 8.8, 8.7, 8.7, 8.6]
 
movie_ratings = {}
 
for i in range(len(movies)):
    movie_ratings[movies[i]] = ratings[i]
 
json_object = json.dumps(movie_ratings, indent=4)
 
print(json_object)

Mã được tạo trông giống như mã đang hoạt động. Tuy nhiên, đầu ra không chứa import câu lệnh quan trọng, tức là import json. Trong khi các mô hình này tạo ra mã hoạt động, bạn phải chú ý đến những chi tiết nhỏ như thế này và luôn đảm bảo tự kiểm tra mã của mình.

Viết tiếp mã dòng tiếp theo

Các LLM này cũng đã được tích hợp vào các công cụ như GitHub Copilot, giúp chúng trở nên hữu ích cho các nhà phát triển. Một tính năng hữu ích là khả năng của mô hình để hoàn thành các chức năng.

Lời nhắc:

# function to multiply two numbers and add 75 to it
 
def multiply(

Đầu ra:

a, b):
    result = a * b
    result += 75
    return result

Tạo truy vấn SQL

Ngoài ví dụ tạo mã cơ bản ở trên, bạn có thể sử dụng mô hình này để tạo mã hữu ích có thể được sử dụng trong các khía cạnh khác của lập trình như tạo và kiểm tra các truy vấn các cơ sở dữ liệu SQL.

Giả sử bạn có một tập dữ liệu với một số thông tin mà bạn có thể đưa vào như một phần của lời nhắc và sau đó hướng dẫn nó tạo một truy vấn cụ thể. Ví dụ:

"""
Table departments, columns = [DepartmentId, DepartmentName]
Table students, columns = [DepartmentId, StudentId, StudentName]
Create a MySQL query for all students in the Computer Science department
"""

Đầu ra:

SELECT students.StudentId, students.StudentName
FROM students
INNER JOIN departments
ON students.DepartmentId = departments.DepartmentId
WHERE departments.DepartmentName = 'Computer Science';

Mô hình tạo ra một truy vấn! Tuy nhiên, trong ví dụ này, chúng tôi đã tạo cơ sở dữ liệu nên không có cơ sở dữ liệu để kiểm tra truy vấn được tạo. Nếu bạn đang kiểm tra ví dụ này, việc tạo cơ sở dữ liệu này có thể hữu ích. May mắn thay, bạn cũng có thể sử dụng ChatGPT để tạo điều này cho mình. Một cách tiếp cận là sử dụng phiên bản sửa đổi của lời nhắc ở trên với các hướng dẫn hơi khác để tạo lược đồ cơ sở dữ liệu:

Table departments, columns = [DepartmentId, DepartmentName]
Table students, columns = [DepartmentId, StudentId, StudentName]
Create a valid database schema with the above tables and columns

Mô hình đã tạo ra lược đồ sau:

CREATE TABLE departments (
  DepartmentId INT PRIMARY KEY,
  DepartmentName VARCHAR(50)
);

CREATE TABLE students (
  DepartmentId INT,
  StudentId INT PRIMARY KEY,
  StudentName VARCHAR(50),
  FOREIGN KEY (DepartmentId) REFERENCES departments(DepartmentId)
);

Bạn có thể tạo cơ sở dữ liệu tạm thời bằng cách sử dụng cái gì đó như sqliteonline.com.

Bạn cũng sẽ cần dữ liệu giả để kiểm tra xem truy vấn được tạo ban đầu có hợp lệ hay không. Hãy sử dụng ChatGPT cho việc này nữa! Lời nhắc có thể trông giống như sau:

CREATE TABLE departments (
  DepartmentId INT PRIMARY KEY,
  DepartmentName VARCHAR(50)
);

CREATE TABLE students (
  DepartmentId INT,
  StudentId INT PRIMARY KEY,
  StudentName VARCHAR(50),
  FOREIGN KEY (DepartmentId) REFERENCES departments(DepartmentId)
);

Given the database schema above, generate valid insert statements include 4 rows for each table.

Đầu ra với các câu lệnh chèn:

INSERT INTO departments (DepartmentId, DepartmentName)
VALUES (1, 'Computer Science'), (2, 'Mathematics'), (3, 'Physics'), (4, 'Biology');

INSERT INTO students (DepartmentId, StudentId, StudentName)
VALUES (1, 101, 'John Doe'), (1, 102, 'Jane Doe'), (2, 201, 'Alice Smith'), (2, 202, 'Bob Johnson');

Bây giờ bạn đã có cơ sở dữ liệu và dữ liệu mẫu, bạn có thể kiểm tra truy vấn ban đầu. Dựa trên dữ liệu giả, kết quả sẽ là hai hàng có Jane Doe và John Doe.

Giải thích mã nguồn

Nếu bạn đang học lập trình bằng một ngôn ngữ nhất định, việc nhắc mô hình giải thích một số đoạn mã nhất định có thể hữu ích. Hãy sử dụng lại truy vấn được tạo ở trên và yêu cầu mô hình giải thích nó.

Nếu bạn đang sử dụng cùng một Thông báo hệ thống từ trước, hãy cẩn thận với cách bạn hướng dẫn mô hình. Ví dụ: nếu chúng ta sử dụng ví dụ sau, mô hình sẽ phàn nàn rằng nó là trợ lý mã trong Python nhưng nó vẫn đưa ra lời giải thích. Đôi khi mô hình từ chối tạo những gì bạn đang hướng dẫn vì nó được thiết kế để tuân theo Thông báo hệ thống.

Lời nhắc:

SELECT students.StudentId, students.StudentName
FROM students
INNER JOIN departments
ON students.DepartmentId = departments.DepartmentId
WHERE departments.DepartmentName = 'Computer Science';

Explain the above SQL statement.

Đầu ra:

Sorry, as a code assistant in Python, I cannot generate SQL code. However, I can explain the purpose of the SQL statement provided. 

This SQL statement selects the `StudentId` and `StudentName` columns from the `students` table, where the `DepartmentName` column in the `departments` table is equal to 'Computer Science'. To achieve this, the statement performs an inner join on the `DepartmentId` column between the `students` and `departments` tables. 

In simpler terms, it is selecting the names and IDs of students who are enrolled in the Computer Science department.

Còn rất nhiều tình kịch bản khác bạn có thể sử dụng trong việc viết mã của mình như soạn thảo, gỡ lỗi, tìm giải pháp, gợi ý dựa trên các ngôn ngữ lập trình mà bạn đang sử dụng. Hãy tự thực hành từng bước sao đó đưa vào trong project thực tế của bạn để kiểm nghiệm từng bước.