Hôm nay mình sẽ hướng dẫn anh em cách viết prompt hiệu quả từ tài liệu OpenAI và Google. Các ví dụ lệnh bên dưới lấy từ tài liệu OpenAI, dùng model gpt-6-astra để máy hiểu đúng ngay từ đầu. Khi anh em dùng ChatGPT hay gửi lệnh qua API, cách đặt câu hỏi sẽ quyết định chất lượng văn bản trả về.
Bài này mình gom từ tài liệu của hai hãng, để anh em đỡ phải sửa prompt nhiều lần. Mình đọc kỹ tài liệu của Google và OpenAI rồi gom lại thành từng bước. Mình chưa tự chạy thử các lệnh dưới đây, anh em chạy thử rồi đối chiếu lại tài liệu cho chắc.
Bước 1: Áp dụng cách viết prompt hiệu quả bằng yêu cầu rõ ràng
Nhiều người gõ lệnh rất ngắn rồi nhận câu trả lời quá chung chung. Tài liệu của Google ví các model ngôn ngữ như một công cụ tự động hoàn thành văn bản nâng cao: anh em đưa một phần nội dung, model viết tiếp phần còn lại. Khi câu lệnh thiếu giới hạn, model có nhiều đường để trả lời nên dễ ra kết quả chung chung.

Anh em nên nói rõ số lượng và kiểu kết quả muốn nhận. Ví dụ thay vì hỏi 'tên cho tiệm hoa khô', hãy hỏi 'Tạo danh sách 5 tên cho tiệm hoa chuyên bán hoa khô, chỉ ghi tên'. Càng rõ giới hạn thì máy càng ít trả lời chung chung.
Ví dụ trong tài liệu Google: khi hỏi cách sửa wifi mất kết nối, câu trả lời mẫu (chưa có ngữ cảnh) bảo rút nguồn modem chờ 30 giây rồi cắm lại. Đó là kết quả chung chung, nên Google khuyên thêm hướng dẫn của đúng thiết bị vào prompt. Anh em thử ép định dạng ngay từ đầu xem, kết quả thường đỡ lan man.
Anh em có thể ghi thẳng vào prompt: 'trả lời dạng bảng' hoặc 'trả lời bằng gạch đầu dòng'. Nếu mình nói trước độ dài và phong cách, model sẽ ít viết lan man hơn. Tài liệu của OpenAI có câu lệnh curl mẫu với prompt yêu cầu viết một câu chuyện trong đúng một câu.
Muốn chạy các lệnh dưới đây, anh em cần có API key của OpenAI (một chuỗi ký tự như mật khẩu để gọi API). Anh em lưu key đó vào biến môi trường tên OPENAI_API_KEY, để lệnh tự lấy key ra dùng. Anh em mở terminal (cửa sổ để gõ lệnh trên máy) rồi chạy đoạn lệnh curl sau:
curl "https://api.openai.com/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-6-astra",
"input": "Write a one-sentence bedtime story about a unicorn."
}'Trong lệnh curl ở trên, prompt yêu cầu viết câu chuyện trước giờ đi ngủ đã có sẵn ràng buộc độ dài trong đúng một câu để máy không lan man sang chủ đề khác. Đặt khuôn rõ ràng ngay từ đầu thì máy sẽ ít lan man và trả lời đúng trọng tâm hơn.
Bước 2: Tách biệt vai trò và phong cách bằng tham số instructions
Mình khuyên anh em để quy tắc chung (giọng điệu, vai trò) vào instructions, còn câu hỏi cụ thể thì để vào input. Theo tài liệu OpenAI, những gì anh em ghi trong instructions sẽ được model ưu tiên hơn nội dung ở input. Cài phong cách vào tham số này giúp câu trả lời luôn đúng hướng.

Anh em gửi lệnh sau qua terminal để thiết lập phong cách cho model. Ở ví dụ này, instructions bảo model nói giọng hải tặc, còn input là câu hỏi JavaScript có bắt buộc dùng dấu chấm phẩy không:
curl "https://api.openai.com/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-6-astra",
"reasoning": {"effort": "low"},
"instructions": "Talk like a pirate.",
"input": "Are semicolons optional in JavaScript?"
}'Tách lớp thế này thì phần instructions giữ nguyên cho mọi lượt hỏi, anh em chỉ đổi phần input. Nếu anh em dùng ChatGPT chứ không dùng API, cứ viết quy tắc chung ở đầu prompt, ví dụ 'Trả lời giọng thân mật, tối đa ba câu', rồi xuống dòng viết câu hỏi.
Tài liệu Google cho Gemini cũng khuyên đưa ví dụ mẫu, để model nắm khuôn trả lời nhanh hơn. Nếu anh em đưa vài mẫu hỏi đáp ưng ý vào prompt, model sẽ học theo cấu trúc đó để trả về kết quả chuẩn mà không cần viết hướng dẫn dài dòng. Anh em nên giữ định dạng đồng nhất giữa các ví dụ mẫu đưa vào.
Các ví dụ càng giống nhau về cách trình bày thì model càng dễ bắt được khuôn. Cách này tiện khi anh em cần kết quả đồng đều.
Ví dụ mình đưa hai đơn hàng mẫu, mỗi đơn kèm kết quả dạng JSON mong muốn (JSON là kiểu dữ liệu có cấu trúc, phần mềm đọc được). Sau đó mình đưa đơn hàng mới, model sẽ trả đúng khuôn đó.
Bước 3: Lọc output trực tiếp trên terminal
Lấy kết quả sạch về máy cũng quan trọng không kém việc soạn prompt. Lệnh openai là CLI của OpenAI, chạy trong terminal, anh em cần cài trước (bài này không hướng dẫn cài, anh em xem trang tài liệu của OpenAI). Chưa cài thì cứ dùng curl ở các bước trên là đủ, riêng bước ba anh em bỏ qua cũng được.
Hai flag --raw-output và --transform giúp mình chỉ lấy đúng đoạn chữ trả lời. Flag là phần tuỳ chọn gõ thêm sau tên lệnh, bắt đầu bằng dấu gạch ngang. Anh em gõ lệnh sau để nhận kết quả dạng chuỗi văn bản sạch.
Lệnh này chỉ in đúng đoạn chữ trả lời, không kèm các trường dữ liệu khác:
openai responses create \
--model "gpt-6-astra" \
--input "Write a one-sentence bedtime story about a unicorn." \
--raw-output \
--transform 'output.#(type=="message").content.0.text'Nếu chạy đúng, màn hình chỉ hiện đoạn chữ trả lời. Mình chưa chạy thử lệnh này, anh em chạy rồi kiểm tra giúp mình nhé. Cách này gọn vì lệnh in ra đúng đoạn chữ trả lời, anh em đỡ phải tự cắt kết quả.
Tài liệu của OpenAI cũng nhắc tới tính năng Structured Outputs, cho phép model trả dữ liệu dạng JSON. JSON là định dạng dữ liệu có cấu trúc cố định, phần mềm khác đọc thẳng được, nên rất hợp khi anh em cần nạp kết quả vào hệ thống khác.
Lỗi hay gặp khi gửi prompt cho model
Lỗi này dành cho anh em viết code gọi API: đừng mặc định câu trả lời luôn ở output[0].content[0].text, vì trường output (một danh sách các mục) còn có thể chứa lượt gọi công cụ hay thông tin suy luận. Vị trí đầu chưa chắc đúng. Nếu code chỉ đọc đúng vị trí đầu tiên, nó dễ hỏng khi model trả thêm mục khác vào trường output.
Nhồi quá nhiều ví dụ mẫu vào prompt thì model dễ bám sát mấy ví dụ đó quá mức (dân làm nghề gọi là overfit). Tài liệu của Google lưu ý rằng khi nhận quá nhiều mẫu, model có thể quá khớp với các trường hợp đó và giảm khả năng xử lý linh hoạt. Thiếu ngữ cảnh cụ thể cũng khiến máy rơi vào suy đoán chung chung.
Anh em chỉ cần chọn hai đến ba ví dụ tiêu biểu, trình bày giống nhau, rồi nói rõ giới hạn của kết quả (độ dài, định dạng) là đủ. Anh em cứ đưa ngữ cảnh rõ và chỉ dẫn ngắn gọn, kết quả thường đáng tin hơn.



