Hướng dẫn thực hànhHướng dẫn

Cách viết prompt cho model của OpenAI qua API theo tài liệu chính thức

Hôm nay mình sẽ hướng dẫn anh em cách viết prompt cho model của OpenAI qua API theo tài liệu prompt engineering của OpenAI, để chủ động kiểm soát kết quả.

Mình đọc kỹ tài liệu chính thức rồi gom lại thành các bước cụ thể. Mình chưa tự chạy thử mà ghi lại trung thực từ tài liệu hướng dẫn.

Nhiều anh em làm nội dung hay lập trình thường nghĩ viết prompt chỉ đơn giản là gõ vài câu yêu cầu vào ô chat ChatGPT rồi hy vọng có kết quả tốt. Tài liệu nói rằng cùng một prompt, model có thể trả về các câu trả lời khác nhau mỗi lần chạy, nên viết prompt vừa cần kinh nghiệm vừa cần thử đi thử lại. Hiểu nguyên lý này rồi, anh em sẽ bớt bất ngờ với câu trả lời của model.

Bài này giúp anh em nắm vững quy trình từ việc chọn model, thiết lập quyền hạn cho từng chỉ dẫn, đến cách gửi yêu cầu trực tiếp qua terminal để kiểm tra kết quả.

Bước 1: Chọn model trước khi viết prompt

Trước khi bắt tay viết prompt, tài liệu lưu ý anh em phải chọn đúng loại model phù hợp với mục tiêu xử lý để không lãng phí tài nguyên và chi phí vận hành. Khi chọn model, tài liệu nêu ba loại model cần phân biệt: reasoning model, model GPT, và model lớn hay nhỏ (mini, nano).

Chiếc cân cơ học cân bằng giữa hai khối kim loại tượng trưng cho việc cân nhắc chi phí và tốc độ model.

Việc đơn giản, cần nhanh và rẻ thì dùng model GPT thường; bài toán nhiều bước, cần lập kế hoạch thì dùng reasoning model, chấp nhận chậm và đắt hơn.

Reasoning model tự nghĩ từng bước trong đầu (gọi là chain of thought) trước khi trả lời, nên hợp với bài toán phức tạp, nhiều bước. Đổi lại, nó thường chậm và đắt hơn.

Còn model GPT thường thì nhanh, rẻ và đủ thông minh cho việc hàng ngày, nhưng anh em phải ghi yêu cầu thật rõ. Kích thước model lớn hay nhỏ cũng tạo ra sự đánh đổi giữa tốc độ và chi phí.

Tài liệu ghi rõ khi anh em còn băn khoăn chưa biết bắt đầu từ đâu, gpt-6-astra là lựa chọn mặc định rất tốt cho các tác vụ tạo văn bản và thử nghiệm prompt. Nếu anh em xây dựng ứng dụng lâu dài, tài liệu khuyên nên ghim cố định một phiên bản cụ thể như gpt-4.1-2025-04-14 để giữ tính ổn định. Việc này giúp model cư xử nhất quán, không đổi kết quả khi nhà cung cấp ra bản mới.

Bước 2: Tách biệt chỉ dẫn định hướng và nội dung câu hỏi

Sau khi chọn model, anh em cần phân định quyền hạn cho từng câu lệnh. Tài liệu cho phép anh em truyền chỉ dẫn với nhiều cấp bậc thẩm quyền khác nhau bằng tham số instructions hoặc bằng vai trò của từng tin nhắn (như developer, user). Mình hay hình dung instructions là luật chơi, còn input là câu hỏi, tách ra thì model đỡ lẫn.

La bàn đồng và bản vẽ kỹ thuật tượng trưng cho việc phân tách rõ ràng vai trò chỉ dẫn.

Anh em cứ coi instructions là chỗ mình dặn model về giọng điệu, mục tiêu và vài ví dụ câu trả lời đúng. Điều cần nhớ: cái gì nằm trong instructions thì model nghe theo trước cái nằm trong input.

Nếu anh em dồn tất cả yêu cầu vào một đoạn văn thô duy nhất, model sẽ rất dễ bị nhầm lẫn giữa quy tắc bắt buộc với dữ liệu đầu vào của người dùng.

Trong ví dụ mẫu của OpenAI, tham số input gửi câu hỏi về cú pháp JavaScript còn tham số instructions yêu cầu đóng vai cướp biển. Dưới đây là câu lệnh curl chép nguyên văn từ tài liệu chính thức:

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?"
    }'

Bước 3: Gửi prompt đơn giản qua terminal bằng curl

Lưu ý: các lệnh dưới đây gọi API, tính phí riêng, không phải app ChatGPT. Để chạy các lệnh dưới đây anh em cần có API key của OpenAI và lưu nó vào một biến tên OPENAI_API_KEY (biến môi trường là chỗ máy giữ sẵn một giá trị để lệnh lấy ra dùng). Trên Mac hoặc Linux, anh em gõ export OPENAI_API_KEY="key-của-anh-em" vào terminal rồi mới chạy lệnh.

Khi anh em chỉ có nhu cầu kiểm tra nhanh một câu hỏi cơ bản mà không cần phân vai rườm rà, việc truyền trực tiếp vào tham số input là giải pháp nhanh nhất. Terminal là cửa sổ gõ lệnh trên máy tính giúp anh em gửi trực tiếp yêu cầu lên máy chủ của nhà cung cấp mà không cần phải mở giao diện web. Cách này gõ nhanh, hợp lúc anh em muốn thử một câu.

Trong câu lệnh bên dưới, anh em chỉ cần để API key trong biến OPENAI_API_KEY rồi gửi một đoạn text vào input sáng tác truyện ngắn về một chú kỳ lân. Đây là cú pháp cơ bản nhất mà tài liệu đưa ra để làm quen.

Trước khi chạy, anh em gõ export OPENAI_API_KEY="key-của-anh-em" vào terminal (Mac/Linux) để lệnh đọc được key. Nếu báo lỗi xác thực thì kiểm tra lại key trước tiên. Sau đó chép đoạn sau vào terminal:

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."
    }'

Chạy xong anh em sẽ thấy một khối JSON; câu chuyện về chú kỳ lân nằm trong mảng output, ở trường text.

Bước 4: Tạo câu lệnh tự động bằng CLI của OpenAI

Nếu anh em thấy viết curl quá dài dòng thì có công cụ CLI openai của OpenAI (anh em cần cài sẵn công cụ này trên máy, cách cài có trong tài liệu OpenAI). Lệnh này tự gọi model rồi in thẳng câu trả lời ra terminal, anh em khỏi phải tự lọc JSON.

Hai dòng cuối của lệnh (--raw-output và --transform) có tác dụng lọc ra đúng đoạn văn bản trả lời, nên màn hình chỉ hiện câu chuyện chứ không hiện cả khối JSON dài. Điều này rất hữu ích khi anh em đưa lệnh vào các script tự động.

Lệnh dưới đây cần công cụ CLI openai đã cài sẵn trên máy; nếu terminal báo không tìm thấy lệnh openai thì anh em cài CLI theo hướng dẫn của OpenAI rồi chạy lại. Anh em mở terminal và dán đúng đoạn mã sau từ tài liệu hướng dẫn:

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'

Lỗi hay gặp khi lấy dữ liệu phản hồi

Một trong những cạm bẫy lớn nhất mà tài liệu cảnh báo là việc mặc định kết quả trả về luôn nằm ở phần tử đầu tiên của array output. Văn bản không luôn ở đầu. Mảng này là danh sách các phần model trả về, và nó thường có nhiều hơn một phần tử chứ không chỉ mỗi đoạn văn.

Bên trong mảng dữ liệu đó, hệ thống có thể chứa thêm các lượt model gọi công cụ hoặc dữ liệu về phần model tự suy luận. Nếu anh em cố định đường dẫn lấy dữ liệu tại vị trí đầu tiên, chương trình sẽ lập tức bị lỗi khi model thực hiện các bước lập luận trung gian. Lỗi này nhiều người mới dính lắm.

Để xử lý an toàn, tài liệu nói một số SDK chính thức có sẵn thuộc tính output_text, gom toàn bộ văn bản model trả về thành một chuỗi, anh em dùng làm đường tắt được. Nếu cần kết quả dạng dữ liệu có cấu trúc, tài liệu có tính năng riêng tên là Structured Outputs, anh em tìm đúng tên này trong tài liệu OpenAI. Chốt lại cho anh em ba việc mình nhớ nhất: chọn đúng model, đặt luật trong instructions, và đừng mặc định văn bản nằm ở output[0].

Nguồn tham khảo

  1. prompt-engineering · platform.openai.com · Tài liệu kỹ thuật · đọc ngày

Bài này thế nào?

Chia sẻ

XFacebook

Ảnh đại diện của chủ trang quanbi.dev

Về mình

Quân Bi · Người viết

Xem thêm →

Bình luận (0)

Chưa có bình luận nào. Bạn mở hàng nhé.

Viết bình luận