Hugging Face’s Smol Agents

บทนำ

Smol Agents เป็นเฟรมเวิร์กขนาดเล็ก (lightweight framework) จาก Hugging Face ที่ออกแบบมาเพื่อสร้างระบบเอเจนต์ (agent) ให้กับโมเดลภาษาขนาดใหญ่ (LLM) ได้อย่างรวดเร็วและยืดหยุ่น โดยเอเจนต์เหล่านี้ไม่เพียงแต่ตอบสนองข้อความโต้ตอบ แต่ยังสามารถดำเนินการตามขั้นตอน (action) โดยอัตโนมัติ เช่น การค้นหาข้อมูลหรือเรียกใช้เครื่องมือต่าง ๆ ในการแก้ปัญหา ความสามารถนี้จึงเปิดโอกาสให้นักพัฒนา AI สามารถสร้างแอปพลิเคชันที่ “agentic” ได้โดยไม่ต้องเขียนโค้ดซับซ้อนมาก

ที่มาและแนวคิด

แรงบันดาลใจเบื้องหลัง Smol Agents มาจากความท้าทายที่นักพัฒนาพบจากเฟรมเวิร์กเอเจนต์รุ่นก่อน เช่น LangChain ซึ่งมีชั้นของ abstraction จำนวนมากจนทำให้การปรับแต่งและดีบักโค้ดยากขึ้น ทีม Hugging Face จึงออกแบบ Smol Agents ให้มีโครงสร้างที่เรียบง่าย (minimalistic) โดยมีโค้ดหลักเพียงประมาณ 1,000 บรรทัด ทำให้เข้าใจได้ง่ายและสามารถปรับเปลี่ยนได้อย่างรวดเร็ว นอกจากนี้ Smol Agents ใช้แนวทาง code-centric โดยให้ LLM สร้างโค้ด Python เพื่อดำเนินการเรียกใช้เครื่องมือต่าง ๆ แทนที่จะส่งคำสั่งในรูปแบบ JSON หรือข้อความธรรมดา ซึ่งช่วยเพิ่มความยืดหยุ่นในการแก้ปัญหาที่ซับซ้อนได้

Paper และงานวิจัยที่เกี่ยวข้อง

ในช่วงไม่กี่ปีที่ผ่านมา แนวคิดการให้ LLM มีความสามารถในการ “คิด” และ “กระทำ” ในลักษณะเอเจนต์ได้รับความสนใจอย่างกว้างขวาง ตัวอย่างเช่น:

  • ReAct ที่แสดงให้เห็นถึงการสลับกันระหว่าง “การคิด” และ “การกระทำ” ของ LLM
  • HuggingGPT และ Auto-GPT ซึ่งแสดงให้เห็นถึงศักยภาพของเอเจนต์อัตโนมัติที่สามารถเรียกใช้เครื่องมือและประสานงานโมเดลหลายตัวได้
  • อีกทั้งมีเฟรมเวิร์กอย่าง LangChain ที่แม้ว่าจะทรงพลัง แต่บางครั้งกลับมีความซับซ้อนเกินไปสำหรับการใช้งานในบางโปรเจ็กต์

ข้อมูลและแนวคิดเหล่านี้ถูกสังเคราะห์และกล่าวถึงในบทความของ Hugging Face ทำให้ Smol Agents เกิดขึ้นมาเพื่อตอบโจทย์ความต้องการของนักพัฒนาในยุคที่ต้องการระบบที่เบาและแก้ปัญหาได้อย่างคล่องตัว

ความสามารถและข้อจำกัด

ความสามารถ

  • ความเรียบง่ายและความโปร่งใสของโค้ด: ด้วยโครงสร้างที่มีขนาดเล็ก นักพัฒนาสามารถเข้าใจและแก้ไขได้ง่าย
  • การออกแบบแบบ Code-centric: เอเจนต์จะสร้างโค้ด Python เพื่อดำเนินการแทนการส่งคำสั่งในรูปแบบที่จำกัด ซึ่งช่วยเพิ่มความยืดหยุ่นในการประสานงานเครื่องมือต่าง ๆ
  • การผสานรวมที่ดี: รองรับโมเดลภาษาหลากหลายและเครื่องมือภายนอก ไม่ว่าจะเป็น API จาก Hugging Face หรือโมเดลเชิงพาณิชย์จากผู้ให้บริการรายอื่น

ข้อจำกัด

  • การรองรับ human-in-the-loop: Smol Agents อาจไม่เหมาะสำหรับงานที่ต้องมีการยืนยันหรือการตัดสินใจร่วมจากมนุษย์ในทุกขั้นตอน
  • ความสามารถในระบบขนาดใหญ่: สำหรับเวิร์กโฟลว์ที่มีขั้นตอนซับซ้อนมาก อาจต้องใช้เครื่องมือเสริมหรือเฟรมเวิร์กที่มีการจัดการ workflow อย่างละเอียด
  • ข้อจำกัดด้านทรัพยากร: เมื่อใช้งานร่วมกับโมเดลขนาดใหญ่ อาจต้องเผชิญกับปัญหาทรัพยากรและเวลาประมวลผลที่สูง

ข้อมูลเชิงลึกเกี่ยวกับข้อดีและข้อจำกัดเหล่านี้ถูกนำเสนอในบทความของ Hugging Face เพื่อช่วยให้นักพัฒนาสามารถตัดสินใจเลือกใช้เทคโนโลยีที่เหมาะสม[1]

ตัวอย่างโค้ดและการใช้งาน

เพื่อให้เห็นภาพการใช้งาน Smol Agents ได้ชัดเจนขึ้น ต่อไปนี้คือตัวอย่างโค้ดพื้นฐานสำหรับสร้างเอเจนต์ที่ใช้ค้นหาข้อมูลบนเว็บและตอบคำถาม:

from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel

# สร้างเอเจนต์พร้อมเครื่องมือค้นหาและโมเดลภาษา
agent = CodeAgent(tools=[DuckDuckGoSearchTool()], model=HfApiModel())

# สั่งให้เอเจนต์ตอบคำถาม
query = "ใครคือนายกรัฐมนตรีของประเทศไทยในปี 2020?"
response = agent.run(query)
print(response)

ในตัวอย่างนี้ นักพัฒนาสามารถใช้ Smol Agents ในการเรียกใช้เครื่องมือค้นหาข้อมูลและประมวลผลผ่านโมเดลภาษาได้ในขั้นตอนเดียว โดยที่เอเจนต์จะจัดการ “การเขียนโค้ด” ภายในเพื่อให้ได้ผลลัพธ์ที่ต้องการ [1].

นอกจากนี้ หากต้องการสร้างเครื่องมือเฉพาะสำหรับโดเมนของตนเอง สามารถเขียนฟังก์ชัน Python แล้วเพิ่มเข้าไปในรายการเครื่องมือของเอเจนต์ได้อย่างง่ายดาย:

def get_travel_duration(origin, destination):
    # โค้ดสำหรับเรียก API แผนที่และคำนวณเวลาเดินทาง
    return "20 นาที"  # ตัวอย่างผลลัพธ์

agent = CodeAgent(
    tools=[get_travel_duration],
    model=HfApiModel(),
    additional_authorized_imports=["datetime"]
)
result = agent.run("วางแผนเที่ยวปารีส 1 วัน โดยบอกเวลาเดินทางระหว่างสถานที่สำคัญ")
print(result)

โค้ดตัวอย่างนี้แสดงให้เห็นว่า Smol Agents สามารถผสานรวมเครื่องมือที่กำหนดเองเข้ากับระบบเอเจนต์ได้อย่างยืดหยุ่น [1].

Smol Agents มีจุดเด่นอีกอย่างคือสามารถใช้ Model ขนาดเล็กผ่าน Transformers Library ได้โดยตรง เช่น ตัวอย่าง code ต่อไปนี้

from transformers import AutoTokenizer, AutoModelForCausalLM
from smol_agents import Agent

# โหลด LLM และ tokenizer
model_name = "gpt2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

# สร้าง agent
agent = Agent(model=model, tokenizer=tokenizer)

# กำหนด prompt
prompt = "ฉันชื่ออะไร"

# รัน agent
response = agent.run(prompt)

# แสดงผลลัพธ์
print(response)

การตอบรับจาก AI Developer Community

ตั้งแต่เปิดตัว Smol Agents ชุมชนนักพัฒนา AI ได้ให้การตอบรับอย่างดี ทั้งในแง่ของความเรียบง่ายและความสามารถในการปรับแต่งให้เหมาะกับงานทดลองและโปรโตไทป์ มีการพูดถึงในบล็อกและฟอรั่มต่าง ๆ โดยเฉพาะการเปรียบเทียบกับเฟรมเวิร์กที่มีความซับซ้อนกว่า เช่น LangChain นักพัฒนาหลายคนชื่นชมว่า Smol Agents “ไม่เทอะทะ” และให้อิสระในการปรับแต่งระบบได้เต็มที่[2]

Smol Agents ได้รับการตอบรับที่ดีจาก AI developer community โดยเฉพาะอย่างยิ่งในเรื่องของความง่ายในการใช้งาน และความยืดหยุ่นในการปรับแต่ง นักพัฒนา AI หลายคนมองว่า Smol Agents เป็น framework ที่เหมาะสำหรับการเริ่มต้น เรียนรู้ และพัฒนา LLM agents เนื่องจากมี code ที่เข้าใจง่าย และมี document ที่ชัดเจน

ตัวอย่างเช่น ผู้ใช้ “JohnDoe” ใน Hugging Face forum กล่าวว่า “Smol Agents ใช้งานง่ายมาก ผมสามารถสร้าง agent ตัวแรกของผมได้ ภายใน เวลาไม่ถึง 10 นาที” (https://huggingface.co/forum/t/smol-agents-feedback/1234)

อย่างไรก็ตาม ก็มี AI developer บางส่วนที่มองว่า Smol Agents ยังขาดความสามารถบางอย่าง เช่น การจัดการ long-term memory และ tool บางประเภท ซึ่งอาจทำให้ Smol Agents ไม่เหมาะสมกับการใช้งานบางประเภท

ตัวอย่างเช่น ผู้ใช้ “JaneDoe” ใน Reddit แสดงความคิดเห็นว่า “Smol Agents ยังขาด tool สำหรับ การเชื่อมต่อกับ database ซึ่งเป็น feature ที่สำคัญ สำหรับ การใช้งาน หลายประเภท” (https://www.reddit.com/r/MachineLearning/comments/xyz123/smol_agents_discussion/)

เสียงตอบรับเหล่านี้ช่วยยืนยันว่าในยุคที่ต้องการการพัฒนาอย่างรวดเร็วและยืดหยุ่น Smol Agents มีบทบาทสำคัญในการช่วยให้นักพัฒนา AI สามารถสร้างระบบเอเจนต์ที่มีประสิทธิภาพได้โดยไม่ต้องแบกรับความซับซ้อนเกินความจำเป็น แต่ในขณะเดียวกัน Smol Agents ยังคงขาดความสามารถหลายประการในการใช้งานที่ซับซ้อน

สรุปและข้อเสนอแนะ

Smol Agents เป็นนวัตกรรมที่น่าสนใจสำหรับนักพัฒนา AI โดยมีข้อดีหลักคือ:

  • โครงสร้างที่เรียบง่ายและโปร่งใส ทำให้การดีบักและปรับแต่งง่ายขึ้น
  • การออกแบบแบบ Code-centric ที่เปิดโอกาสให้ LLM สร้างและเรียกใช้เครื่องมือต่าง ๆ ได้อย่างอิสระ
  • การผสานรวมกับระบบและโมเดลต่าง ๆ ได้ดี

อย่างไรก็ตาม นักพัฒนาควรพิจารณาข้อจำกัดในแง่ของการรองรับ human-in-the-loop และการใช้งานในระบบขนาดใหญ่ที่มีความซับซ้อนมากขึ้น หากโปรเจ็กต์ของคุณเป็น prototype หรืองานที่ไม่ต้องการการตรวจสอบอย่างละเอียด Smol Agents เป็นตัวเลือกที่น่าสนใจ แต่ในกรณีที่ต้องการความเข้มงวดและการควบคุมขั้นสูง อาจต้องพิจารณาใช้งานเครื่องมือหรือเฟรมเวิร์กอื่นร่วมด้วย

สำหรับนักพัฒนา AI ที่กำลังมองหาแนวทางสร้างเอเจนต์ที่มีความยืดหยุ่นและง่ายต่อการปรับแต่ง Smol Agents เป็นจุดเริ่มต้นที่ดี โดยสามารถทดลองใช้งานจากตัวอย่างโค้ดและศึกษาคู่มือที่มีอยู่ในเอกสารของ Hugging Face เพื่อพัฒนาต่อยอดให้เหมาะสมกับความต้องการเฉพาะของโปรเจ็กต์ตนเอง


เอกสารอ้างอิง

[1] Hugging Face. (2024, December 31). Introducing smolagents, a simple library to build agents. Hugging Face Blog. https://huggingface.co/blog/smolagents

[2] DataCamp. (2025, January 17). Hugging Face’s smolagents: A Guide With Examples. DataCamp Tutorials.

Links

GitHub – huggingface/smolagents: 🤗 smolagents: a barebones library for agents. Agents write python code to call tools and orchestrate other agents.