Claude API cho phép đổi mức suy luận ngay giữa cuộc hội thoại

AI coding illustration: a robotic arm fitting a red block into a structure

Anthropic vừa bổ sung vào tài liệu dành cho nhà phát triển Claude một tính năng beta mới: điều chỉnh effort theo từng tin nhắn. Giữa một cuộc hội thoại nhiều lượt, nhà phát triển có thể chèn một thông điệp system đặc biệt để đổi mức suy luận của các câu trả lời tiếp theo, từ high xuống low hoặc ngược lại. Thiết lập effort ở cấp cao nhất của yêu cầu không phải đụng đến, nên phần đầu hội thoại đã được lưu đệm vẫn trúng bộ nhớ đệm như cũ.

Cách viết trong tài liệu rất ngắn gọn. Trong mảng messages, thêm một thông điệp có role là system và content là mảng rỗng, bên trong đặt giá trị mới của output_config.effort, đồng thời gửi kèm header mid-conversation-output-config-2026-07-01. Trong ví dụ, effort cấp cao nhất được đặt là high và mô hình trước tiên dùng mức cao để lập kế hoạch ba bước chuyển từ SQLite sang PostgreSQL. Sau đó một thông điệp system mức low được chèn vào, người dùng chỉ yêu cầu nén kế hoạch thành một câu, và lượt này được trả lời ở mức thấp.

Mức mới được tính từ lượt nào

Thời điểm có hiệu lực phụ thuộc vào vị trí đặt thông điệp này, và quy tắc được viết khá chi tiết:

  • Nếu nó nằm ngay sau một thông điệp user mang đầu vào mới, Claude dùng mức mới cho câu trả lời của lượt đó;
  • Nếu nó nằm ở vị trí khác, chẳng hạn giữa phản hồi của assistant và thông điệp user kế tiếp, mức mới bắt đầu từ thông điệp user có đầu vào mới tiếp theo;
  • Thông điệp user chỉ chứa tool_result không được tính là đầu vào mới, nên việc gọi công cụ qua lại nhiều vòng sẽ không kích hoạt việc đổi mức.

Mức mới có hiệu lực cho đến khi một thông điệp sau đó thay đổi nó. Tài liệu đặc biệt nhắc rằng thông điệp này phải nằm ở cuối phần nội dung đã gửi và được giữ nguyên trong các yêu cầu sau đó; không được chèn vào trước những lượt đã gửi, cũng không được di chuyển hay xóa về sau. Trên các mô hình hỗ trợ preserved thinking (giữ lại suy nghĩ), bất kỳ thay đổi nào kiểu này đều làm vô hiệu các khối suy nghĩ trong những lượt assistant đứng sau thông điệp đó.

Các trường hợp báo lỗi cũng được liệt kê rõ ràng. Nếu viết output_config trong thông điệp system mà không có beta header, API trả về lỗi 400 với thông báo Extra inputs are not permitted; có beta header nhưng mô hình không hỗ trợ, chẳng hạn Claude Fable 5, cũng trả về 400. Khi Sonnet 5.5 bật chế độ suy nghĩ between_tools hoặc Haiku 5.5 tắt suy nghĩ, giữa chừng cũng không đổi mức được; tài liệu khuyên dùng suy nghĩ thích ứng (adaptive thinking) cho hai trường hợp này.

Trước đây đổi thế nào, nay bớt được gì

Vốn dĩ effort là tham số cấp yêu cầu, nằm ở cấp cao nhất. Muốn cùng một cuộc hội thoại lúc đầu suy nghĩ kỹ, về sau trả lời nhanh, nhà phát triển chỉ có cách đổi giá trị cấp cao nhất giữa hai yêu cầu. Tài liệu nhận xét thẳng thắn về cách làm này: giá trị cấp cao nhất vừa đổi, bộ nhớ đệm prompt bị tính lại từ đầu, và phần ngữ cảnh dài đã tích lũy phía trước phải tính phí như không trúng đệm.

"A per-message change leaves everything before it unchanged, so the cached prefix still matches." (Đổi mức theo từng tin nhắn giữ nguyên mọi thứ phía trước, nên tiền tố đã lưu đệm vẫn khớp.)

Tài liệu còn nêu một chi tiết dễ bị bỏ qua: trên Claude Fable 5.1, việc đổi giá trị cấp cao nhất vốn đã không dẫn dắt mô hình một cách đáng tin cậy, vì các câu trả lời trước đó được viết theo mức cũ và mô hình có xu hướng giữ phong cách nhất quán với chính mình. Đổi theo từng tin nhắn ghi hẳn mốc "từ đây đổi số" vào bên trong cuộc hội thoại, nên mô hình nhìn thấy được điểm chuyển này.

Điều này thiết thực nhất với các vòng lặp Agent chạy lâu. Một agent lập trình có thể dùng mức cao để đọc codebase và chốt phương án sửa, rồi chạy vài chục lượt thực thi và xác nhận ở mức thấp, trong khi tiền tố ngữ cảnh luôn không đổi và tỷ lệ trúng đệm không bị ảnh hưởng. Trước đây phải chọn một trong hai, hoặc linh hoạt về mức suy luận, hoặc tiết kiệm nhờ bộ nhớ đệm; nay có thể lấy cả hai.

Các ứng dụng chăm sóc khách hàng và hỏi đáp cũng dùng được. Đầu hội thoại, người dùng mô tả một sự cố phức tạp và mô hình bật mức cao để chẩn đoán; khi đã xác định được vấn đề, người dùng chỉ hỏi thêm "bước thứ hai cụ thể bấm vào đâu", lúc này hạ xuống mức thấp để trả lời sẽ nhanh hơn rõ rệt. Ngược lại, giữa một cuộc trò chuyện phiếm, nếu người dùng bất ngờ ném vào một bản hợp đồng cần rà soát từng điều khoản, ứng dụng có thể tạm nâng mức lên. Những lần chuyển như vậy trước đây hoặc phải bỏ bộ nhớ đệm, hoặc đành không chuyển.

Phạm vi hỗ trợ

Về mô hình, Fable 5.2, Mythos 5.2, Fable 5.1, Mythos 5.1, Opus 5.5, Opus 5, Sonnet 5.5 và Haiku 5.5 đều nằm trong danh sách beta, và các nền tảng đám mây được hỗ trợ của từng mô hình không hoàn toàn giống nhau. Về nền tảng, Claude API, Amazon Bedrock, Claude Platform on AWS, hai hình thức lưu trữ trên Google Cloud và Microsoft Foundry đều được ghi chú là beta. Nhà phát triển dùng giao diện Bedrock InvokeModel cần ghi giá trị beta vào mảng anthropic_beta trong phần thân yêu cầu thay vì dùng header.

Managed Agents hiện chưa hỗ trợ tính năng này; cách thay thế mà tài liệu đưa ra là ghi đè cài đặt mô hình của Agent ở cấp phiên. Tính năng vẫn đang ở giai đoạn beta, ngày tháng trong tên beta header chỉ là mã nhận diện phiên bản giao diện, và tài liệu không nói cách viết có thay đổi hay không khi bản chính thức ra mắt.

Nguồn tham khảo: trang Per-message effort trong tài liệu nhà phát triển Claude (đối chiếu tên beta header, danh sách mô hình và nền tảng, quy tắc vị trí có hiệu lực cùng các thông báo lỗi), CocoLoop, phần giải thích tham số effort trong tài liệu nhà phát triển Claude.