• สิ่งที่น่าประหลาดใจที่สุดในการพัฒนา Sketch ผู้ช่วยเขียนโปรแกรมด้วย AI คือเอเจนต์ LLM ที่เพิ่มการใช้เครื่องมือเข้าไป สามารถทำงานได้อย่างทรงพลังแม้เป็นลูปง่าย ๆ ระดับ 9 บรรทัด
  • โฟลว์พื้นฐานคือส่งอินพุตของผู้ใช้ไปยัง LLM และหากคำตอบมี การเรียกใช้เครื่องมือ ก็จะนำผลลัพธ์การดำเนินการกลับเข้าไปในบทสนทนาเพื่อใช้ตัดสินใจขั้นต่อไป
  • เพียงมี system prompt ประวัติการสนทนา และคำอธิบายเครื่องมือ LLM ก็สามารถเรียกใช้เครื่องมืออย่าง bash ให้ตรงตาม สคีมา ที่กำหนดได้
  • Sketch ใช้เพียง Claude 3.7 Sonnet กับ bash ก็ทำงานอย่างงาน git การจัดการ merge รอบแรก และการแก้ข้อผิดพลาดของ type checker ได้ แต่ก็มีพฤติกรรมชวนอึดอัด เช่นพยายามข้ามการทดสอบ
  • เมื่อมีเครื่องมือเพิ่มเติมที่ปรับให้เข้ากับเวิร์กโฟลว์ของนักพัฒนาและลูปเอเจนต์เฉพาะกิจมากขึ้น ก็จะสามารถมอบหมายงานประจำวันซึ่งระบบอัตโนมัติแบบเดิมจัดการได้ยากให้ทำได้มากขึ้น

ลูปเอเจนต์ที่ใกล้เคียง 9 บรรทัด

  • Sketch คือ ผู้ช่วยเขียนโปรแกรมด้วย AI ที่กำลังพัฒนาอยู่ในช่วงไม่กี่เดือนที่ผ่านมา
  • ลูปหลักคือรับอินพุตจากผู้ใช้ ตรวจสอบผลลัพธ์จากการเรียก LLM จากนั้นหากมีการเรียกใช้เครื่องมือ ก็ใส่ผลลัพธ์การดำเนินการเป็นข้อความถัดไป และหากไม่มี ก็กลับไปรับอินพุตจากผู้ใช้อีกครั้ง
  • การใช้งานจริงทั้งหมดต้องมีโค้ดเสริม แต่แนวคิดหลักใกล้เคียงกับลูป 9 บรรทัด
  • ฟังก์ชัน llm() มีหน้าที่ส่ง system prompt บทสนทนาจนถึงตอนนี้ และข้อความถัดไปไปยัง LLM API
  • การใช้เครื่องมือคือวิธีที่ LLM ส่งเอาต์พุตกลับมาตาม สคีมา เฉพาะ
    • ในสคริปต์ฉบับเต็ม จะบอก LLM ว่าสามารถเข้าถึง bash ได้ผ่าน system prompt และ prompt คำอธิบายเครื่องมือ

ศักยภาพและข้อจำกัดที่เห็นจาก Sketch

  • แม้มีเพียงเครื่องมือเอนกประสงค์อย่าง bash เพียงตัวเดียว โมเดลปัจจุบัน โดยเฉพาะ Claude 3.7 Sonnet ก็สามารถจัดการงานพัฒนาหลายอย่างได้
    • แทนที่จะค้นหาวิธีทำงาน git ที่ซับซ้อนแล้วคัดลอกมาแปะ ก็สามารถขอให้ Sketch ทำได้
    • ก่อนจะจัดการ git merge ด้วยตัวเอง สามารถให้ Sketch รับหน้าที่ลองจัดการรอบแรกได้
    • หลังเปลี่ยนแปลง type แล้วเกิดข้อผิดพลาดจาก type checker ก็สามารถลองให้ Sketch แก้ทีละจุดได้
  • หาก prompt อย่างเหมาะสม ลูปเอเจนต์จะทำงานได้อย่าง ต่อเนื่อง
    • หากเครื่องมือที่จำเป็นยังไม่ได้ติดตั้ง ก็จะติดตั้งให้
    • หากตัวเลือก command line ของ grep แตกต่างกันไปตามสภาพแวดล้อม ก็จะปรับตัวตามความแตกต่างนั้น
  • ข้อจำกัดก็ชัดเจนเช่นกัน
    • เมื่อการทดสอบไม่ผ่าน อาจแสดงพฤติกรรมทำนองว่าพยายามข้ามไปเฉย ๆ
  • Sketch ไม่ได้ใช้แค่ bash แต่ใช้ เครื่องมือเพิ่มเติม หลายอย่างเพื่อปรับปรุงคุณภาพ ความเร็วในการวนซ้ำ และเวิร์กโฟลว์ของนักพัฒนา
  • เครื่องมือที่ทำให้ LLM แก้ไขข้อความได้อย่างแม่นยำนั้นยากกว่าที่คิด
    • การเห็น LLM ติดขัดกับคำสั่ง sed บรรทัดเดียว แสดงให้เห็นว่า visual editor มีจุดแข็งที่แตกต่างจาก line editor
  • ลูปเอเจนต์สามารถเข้าไปอยู่ในงานอัตโนมัติประจำวันที่เฉพาะเจาะจงเกินไปสำหรับเครื่องมืออเนกประสงค์ และซับซ้อนหรือไม่เสถียรเกินไปสำหรับระบบอัตโนมัติแบบดั้งเดิมได้มากขึ้น
    • งานเชื่อมโยง stack trace กับ git commit เป็นตัวอย่างที่ LLM สามารถจัดการรอบแรกได้ดี
    • อาจมี ลูปเอเจนต์ LLM แบบปรับแต่งเฉพาะและเฉพาะกิจเพิ่มขึ้นในไดเรกทอรี bin/

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น