Đánh Giá Khả Năng Sinh Mã Đồ Họa Của Ba Model AI: Douba, Kimi Và DeepSeek

Khi đánh giá khả năng sinh mã đồ họa của các hệ thống AI, độ chính xác về tọa độ và chuẩn hóa hình học là tiêu chí then chốt. Dưới đây là quá trình kiểm thử ba mô hình trí tuệ nhân tạo thông qua tác vụ tạo kịch bản Python sử dụng thư viện turtle để vẽ cờ đỏ sao vàng. Mã nguồn được thực thi và phân tích trên môi trường Python chuẩn.

1. Phân Tích Kết Quả Từ Model Đầu Tiên

Bản sinh mã ban đầu sở hữu cấu trúc logic cơ bản, song tồn tại sai lệch về tỷ lệ tọa độ khiến các thành phần hình học phân tán thiếu đồng nhất. Bên cạnh đó, việc bỏ qua thuộc tính viền nét vẽ đồng bộ với màu nền khiến độ tương phản chưa chuẩn xác, đồng thời góc quay của các sao phụ chưa được đồng bộ hóa hướng vào tâm sao chính.

import turtle

def tao_da_giac_ngon(brush, cx, cy, r, rotation):
    brush.penup()
    brush.goto(cx, cy)
    brush.setheading(rotation)
    brush.forward(r)
    brush.left(162)
    brush.pendown()
    brush.begin_fill()
    brush.fillcolor("#FFDE00")
    edge = r * 0.382
    for _ in range(5):
        brush.forward(edge * 2)
        brush.right(144)
    brush.end_fill()

screen = turtle.Screen()
screen.bgcolor("#EE1C25")
screen.setup(600, 400)
pen = turtle.Turtle()
pen.speed(0)
pen.hideturtle()

tao_da_giac_ngon(pen, -200, 100, 35, 0)

stars = [
    (-90, 140, 12, 30),
    (-70, 100, 12, 0),
    (-70, 50, 12, 350),
    (-90, 0, 12, 340)
]
for x, y, size, angle in stars:
    tao_da_giac_ngon(pen, x, y, size, angle)

turtle.done()

Sau khi nhận phản hồi kỹ thuật, hệ thống đã tối ưu hóa kịch bản. Phiên bản cập nhật điều chỉnh tham số tỷ lệ, chuẩn hóa vector hướng và tái cấu trúc hàm vẽ đa giác, giúp sản phẩm đầu ra đạt độ chính xác hình học cao hơn.

import turtle

class CoQuocGia:
    def __init__(self):
        self.screen = turtle.Screen()
        self.screen.setup(600, 400)
        self.screen.bgcolor("#E3000F")
        self.t = turtle.Turtle()
        self.t.speed(0)
        self.t.hideturtle()

    def _ve_ngon_sao(self, vi_tri, ban_kinh, goc_quay):
        self.t.penup()
        self.t.goto(vi_tri)
        self.t.setheading(goc_quay)
        self.t.forward(ban_kinh)
        self.t.left(162)
        self.t.pendown()
        self.t.color("#FFC000", "#FFC000")
        self.t.begin_fill()
        canh = ban_kinh * 0.764
        for _ in range(5):
            self.t.forward(canh)
            self.t.right(144)
        self.t.end_fill()

    def chay(self):
        self._ve_ngon_sao((-180, 80), 22, 0)
        ds_sao_nho = [
            ((-80, 115), 9, 30),
            ((-65, 80), 9, 0),
            ((-65, 35), 9, 350),
            ((-80, -5), 9, 340)
        ]
        for pos, r, a in ds_sao_nho:
            self._ve_ngon_sao(pos, r, a)
        self.screen.mainloop()

if __name__ == "__main__":
    co = CoQuocGia()
    co.chay()

2. Phân Tích Kết Quả Từ Model Thứ Hai

Bản sinh mã ban đầu xuất hiện nhiều điểm bất hợp lý về mặt tọa độ và logic vẽ nền. Lỗi rendering khiến vùng đỏ chỉ hiển thị dưới dạng đường viền mỏng thay vì khối kín, trong khi vị trí các ngôi sao bị lệch nghiêm trọng so với trục chuẩn.

import turtle

def hoanh_doanh_sao(chi_tiet, vi_tri, ban_kinh, goc_nghieng):
    chi_tiet.penup()
    chi_tiet.goto(vi_tri)
    chi_tiet.setheading(goc_nghieng)
    chi_tiet.forward(ban_kinh)
    chi_tiet.left(162)
    chi_tiet.pendown()
    chi_tiet.begin_fill()
    chi_tiet.fillcolor("gold")
    do_dai_canh = ban_kinh * 0.587
    for _ in range(5):
        chi_tiet.forward(do_dai_canh)
        chi_tiet.right(144)
    chi_tiet.end_fill()

canvas = turtle.Screen()
canvas.setup(500, 333)
canvas.bgcolor("crimson")
artist = turtle.Turtle()
artist.speed(0)
artist.hideturtle()

hoanh_doanh_sao(artist, (-100, 60), 20, 0)
hoanh_doanh_sao(artist, (-30, 90), 7, 30)
hoanh_doanh_sao(artist, (-10, 60), 7, 0)
hoanh_doanh_sao(artist, (-10, 25), 7, 350)
hoanh_doanh_sao(artist, (-30, -5), 7, 340)

canvas.mainloop()

Thông qua nhiều lần debug và điều chỉnh tham số hình học, phiên bản thứ hai đã hoạt động ổn định. Mã nguồn được viết lại với tư duy hướng đối tượng, tách biệt rõ ràng phần khởi tạo canvas, vẽ nền và xử lý đa giác. Các tọa độ sao phụ được tính toán lại dựa trên góc lệch chuẩn, đảm bảo tính thẩm mỹ kỹ thuật.

import turtle

def tao_hinh_ngon(brush, cx, cy, r, rotation):
    brush.penup()
    brush.goto(cx, cy)
    brush.setheading(rotation)
    brush.forward(r)
    brush.left(162)
    brush.pendown()
    brush.begin_fill()
    brush.fillcolor("#FFD700")
    edge = r * 0.382
    for _ in range(5):
        brush.forward(edge * 2)
        brush.right(144)
    brush.end_fill()

screen = turtle.Screen()
screen.bgcolor("#DE2910")
screen.setup(600, 400)
pen = turtle.Turtle()
pen.speed(0)
pen.hideturtle()

# Vẽ nền đỏ
pen.penup()
pen.goto(-300, 200)
pen.pendown()
pen.color("#DE2910", "#DE2910")
pen.begin_fill()
for _ in range(2):
    pen.forward(600)
    pen.right(90)
    pen.forward(400)
    pen.right(90)
pen.end_fill()

tao_hinh_ngon(pen, -150, 75, 24, 0)

ds_cac_ngoi_sao = [
    (-60, 120, 10, 30),
    (-40, 80, 10, 0),
    (-40, 30, 10, 350),
    (-60, -20, 10, 340)
]
for x, y, size, angle in ds_cac_ngoi_sao:
    tao_hinh_ngon(pen, x, y, size, angle)

turtle.done()

3. Phân Tích Kết Quả Từ Model Thứ Ba

Mô hình này thể hiện khả năng sinh mã đạt độ hoàn thiện cao ngay từ lần đầu. Cấu trúc code gọn gàng, logic vẽ hình học được triển khai trực tiếp mà không phát sinh lỗi cú pháp hay rendering. Tuy nhiên, ở khía cạnh vi mô, khoảng cách giữa các sao phụ và sao chính vẫn hơi gần so với tỷ lệ thực tế, đồng thời thiếu sự chuẩn hóa về góc nghiêng tối ưu.

from turtle import Turtle, Screen

def build_star_graphic(t_obj, anchor, radius, tilt):
    t_obj.penup()
    t_obj.goto(anchor)
    t_obj.setheading(tilt)
    t_obj.forward(radius)
    t_obj.left(162)
    t_obj.pendown()
    t_obj.begin_fill()
    t_obj.fillcolor("yellow")
    length = radius * 0.587
    for _ in range(5):
        t_obj.forward(length)
        t_obj.right(144)
    t_obj.end_fill()

canvas = Screen()
canvas.setup(500, 333)
canvas.bgcolor("red")
artist = Turtle()
artist.speed(0)
artist.hideturtle()

build_star_graphic(artist, (-120, 60), 20, 0)
build_star_graphic(artist, (-30, 90), 7, 30)
build_star_graphic(artist, (-10, 60), 7, 0)
build_star_graphic(artist, (-10, 25), 7, 350)
build_star_graphic(artist, (-30, -5), 7, 340)

canvas.mainloop()

Bảng tổng hợp kỹ thuật cho thấy model thứ ba tối ưu nhất về mặt hiệu suất và độ ổn định code. Model thứ nhất cần thêm bước tinh chỉnh tham số để đạt chuẩn hình học. Trong khi đó, model thứ hai yêu cầu can thiệp thủ công nhiều nhất do lỗi logic nền và phân phối tọa độ ban đầu chưa chặt chẽ.

Thẻ: python turtle-graphics ai-code-generation computer-graphics machine-learning

Đăng vào ngày 20 tháng 8 lúc 21:03