Khám phá dữ liệu trong kernel bền vững
Hướng dẫn này chỉ cách để một agent nạp một thứ tốn kém đúng một lần rồi hỏi nó vài câu hỏi, thay vì phải trả giá cho việc nạp ở mỗi câu hỏi.
Công cụ eval chạy một trình thông dịch bền vững. Biến, import và dữ liệu đã nạp vẫn còn nguyên giữa các lần gọi.
Vì sao không chỉ chạy một script
Phần tiêu đề “Vì sao không chỉ chạy một script”Một lệnh python -c chạy một lần sẽ phải trả giá cho phần thiết lập ở mỗi câu hỏi. Nạp một dataframe tốn vài giây và cả trăm megabyte; còn vẽ biểu đồ từ nó chỉ tốn vài mili giây. Khi mỗi câu hỏi đều phải trả giá cho việc nạp, agent sẽ hỏi ít hơn mức nó nên hỏi — và mỗi câu trả lời quay về dưới dạng văn bản mà nó lại phải phân tích lại.
Nạp một lần, rồi hỏi
Phần tiêu đề “Nạp một lần, rồi hỏi”Nạp
data/runs.csvvà cho tôi biết thời lượng p95 theo từng agent.
import pandas as pdruns = pd.read_csv("data/runs.csv")len(runs)Biểu thức cuối cùng được hiển thị theo cách một notebook vẫn làm, nên len(runs) cho biết số dòng mà không cần print.
Rồi, trong một lần gọi riêng:
runs.groupby("agent")["duration_ms"].quantile(0.95).sort_values()runs vẫn đang được nạp. Một frame của pandas quay về dưới dạng bảng được kết xuất thay vì một repr.
Biểu đồ hiện thẳng vào chat
Phần tiêu đề “Biểu đồ hiện thẳng vào chat”import matplotlib.pyplot as pltruns.groupby("agent")["duration_ms"].mean().plot.bar()Các hình được chụp lại sau khi ô chạy xong và trả về dưới dạng ảnh, rồi bản ghi hội thoại kết xuất chúng. Bạn thấy biểu đồ; agent cũng thấy.
Hình được đóng lại sau khi chụp. Một hình không được thu gom sẽ còn bị ô kế tiếp vẽ lại và gửi lại, nên một phiên năm ô sẽ phát ra biểu đồ đầu tiên năm lần.
Những cú pháp mà dù sao bạn vẫn gõ
Phần tiêu đề “Những cú pháp mà dù sao bạn vẫn gõ”Những cú pháp này được viết lại thành mã thuần thay vì báo lỗi:
| Bạn gõ | Điều xảy ra |
|---|---|
%pip install x |
Chạy pip, rồi xóa bộ nhớ đệm module để lần import kế tiếp nhìn thấy gói đó |
%cd path |
os.chdir |
!command |
Một tiến trình con có thu thập đầu ra |
%%bash |
Phần còn lại của ô như một script shell |
%%timeit |
1000 lần chạy có đo thời gian |
Việc xóa bộ nhớ đệm của %pip mới là điều quan trọng: cài đặt vào một trình thông dịch đang chạy không có tác dụng gì với một module đã được import từ trước, nên nếu thiếu bước này thì phiên bản bạn vừa cài không phải là phiên bản đang chạy.
Gọi công cụ của chính bạn từ bên trong một ô
Phần tiêu đề “Gọi công cụ của chính bạn từ bên trong một ô”paths = tool("find", {"pattern": "**/*.dart", "path": "lib"})for path in paths.splitlines()[:100]: contents = tool("read", {"path": path}) ...tool(name, args) đi vào lại sổ đăng ký công cụ của chính agent. Nghĩa là một ô có thể tỏa ra trên hàng trăm tệp, hoặc ủy thác qua task, mà mô hình không phải tiêu tốn một lượt cho mỗi mục.
Một lệnh gọi qua cầu sẽ tạm ngưng thời gian chờ của ô trong khi lệnh đó còn đang chờ xử lý. Ngân sách này đo sự không hoạt động, chứ không đo đồng hồ thực — một ô tỏa ra tới các subagent rồi chờ bốn phút không phải là bị treo, và giết nó giữa lúc tỏa ra sẽ làm mất toàn bộ trạng thái của kernel.
Bắt đầu lại
Phần tiêu đề “Bắt đầu lại”eval(code: "…", reset: true, description: "Start a clean interpreter")Vứt bỏ trình thông dịch hiện tại và khởi động một cái sạch. Mọi thứ đã nạp đều mất, và đó chính là mục đích.
Kernel chạy ở đâu
Phần tiêu đề “Kernel chạy ở đâu”Trong enclosure của cuộc hội thoại nếu cuộc hội thoại có một cái, còn không thì trên host.
Một trình thông dịch bền vững do một mô hình đang đọc một kho mã không đáng tin điều khiển chính là thứ mà việc thực thi chỉ-trong-enclosure sinh ra để phục vụ: một lệnh bash chạy một lần thì ít nhất cũng kết thúc, còn một kernel là một shell biết ghi nhớ.
Nó không khởi động một enclosure để làm được điều đó — cùng quy tắc khiến một tab rig không tự khởi động. Nếu bạn muốn kernel nằm trong enclosure, hãy mở shell của cuộc hội thoại trước. Xem Cho agent một máy để kiểm thử.
Giới hạn
Phần tiêu đề “Giới hạn”- Mỗi kernel chạy một ô tại một thời điểm. Hai ô đua nhau trong một trình thông dịch là hai nửa của hai chương trình đan xen vào nhau trong cùng một namespace.
- Đầu ra bị giới hạn. Một ô nằm trong vòng lặp in sẽ bị cắt ngắn thay vì được phép lấp đầy cửa sổ ngữ cảnh.
- Bốn ảnh mỗi ô. Một vòng lặp vẽ biểu đồ có thể phát ra một hình ở mỗi lần lặp, và mỗi ảnh là một khoản chi phí cố định lớn trong yêu cầu chứa nó.
- Kernel chết cùng lượt chạy. Một kernel còn giữ dataframe sau khi cuộc hội thoại đã kết thúc là một chỗ rò rỉ.
Liên quan
Phần tiêu đề “Liên quan”- Sandbox và bảo mật — “nằm trong enclosure” ở đây nghĩa là gì
- Cho agent một máy để kiểm thử — mở enclosure
- Công cụ agent tích hợp — các đối số