- สิ่งที่น่าประหลาดใจที่สุดในการพัฒนา Sketch ผู้ช่วยเขียนโปรแกรมด้วย AI คือเอเจนต์ LLM ที่เพิ่มการใช้เครื่องมือเข้าไป สามารถทำงานได้อย่างทรงพลังแม้เป็นลูปง่าย ๆ ระดับ 9 บรรทัด
- โฟลว์พื้นฐานคือส่งอินพุตของผู้ใช้ไปยัง LLM และหากคำตอบมี การเรียกใช้เครื่องมือ ก็จะนำผลลัพธ์การดำเนินการกลับเข้าไปในบทสนทนาเพื่อใช้ตัดสินใจขั้นต่อไป
- เพียงมี system prompt ประวัติการสนทนา และคำอธิบายเครื่องมือ LLM ก็สามารถเรียกใช้เครื่องมืออย่าง
bashให้ตรงตาม สคีมา ที่กำหนดได้ - Sketch ใช้เพียง Claude 3.7 Sonnet กับ
bashก็ทำงานอย่างงาน git การจัดการ merge รอบแรก และการแก้ข้อผิดพลาดของ type checker ได้ แต่ก็มีพฤติกรรมชวนอึดอัด เช่นพยายามข้ามการทดสอบ - เมื่อมีเครื่องมือเพิ่มเติมที่ปรับให้เข้ากับเวิร์กโฟลว์ของนักพัฒนาและลูปเอเจนต์เฉพาะกิจมากขึ้น ก็จะสามารถมอบหมายงานประจำวันซึ่งระบบอัตโนมัติแบบเดิมจัดการได้ยากให้ทำได้มากขึ้น
ลูปเอเจนต์ที่ใกล้เคียง 9 บรรทัด
- Sketch คือ ผู้ช่วยเขียนโปรแกรมด้วย AI ที่กำลังพัฒนาอยู่ในช่วงไม่กี่เดือนที่ผ่านมา
- ลูปหลักคือรับอินพุตจากผู้ใช้ ตรวจสอบผลลัพธ์จากการเรียก LLM จากนั้นหากมีการเรียกใช้เครื่องมือ ก็ใส่ผลลัพธ์การดำเนินการเป็นข้อความถัดไป และหากไม่มี ก็กลับไปรับอินพุตจากผู้ใช้อีกครั้ง
- การใช้งานจริงทั้งหมดต้องมีโค้ดเสริม แต่แนวคิดหลักใกล้เคียงกับลูป 9 บรรทัด
- สคริปต์ทั้งหมด: agent_loop.py
- ฟังก์ชัน
llm()มีหน้าที่ส่ง system prompt บทสนทนาจนถึงตอนนี้ และข้อความถัดไปไปยัง LLM API - การใช้เครื่องมือคือวิธีที่ LLM ส่งเอาต์พุตกลับมาตาม สคีมา เฉพาะ
- ในสคริปต์ฉบับเต็ม จะบอก LLM ว่าสามารถเข้าถึง
bashได้ผ่าน system prompt และ prompt คำอธิบายเครื่องมือ
- ในสคริปต์ฉบับเต็ม จะบอก LLM ว่าสามารถเข้าถึง
ศักยภาพและข้อจำกัดที่เห็นจาก 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
- การเห็น LLM ติดขัดกับคำสั่ง
- ลูปเอเจนต์สามารถเข้าไปอยู่ในงานอัตโนมัติประจำวันที่เฉพาะเจาะจงเกินไปสำหรับเครื่องมืออเนกประสงค์ และซับซ้อนหรือไม่เสถียรเกินไปสำหรับระบบอัตโนมัติแบบดั้งเดิมได้มากขึ้น
- งานเชื่อมโยง stack trace กับ git commit เป็นตัวอย่างที่ LLM สามารถจัดการรอบแรกได้ดี
- อาจมี ลูปเอเจนต์ LLM แบบปรับแต่งเฉพาะและเฉพาะกิจเพิ่มขึ้นในไดเรกทอรี
bin/
ยังไม่มีความคิดเห็น