ว่าง ๆ มาทำความรู้จักกับ Semantic Kernel จาก Microsoft กันหน่อย
ซึ่งเป็นชุดเครื่องมือช่วยในการพัฒนา (SDK = Software Development Kit)
และสร้าง AI Agent และ multiple agent แบบ open source ด้วย
สามารถทำงานร่วมกับ AI model ต่าง ๆ จาก provider ต่าง ๆ ได้เลย
เช่น OpenAI, Azure OpenAI และ Ollama
เขียน code ได้ทั้ง C#, Python และ Java
ดังนั้นเรามาลองใช้งานกันหน่อย
โดยที่ Semantic Kernel นั้นแยกการทำงานเป็น component ต่าง ๆ ดังนี้
- Kernel เป็นส่วนหลักของ SDK เพื่อนำแต่ละ component มาทำงานร่วมกัน โดยจะมีการจัดการ log และ telemetry ต่าง ๆ ในการ observe การทำงานของ Agent ที่สร้าง เพื่อปรับปรุงการทำงานต่อไป
- Memory ทำการจัดเก็บ history data ต่าง ๆ เอาไว้ เหมือนความจำของมนุษย์นั้นเอง เก็บได้ทั้งรูปแบบ vector, key-vale และจัดเก็บลงหน่วยความจำ database หรือ file system ก็ได้
- Planner เป็นส่วนของการวางแผนจาก user prompt ว่าจะต้องทำงานอะไรบ้าง ซึ่งมีการเตรียมไว้ให้แล้วด้วย เช่น SequencialPlanner, BasicPlanner และ ActionPlanner เป็นต้น
- Connector เป็นส่วนที่ให้แต่ละ component ทำการเชื่อมต่อ และ แลกเปลี่ยนข้อมูลกัน ทั้ง database ในรูปแบบต่าง ๆ และ AI model จาก provider ต่าง ๆ ในส่วนของ ventor database ตอนนี้ยังคงเป็น experiment feature เท่านั้น
- Plugin หรือ Skill ที่สามารถเพิ่มเติมได้ตามที่ต้องการ
เริ่มด้วยการเขียน code ด้วย C# เล่น ๆ ดีกว่า
เป็น code ตัวอย่างจากเอกสารของ Semantic Kernel นั่นเอง
ขั้นตอนที่ 1 สร้าง Project
[gist id="b43dce4e6ab2bf1182fdbf4d3b5d2882" file="1.txt"]ขั้นตอนที่ 2 สร้างระบบงานตัวอย่าง เป็นการเปิดปิดไฟนั่นเอง
โดยจะใช้งานผ่าน OpenAI API มีขั้นตอนดังนี้
- ทำการ Connect ไปยัง OpenAI API ใช้งาน gpt-4o model อย่าลืมใส่ API KEY
- ทำการสร้าง Kernel ซึ่งเราจะสร้างเป็น chat app
- ทำการเพิ่ม plugin เข้ามา คือ LightsPlugin ที่จะสร้างเอง
- ทำการเปิด planner โดยใช้แบบ auto
- ทำการเก็บ history data
- เริ่มคุย ...
ไฟล์ Program.cs
[gist id="b43dce4e6ab2bf1182fdbf4d3b5d2882" file="Program.cs"]จากนั้นทำการสร้าง LightsPlugin.cs ขึ้นมา
โดยจะมีไฟอยู่ 3 ดวง
[gist id="b43dce4e6ab2bf1182fdbf4d3b5d2882" file="LightsPlugin.cs"]จากนั้นลอง run ดู
[gist id="b43dce4e6ab2bf1182fdbf4d3b5d2882" file="2.txt"]ลอง run แบบเปิด log ดูหน่อยสิ ว่าตัว Kernel มันทำอะไรบ้าง ?
[gist id="b43dce4e6ab2bf1182fdbf4d3b5d2882" file="3.txt"]ลองใช้งานกันดูครับ มีอะไรน่าสนใจเยอะเลย
และเหมือนจะไปทำงานร่วมกับ AutoGen ได้ด้วยนะ
ส่วนใน VSCode นั้นก็มี extension ให้ด้วย ลองใช้งานกันดู
และเข้าไปดู code ต่าง ๆ เพิ่มเติมได้ที่ GitHub :: Semantic Kernel
ขอให้สนุกกับการ coding ครับ
Source Code ตัวอย่างที่ GitHub:Up1