Viết câu hỏi hiệu quả

Best practices để viết câu hỏi cho Agent - kết quả tốt hơn, ít sai sót hơn

T
Tác giả TLGeo
Thời gian đọc 7 min read
Đăng tải 2025-01-01

Viết câu hỏi hiệu quả

Chất lượng câu trả lời của Agent phụ thuộc rất nhiều vào chất lượng câu hỏi của bạn. Bài viết này chia sẻ các nguyên tắc và mẹo để bạn viết câu hỏi hiệu quả, giúp Agent hiểu chính xác ý bạn và trả về kết quả đúng ngay từ lần đầu.

Nguyên tắc vàng: 5W + 1H

Một câu hỏi tốt cho Agent nên trả lời được các câu hỏi:

  • What — Bạn muốn làm gì? (select, highlight, phân tích, …)
  • Which — Layer/trường nào? (chỉ định rõ)
  • Where — Khu vực nào? (nếu có)
  • When — Có lọc theo thời gian không? (nếu có)
  • Why — Mục đích cuối cùng là gì? (giúp Agent chọn cách tốt nhất)
  • How — Bạn muốn kết quả như thế nào? (bảng, bản đồ, file)

10 nguyên tắc viết câu hỏi

1. Cụ thể thay vì chung chung

Tệ:

Phân tích dữ liệu

Tốt:

Tính tổng diện tích rừng tự nhiên theo từng huyện trong tỉnh Lâm Đồng

2. Chỉ định rõ layer và trường

Tệ:

Chọn những cái lớn

Tốt:

Chọn các thửa đất trong layer "thua_dat" có cột "dien_tich" lớn hơn 1000

3. Dùng tên trường chính xác

Nếu bạn không nhớ chính xác tên trường, hãy hỏi Agent trước:

Liệt kê các cột của layer lô rừng

Sau đó dùng tên chính xác trong câu hỏi tiếp theo.

4. Nói rõ ràng về đơn vị

Tệ:

Tính tổng diện tích

Tốt:

Tính tổng diện tích theo hecta (ha) cho từng huyện

5. Tránh từ mơ hồ

Tệ:

Lọc những cái tốt

Tốt:

Lọc các lô rừng có trạng thái = "tốt" và chất lượng >= 70%

6. Chia nhỏ tác vụ phức tạp

Tệ (quá nhiều trong 1 câu):

Tính diện tích rừng theo huyện, vẽ biểu đồ, xuất PDF, gửi email cho sếp

Tốt (chia thành nhiều bước):

Bước 1: Tính tổng diện tích rừng theo từng huyện
Bước 2: Vẽ biểu đồ cột cho kết quả trên
Bước 3: Tạo layout PDF với bản đồ + biểu đồ

7. Cho ngữ cảnh khi cần

Nếu bạn đã làm gì đó trước đó, hãy nhắc lại:

Với kết quả vừa rồi (tổng diện tích theo huyện), hãy vẽ biểu đồ

8. Yêu cầu rõ ràng về output

Tệ:

Cho tôi xem kết quả

Tốt:

Hiển thị kết quả dạng bảng, sắp xếp theo diện tích giảm dần, chỉ top 10

9. Dùng ví dụ khi cần

Style theo gradient từ vàng (giá trị thấp) sang đỏ (giá trị cao) cho cột diện tích

10. Xác nhận lại khi kết quả sai

Kết quả trả về 152,340 ha cho huyện Bắc Bình. Con số này có vẻ lớn. Bạn kiểm tra lại giúp tôi được không?

So sánh câu hỏi tốt vs xấu

Ví dụ 1: Tìm lô rừng

Xấu:

Tìm lô rừng

Tốt:

Tìm tất cả lô rừng trong layer "lo_rung" có cột "loai_rung" = "rừng tự nhiên" và "dien_tich_ha" > 50

Ví dụ 2: Thống kê

Xấu:

Thống kê rừng

Tốt:

Thống kê tổng diện tích rừng theo cột "tinh_thanh", sắp xếp giảm dần, hiển thị top 5 tỉnh có diện tích rừng lớn nhất

Ví dụ 3: Tạo bản đồ

Xấu:

Làm bản đồ đẹp

Tốt:

Tô màu gradient cho cột "dien_tich" của layer "lo_rung", dùng 5 cấp màu từ vàng nhạt đến đỏ đậm, thêm đường viền đen 0.5px

Ví dụ 4: Phân tích

Xấu:

Xem có bao nhiêu rừng

Tốt:

Đếm số lô rừng theo từng giá trị của cột "trang_thai" trong layer "lo_rung", cho biết tổng cộng có bao nhiêu lô

Cú pháp tham chiếu

Tham chiếu layer

Trong layer [tên layer]

Ví dụ: Trong layer "lo_rung", chọn các feature có diện tích > 100 ha

Tham chiếu cột (trường)

Cột [tên cột]

Ví dụ: Lọc theo cột "loai_rung" = "rừng tự nhiên"

Tham chiều feature đã chọn

Các feature đang được chọn

Ví dụ: Tính tổng diện tích của các feature đang được chọn trong layer "lo_rung"

Kết hợp nhiều điều kiện

[điều kiện 1] VÀ/HOẶC [điều kiện 2]

Ví dụ: Chọn lô rừng có "loai_rung" = "tự nhiên" VÀ "dien_tich_ha" > 50

Khi nào nên dùng Python script?

Nếu câu hỏi của bạn quá phức tạp cho UI/QGIS expression, Agent sẽ tự động chuyển sang dùng Python script. Bạn cũng có thể yêu cầu trực tiếp:

Dùng Python script để tính khoảng cách giữa tất cả các cặp điểm trong layer "tram_quan_trac"

Xem chi tiết tại Bài 10: Python Console.

Xử lý khi Agent trả lời sai

Bước 1: Kiểm tra kết quả

Đọc kỹ kết quả Agent trả về. Nếu có gì đó không đúng (vd: số liệu vô lý, layer không tồn tại), đừng tiếp tục dùng kết quả đó.

Bước 2: Sửa lại câu hỏi

Kết quả trả về có vẻ không đúng. Bạn có thể kiểm tra lại bằng cách:
1. Liệt kê các layer có chứa cột "dien_tich"
2. Tính tổng diện tích từng layer một

Bước 3: Cung cấp thêm ngữ cảnh

Tôi muốn tính diện tích rừng cho tỉnh Lâm Đồng. Lớp "lo_rung" chứa tất cả lô rừng cả nước, bạn cần lọc theo cột "tinh_thanh" = "Lâm Đồng" trước khi tính tổng

Bước 4: Reset nếu cần

Bắt đầu lại từ đầu với câu hỏi rõ ràng hơn.

Mẹo nâng cao

1. Dùng session/thread

Mỗi cuộc hội thoại với Agent có thể được lưu lại. Bạn có thể quay lại sau và tiếp tục:

Tiếp tục từ cuộc hội thoại trước, bây giờ hãy vẽ biểu đồ cho kết quả

2. Hỏi Agent về khả năng của nó

Bạn có thể làm được gì trong QGIS?
Tool nào dùng để tính diện tích?

3. Yêu cầu giải thích

Giải thích cách bạn tính ra kết quả này
Tại sao bạn chọn thuật toán này?

4. Đề xuất workflow

Tôi cần phân tích rừng hàng quý. Bạn có thể đề xuất workflow tự động không?

5. Dùng hình ảnh

Agent có thể “nhìn” bản đồ:

Nhìn bản đồ hiện tại, khu vực nào có nhiều lô rừng tự nhiên nhất?

Từ điển thuật ngữ QGIS ↔ tiếng Việt

Thuật ngữ QGISTiếng Việt phổ biến
LayerLớp
FeatureĐối tượng
AttributeThuộc tính
SelectChọn
HighlightTô màu nổi bật
FilterLọc
BufferVùng đệm
IntersectGiao
UnionHợp
ClipCắt theo ranh giới
CRS / SRSHệ tọa độ
ExtentPhạm vi
RasterẢnh (raster)
VectorVector (điểm, đường, vùng)
QueryTruy vấn
ExpressionBiểu thức
RendererBộ hiển thị (style)

Liên kết