Bỏ qua đến nội dung
AI Portal Docs
Trên trang này Workspace 1/17

Mỗi cuộc trò chuyện có một cây thư mục làm việc do portal quản lý. Sáu tool tệp chạm thẳng vào nó và run_code gắn nó vào mỗi lần chạy, nên tệp một lượt trước đã viết vẫn ở đó để sửa thay vì viết lại. HTML của một bộ slide nằm ở đây — nhờ vậy sửa một slide là một lần chỉnh sửa, không phải một bộ slide thứ hai.

Quy tắc chính

  1. Tệp là bản ghi của portal, không phải trạng thái sandbox. Liệt kê thư mục không gọi gì; mỗi lần chạy nêu rõ tệp đã tạo, sửa hay xoá.
  2. Sửa, đừng viết lại. Thay cả một tệp dài bị từ chối và được chỉ sang edit_file.
  3. Chỉnh sửa lỗi thì không đổi gì. Lời từ chối nói nên xem ở đâu.
  4. Mỗi lúc một người ghi. Mỗi lần ghi giữ khoá theo cuộc trò chuyện.
  5. Workspace là tạm thời. Thứ cần giữ lâu được lưu thành artifact.

Workspace

Tool: list_files, search_files, read_file, write_file, edit_file, delete_file, cùng run_code.

  • Khoá. Mỗi lần ghi giữ khoá theo cuộc trò chuyện, vì hai chương trình cùng sửa một cây sẽ cho kết quả khác nhau tuỳ cái nào xong trước. Khoá là một hợp đồng thuê được gia hạn khi công việc còn chạy, nên lần chạy sandbox dài không bị mất khoá giữa chừng.
  • Đường dẫn. Đường dẫn tính từ gốc workspace. Sandbox code thấy cùng cây đó ở một cấp sâu hơn, tại workspace/, nên deck.html và workspace/deck.html là một tệp. Tool tệp nhận cách viết thứ nhất và từ chối cách thứ hai, kèm đường dẫn người gọi muốn nói.
  • An toàn khi cây không đọc được. Lần chạy khiến sandbox không báo được cây thì không thay đổi gì — nếu không, cây không đọc được và cây rỗng trông giống nhau, và cây rỗng sẽ xoá hết.
  • Giới hạn. Workspace bị giới hạn theo số byte và số tệp. Lần ghi vượt một trong hai bị từ chối toàn bộ, tính cả lô, nên lần gọi không vừa thì không lưu gì.
  • Vòng đời. Workspace bị xoá khi cuộc trò chuyện bị xoá, và khôi phục cuộc trò chuyện không mang nó trở lại. Thứ cần giữ lâu là artifact, vốn mang theo nguồn tạo ra nó. Xem Vòng đời dữ liệu.

Ghi tệp

write_file nhận path và đúng một trong content hoặc source cho một tệp, hoặc mảng files cho tối đa ba tệp.

  • Lô phải là mảng thật, không phải JSON nằm trong chuỗi. Lô mã hoá hợp lệ được giải mã trước khi kiểm tra; JSON hỏng bị từ chối kèm hướng dẫn dùng các trường trực tiếp.
  • Dùng source để xuất thẳng văn bản từ kết quả tool đã lưu (Quy tắc tool); dùng run_code với ref toolResults khi cần biến đổi dữ liệu.

Chặn thay cả tệp

Thay cả một tệp bị từ chối khi tệp đã dài quá vài nghìn ký tự, và lời từ chối nêu edit_file. Tài liệu bị viết lại chỉ để đổi một giá trị sẽ mất những phần không ai yêu cầu đổi.

  • Sau đó xoá tệp ấy cũng bị từ chối trong suốt phần còn lại của lượt — xoá rồi viết lại từ trí nhớ là cùng một lần viết lại, chậm một lần gọi.
  • Cơ chế chặn đọc trace của chính lượt: một write_file thất bại nêu đường dẫn đó, trên tệp vẫn đủ dài để lần từ chối đầu còn hiệu lực.
  • Tệp mà trong lượt không có gì cố ghi thì xoá như bình thường.
  • Muốn thay hẳn một tài liệu, hãy làm một chỉnh sửa từ dòng 1 đến dòng cuối — việc này buộc phải đọc tệp trước.

Sửa tệp

Một chỉnh sửa chỉ ra phần bị thay theo văn bản hoặc theo dòng; mỗi lần gọi dùng một trong hai.

  • Đoạn trích được chép từ tệp và phải xuất hiện đúng một lần.
  • Việc khớp chạy trên tệp đã thống nhất một kiểu xuống dòng và bỏ BOM, vì đó là tệp người gọi được xem.
  • Kiểu xuống dòng gốc của tệp được ghi lại sau đó.
  • Rẻ nhất khi đổi một giá trị ngắn.
  • Thay một khoảng dòng có đánh số từ read_file.
  • Người gọi lặp lại dòng đầu của khoảng, nên khoảng đã bị dịch bởi chỉnh sửa trước sẽ bị từ chối thay vì áp vào chỗ khác.
  • Mọi khoảng trong một lần gọi đánh số theo tệp lúc nhận; không hai khoảng nào được chồng lên nhau.
  • Mỗi thay đổi trả về dòng nó đang nằm, sau khi các chỉnh sửa khác trong lần gọi đã áp dụng.
  • Rẻ nhất với khối dài: chỉ trả tiền cho phần thay thế.

Khi chỉnh sửa bị từ chối

Chỉnh sửa lỗi không thay đổi gì, nên mô hình đang dùng bản cũ được bảo đọc lại tệp thay vì lặng lẽ viết ra một tài liệu khác. Lời từ chối cho biết nên xem ở đâu:

Vấn đềLời từ chối trả về
Đoạn trích không khớp gìSố dòng nơi dòng đầu của nó thực sự nằm
Dòng neo đã dịch chuyểnNội dung hiện tại ở đó, và văn bản kia giờ nằm ở đâu
Người gọi lặp lại dòng cuối của khoảngNêu rõ điều đó — đọc lại không giải quyết được
Các khoảng chồng nhauBị từ chối trước khi kiểm tra neo, để người gọi biết lỗi mà đọc lại không sửa được

Cách đếm dòng

Dòng được đếm như trình soạn thảo: ký tự xuống dòng cuối kết thúc dòng cuối chứ không mở thêm dòng rỗng, và ký tự xuống dòng không thuộc dòng nào. Chỉnh sửa ghi lại kiểu xuống dòng tệp đang dùng, nên đổi một dòng của tài liệu CRLF không động đến phần còn lại.

Đọc và tìm tệp

read_file

  • Đánh số các dòng trả về và nhận cùng startLine, endLine như chỉnh sửa theo dòng — một cặp số cho cả tìm và sửa.
  • Một lần gọi dùng một ngân sách ký tự chung cho mọi đường dẫn, và mỗi đường dẫn có giới hạn số dòng riêng.
  • Tệp bị cắt trả về dòng cần đọc tiếp và giới hạn nào đã chạm: ký tự nghĩa là dòng dài (thu hẹp khoảng); dòng nghĩa là tệp dài (đọc tiếp).
  • Tệp ảnh trả về chính bức ảnh, đã thu nhỏ về đúng mức mô hình nhận. Mô hình không xem được ảnh sẽ được báo bằng lời rằng ảnh đã bị lược.

search_files

  • Tìm chuỗi nguyên văn trên toàn cây, trả về đường dẫn, số dòng, truy vấn đã khớp và, khi yêu cầu, tối đa ba dòng mỗi phía.
  • Tối đa năm chuỗi mỗi lần gọi, trong một lượt quét mỗi tệp — gọi thêm một lần sẽ tốn một vòng mô hình khoảng 25 giây.
  • Truy vấn là văn bản, không phải mẫu: mẫu do mô hình viết sẽ chạy regex không giới hạn thời gian trên luồng xử lý yêu cầu.
  • Dòng khớp dài được căn giữa quanh chỗ khớp. Dòng ngữ cảnh không lặp lại trong một tệp (hai kết quả cách nhau ba dòng đọc như một đoạn liền) và tính vào cùng ngân sách ký tự.

Hai tool đọc workspace giữ nguyên văn bản trong ngữ cảnh, vì rút gọn những dòng mà chỉnh sửa cần khớp sẽ buộc mô hình đoán. Các kết quả lớn khác dùng bản xem trước. Với kết quả có ảnh, chỉ phần văn bản bị rút gọn.

Cắt tài liệu đã ghi khỏi phần phát lại

Tham số của một lần ghi nằm trong danh sách tin nhắn và sẽ bị gửi lại ở mọi bước sau. Vì thế tài liệu lượt đã ghi được cắt khỏi lần gọi phát lại, chỉ giữ 200 ký tự đầu — đủ để nhận ra. Nội dung nằm trong workspace hoặc artifact đã lưu. Lần gọi thất bại giữ nguyên tham số, vì mô hình sắp phải tìm xem sai ở đâu.

Tính toán

Máy tính là bộ phân tích cú pháp viết riêng cho portal, vì đưa chuỗi của mô hình cho một trình eval là mở đường thực thi code từ xa.

Chấp nhậnTừ chối
Số thập phân và số dạng khoa học, bốn phép tính, luỹ thừa, ngoặc, dấu trừ một ngôi, min, max, giá trị tuyệt đối, căn bậc hai, làm trònBiến, phép gán, trạng thái giữa các biểu thức, toán tử phần trăm

Kết quả làm tròn 12 chữ số có nghĩa, nằm trong độ chính xác của các cột tiền tệ của portal. Chia cho 0 là một mục lỗi kèm lý do.

Chạy code

Để tính tổng trên một tệp, mô hình viết Python dựa trên tên tệp, và code đọc những byte mà mô hình không hề gõ. Dạng mặc định gắn tệp đã tải lên; dạng còn lại đưa các đoạn văn theo thứ tự. Mô tả dặn in ra một con số hoặc một bảng nhỏ, không in dữ liệu.

Sandbox

  • Chạy trong tài khoản AWS của khách hàng, không mạng, không thông tin xác thực, không cài gói.
  • Mỗi lần gọi một phiên; không gì chuyển sang lần sau.
  • Mọi mã được đối chiếu với ràng buộc tri thức của lượt và tập dữ liệu của người gọi trước khi đọc byte nào.
  • Runtime không giữ thông tin xác thực hay SDK AWS và chỉ gọi một route của portal qua HTTP.
  • Traceback được trả nguyên văn cho mô hình, vì mô hình viết code đó.

Ảnh hưởng lên workspace

  • Workspace được gắn ở mỗi lần gọi. Những gì code để lại được giữ và báo lại là tệp tạo, sửa hay xoá; tệp code xoá thì bị xoá.
  • Lần chạy bị lỗi vẫn giữ thay đổi — tệp viết dở được để lại cho lần gọi sau sửa.
  • Lưu một tệp thành artifact là bước riêng. Bản lưu thuộc về người sở hữu lượt và tính vào phòng ban của họ.

Artifact có sẵn làm đầu vào

  • Có thể đưa một artifact dạng tệp cho code — đó là cách sửa một bảng tính hay tài liệu thay vì viết lại. Quyền truy cập theo quy tắc chia sẻ của chính artifact, không theo cuộc trò chuyện — tệp tải lên không thuộc cuộc trò chuyện nào. Sửa nghĩa là đọc, ghi ra tệp đã đổi, rồi thêm vào cùng artifact thành phiên bản mới. Tìm-và-thay trên tệp đã lưu bị từ chối: không có văn bản để khớp.
  • Artifact văn bản có thể được gắn theo mã và phiên bản tuỳ chọn dưới inputs/artifacts/ kèm mã, với .md cho tài liệu, .json cho biểu đồ, .html cho bản xem web và .txt cho loại văn bản khác. Quy tắc chia sẻ của artifact cấp quyền cho các lần đọc này.

Kết quả đã lưu làm đầu vào

run_code nhận tối đa ba ref toolResults. Backend gắn đầy đủ kết quả đã lưu theo thứ tự tại inputs/tool-results/1.json, 2.json và 3.json; mỗi tệp gồm ref, toolName, isError và output. Code có thể trích trường và ghi sản phẩm vào workspace/ mà không phải đọc từng trang qua mô hình.

  • Ref dùng cùng ranh giới cuộc trò chuyện và tính vào tổng giới hạn byte đầu vào của lần chạy.
  • Kết quả đã lưu có thể chỉ là một trang của API bên ngoài; việc gắn giữ đúng những gì lần gọi đó trả về.

Tệp của skill

Skill có thể kèm tệp riêng. Nạp skill liệt kê các tệp theo đường dẫn và kích thước, không kèm byte; nêu tên skill trong lần chạy code sẽ gắn chúng vào thư mục mang tên skill, nên chỉ dẫn nhắc đến script bên cạnh là đúng. Skill nào được nêu tên dùng cùng phép kiểm tra của trình nạp skill, lấy từ lượt. Gói vượt giới hạn kích thước của bản triển khai bị từ chối toàn bộ.

Mọi route của tool

Trước khi làm việc của mình, mọi route tool trả lời bốn câu: lượt của ai, lượt có được dùng tool đó không, người gọi là ai, và trace ghi gì. Tên tool trả lời câu thứ hai và thứ tư, vì danh mục ghi loại bước mỗi tool tạo ra. Lượt gọi tool chưa từng được cung cấp bị từ chối, lời từ chối nêu tên tool và không tiết lộ gì thêm.

Liên quan

AI Portal Docs
EN VI