AI ซีรีส์สัมภาษณ์ 7: วิธีกำหนด Skill อย่างเป็นมาตรฐาน
หนึ่ง แนวคิดหลักของ Skill
Skill คือหน่วยความสามารถที่สามารถดำเนินการได้ซึ่งถูกห่อหุ้มอยู่ใน Agent หรือ ระบบ AI โดยทั่วไปประกอบด้วย:
- เงื่อนไขการเรียกใช้: เมื่อใดที่ถูกเรียก (เช่น คำสั่งผู้ใช้, เหตุการณ์ของระบบ)
- พารามิเตอร์นำเข้า: ข้อมูลหรือบริบทที่ต้องรับ
- ตรรกะการดำเนินการ: ขั้นตอนการประมวลผลเฉพาะ (เช่น การเรียก API, รันโค้ด, ค้นหาฐานความรู้)
- ผลลัพธ์: การตอบสนองหรือการกระทำที่ส่งกลับไปยังผู้เรียก
สอง ขั้นตอนการกำหนด Skill อย่างเป็นมาตรฐาน
1. ระบุชื่อและคำอธิบายของ Skill
- ชื่อ: สั้น, ไม่ซ้ำ, มีความหมาย (เช่น
search_web,send_email) - คำอธิบาย: อธิบายฟังก์ชันของ Skill ในหนึ่งประโยค เพื่อให้ Agent จับคู่โดยอัตโนมัติ
2. กำหนดพารามิเตอร์นำเข้า (Input Schema)
ใช้ JSON Schema หรือรูปแบบที่คล้ายกัน ระบุประเภทของแต่ละพารามิเตอร์, ว่าจำเป็นต้องกรอกหรือไม่, ค่าเริ่มต้น และข้อจำกัด
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "คำค้นหา",
"required": true
},
"max_results": {
"type": "integer",
"description": "จำนวนผลลัพธ์สูงสุดที่ส่งกลับ",
"default": 10
}
}
}
3. เขียนตรรกะการดำเนินการ (Execution Logic)
- ตรรกะที่แน่นอน: เรียกใช้ฟังก์ชัน, API หรือฐานข้อมูลโดยตรง
- ตรรกะที่ไม่แน่นอน: ใช้ LLM สร้างการตอบสนอง (ต้องมีเทมเพลต prompt)
- การจัดการข้อผิดพลาด: กำหนด timeout, การลองใหม่, กลยุทธ์ลดระดับ
4. กำหนดรูปแบบผลลัพธ์ (Output Schema)
ใช้ JSON Schema อธิบายโครงสร้างข้อมูลที่ส่งกลับเช่นกัน
{
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": { "type": "string" },
"url": { "type": "string", "format": "uri" }
}
}
}
}
}
5. เมทาดาต้าเพิ่มเติม (Metadata)
- หมายเลขเวอร์ชัน: เพื่อการจัดการเวอร์ชัน
- ผู้เขียน/ผู้ดูแล: ความรับผิดชอบ
- การพึ่งพา: บริการภายนอกหรือไลบรารีที่จำเป็น
- ข้อจำกัดการใช้งาน: เช่น การจำกัดความถี่, ข้อกำหนดสิทธิ์
สาม ตัวอย่าง: นิยาม Skill ที่สมบูรณ์
name: "weather_query"
description: "สอบถามสภาพอากาศปัจจุบันตามชื่อเมือง"
version: "1.0.0"
author: "AI Team"
input:
type: object
properties:
city:
type: string
description: "ชื่อเมือง เช่น 'กรุงเทพฯ'"
required: true
unit:
type: string
enum: ["celsius", "fahrenheit"]
default: "celsius"
execute:
- step: "เรียก API สภาพอากาศ"
api: "https://api.weather.com/v1/current"
method: "GET"
params:
city: "{input.city}"
unit: "{input.unit}"
- step: "จัดรูปแบบผลลัพธ์"
format: "ปัจจุบัน {city} มีอุณหภูมิ {temperature}°{unit}"
output:
type: object
properties:
temperature:
type: number
condition:
type: string
humidity:
type: number
สี่ แนวปฏิบัติที่ดีที่สุด
- ความรับผิดชอบเดียว: แต่ละ Skill ทำเพียงสิ่งเดียว หลีกเลี่ยงการพึ่งพากันมากเกินไป
- พึ่งพาตนเอง: พยายามไม่พึ่งพาสถานะภายนอก global รับเข้าแล้วส่งออก
- ทดสอบได้: จัดเตรียมข้อมูลจำลองหรือสภาพแวดล้อม sandbox สำหรับการทดสอบหน่วย
- จัดทำเอกสาร: เขียนคำแนะนำการใช้งานและตัวอย่างสำหรับแต่ละ Skill
ด้วยวิธีการข้างต้นในการกำหนด Skill จะทำให้สามารถถูก Agent AI จัดการแบบไดนามิก และนักพัฒนาสามารถรวมเข้ากับระบบได้โดยตรง บรรลุผลการนำกลับมาใช้ใหม่แบบ "เขียนครั้งเดียว ใช้ได้ทุกที่"
评论
暂无已展示的评论。
发表评论(匿名)