Tool: python_exec — รันโค้ด Python ในอินเทอร์พรีเตอร์เดียวกับที่ขับเคลื่อน agent

ภาพประกอบ: Tool: python_exec — รันโค้ด Python ในอินเทอร์พรีเตอร์เดียวกับที่ขับเคลื่อน agent

python_exec รันโค้ด Python สำหรับคำนวณ แปลงข้อมูล และตรวจสอบผลลัพธ์ในงานเดียว เหมาะเมื่อคำสั่ง shell ทำให้ขั้นตอนวิเคราะห์ซับซ้อนเกินจำเป็น

Tool นี้คืออะไร

รันโค้ด Python ที่โมเดลเขียนขึ้น ใช้ อินเทอร์พรีเตอร์เดียวกับที่รัน agent เอง (sys.executable) จึงมี pandas, numpy, matplotlib พร้อมใช้ทันทีโดยไม่ต้องติดตั้งเพิ่ม — เขียนไฟล์ script ชั่วคราวลง workspace แล้วรันผ่าน sandbox เดียวกับ bash

ทำไมไม่ใช้ bash python3 -c "..." แทน

คอมเมนต์ต้นไฟล์อธิบายเหตุผลตรงไปตรงมา 3 ข้อ:

  1. Shell escaping เป็นฝันร้าย — โค้ด pandas จริง (df.query(), regex, nested quotes) มี quote ซ้อนกันเยอะ การพยายามใส่โค้ดแบบนี้เป็น argument เดียวของ bash -c "..." ทำให้ escaping ผิดพลาดง่ายมาก
  2. python3 ของระบบไม่มี pandas/matplotlib — ต้องใช้ interpreter ของ environment ที่ agent รันอยู่ (env ที่มี MLX และ dependency ครบ) ซึ่ง bash เรียกตรงไม่ได้ถ้าไม่รู้ path ที่แน่นอน
  3. งานวิเคราะห์ข้อมูล (group/agg) ใช้เวลานานกว่าคำสั่ง shell ทั่วไป — ต้องการ timeout ที่สูงกว่า

python_exec จึงเป็น tool แยกที่เขียนโค้ดลงไฟล์ .py ชั่วคราวแล้วรันเป็น script แทนการยัดผ่าน -c — หลีกเลี่ยงปัญหา escaping ได้ทั้งหมด และตั้ง timeout ยาวกว่า bash (120 วินาทีดีฟอลต์ เทียบกับ 30 วินาทีของ bash)

Sandbox เดียวกับ bash แต่เพิ่มข้อยกเว้นให้ skills/

ใช้ _build_sandbox_profile ฟังก์ชันเดียวกับ bash — ป้องกันเหมือนกันทุกประการ (เขียนได้แค่ workspace + /tmp) ยกเว้นจุดเดียว: มีการเปิดสิทธิ์เขียนเพิ่มที่โฟลเดอร์ skills/ ของโปรเจกต์ ด้วยพารามิเตอร์ extra_write_paths — เพราะฟีเจอร์ /build skill (สร้าง skill ใหม่ให้ agent) ต้องเขียนไฟล์ markdown ลงโฟลเดอร์นั้นโดยชอบธรรม เป็นข้อยกเว้นเดียวที่ตั้งใจเปิดไว้ ไม่ใช่ช่องโหว่ที่หลุดมา (มีคอมเมนต์ระบุว่าผ่าน security audit แล้ว)

ขอบเขตการใช้งานชัดเจน

Docstring บอกไว้ตรงๆ ว่า tool นี้เหมาะกับการวิเคราะห์ข้อมูลและสร้างกราฟด้วย matplotlib ไม่ใช่คำสั่ง shell (ใช้ bash แทน) และไม่ใช่การอ่าน/เขียนไฟล์แบบธรรมดาที่ไม่ต้องประมวลผลอะไร (ใช้ read_file/write_file แทน) — การแบ่งขอบเขตให้ชัดแบบนี้ช่วยให้โมเดลเลือก tool ถูกตัวตั้งแต่ต้น ไม่ต้องเดาว่า tool ไหนทำอะไรได้บ้าง

ทำไมเรื่องนี้ถึงสำคัญ

python_exec แสดงหลักการที่ตรงไปตรงมา: ใช้เครื่องมือที่ถูกออกแบบมาสำหรับงานนั้นโดยตรง แทนที่จะฝืนใช้เครื่องมือทั่วไป (bash) ทำงานที่มันไม่ถนัด — เขียนโค้ด Python ผ่านไฟล์ script ตรงๆ ปลอดภัยกว่า เร็วกว่า และ debug ง่ายกว่าการพยายามยัดโค้ดผ่าน shell string escaping

อ่านเพิ่มเติม

ความคิดเห็น

กำลังโหลดความคิดเห็น...