OpenAI
Trang này được dịch bằng máy học. Xem bài viết gốc bằng tiếng Anh.

Dùng logit bias để thay đổi xác suất token với API OpenAI

Tìm hiểu cách dùng tham số logit bias để sửa đổi đầu ra của mô hình

Đã cập nhật: 3 days ago

Logit_bias là một tham số tùy chọn dùng để sửa đổi khả năng các token được chỉ định xuất hiện trong đầu ra do mô hình tạo ra.

Tham số này nhận một đối tượng JSON ánh xạ các token tới một giá trị bias tương ứng từ -100 (trong đa số trường hợp sẽ chặn token đó được tạo ra) đến 100 (chỉ chọn riêng token đó, khiến nó có khả năng được tạo ra cao hơn). Các giá trị vừa phải như -1 và 1 sẽ thay đổi xác suất một token được chọn ở mức độ ít hơn.

Vì tham số này nhận token chứ không phải văn bản, bạn sẽ muốn dùng công cụ tokenizer để chuyển văn bản thành ID token. Hãy cùng xem qua một vài ví dụ.

Ví dụ 1: Loại bỏ ‘time’

Nếu ta gọi điểm cuối Completions với câu lệnh “Once upon a,” thì phần hoàn thành rất có khả năng sẽ bắt đầu bằng “ time.”

Từ “time” được tách token thành ID 2435 và từ “ time” (có khoảng trắng ở đầu) được tách token thành ID 640. Ta có thể truyền các giá trị này qua logit_bias với -100 để cấm chúng xuất hiện trong phần hoàn thành, như sau:

completion = client.chat.completions.create( 
model="gpt-3.5-turbo",
messages=[{"role": "system", "content": "Bạn hoàn thành câu của người dùng."},
"role": "user", "content": "Once upon a"} ]
logit_bias={2435:-100, 640:-100}
)

Bây giờ, câu lệnh “Once upon a” tạo ra phần hoàn thành “midnight dreary, while I pondered, weak and weary.”

Lưu ý rằng từ “time” không còn xuất hiện ở đâu cả, vì ta đã cấm token đó một cách hiệu quả bằng logit_bias.

Ví dụ 2: Định hướng bằng các giá trị logit bias có mục tiêu

Hãy xem thêm một ví dụ khác, dùng câu lệnh tạo công thức nấu ăn.

Nhiều công thức gợi ý dùng nồi, nhưng giả sử ta không có nồi. Ta sẽ muốn loại bỏ từ pot khỏi phần được tạo trong phần hoàn thành. ‘Pot’ được tách token thành 1787 nên ta có thể loại bỏ nó khỏi quá trình tạo bằng cách đặt logit_bias như bên dưới.

logit_bias={1787:-100}

Bây giờ, phần hoàn thành của ta có thể sẽ chứa từ “saucepan” thay thế. Hoàn hảo!

Ví dụ 3: Tăng khả năng một từ xuất hiện

Giả sử ta muốn tăng khả năng một từ xuất hiện.

Ví dụ, có thể ta đang vận hành một trang web cung cấp các công thức mà bạn có thể làm bằng lò vi sóng, nên ta muốn chắc chắn rằng từ “microwave” xuất hiện trong công thức. Microwave được tách token thành ID 27000. Ta có thể tăng khả năng token này xuất hiện bằng cách đặt logit_bias dương, như sau:

logit_bias={27000:5}

Bây giờ, phần hoàn thành của ta có nhiều khả năng chứa từ ‘microwave’ hơn.

Ta đặt logit_bias là 5, vì chúng tôi nhận thấy rằng việc đặt logit_bias là 1 thường không làm cho từ “microwave” xuất hiện trong phần hoàn thành, trong khi các giá trị logit_bias cao hơn như 10 lại khiến từ “ microwave” xuất hiện quá thường xuyên trong phần hoàn thành.

Bài viết này có hữu ích không?