Bỏ qua đến nội dung chính

Prompting 101 | Code w/ Claude

TL;DR

  • Thiết kế câu lệnh (Prompt Engineering) là một quá trình lặp đi lặp lại và thực nghiệm, đòi hỏi sự giao tiếp rõ ràng và cấu trúc để định hướng mô hình ngôn ngữ thực hiện tác vụ mong muốn một cách hiệu quả.
  • Các câu lệnh đơn giản thường dẫn đến phản hồi không chính xác do thiếu ngữ cảnh; việc cung cấp thông tin chi tiết và có tổ chức là rất quan trọng để mô hình AI đưa ra đánh giá chính xác và đáng tin cậy.
  • Bằng cách áp dụng cấu trúc câu lệnh cụ thể, bao gồm ngữ cảnh tác vụ, giọng điệu, dữ liệu nền tĩnh, và các ví dụ (few-shot learning), hiệu suất và độ tự tin của AI trong việc phân tích thông tin phức tạp sẽ được cải thiện đáng kể.

Điểm chính

  • Áp dụng phương pháp lặp đi lặp lại và thực nghiệm: Liên tục xây dựng, kiểm tra và tinh chỉnh câu lệnh của bạn dựa trên phản hồi của AI, sử dụng các trường hợp thử nghiệm cụ thể để khắc phục lỗi.
  • Cấu trúc câu lệnh hiệu quả: Bắt đầu bằng mô tả tác vụ rõ ràng, tiếp theo là nội dung động, hướng dẫn chi tiết từng bước, các ví dụ liên quan và cuối cùng là nhấn mạnh lại những thông tin cực kỳ quan trọng.
  • Cung cấp ngữ cảnh toàn diện: Xác định rõ ràng vai trò của AI, kịch bản tác vụ (ví dụ: "hệ thống AI này được cho là để giúp một người điều chỉnh yêu cầu bồi thường đang xem xét các biểu mẫu báo cáo tai nạn ô tô bằng tiếng Thụy Điển") và giọng điệu mong muốn (ví dụ: "thực tế và tự tin, không đưa ra đánh giá nếu không hoàn toàn tự tin").
  • Tích hợp thông tin nền tĩnh vào câu lệnh hệ thống: Cung cấp dữ liệu không đổi như cấu trúc biểu mẫu, ý nghĩa từng trường, và các biến thể nhập liệu của con người (ví dụ: khoanh tròn, nguệch ngoạc) để tăng cường khả năng hiểu và hiệu quả của AI (cũng hỗ trợ prompt caching).
  • Sử dụng định dạng có cấu trúc: Áp dụng thẻ XML hoặc Markdown để tổ chức thông tin trong câu lệnh, giúp AI phân tích và tham chiếu các khối dữ liệu cụ thể một cách hiệu quả hơn.
  • Tận dụng học từ vài ví dụ (Few-shot Learning): Đối với các kịch bản phức tạp hoặc không rõ ràng, hãy đưa vào các ví dụ rõ ràng về đầu vào và phân tích đầu ra mong muốn (có thể mã hóa hình ảnh bằng base64) trong câu lệnh hệ thống để hướng dẫn lập luận của AI.
  • Quản lý các tham số AI: Đặt tham số nhiệt độ bằng 0 để có đầu ra mang tính xác định và cấp một ngân sách token tối đa lớn để đảm bảo phản hồi toàn diện.

Từ vựng

  • Prompt Engineering — Kỹ thuật Tạo Câu lệnh / Thiết kế Câu lệnh
  • Language Model (LLM) — Mô hình Ngôn ngữ Lớn
  • Context — Ngữ cảnh
  • Task — Tác vụ
  • System Prompt — Câu lệnh Hệ thống
  • Temperature Parameter — Tham số Nhiệt độ
  • Few-shot Learning — Học từ một vài ví dụ / Học vài lần
  • Iterative and Experimental — Lặp đi lặp lại và Thực nghiệm
  • XML Tags — Thẻ XML
  • Conversation History — Lịch sử Cuộc trò chuyện

Nội dung chi tiết

Giới thiệu về Thiết kế Câu lệnh và Kịch bản thực tế

Chào mọi người, cảm ơn đã tham gia buổi Prompting 101 hôm nay. Tôi là Hannah, thành viên của Đơn vị Trí tuệ nhân tạo Ứng dụng (Applied AICU) tại Anthropic, và bên cạnh tôi là Christian, cũng thuộc Applied AICU. Hôm nay, chúng tôi sẽ hướng dẫn các bạn một số best practices về Prompting và chúng ta sẽ cùng xây dựng một câu lệnh dựa trên một kịch bản thực tế.

Thiết kế câu lệnh (hay Prompt Engineering), chắc hẳn các bạn đã quen thuộc đôi chút với nó, là cách chúng ta giao tiếp với một mô hình ngôn ngữ và cố gắng khiến nó thực hiện điều chúng ta muốn. Đây là việc thực hành viết các hướng dẫn rõ ràng cho mô hình AI, cung cấp cho mô hình AI ngữ cảnh cần thiết để hoàn thành tác vụ, và suy nghĩ về cách chúng ta muốn sắp xếp thông tin đó để đạt được kết quả tốt nhất. Có rất nhiều chi tiết ở đây, nhiều cách khác nhau mà bạn có thể cân nhắc khi xây dựng một câu lệnh. Và như mọi khi, cách tốt nhất để học là thực hành.

Hôm nay, chúng ta sẽ đi qua một kịch bản thực hành. Chúng tôi sẽ sử dụng một ví dụ lấy cảm hứng từ một khách hàng thực tế mà chúng tôi đã làm việc cùng. Chúng tôi đã điều chỉnh yêu cầu thực tế của khách hàng, nhưng đây là một trường hợp thực sự thú vị khi cố gắng phân tích một số hình ảnh và trích xuất thông tin thực tế từ đó, đồng thời để Claude đưa ra đánh giá về nội dung mà nó tìm thấy. Tôi không thực sự biết ngôn ngữ của nội dung này, nhưng may mắn thay, Christian và Claude đều biết. Vì vậy, tôi sẽ nhường lời cho Christian để nói về kịch bản và nội dung.

Kịch bản: Xử lý yêu cầu bảo hiểm xe ô tô

Đối với ví dụ này, để thiết lập bối cảnh, hãy tưởng tượng bạn đang làm việc cho một công ty bảo hiểm Thụy Điển và hàng ngày bạn phải xử lý các yêu cầu bảo hiểm xe ô tô. Mục đích của việc này là bạn có hai mẩu thông tin. Chúng ta sẽ xem xét chi tiết chúng, nhưng trực quan, bạn có thể thấy ở phía bên trái chúng ta có một biểu mẫu báo cáo tai nạn ô tô chỉ mô tả chi tiết những gì đã xảy ra trước khi vụ tai nạn thực sự diễn ra. Và tôi cũng có một bản phác thảo do con người vẽ về cách vụ tai nạn đã xảy ra. Hai mẩu thông tin này là những gì chúng ta sẽ cố gắng chuyển cho Claude.

Để bắt đầu, chúng ta có thể chỉ cần lấy hai thông tin này và đưa chúng vào một console để xem điều gì xảy ra. Nếu chúng ta chuyển sang một console, chúng ta có thể thực hiện điều này một cách thực tế. Trong trường hợp này, bạn có thể thấy console đẹp đẽ của Anthropic. Chúng tôi đang sử dụng mô hình Claude 4 mới. Trong trường hợp này, việc đặt tham số nhiệt độ bằng 0 và có một ngân sách token tối đa lớn cũng giúp chúng tôi đảm bảo không có giới hạn nào đối với những gì Claude có thể làm.

Trong trường hợp này, bạn có thể thấy một câu lệnh rất đơn giản chỉ để thiết lập bối cảnh cho những gì Claude phải làm. Trong trường hợp này, câu lệnh đề cập rằng đây là ý định để xem xét một biểu mẫu báo cáo tai nạn và cuối cùng cũng xác định điều gì đã xảy ra trong vụ tai nạn và ai là người có lỗi.

Bạn có thể thấy ở đây với câu lệnh rất đơn giản này, nếu tôi chỉ chạy nó và chuyển sang chế độ xem trước, chúng ta có thể thấy rằng Claude nghĩ rằng đây là liên quan đến một tai nạn trượt tuyết xảy ra trên một con phố tên là Chaffungauthan, một con phố rất phổ biến ở Thụy Điển. Và theo nhiều cách, bạn có thể hiểu được sai lầm này. Theo nghĩa là trong câu lệnh của chúng ta, chúng ta thực sự chưa làm bất cứ điều gì để thiết lập bối cảnh về những gì đang thực sự diễn ra ở đây. Vì vậy, dự đoán đầu tiên này không quá tệ, nhưng chúng ta vẫn nhận thấy rất nhiều trực giác mà chúng ta có thể "khắc sâu" vào Claude.

Thiết kế Câu lệnh: Khoa học lặp lại và Thực nghiệm

Quay trở lại các trang trình bày, bạn có thể thấy rằng theo nhiều cách, Thiết kế câu lệnh là một khoa học rất lặp đi lặp lạithực nghiệm. Trong trường hợp này, chúng ta gần như có thể có một trường hợp thử nghiệm trong đó Claude phải đảm bảo nó hiểu rằng đó là môi trường xe hơi hoặc phương tiện giao thông, không liên quan đến trượt tuyết. Và bằng cách đó, bạn xây dựng lặp đi lặp lại câu lệnh của mình để đảm bảo nó thực sự giải quyết vấn đề bạn đang muốn giải quyết. Để làm được điều đó, chúng ta sẽ xem xét một số best practices về cách chúng tôi tại Anthropic phân tích điều này nội bộ và cách chúng tôi khuyên những người khác cũng làm như vậy.

Cấu trúc Câu lệnh hiệu quả

Chúng ta sẽ nói về một số best practices để phát triển một câu lệnh tuyệt vời. Đầu tiên, chúng ta muốn nói một chút về cấu trúc của một câu lệnh tốt trông như thế nào. Bạn có thể quen với việc tương tác với một chatbot, với Claude, qua lại, có một kiểu tương tác mang phong cách hội thoại hơn. Khi chúng ta làm việc với một tác vụ như thế này, chúng ta có thể đang sử dụng API, và chúng ta muốn gửi một tin nhắn duy nhất đến Claude và yêu cầu nó hoàn thành xuất sắc tác vụ mà chúng ta đang cố gắng chạy, mà không cần phải qua lại.

Vì vậy, cấu trúc mà chúng tôi đề xuất là thiết lập mô tả tác vụ ngay từ đầu. Hãy nói với Claude: "Bạn ở đây để làm gì? Vai trò của bạn là gì? Bạn đang cố gắng hoàn thành tác vụ nào hôm nay?"

Sau đó, chúng ta cung cấp nội dung. Trong trường hợp này, đó là những hình ảnh mà Christian đã trình chiếu, và bản vẽ của vụ tai nạn và cách chúng xảy ra. Đó là nội dung động của chúng ta. Đây cũng có thể là thứ bạn đang truy xuất từ một hệ thống AI khác, tùy thuộc vào trường hợp sử dụng của bạn.

Chúng ta sẽ đưa ra một số hướng dẫn chi tiết cho Claude. Gần giống như một danh sách từng bước về cách chúng ta muốn Claude thực hiện tác vụ và cách chúng ta muốn nó giải quyết lập luận.

Chúng ta có thể đưa ra một số ví dụ cho Claude. Đây là một ví dụ về một phần nội dung bạn có thể nhận được. Đây là cách bạn nên phản hồi khi nhận được nội dung đó.

Cuối cùng, chúng tôi thường khuyên nên lặp lại bất cứ điều gì thực sự quan trọng để Claude hiểu về tác vụ này. Xem xét lại thông tin với Claude, nhấn mạnh những điều cực kỳ quan trọng, và sau đó nói với Claude, "Được rồi, hãy tiếp tục và làm công việc của bạn."

Đây là một cái nhìn khác, chi tiết hơn một chút, với sự phân tích kỹ hơn. Chúng ta sẽ đi qua từng điểm trong mười điểm này một cách riêng lẻ và chỉ cho bạn cách chúng ta xây dựng nó trong console. Về hai điều đầu tiên, Christian sẽ nói về ngữ cảnh tác vụngữ cảnh giọng điệu.

Ngữ cảnh Tác vụ và Giọng điệu

Tuyệt vời. Vâng, nếu chúng ta bắt đầu với ngữ cảnh tác vụ, như bạn đã nhận ra khi tôi trình bày một bản demo ngắn ở đó, chúng ta không giải thích nhiều về kịch bản mà Claude thực sự đang làm việc. Và vì điều đó, bạn cũng có thể thấy rằng Claude không nhất thiết phải đoán nhiều hơn những gì bạn thực sự muốn từ nó. Vì vậy, trong trường hợp của chúng ta, nếu bạn muốn phân tích điều đó, hãy đảm bảo chúng ta có thể đưa ra các hướng dẫn rõ ràng và cũng đảm bảo chúng ta hiểu tác vụ mà chúng ta đang yêu cầu Claude thực hiện là gì.

Thứ hai, chúng ta cũng đảm bảo thêm một chút giọng điệu vào tất cả. Ở đây có một điều được gọi là "thực tế" và "tự tin". Vì vậy, nếu Claude có thể hiểu những gì nó đang xem xét, chúng ta không muốn lạc đề và chỉ đọc sai ý của chúng ta. Chúng ta muốn đảm bảo rằng bất kỳ đánh giá nào, trong trường hợp của chúng ta, chúng ta muốn đảm bảo rằng chúng ta có thể hiểu ai là người có lỗi ở đây. Chúng ta muốn đảm bảo rằng đánh giá đó phải rõ ràng và tự tin nhất có thể, nếu không thì chúng ta sẽ lạc mất những gì mình đang làm.

Vì vậy, nếu chúng ta quay lại console, chúng ta có thể chuyển đến phiên bản 2 (V2) mà chúng ta có ở đây. Tôi sẽ chỉ điều hướng đến V2. Và bạn có thể thấy ở đây, tôi cũng chỉ minh họa dữ liệu bởi vì chúng ta không thực sự làm điều đó lần trước. Chỉ để thực sự làm nổi bật những gì chúng ta đang xem xét. Vì vậy, những gì chúng ta đang thấy ở đây, đây là biểu mẫu báo cáo tai nạn ô tô. Và nó chỉ có 17 ô kiểm khác nhau đi qua những gì thực sự đã xảy ra. Bạn có thể thấy có một phương tiện A và phương tiện B ở cả bên trái và bên phải. Và mục đích chính của việc này là chúng ta muốn đảm bảo rằng Claude có thể hiểu dữ liệu được tạo thủ công này để đánh giá những gì đang thực sự diễn ra. Và điều đó được xác nhận bởi, nếu tôi điều hướng lại đây, bản phác thảo mà chúng ta có thể làm nổi bật ở đây. Trong trường hợp này, biểu mẫu chỉ là một điểm dữ liệu khác cho cùng một kịch bản.

Và trong trường hợp này, chúng ta muốn đưa thêm thông tin vào phiên bản 2 của mình. Và bằng cách đó, tôi thực sự đang trình bày chi tiết hơn rất nhiều về những gì đang diễn ra. Vì vậy, bạn có thể thấy ở đây tôi đang chỉ rõ rằng hệ thống AI này được cho là để giúp một người điều chỉnh yêu cầu bồi thường đang xem xét các biểu mẫu báo cáo tai nạn ô tô bằng tiếng Thụy Điển. Bạn có thể thấy ở đây, chúng tôi cũng đang trình bày chi tiết rằng đó là một bản phác thảo sự cố do con người vẽ và bạn không nên đưa ra đánh giá nếu nó không thực sự hoàn toàn tự tin. Và điều đó thực sự là mấu chốt bởi vì nếu chúng ta chạy điều này, bạn sẽ thấy rằng, và bạn có thể thấy các cài đặt tương tự. Claude 4, một mô hình AI mới, tham số nhiệt độ bằng 0. Nếu chúng ta chạy điều này, chúng ta có thể thấy điều gì thực sự xảy ra.

Trong trường hợp này, Claude có thể nhận ra rằng bây giờ nó liên quan đến tai nạn ô tô, không phải tai nạn trượt tuyết, điều này rất tuyệt vời. Bạn có thể thấy nó có thể nhận ra rằng phương tiện A được đánh dấu vào ô kiểm số 1, và sau đó phương tiện B được đánh dấu vào ô kiểm số 12. Và nếu chúng ta cuộn xuống, chúng ta vẫn có thể thấy rằng có một số thông tin còn thiếu để Claude có thể đưa ra xác định hoàn toàn tự tin về việc ai là người có lỗi ở đây. Và điều này rất tuyệt vời. Điều này liên quan đến một tập hợp tác vụ. Đảm bảo bạn không đưa ra bất kỳ tuyên bố nào, bất kỳ yêu cầu nào đều phải là thực tế và đảm bảo bạn chỉ đưa ra những điều đó khi bạn tự tin. Nhưng vẫn còn rất nhiều thông tin mà chúng ta còn thiếu ở đây liên quan đến biểu mẫu, những gì biểu mẫu thực sự liên quan đến. Và rất nhiều thông tin chúng ta muốn đưa vào yếu tố ứng dụng này. Và cách tốt nhất để làm điều đó thực sự là thêm nó vào câu lệnh hệ thống, điều mà Hannah sẽ trình bày chi tiết.

Chi tiết Nền, Dữ liệu và Hình ảnh

Quay lại các trang trình bày, chúng ta có mục tiếp theo mà chúng ta sẽ thêm vào câu lệnh. Và đây là thông tin nền, dữ liệu, tài liệuhình ảnh. Ở đây, như Christian đã nói, chúng ta thực sự biết rất nhiều về biểu mẫu này. Biểu mẫu sẽ luôn giống nhau mỗi lần. Biểu mẫu sẽ không bao giờ thay đổi. Và vì vậy, đây là một loại thông tin rất tuyệt vời để cung cấp cho Claude để nói với Claude, đây là cấu trúc của biểu mẫu mà bạn sẽ xem xét. Chúng tôi biết rằng điều đó sẽ không bao giờ thay đổi giữa các truy vấn khác nhau. Cách điền biểu mẫu sẽ thay đổi, nhưng bản thân biểu mẫu sẽ không thay đổi. Và vì vậy, đây là một loại thông tin tuyệt vời để đưa vào câu lệnh hệ thống.

Đây cũng là một điều tuyệt vời để sử dụng cho bộ nhớ đệm câu lệnh. Nếu bạn đang cân nhắc sử dụng bộ nhớ đệm câu lệnh, điều này sẽ luôn giống nhau. Và điều này sẽ giúp Claude dành ít thời gian hơn để tìm hiểu biểu mẫu là gì mỗi khi nó nhìn thấy biểu mẫu lần đầu tiên. Và nó sẽ làm tốt hơn việc đọc biểu mẫu, bởi vì nó đã biết điều gì sẽ xảy ra ở đó.

Vì vậy, một điều khác mà tôi muốn đề cập ở đây là cách chúng ta thích tổ chức thông tin trong các câu lệnh. Claude thực sự yêu thích cấu trúc, yêu thích tổ chức. Đó là lý do tại sao chúng tôi khuyên bạn nên tuân theo một cấu trúc tiêu chuẩn trong các câu lệnh của mình. Và có một vài công cụ khác mà bạn có thể sử dụng để giúp Claude hiểu thông tin tốt hơn. Tôi cũng chỉ muốn đề cập rằng tất cả những điều này đều có trong tài liệu của chúng tôi với rất nhiều ví dụ tuyệt vời. Vì vậy, hãy chắc chắn chụp ảnh. Nhưng nếu bạn quên chụp ảnh, đừng lo lắng. Tất cả nội dung này đều có trực tuyến với rất nhiều ví dụ. Và chắc chắn khuyến khích các bạn kiểm tra nó ở đó nữa.

Dù sao, một số thứ bạn có thể sử dụng, đó là các dấu phân cách như thẻ XML. Markdown cũng khá hữu ích cho Claude, nhưng thẻ XML thì hay hơn vì bạn thực sự có thể chỉ định những gì bên trong các thẻ đó. Vì vậy, chúng ta có thể nói với Claude, đây là tùy chọn người dùng. Bây giờ bạn sẽ đọc một số nội dung và các thẻ XML này cho bạn biết rằng mọi thứ được bao bọc trong các thẻ đó đều liên quan đến tùy chọn người dùng. Và nó giúp Claude tham chiếu lại thông tin đó, có thể ở các điểm sau trong câu lệnh.

Vì vậy, tôi muốn trình bày trong console cách chúng ta thực sự làm điều này trong trường hợp này. Và Christian sẽ mở phiên bản 3 của chúng ta. Vì vậy, chúng ta giữ mọi thứ về phần còn lại của câu lệnh người dùng giống nhau. Và chúng ta đã quyết định trong trường hợp này sẽ đặt thông tin này vào câu lệnh hệ thống. Bạn có thể thử các cách khác nhau. Chúng ta đang làm điều đó trong câu lệnh hệ thống ở đây. Và chúng ta sẽ nói với Claude mọi thứ nó cần biết về biểu mẫu này. Đây là một biểu mẫu báo cáo tai nạn ô tô Thụy Điển.

Nâng cao Hiệu suất Phân tích với Ngữ cảnh Chi tiết

Biểu mẫu sẽ bằng tiếng Thụy Điển. Nó sẽ có tiêu đề này, và hai cột. Các cột đại diện cho các phương tiện khác nhau. Chúng ta sẽ nói cho Claude biết về từng trong số 17 dòng và ý nghĩa của chúng. Bạn có thể đã nhận thấy khi chúng ta chạy trước đó, Claude đã đọc riêng từng dòng để hiểu chúng là gì. Chúng ta có thể cung cấp tất cả thông tin đó ngay từ đầu. Và chúng ta cũng sẽ cung cấp cho Claude một chút thông tin về cách điền vào biểu mẫu này. Điều này cũng thực sự hữu ích cho Claude. Chúng ta có thể nói với nó rằng, con người đang điền vào biểu mẫu này. Vì vậy, nó sẽ không hoàn hảo. Mọi người có thể vẽ một vòng tròn, họ có thể nguệch ngoạc, họ có thể không đánh dấu X vào ô. Có thể có nhiều loại đánh dấu mà bạn cần tìm khi đọc biểu mẫu này. Chúng ta cũng có thể cung cấp cho Claude một chút thông tin về cách diễn giải điều này, hoặc mục đích hay ý nghĩa của biểu mẫu này. Và tất cả những điều này là ngữ cảnh mà hy vọng sẽ thực sự giúp Claude phân tích biểu mẫu tốt hơn.

Vì vậy, nếu chúng ta chạy nó, mọi thứ khác vẫn như cũ. Chúng ta vẫn giữ nguyên các câu lệnh người dùng ở đây. Các câu lệnh người dùng vẫn yêu cầu Claude thực hiện cùng một tác vụ, cùng ngữ cảnh. Và chúng ta sẽ thấy rằng nó dành ít thời gian hơn. Nó kể cho chúng ta ít hơn một chút về biểu mẫu là gì vì nó đã biết điều đó rồi. Và nó không bận tâm đến việc cung cấp lại thông tin đó cho chúng ta. Nó sẽ cung cấp cho chúng ta một danh sách đầy đủ về những gì nó tìm thấy đã được kiểm tra, những gì bản phác thảo thể hiện. Và ở đây, Claude hiện đã trở nên tự tin hơn nhiều với ngữ cảnh bổ sung mà chúng ta đã cung cấp cho nó. Claude bây giờ cảm thấy phù hợp để nói rằng phương tiện B có lỗi trong trường hợp này dựa trên bản vẽ và bản phác thảo này. Vì vậy, chúng ta đã thấy một số cải thiện trong cách Claude phân tích những điều này. Tôi nghĩ chúng ta có thể đồng ý rằng nếu chúng ta nhìn vào bản vẽ và danh sách, phương tiện B có lỗi. Vì vậy, chúng ta muốn thấy điều đó.

Sử dụng Ví dụ (Few-shot Learning) trong Thiết kế Câu lệnh

Chúng ta sẽ quay lại các trang trình bày và nói về một vài mục khác mà chúng ta không thực sự sử dụng trong câu lệnh này, nhưng có thể thực sự hữu ích để xây dựng câu lệnh của bạn và làm cho nó hoạt động tốt hơn. Chính xác. Tôi nghĩ một điều mà chúng ta thực sự muốn nhấn mạnh là các ví dụ. Tôi nghĩ các ví dụ hoặc few-shot là một cơ chế thực sự mạnh mẽ trong việc định hướng Claude. Vì vậy, bạn có thể hình dung điều này theo một cách khá phức tạp. Hãy tưởng tượng bạn có các kịch bản, tình huống, ngay cả trong trường hợp này là các tai nạn cụ thể xảy ra mà Claude khó có thể hiểu đúng. Nhưng bạn, với trực giác của con người và dữ liệu được gắn nhãn của con người, có thể thực sự đi đến kết luận đúng. Bạn có thể đưa thông tin đó vào câu lệnh hệ thống bằng cách có các ví dụ rõ ràng về: A, dữ liệu mà nó phải xem xét. Vì vậy, bạn có thể có các ví dụ trực quan. Bạn có thể sử dụng base64 để mã hóa một hình ảnh và đưa nó vào như một phần của dữ liệu mà bạn đang truyền vào các ví dụ. Và sau đó, bạn có thể có loại mô tả về cách phân tích điều đó theo tiêu chuẩn. Đây là điều chúng ta thực sự nhấn mạnh về cách bạn có thể đẩy giới hạn của ứng dụng Mô hình ngôn ngữ lớn (LLM) của mình bằng cách đưa các ví dụ này vào câu lệnh hệ thống. Và điều này một lần nữa là khoa học thực nghiệm của Thiết kế câu lệnh mà bạn luôn muốn đẩy giới hạn của ứng dụng của mình và nhận được vòng lặp phản hồi nơi nó đang gặp lỗi và cố gắng thêm điều đó vào câu lệnh hệ thống. Để lần tới, khi một ví dụ tương tự xảy ra, nó có thể thực sự tham chiếu nó trong tập hợp ví dụ của mình.

Bạn có thể thấy ở đây, đây chỉ là một ví dụ nhỏ về cách chúng ta làm điều này. Một lần nữa, thực sự nhấn mạnh loại cấu trúc XML mà chúng ta yêu thích. Nó mang lại rất nhiều cấu trúc cho Claude. Đây là những gì nó đã được tinh chỉnh để biết. Và nó hoạt động hoàn hảo cho ví dụ này. Trong trường hợp của chúng ta, chúng ta không làm điều này chỉ vì đây là một bản demo đơn giản, nhưng bạn có thể hình dung một cách thực tế nếu bạn đang xây dựng điều này cho một công ty bảo hiểm, bạn sẽ có hàng chục, thậm chí hàng trăm ví dụ khá khó khăn, có thể nằm trong vùng xám mà bạn muốn đảm bảo rằng Claude thực sự có cơ sở để đưa ra phán quyết lần sau.

Lịch sử Cuộc Trò Chuyện và Nhắc nhở Tác vụ

Một chủ đề khác mà chúng ta thực sự muốn làm nổi bật, mà chúng ta không làm trong bản demo này, là lịch sử cuộc trò chuyện. Nó cùng một hướng với các ví dụ. Chúng ta sử dụng điều này để đảm bảo rằng đủ thông tin giàu ngữ cảnh có sẵn cho Claude khi Claude đang làm việc thay mặt bạn. Trong trường hợp của chúng ta bây giờ, đây không thực sự là hướng người dùng trong một ứng dụng cho vay. Nó giống như một cái gì đó đang diễn ra ở hậu trường. Bạn có thể hình dung đối với công ty bảo hiểm này, họ có hệ thống tự động này, một số dữ liệu được tạo ra từ đó và sau đó bạn có thể có một người tham gia vào vòng lặp ở cuối. Nếu bạn xây dựng một cái gì đó hướng người dùng hơn nhiều hoặc bạn có một lịch sử cuộc trò chuyện dài mà sẽ liên quan để đưa vào, đây là một nơi hoàn hảo trong câu lệnh hệ thống để đưa vào vì nó làm giàu ngữ cảnhClaude làm việc trong đó. Trong trường hợp của chúng ta, chúng ta chưa làm như vậy, nhưng điều chúng ta làm là, và bước tiếp theo là cố gắng đảm bảo chúng ta đưa ra một lời nhắc cụ thể về tác vụ hiện tại. Bây giờ chúng ta sẽ xây dựng phần cuối cùng của câu lệnh này cho Claude, và đó là quay lại lời nhắc về tác vụ tức thời là gì và đưa cho Claude một lời nhắc về bất kỳ hướng dẫn quan trọng nào mà chúng ta muốn nó tuân theo.

Ngăn ngừa Ảo giác và Thứ tự Tác vụ

Một số lý do mà chúng ta có thể làm điều này là để ngăn ngừa ảo giác. Chúng ta muốn Claude không tự tạo ra các chi tiết mà nó không tìm thấy trong câu lệnh này, hoặc không tìm thấy trong dữ liệu. Nếu Claude không thể cho biết ô nào đã được đánh dấu, chúng ta không muốn Claude đoán mò hoặc tự tạo ra ý tưởng rằng một ô có thể đã được đánh dấu khi nó không phải vậy. Nếu bản phác thảo không thể hiểu được, người đó đã vẽ rất tệ và ngay cả con người cũng không thể hiểu được, chúng ta muốn Claude có thể nói điều đó. Đây là một số điều mà chúng ta sẽ đưa vào bước nhắc nhở và tóm tắt cuối cùng này cho Claude. Nhắc nhở nó làm những việc như trả lời, chỉ khi nó rất tự tin. Chúng ta thậm chí có thể yêu cầu nó tham chiếu lại những gì nó đã thấy trong biểu mẫu bất cứ khi nào nó đưa ra một tuyên bố sự thật. Nếu nó muốn nói phương tiện B đã rẽ phải, tôi biết điều này dựa trên thực tế là ô 2 đã được đánh dấu rõ ràng hoặc bất cứ điều gì có thể. Chúng ta có thể đưa cho Claude một số hướng dẫn về điều đó.

Nếu chúng ta quay lại bảng điều khiển, chúng ta có thể thấy phiên bản tiếp theo của câu lệnh. Chúng ta sẽ giữ nguyên mọi thứ ở đây trong câu lệnh hệ thống, vì vậy chúng ta không thay đổi bất kỳ ngữ cảnh nền nào mà chúng ta đã cung cấp cho Claude về biểu mẫu, về cách nó sẽ điền mọi thứ. Chúng ta không thay đổi bất cứ điều gì khác về ngữ cảnhvai trò. Chúng ta chỉ thêm danh sách tác vụ chi tiết này, và đây là cách chúng ta muốn Claude phân tích điều này. Một điều thực sự quan trọng mà chúng ta đã tìm thấy khi xây dựng bản demo này, và khi chúng ta làm việc trên ví dụ khách hàng, là thứ tự Claude phân tích thông tin này rất quan trọng. Điều này tương tự như những gì bạn có thể nghĩ đến khi thực hiện điều này nếu bạn là một con người. Bạn có thể sẽ không nhìn vào bản vẽ trước và cố gắng hiểu những gì đang diễn ra. Nó khá không rõ ràng, đó là một đống hộp và đường kẻ. Chúng ta không thực sự biết bản vẽ đó có ý nghĩa gì nếu không có bất kỳ ngữ cảnh bổ sung nào. Nếu chúng ta có biểu mẫu và chúng ta có thể đọc biểu mẫu trước và hiểu rằng chúng ta đang nói về một tai nạn xe hơi, và rằng chúng ta đang thấy một số hộp kiểm chỉ ra những gì các phương tiện đang làm tại những thời điểm nhất định, thì chúng ta biết thêm một chút về cách hiểu những gì có thể có trong bản vẽ. Đó là loại chi tiết mà chúng ta sẽ cung cấp cho Claude ở đây là để nói, này, trước tiên, hãy nhìn vào biểu mẫu. Xem xét nó rất cẩn thận. Đảm bảo bạn có thể biết ô nào đã được đánh dấu. Đảm bảo bạn không bỏ lỡ bất cứ điều gì ở đây. Lập một danh sách cho mình về những gì bạn thấy trong đó. Sau đó chuyển sang bản phác thảo. Sau khi bạn đã tự tin thu được thông tin từ biểu mẫu và bạn có thể nói những gì là đúng sự thật, thì bạn có thể tiếp tục và nghĩ về những gì bạn có thể thu được từ bản phác thảo. Nếu bạn đang ghi nhớ, bạn đang hiểu về tai nạn cho đến nay. Vì vậy, bất cứ điều gì bạn đã học được từ biểu mẫu, bạn đang cố gắng khớp nó với bản phác thảo. Đó là cách bạn sẽ đi đến đánh giá cuối cùng của biểu mẫu.

Kiểm tra Từng bước và Sử dụng XML tags

Chúng ta sẽ chạy nó. Ở đây bạn có thể thấy một hành vi mà điều này tạo ra cho Claude. Tôi đã yêu cầu nó kiểm tra biểu mẫu một cách cẩn thận. Nó đang cho tôi thấy công việc của nó khi nó làm điều đó. Vì vậy, nó đang nói cho tôi biết từng ô riêng lẻ: ô này có được đánh dấu không? Nó không được đánh dấu à? Đây là một điều bạn sẽ nhận thấy khi bạn thực hiện Thiết kế câu lệnh. Trong các câu lệnh trước đây của chúng ta, chúng ta đã để Claude tự quyết định mức độ nó muốn nói cho chúng ta biết về những gì nó thấy trong biểu mẫu. Ở đây, vì tôi đã yêu cầu nó kiểm tra kỹ lưỡng từng ô, nó đang kiểm tra kỹ lưỡng từng ô. Đó có thể không phải là điều chúng ta muốn cuối cùng. Vì vậy, đó là điều chúng ta có thể thay đổi. Nhưng nó cũng sẽ cung cấp cho tôi những thứ khác mà tôi đã yêu cầu trong thẻ XML. Vì vậy, một phân tích biểu mẫu tốt, tóm tắt tai nạn cho đến nay, nó sẽ cung cấp cho tôi một phân tích bản phác thảo. Và nó sẽ tiếp tục nói rằng phương tiện B dường như rõ ràng là có lỗi. Trong ví dụ này, đây là một ví dụ đơn giản. Với các bản vẽ phức tạp hơn, ít rõ ràng hơn trong các biểu mẫu, loại tư duy từng bước này đối với Claude thực sự có tác động đến khả năng đưa ra đánh giá chính xác của nó ở đây.

Định dạng Đầu ra và Phán quyết Cuối cùng

Tôi nghĩ chúng ta sẽ quay lại các trang trình bày và Kristen sẽ nói về một phần cuối cùng mà chúng ta có thể thêm vào để thực sự làm cho nó hữu ích cho các tác vụ thực tế. Thực vậy, cảm ơn rất nhiều. Như Hannah đã đề cập, chúng ta đã đặt nền móng trong câu lệnh này để đảm bảo rằng Claude thực sự hành động thay mặt chúng ta một cách đúng đắn. Và một bước quan trọng mà chúng ta cũng thêm vào cuối câu lệnh này, chúng ta sẽ cho bạn thấy trong giây lát, là một phần hướng dẫn hoặc phần nhắc nhở đơn giản. Vì vậy, bạn đang củng cố và tăng cường chính xác những gì chúng ta muốn đạt được từ nó. Và một phần quan trọng thực sự là định dạng đầu ra. Bạn có thể hình dung nếu bạn là một kỹ sư dữ liệu đang làm việc trên thành phần ứng dụng này, tất cả phần mở đầu phức tạp đều tuyệt vời, nhưng cuối cùng bạn muốn mẩu thông tin của mình được lưu trữ trong một cơ sở dữ liệu SQL, bất cứ nơi nào bạn muốn lưu trữ dữ liệu đó. Và phần còn lại cần thiết để Claude đưa ra phán quyết thực sự không cần thiết cho ứng dụng của bạn. Vì vậy, bạn muốn thông tin chi tiết cốt lõi cho ứng dụng của bạn.

Vì vậy, nếu chúng ta chuyển trở lại bảng điều khiển, bạn sẽ thấy rằng chúng ta chỉ thêm một phần hướng dẫn quan trọng đơn giản. Và một lần nữa, điều này chỉ củng cố hành vi mang tính cơ học mà chúng ta muốn từ Claude ở đây. Chúng ta muốn đảm bảo rằng bản tóm tắt rõ ràng, ngắn gọn và chính xác, muốn đảm bảo rằng không có gì cản trở đánh giá của Claude ngoài dữ liệu mà nó đang phân tích. Và cuối cùng, khi nói đến định dạng đầu ra, trong trường hợp của tôi ở đây, tôi sẽ yêu cầu Claude gói phán quyết cuối cùng của nó, tất cả những thứ khác tôi thực sự sẽ bỏ qua khỏi ứng dụng của mình và chỉ nhìn vào những gì nó thực sự đánh giá. Và đó là tôi có thể sử dụng điều này nếu tôi muốn xây dựng một loại công cụ phân tích nào đó, hoặc nếu tôi chỉ muốn một xác định rõ ràng, đây là cách tôi có thể làm như vậy.

Vì vậy, nếu tôi chỉ chạy cái này ở đây, bạn sẽ thấy, nó đang trải qua cùng một loại quy trình mà chúng ta đã thấy trước đây. Trong trường hợp này, nó ngắn gọn hơn nhiều vì chúng ta đã yêu cầu nó tóm tắt các phát hiện của nó theo một cách thức trực tiếp hơn nhiều. Và sau đó cuối cùng, bạn sẽ thấy rằng nó sẽ gói đầu ra của tôi trong các thẻ XML phán quyết cuối cùng này. Vì vậy, bạn có thể thấy rằng trong suốt bản demo này, chúng ta đã đi từ một tai nạn trượt tuyết, đến các đầu ra không tự tin, không chắc chắn từ có lẽ là một tai nạn xe hơi trong phiên bản thứ hai, và bây giờ là một đầu ra định dạng nghiêm ngặt hơn nhiều, tự tin mà chúng ta thực sự có thể xây dựng, và sau đó ứng dụng đó xung quanh và thực sự giúp một công ty bảo hiểm xe hơi trong thế giới thực, ví dụ.

Định hình đầu ra bằng phản hồi điền trước

Cuối cùng, chúng ta quay trở lại các trang trình bày. Một cách quan trọng khác để định hình đầu ra của Claude là thực sự đặt từ ngữ vào "miệng" của Claude, hay còn gọi là các phản hồi điền trước (pre-filled responses). Bạn có thể tưởng tượng rằng việc phân tích các XML tag là tốt, nhưng có thể bạn muốn một đầu ra JSON có cấu trúc để đảm bảo rằng JSON đó có thể thực hiện được và bạn có thể sử dụng nó trong một lệnh gọi tiếp theo, ví dụ. Điều này khá đơn giản để thực hiện. Bạn chỉ cần thêm rằng mô hình AI cần bắt đầu đầu ra của nó với một định dạng nhất định. Chẳng hạn, đây có thể là một dấu ngoặc vuông mở, hoặc thậm chí trong trường hợp chúng ta thấy trước mắt, đây sẽ là một XML tag cho cấu trúc dữ liệu của chúng ta. Trong trường hợp của chúng tôi, nó cũng có thể là một XML tag final verdict. Đây là một cách tuyệt vời để định hình cách Claude được cho là sẽ phản hồi mà không cần tất cả phần giới thiệu (preamble), mặc dù điều đó cũng rất quan trọng trong việc định hình đầu ra để đảm bảo rằng đang suy luận qua các bước mà chúng ta muốn. Vì vậy, trong trường hợp này, chúng tôi sẽ gói nó trong final verdict và sau đó phân tích nó, nhưng bạn cũng có thể sử dụng phản hồi điền trước.

Tận dụng suy nghĩ mở rộng của mô hình

Một điểm cuối cùng mà chúng tôi muốn nhấn mạnh ở đây là cả Claude 1.7 và đặc biệt là Claude 4 đều là một mô hình suy luận lai, nghĩa là có khả năng suy nghĩ mở rộng (extended thinking) theo ý của bạn. Đây là điều chúng tôi muốn làm nổi bật vì bạn có thể sử dụng suy nghĩ mở rộng như một điểm tựa cho việc Thiết kế câu lệnh của mình. Về cơ bản, bạn có thể kích hoạt tính năng này để đảm bảo rằng Claude thực sự có thời gian để suy nghĩ. Nó bổ sung vào quá trình tư duy và không gian nháp (scratchpad) của mô hình AI. Và điều tuyệt vời là bạn thực sự có thể phân tích bản ghi đó để hiểu cách Claude xử lý dữ liệu. Như chúng tôi đã đề cập, chúng tôi có các hộp kiểm (checkbox) nơi mô hình AI trải qua một bước riêng biệt của kịch bản này. Và trong nhiều trường hợp, bạn thực sự có thể giúp Claude xây dựng điều này vào chính câu lệnh hệ thống. Điều này không chỉ giúp token hiệu quả hơn mà còn là một cách tốt để hiểu cách các mô hình AI thông minh, vốn không có trực giác như con người, thực sự xử lý dữ liệu mà chúng ta cung cấp. Vì vậy, việc hiểu cách chia nhỏ Thiết kế câu lệnh hệ thống là rất quan trọng.

Lời kết và phiên hỏi đáp

Với những điều đã nói, tôi xin cảm ơn tất cả các bạn đã đến hôm nay. Chúng tôi sẽ có mặt tại đây. Vì vậy, nếu bạn có bất kỳ câu hỏi nào hoặc thắc mắc về Thiết kế câu lệnh, vui lòng hỏi. Tôi biết có một buổi giới thiệu về Thiết kế câu lệnh. Bạn muốn tìm hiểu thêm về Thiết kế câu lệnh trong một giờ. Chúng tôi có Thiết kế câu lệnh cho các Tác nhân AI. Và ngay bây giờ chúng ta có một bản demo tuyệt vời về Claude chơi Pokémon. Vì vậy đừng đi đâu cả. Và như Christian đã nói, chúng tôi sẽ có mặt cả ngày. Vì vậy, tôi biết chúng tôi không có thời gian cho phần Hỏi & Đáp (Q&A) trong phiên này, nhưng vui lòng tìm chúng tôi nếu bạn muốn trò chuyện. Cảm ơn các bạn đã đến. Cảm ơn rất nhiều.

Góp ý / Báo lỗiPhát hiện sai sót hoặc có ý tưởng cải thiện?