0

Từ "hỏi cho vui" đến "ra kết quả chuẩn": Prompt Engineering mình dùng hàng ngày để tăng 200% năng suất.

Dạo này lướt Facebook, tiktok hay thấy anh em dev than mấy con AI "Hay quên", "trả lời ngáo ngơ",... Nói chung là gây ức chế rất nhiều. Đúng kiểu bỏ tiền rước bực vào người. Ngày xưa thời con ChatGPT mới bùng nổ, mình cũng ức chế y như vậy, không có kinh nghiệm viết prompt, cứ đưa ra yêu cầu mong con AI đưa ra kết quả mong muốn nhưng kết quả không tào lao thì cũng trả lời mơ hồ không có nhiều value lắm.

Nhưng sau một thời gian dài "vật lộn" và đập đi xây lại cách đặt câu hỏi, mình nhận ra rằng: AI giống như một người nắm giữ kiến thức, thông minh nhưng không có kinh nghiệm. Bạn đưa yêu cầu AI trả lời, bạn nói mơ hồ AI trả lời mơ hồ, vậy nên không phải AI dốt mà do chúng ta chưa biết cách "đưa yêu cầu".

Bài viết này mình sẽ chia sẻ những công thức viết prompt cực kỳ bình dân, thực chiến mà mình đang dùng hàng ngày để con AI trở thành trợ lý đắc lực giúp tăng 200% hiệu xuất.

AI thực ra chỉ đang "đoán chữ"

Trước khi học cách ra lệnh, điều anh em cần hiểu rõ bản chất, AI không cần phải sử dụng thuật ngữ to lớn, hay phải là tiếng anh vì AI đủ thông minh đề hiểu những gì bạn đang trình bày dù bằng bất kỳ ngôn ngữ nào đang được hỗ trợ. Và hơn nữa ngôn ngữ mẹ đẻ lúc nào cũng là vũ khí để ae có thể dễ dàng mô tả chính xác những gì muốn biểu đạt.

Nhưng không phải ae trình bày thế nào AI cũng hiểu vì thực chất nó chỉ đang đoán yêu cầu dựa vào prompt được đưa vào.

Nó hoạt động theo cơ chế xác suất (Predictive model), tức là AI sẽ đoán xem từ (token) tiếp theo xuất hiện là gì dựa trên những gì bạn đã viết ở phía trước. Vậy nên để AI hiểu thì chúng ta cần cung cấp đủ Context (ngữ cảnh của công việc) một cách rõ ràng, thì AI sẽ không cần đoán mà đưa ra Output chính xác.

Ví dụ: Bạn đưa vào 1 đoạn code lỗi và bắt AI sửa nhưng bạn không cung cấp lỗi gì, lỗi như nào thì AI cũng chỉ đựa vào đoạn code đó và đoán lỗi logic xảy ra và đưa ra cách fix và tất nhiên nó có thể đúng hoặc sai 😂

Nhưng nếu ngoài code lỗi ae còn đưa thêm thông tin lỗi là gì, bối cảnh sảy ra lỗi, hệ điều hành, ứng dụng dùng để chạy, phiên bản ngôn ngữ, package,... và chỉ rõ ngoài việc "FIX ĐI" mà yêu cầu nó "Đưa ra phân tích, phán đoán ngắn ngọn" sau đó mới Fix thì chắc chắn AI nó sẽ cho ra 1 kết quả chính xác.

Công thức RCTF (role - context - task - format)

Để không phải mất thời gian suy nghĩ mỗi lần gõ prompt, mình đúc kết lại thành 1 công thức như thế này để sử dụng. Với 4 yếu tố này, mình thấy kết quả AI đưa ra cho mình đạt khoảng 90 - 95% yêu cầu.

  • Role: Ép Ai vào khuôn khổ kiến thức chuyên môn, convention mà bản thân/team đã đưa ra.
  • Context: Cung cấp đầy đủ thông tin, thực trạng đang gặp phải như môi trường, phiên bản, hiện trạng sẽ giúp AI có đủ thông tin để phân tích.
  • Task: Yêu cầu rõ nhiệm vụ mà AI cần xử lý một cách rõ ràng như Refactor, fix lỗi, viết test, tái cấu trúc thuật toán, phân tích logic,...
  • Format: Đưa ra quy chuẩn cụ thể cho task khiến AI không đi lan man giải thích quả nhiều, giải thích đúng trọng tâm và ngắn gọn. Ví dụ: Trả về đoạn code React đã tối ưu. Giải thích đúng trọng tâm vì sao tối ưu như vậy bằng 3 gạch đầu dòng

Đây là 4 yếu tố mình sử dụng để AI giúp mình giải quyết vấn đề, và tất nhiên để tránh mất thời gian cho việc ngồi gõ thì mình tạo ra các role: dev, spec, BA,... để miêu tả nghiệp vụ cho từng role cũng như các điều cần thực hiện, các convention phải tuân thủ,... để sử dụng 1 cách nhanh chóng.

Những "mẹo" nhỏ nhưng có võ

Not Agent mode

Bài học xương máu cho phần này là Agent mode được cấp quyền để thực thi cho dù bạn không đồng ý điều đó. Nó sẽ không hỏi lại ý kiến của bạn trong 1 số trường hợp vậy nên tốt nhất trước khi để AI sửa bất cứ điều gì, anh em nên yêu cầu AI không tự ý sửa mà nên đưa ra 1 bản fix theo cách bước, bug ở đâu, lý do bug là gì => Nắm được Bug -> không lo AI sửa bậy bạ.

Few-Shot Prompting - Nêu ví dụ mẫu

Thay vì mô tả bằng lời 1 cách dài dòng văn tự để AI đưa ra 1 output thì ta có thể đưa ra 1 mẫu vi dụ của output giúp AI định hình rõ output đúng theo điều mình muốn.

Let's think step by step

Khi gặp một bài toán logic khó, thuật toán phức tạp hoặc debug một con bug khó thay vì bảo AI fix mà không cần can thiệp thì nên bắt AI trình bày suy nghĩ để có thể theo dõi quá trình debug của nó giúp nâng cao hiểu biết về hệ thống, đồng thời giúp AI chia nhỏ bài toán ra để giaỉ quyết thay vì đọc lỗi rồi vội vàng bịa ra 1 kết quả

Skills

Với mỗi nghiệp vụ nên tách ra thành các skill theo phong cách của team hoặc một chuẩn thiết kế nào đó giúp AI làm chuẩn theo thiết kế đó. Ví dụ:

  • Tạo ra 1 folders skills nơi chứa các file .md của các skill
  • Với backend tạo ra 1 file backend.md: Mô tả các thiết kế hệ thống đang dùng, các convension cần chú ý,...
  • Với Fontend tạo ra file fontend.md: cũng mô tả cách thiết kế của FE, các quy ước cũng như cách tạo ra component, trình bày,....

Như vậy khi ứng dụng các Agent mà anh em tự custom có thể để AI sử dụng đúng skill mà đồng thời cũng giảm lượng token tiêu tốn để mô tả lại cho AI.

Tổng Kết

Nhiều anh em cứ lo AI sẽ thay thế mình nhưng lại không biết nêú tận dụng tốt và đúng cách, chúng ta có thể nâng cao trình độ của bản thân cùng với đó là 1 đống kinh nghiệm xử lý vấn đề trong hệ thống mà không con AI nào thay thế được.

Tuy AI nắm giữ kiến thức cũng như suy nghĩ logic tốt hơn bạn rất nhiều nhưng với 1 bài toán, khi không có kinh nghiệm AI sẽ không biết bắt đầu từ đâu, hoặc xử lý bằng cách nào sẽ tối ưu nhất, đây chính là lúc cần 1 người biết định hướng, đưa ra solution và AI giúp bạn xử lý.

Vậy nên thay vì sợ AI thay thế, ae nên học cách sống chung với AI và tận dụng nó nâng cao level của bản thân.

Nếu anh em còn có những kinh nghiệm hay ho nào, kinh nghiệm nào hay ho có thể comment chia sẻ để mọi người cùng học hỏi nhé.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí