Daggr: สร้างแอปพลิเคชัน AI แบบมีขั้นตอน ควบคุมด้วยโค้ด พร้อมแสดงผลแบบเห็นภาพ 🎨

การสร้างแอปพลิเคชัน AI ที่ซับซ้อน ซึ่งต้องมีการทำงานหลายขั้นตอน เช่น การเรียกใช้โมเดลหลายตัว การประมวลผลข้อมูลต่อเนื่อง หรือการเชื่อมต่อ API ต่างๆ อาจเป็นเรื่องที่ท้าทาย โดยเฉพาะเมื่อต้องเผชิญกับปัญหาการดีบัก การติดตามผลลัพธ์ระหว่างทาง และการรันใหม่ทั้งหมดเมื่อเกิดข้อผิดพลาดในขั้นตอนใดขั้นตอนหนึ่ง

นักพัฒนาหลายคนอาจเลือกสร้างสคริปต์ที่ซับซ้อนและยากต่อการแก้ไข หรือหันไปใช้แพลตฟอร์มจัดการ Workflow ขนาดใหญ่ที่ออกแบบมาสำหรับ Production ซึ่งอาจไม่เหมาะกับการทดลองและพัฒนาอย่างรวดเร็ว

Hugging Face ได้พัฒนาระบบที่ชื่อว่า Daggr ขึ้นมาเพื่อแก้ไขปัญหาเหล่านี้ โดยมุ่งเน้นให้การสร้างและจัดการ Workflow ของแอปพลิเคชัน AI เป็นไปอย่างราบรื่นและมีประสิทธิภาพมากขึ้น

Daggr ทำงานอย่างไร? 🤔

Daggr นำเสนอแนวทางที่ผสานข้อดีของการเขียนโค้ดเข้ากับการแสดงผลแบบเห็นภาพ ทำให้คุณสามารถ:

1. แสดงผล Flow การทำงานด้วยภาพอัตโนมัติ 🖼️

ต่างจากเครื่องมือแบบ GUI ที่ต้องลากและวาง Node เพื่อเชื่อมต่อกัน Daggr ใช้แนวทาง Code-First คุณสามารถกำหนด Workflow ทั้งหมดได้ด้วยโค้ด Python และ Daggr จะสร้าง Visual Canvas หรือแผนภาพการทำงานให้โดยอัตโนมัติ ทำให้คุณได้ทั้งโค้ดที่สามารถควบคุมเวอร์ชันได้ และแผนภาพที่ช่วยให้เห็นภาพรวมของ Workflow

2. ตรวจสอบและรันแต่ละขั้นตอนได้ตามต้องการ 🔍

แผนภาพที่ Daggr สร้างขึ้นไม่ใช่แค่เพื่อการแสดงผลเท่านั้น คุณสามารถ ตรวจสอบผลลัพธ์ (Output) ของ Node ใดก็ได้ใน Workflow, แก้ไข Input และ รันเฉพาะขั้นตอนนั้นๆ โดยไม่ต้องรันทั้ง Pipeline ใหม่ ซึ่งมีประโยชน์อย่างมากเมื่อต้องดีบัก Workflow ที่มีหลายขั้นตอน และมีปัญหาเกิดขึ้นเพียงบางส่วนเท่านั้น นอกจากนี้ คุณยังสามารถสร้าง "Backup Nodes" หรือ Node สำรอง เพื่อสลับการใช้งานโมเดลหรือ Space อื่นๆ ได้ ทำให้ Workflow มีความยืดหยุ่นและทนทานต่อข้อผิดพลาดมากขึ้น

3. ผสานการทำงานกับ Gradio ได้อย่างลงตัว ✨

เนื่องจาก Daggr พัฒนาโดยทีม Gradio จึงสามารถทำงานร่วมกับ Gradio Spaces ได้อย่างราบรื่น คุณสามารถชี้ไปยัง Space ใดก็ได้ (ทั้งแบบสาธารณะและส่วนตัว) เพื่อใช้งานเป็น Node ใน Workflow ของคุณได้ทันที โดยไม่ต้องมี Adapter หรือ Wrapper ใดๆ เพียงแค่ระบุชื่อ Space และ API Endpoint

4. จัดเก็บสถานะและทำงานต่อได้ไม่สะดุด 💾

Daggr จะ บันทึกสถานะของ Workflow โดยอัตโนมัติ รวมถึงค่า Input, ผลลัพธ์ที่แคชไว้, ตำแหน่งของ Canvas ทำให้คุณสามารถกลับมาทำงานต่อจากจุดเดิมได้ทุกเมื่อ นอกจากนี้ ยังมีฟีเจอร์ "Sheets" ที่ช่วยให้คุณสามารถจัดการ Workspace หลายๆ อัน ภายในแอปพลิเคชันเดียวกันได้

การติดตั้ง Daggr 🛠️

คุณสามารถติดตั้ง Daggr ได้ง่ายๆ ด้วย pip หรือ uv โดยต้องการ Python 3.10 ขึ้นไป

pip install daggr
# หรือ
uv pip install daggr

ตัวอย่างการใช้งาน Daggr 🚀

ลองดูตัวอย่างง่ายๆ ที่สร้างภาพและลบพื้นหลัง:

from daggr import GradioNode, FnNode, InferenceNode

# Node ที่ 1: ลบพื้นหลังภาพ (ใช้ Gradio Space)
background_remover = GradioNode(
space="spaces/gradio/background-remover",
inputs={"image": "ขอบคุณ แหล่งข้อมูล
https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/cat-red.jpg"},
outputs=["image"],
# ระบุ Output ที่ต้องการ
)

# Node ที่ 2: ปรับขนาดภาพ (ใช้ Python Function)
def downscale_image(image):

# โค้ดสำหรับปรับขนาดภาพ

# ... (สมมติว่าฟังก์ชันนี้ทำงานเสร็จแล้ว)
return resized_image

resizer = FnNode(
fn=downscale_image,
inputs={"image": background_remover.outputs["image"]},
)

# Node ที่ 3: สร้างภาพสไตล์ 3D Asset (ใช้ Hugging Face Inference)
image_generator = InferenceNode(
model="google/flux-2-small",
inputs={"image": resizer.outputs["image"]},
outputs=["output"],
)

# Node ที่ 4: สร้าง 3D Asset (ใช้ Gradio Space)
three_d_generator = GradioNode(
space="spaces/huggingface/trellis.2",
inputs={"image": image_generator.outputs["output"]},
)

# เชื่อมต่อ Node ทั้งหมดและรัน
workflow = [background_remover, resizer, image_generator, three_d_generator]
daggr.run(workflow)

เมื่อรันสคริปต์นี้ คุณจะได้ Visual Canvas ที่แสดงผลบนพอร์ต 7860 โดยอัตโนมัติ พร้อมลิงก์ที่สามารถแชร์ได้ ซึ่งจะแสดง Node ต่างๆ ที่เชื่อมต่อกัน พร้อม Input ที่สามารถแก้ไขได้ และ Output ที่สามารถตรวจสอบได้ในแต่ละขั้นตอน

ประเภทของ Node ใน Daggr 💡

Daggr รองรับ Node 3 ประเภทหลัก:

  • GradioNode: สำหรับเรียกใช้ API ของ Gradio Space หรือ Gradio App ที่รันบนเครื่อง หากตั้งค่า run_locally=True, Daggr จะทำการ Clone Space, สร้าง Virtual Environment และรันแอปพลิเคชันให้โดยอัตโนมัติ หากการรันในเครื่องล้มเหลว จะกลับไปใช้ API แบบ Remote แทน
  • FnNode: สำหรับรันฟังก์ชัน Python แบบกำหนดเอง
  • InferenceNode: สำหรับเรียกใช้โมเดลผ่าน Hugging Face Inference Providers

การ Deploy และข้อควรพิจารณา ⚠️

  • การรันบน Hugging Face Spaces: คุณสามารถ Deploy แอปพลิเคชันที่ใช้ Daggr บน Hugging Face Spaces ได้ง่ายๆ เพียงแค่เพิ่ม daggr เข้าไปใน requirements.txt
  • การรันโมเดลบน GPU: หากคุณต้องการให้โมเดลทำงานบน GPU (CUDA) ให้ใช้ to("cuda") หรือ ZeroGPU ภายในไฟล์แอปพลิเคชัน หากอุปกรณ์ของคุณไม่มี NVIDIA GPU คุณสามารถ Clone Space ที่ต้องการใช้และรันบน CPU ได้
  • Token สำหรับ InferenceNode: เมื่อ Deploy แอปพลิเคชันที่มี InferenceNode ไปยัง Hugging Face Spaces ควรใช้ Hugging Face Access Token ที่มีสิทธิ์เฉพาะสำหรับการ "Make calls to Inference Providers" เท่านั้น
  • สถานะ Beta: Daggr ยังอยู่ในช่วง Beta ซึ่งหมายความว่า API อาจมีการเปลี่ยนแปลงได้ และอาจมีความเสี่ยงที่ข้อมูลบางส่วนสูญหายระหว่างการอัปเดต หากคุณพบข้อผิดพลาดหรือมีข้อเสนอแนะ สามารถเปิด Issue ได้ที่ [GitHub](ขอบคุณ แหล่งข้อมูล
    https://github.com/gradio-app/daggr)

Daggr เป็นเครื่องมือที่ทรงพลังสำหรับการสร้างและทดลองกับ Workflow AI ที่ซับซ้อน ช่วยให้นักพัฒนาสามารถโฟกัสกับการสร้างสรรค์นวัตกรรม โดยไม่ต้องกังวลกับปัญหาการจัดการ Pipeline ที่ยุ่งยากอีกต่อไป

#Daggr #Gradio #AIWorkflow #Python

ขอบคุณ แหล่งข้อมูล
https://huggingface.co/blog/daggr

Daggr: สร้างแอปพลิเคชัน AI แบบมีขั้นตอน ควบคุมด้วยโค้ด พร้อมแสดงผลแบบเห็นภาพ 🎨การสร้างแอปพลิเคชัน AI ที่ซับซ้อน ซึ่งต้องมีการทำงานหลายขั้นตอน เช่น การเรียกใช้โมเดลหลายตัว การประมวลผลข้อมูลต่อเนื่อง หรือการเชื่อมต่อ API ต่างๆ อาจเป็นเรื่องที่ท้าทาย โดยเฉพาะเมื่อต้องเผชิญกับปัญหาการดีบัก การติดตามผลลัพธ์ระหว่างทาง และการรันใหม่ทั้งหมดเมื่อเกิดข้อผิดพลาดในขั้นตอนใดขั้นตอนหนึ่งนักพัฒนาหลายคนอาจเลือกสร้างสคริปต์ที่ซับซ้อนและยากต่อการแก้ไข หรือหันไปใช้แพลตฟอร์มจัดการ Workflow ขนาดใหญ่ที่ออกแบบมาสำหรับ Production ซึ่งอาจไม่เหมาะกับการทดลองและพัฒนาอย่างรวดเร็วHugging Face ได้พัฒนาระบบที่ชื่อว่า Daggr ขึ้นมาเพื่อแก้ไขปัญหาเหล่านี้ โดยมุ่งเน้นให้การสร้างและจัดการ Workflow ของแอปพลิเคชัน AI เป็นไปอย่างราบรื่นและมีประสิทธิภาพมากขึ้นDaggr ทำงานอย่างไร? 🤔Daggr นำเสนอแนวทางที่ผสานข้อดีของการเขียนโค้ดเข้ากับการแสดงผลแบบเห็นภาพ ทำให้คุณสามารถ:1. แสดงผล Flow การทำงานด้วยภาพอัตโนมัติ 🖼️ต่างจากเครื่องมือแบบ GUI ที่ต้องลากและวาง Node เพื่อเชื่อมต่อกัน Daggr ใช้แนวทาง Code-First คุณสามารถกำหนด Workflow ทั้งหมดได้ด้วยโค้ด Python และ Daggr จะสร้าง Visual Canvas หรือแผนภาพการทำงานให้โดยอัตโนมัติ ทำให้คุณได้ทั้งโค้ดที่สามารถควบคุมเวอร์ชันได้ และแผนภาพที่ช่วยให้เห็นภาพรวมของ Workflow2. ตรวจสอบและรันแต่ละขั้นตอนได้ตามต้องการ 🔍แผนภาพที่ Daggr สร้างขึ้นไม่ใช่แค่เพื่อการแสดงผลเท่านั้น คุณสามารถ ตรวจสอบผลลัพธ์ (Output) ของ Node ใดก็ได้ใน Workflow, แก้ไข Input และ รันเฉพาะขั้นตอนนั้นๆ โดยไม่ต้องรันทั้ง Pipeline ใหม่ ซึ่งมีประโยชน์อย่างมากเมื่อต้องดีบัก Workflow ที่มีหลายขั้นตอน และมีปัญหาเกิดขึ้นเพียงบางส่วนเท่านั้น นอกจากนี้ คุณยังสามารถสร้าง "Backup Nodes" หรือ Node สำรอง เพื่อสลับการใช้งานโมเดลหรือ Space อื่นๆ ได้ ทำให้ Workflow มีความยืดหยุ่นและทนทานต่อข้อผิดพลาดมากขึ้น3. ผสานการทำงานกับ Gradio ได้อย่างลงตัว ✨เนื่องจาก Daggr พัฒนาโดยทีม Gradio จึงสามารถทำงานร่วมกับ Gradio Spaces ได้อย่างราบรื่น คุณสามารถชี้ไปยัง Space ใดก็ได้ (ทั้งแบบสาธารณะและส่วนตัว) เพื่อใช้งานเป็น Node ใน Workflow ของคุณได้ทันที โดยไม่ต้องมี Adapter หรือ Wrapper ใดๆ เพียงแค่ระบุชื่อ Space และ API Endpoint4. จัดเก็บสถานะและทำงานต่อได้ไม่สะดุด 💾Daggr จะ บันทึกสถานะของ Workflow โดยอัตโนมัติ รวมถึงค่า Input, ผลลัพธ์ที่แคชไว้, ตำแหน่งของ Canvas ทำให้คุณสามารถกลับมาทำงานต่อจากจุดเดิมได้ทุกเมื่อ นอกจากนี้ ยังมีฟีเจอร์ "Sheets" ที่ช่วยให้คุณสามารถจัดการ Workspace หลายๆ อัน ภายในแอปพลิเคชันเดียวกันได้การติดตั้ง Daggr 🛠️คุณสามารถติดตั้ง Daggr ได้ง่ายๆ ด้วย pip หรือ uv โดยต้องการ Python 3.10 ขึ้นไปpip install daggr # หรือ uv pip install daggrตัวอย่างการใช้งาน Daggr 🚀ลองดูตัวอย่างง่ายๆ ที่สร้างภาพและลบพื้นหลัง:from daggr import GradioNode, FnNode, InferenceNode # Node ที่ 1: ลบพื้นหลังภาพ (ใช้ Gradio Space) background_remover = GradioNode( space="spaces/gradio/background-remover", inputs={"image": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/cat-red.jpg"}, outputs=["image"], # ระบุ Output ที่ต้องการ ) # Node ที่ 2: ปรับขนาดภาพ (ใช้ Python Function) def downscale_image(image): # โค้ดสำหรับปรับขนาดภาพ # ... (สมมติว่าฟังก์ชันนี้ทำงานเสร็จแล้ว) return resized_image resizer = FnNode( fn=downscale_image, inputs={"image": background_remover.outputs["image"]}, ) # Node ที่ 3: สร้างภาพสไตล์ 3D Asset (ใช้ Hugging Face Inference) image_generator = InferenceNode( model="google/flux-2-small", inputs={"image": resizer.outputs["image"]}, outputs=["output"], ) # Node ที่ 4: สร้าง 3D Asset (ใช้ Gradio Space) three_d_generator = GradioNode( space="spaces/huggingface/trellis.2", inputs={"image": image_generator.outputs["output"]}, ) # เชื่อมต่อ Node ทั้งหมดและรัน workflow = [background_remover, resizer, image_generator, three_d_generator] daggr.run(workflow)เมื่อรันสคริปต์นี้ คุณจะได้ Visual Canvas ที่แสดงผลบนพอร์ต 7860 โดยอัตโนมัติ พร้อมลิงก์ที่สามารถแชร์ได้ ซึ่งจะแสดง Node ต่างๆ ที่เชื่อมต่อกัน พร้อม Input ที่สามารถแก้ไขได้ และ Output ที่สามารถตรวจสอบได้ในแต่ละขั้นตอนประเภทของ Node ใน Daggr 💡Daggr รองรับ Node 3 ประเภทหลัก:GradioNode: สำหรับเรียกใช้ API ของ Gradio Space หรือ Gradio App ที่รันบนเครื่อง หากตั้งค่า run_locally=True, Daggr จะทำการ Clone Space, สร้าง Virtual Environment และรันแอปพลิเคชันให้โดยอัตโนมัติ หากการรันในเครื่องล้มเหลว จะกลับไปใช้ API แบบ Remote แทนFnNode: สำหรับรันฟังก์ชัน Python แบบกำหนดเองInferenceNode: สำหรับเรียกใช้โมเดลผ่าน Hugging Face Inference Providersการ Deploy และข้อควรพิจารณา ⚠️การรันบน Hugging Face Spaces: คุณสามารถ Deploy แอปพลิเคชันที่ใช้ Daggr บน Hugging Face Spaces ได้ง่ายๆ เพียงแค่เพิ่ม daggr เข้าไปใน requirements.txtการรันโมเดลบน GPU: หากคุณต้องการให้โมเดลทำงานบน GPU (CUDA) ให้ใช้ to("cuda") หรือ ZeroGPU ภายในไฟล์แอปพลิเคชัน หากอุปกรณ์ของคุณไม่มี NVIDIA GPU คุณสามารถ Clone Space ที่ต้องการใช้และรันบน CPU ได้Token สำหรับ InferenceNode: เมื่อ Deploy แอปพลิเคชันที่มี InferenceNode ไปยัง Hugging Face Spaces ควรใช้ Hugging Face Access Token ที่มีสิทธิ์เฉพาะสำหรับการ "Make calls to Inference Providers" เท่านั้นสถานะ Beta: Daggr ยังอยู่ในช่วง Beta ซึ่งหมายความว่า API อาจมีการเปลี่ยนแปลงได้ และอาจมีความเสี่ยงที่ข้อมูลบางส่วนสูญหายระหว่างการอัปเดต หากคุณพบข้อผิดพลาดหรือมีข้อเสนอแนะ สามารถเปิด Issue ได้ที่ [GitHub](https://github.com/gradio-app/daggr)Daggr เป็นเครื่องมือที่ทรงพลังสำหรับการสร้างและทดลองกับ Workflow AI ที่ซับซ้อน ช่วยให้นักพัฒนาสามารถโฟกัสกับการสร้างสรรค์นวัตกรรม โดยไม่ต้องกังวลกับปัญหาการจัดการ Pipeline ที่ยุ่งยากอีกต่อไป#Daggr #Gradio #AIWorkflow #Pythonhttps://huggingface.co/blog/daggr
Shared content
HUGGINGFACE.CO
Introducing Daggr: Chain apps programmatically, inspect visually
We’re on a journey to advance and democratize artificial intelligence through open source and open science.
2 Comments 0 Shares 523 Views 0 Reviews