![]()
ယခင်သင်ခန်းစာတွင် ကိုယ်စားလှယ်များကို မိုးကောင်းကင်သို့ တက် မြှင့်ခဲ့သည်။ ယခုသင်ခန်းစာတွင် အဆိုပါကိုယ်စားလှယ်များကို တစ်စက်ယောက်တွင် ဆင်း ကာ ထားသည်။ အဆုံးတွင် မည်သည့်မိုးကောင်းကင် inference ဖုန်းခေါ်မှုမျှ မရှိဘဲ အလုပ်လုပ်နိုင်သည့် အင်ဂျင်နီယာ ကူညီသူတစ်ဦး ရရှိမည် ဖြစ်သည်။
အဲဒါကို ဘာကြောင့်လိုလဲ။ အင်ဂျင်နီယားအလုပ်တွင် အမြဲတမ်းတွေ့ကြုံရသည့် အကြောင်းပြချက် သုံးချက်ရှိသည်။
ပြဿနာမှာ သင်၏ CPU, GPU သို့မဟုတ် NPU ပေါ်တွင် ပြေးနိုင်သည့် စာသားအတို (SLM) ကို frontier cloud မော်ဒယ်အစား အသုံးပြုခြင်းဖြစ်သည်။ ဤသင်ခန်းစာမှာ အဆိုပါကန့်သတ်ချက်အတွင်း သင့်တော်သော ကိုယ်စားလှယ်များကို တည်ဆောက်သင့်သည်ကို ပြောသည်၊ ကန့်သတ်ချက် မရှိသလို ယုံကြည်ခြင်း မဟုတ်ပါ။
ဤသင်ခန်းစာသည် အောက်ပါအကြောင်းအရာများကို ရေးသားသည်။
ဤသင်ခန်းစာကိုပြီးမြောက်သွားပါက၊ သင်သည် အောက်ပါ အရာများကို သိရှိမည်ဖြစ်သည်။
ဤသင်ခန်းစာသည် ယခင်သင်ခန်းစာများ ပြီးမြောက်ပြီး အောက်ပါအချက်များ၌ ချောမွေ့မှု ရှိကြောင်း ပြုစုထားသူများအတွက်ဖြစ်သည်။
သင်တွင် လိုအပ်သော အရာများဖြစ်သည် -
requirements.txt တွင်ရှိသော ပက်ကေ့ဂျ်များ၊ နောက်ထပ် foundry-local-sdk၊ openai နှင့် chromadb တို့။frontier cloud မော်ဒယ်တွင် parameter သန်းပေါင်းများစွာနှင့် ဒေတာစင်တာတစ်ခုရိွသည်။ SLM သည် parameter သန်းအနည်းငယ်ရှိပြီး လက်ပ်တော့၏ RAM ထဲတွင်တည်နိုင်ရမည်။ ဒီကွာခြားချက်က ရည်မှန်းချက်များ ထင်ထင်ရှားရှားထားပေးသည်။
SLM များ၏ အားသာချက်များမှာ-
SLM များ၏အားနည်းချက်များမှာ-
ဒေသခံ ကိုယ်စားလှယ်များအတွက် အောင်မြင်သည်မှာ - SLM ကို ညှိနှိုင်းအုပ်ချုပ်ရန်ခွင့်ပြု ပါ၊ ကိရိယာများအား မြင့်မားသော အလုပ်တစ်လုံးအဖြစ် စီမံခန့်ခွဲရန်ခွင့်ပြုပါ။ မော်ဒယ်သည် သင့်ကုဒ်အခြေခံကို သိရန် မလိုအပ်ပါ၊ လိုအပ်တာက ဘယ်အချိန်တွင် read_file နှင့် search_docs ကို ခေါ်မည်ကို သိရခြင်းသာ ဖြစ်သည်။ ၎င်းသည် SLM ၏ အားသာချက်များကို တိုက်ရိုက် အသုံးချခြင်းဖြစ်သည်။
flowchart LR
U[ဖွံ့ဖြိုးသူ] --> A[ဒေသိယ SLM အေးဂျင့်]
A -->|မည်သည့်ကိရိယာကိုဆုံးဖြတ်သည်| T1[ဖိုင်ဖတ်မည်]
A -->|မည်သည့်ကိရိယာကိုဆုံးဖြတ်သည်| T2[စာရွက်စာတမ်းများ ရှာဖွေ RAG]
A -->|မည်သည့်ကိရိယာကိုဆုံးဖြတ်သည်| T3[ကုဒ်ကို phân tích]
T1 --> A
T2 --> A
T3 --> A
A --> R[အဖြေ၊ စက်ပစ္စည်းပေါ်တွင်အပြည့်အဝ]
Microsoft Foundry Local သည် မော်ဒယ်များကို ဒေါင်းလုဒ်၊ စီမံခန့်ခွဲနှင့် စက်ပေါ်တွင် အပြည့်အဝ ဖြန့်ဝေသည့် အလွယ်တကူ runtime တစ်ခုဖြစ်သည်။ အရေးကြီးဆုံး အင်္ဂါရပ်မှာ OpenAI-compatible HTTP endpoint တစ်ခုကို ထုတ်ပေးခြင်းဖြစ်ပြီး၊ ထိုသို့ ဖြစ်ခြင်းကြောင့် OpenAI SDK နှင့် Microsoft Agent Framework ၏ OpenAI client ကို base_url ပြောင်းခြင်းဖြင့်သာ အသုံးပြု၍ ထို endpoint တို့အား အလုပ်လုပ်အောင် လုပ်နိုင်သည်။ သင်သည် ကိုယ်စားလှယ်များ တည်ဆောက်သင်ယူထားသည့် အရာမျှလုံးသည် မိုးကောင်းကင်မှ localhost သို့သာ ပြောင်းထားခြင်း ဖြစ်သည်။
Foundry Local သည် သင့်ကွန်ပျူတာပစ္စည်းအတိုင်း CPU, CUDA/GPU သို့မဟုတ် NPU build အကောင်းဆုံးကို အလိုအလျောက် ရွေးချယ်ပေးသည်၊ ထို့ကြောင့် စက်စူးစမ်း optimize မလုပ်ရဘဲဖြစ်ပါသည်။
OS အတွက် စာရွက်စာတမ်း အတိုင်း Foundry Local ကို တပ်ဆင်ပြီး၊ အောက်ပါအတိုင်း အလုပ်လုပ်မှု စစ်ဆေးပါ-
# တပ်ဆင်ပါ (ဥပမာ; သင့်ပလက်ဖောင်းအတွက် ကိုးကားစာတမ်းများကို လိုက်နာပါ)
winget install Microsoft.FoundryLocal # Windows
# brew install microsoft/foundrylocal/foundrylocal # macOS
# Qwen မော်ဒယ်ကို ဒေါင်းလုဒ်လုပ်ပြီး စတင်အပ်ပါ၊ ဒါမှ ပြီးမှ ဒေသခံဝန်ဆောင်မှုကို စတင်ပါ။
foundry model run qwen2.5-7b-instruct
foundry service status
ဝန်ဆောင်မှု ပြေးနေသောအခါ၊ သင်တွင် ဒေသခံ OpenAI-compatible endpoint (ပုံမှန်အားဖြင့် http://localhost:PORT/v1) ရှိသည်။ notebook သည် foundry-local-sdk ကို အသုံးပြုကာ အလိုအလျောက် endpoint ဖြည့်စွက်သည်၊ ထို့ကြောင့် ပေါ့တ်ကို စက်တင်ထားရန် မလိုအပ်ပါ။
ကိုယ်စားလှယ်သည် သာလွန်သူတစ်ဦး ဖြစ်ရန် ကိရိယာခေါ်ဆိုနိုင်ရမည်။ SLM အများစု သာမကချောက်ထား၍ မယုံကြည်စိတ်ချရသော၊ ကြေကွဲထားသော ကိရိယာခေါ်ဆိုမှုများ ဖန်တီးတတ်ကြသည်။ Qwen မော်ဒယ်များသည် function calling အတွက် လေ့ကျင့် ပြီး ယုံကြည်စိတ်ချရသော ကိရိယာခေါ်မှု ဖန်တီးကြသည်၊ ၎င်းသည် ဒေသခံ chat မော်ဒယ်ကို ဒေသခံ ကိုယ်စားလှယ် သို့ ပြောင်းလဲမှု ဖြစ်စေသည်။
လည်ပတ်ပုံမှာ သင် သိပြီးသား ပုံမှန် tool-calling loop တူပြီး device ပေါ်တွင် ပြေးသော ပုံစံဖြစ်သည်။
sequenceDiagram
participant U as အသုံးပြုသူ
participant A as Qwen ကိုယ်ပိုင် Agent
participant T as တိုင်းဒေသဆိုင်ရာကိရိယာ
U->>A: "auth.py က ဘာလုပ်လဲ?"
A->>A: ဆုံးဖြတ်ချက်: read_file ကိုခေါ်ပါ
A->>T: read_file("auth.py")
T-->>A: ဖိုင်အကြောင်းအရာများ
A->>A: အကြောင်းအရာများအား ကြားဖြတ်စဉ်းစားသည်
A-->>U: ရှင်းလင်းချက်
စာရွက်စာတမ်း ရှာဖွေရေးသည် ဒေသခံ ကိုယ်စားလှယ်များအတွက် အကျိုးရှိသော နေရာဖြစ်သည်။ SLM သည် framework စာရွက်စာတမ်းများကို မှတ်မိထားသည်ဟု မျှော်လင့်နေခြင်း အစား၊ ထိုစာရွက်စာတမ်းများကို ဒေသခံ vector database အဖြစ် ထည့်သွင်းပြီး ကြိုက်သလို အပိုင်းများကို ကိုယ်စားလှယ်က ရယူသည်။
Chroma ကို အသုံးပြုသည်။ ၎င်းသည် ထိန်းချုပ်စီမံရာတွင် server မလိုအပ်သော embedded vector store ဖြစ်သည်။ အစီအစဉ်ရပ်တန်းသည် လူ့အသုံးအဆောင်တစ်ခုလုံး ဒေသခံဖြစ်ပြီး၊ ဒေသခံ embedding မော်ဒယ် → ဒေသခံ vectorများ → ဒေသခံ ရယူမှု → ဒေသခံ SLM ဖြစ်သည်။
flowchart TB
D[သင့်စာရွက်စာတမ်းများ / ကုဒ်] --> E[ဒေသဆိုင်ရာ ထည့်သွင်းမှုမော်ဒယ်]
E --> V[(Chroma vector DB - ဒစ်စက်ပေါ်တွင်)]
Q[အေဂျင့်မေးခွန်း] --> QE[မေးခွန်းကို ဒေသတွင် ထည့်သွင်းပါ]
QE --> V
V -->|ထိပ်တန်း-k အပိုင်းအစများ| A[Qwen အေဂျင့်]
A --> Ans[အခြေခံဖြေကြားချက်]
ယင်းသည် Lesson 5 မှ Agentic RAG ပုံစံနှင့် တူသည်― ကဏ္ဌတိုင်းသည် သင်၏ စက်ပေါ်တွင်သာ ပြေးသည်။
MCP သည် ကွန်ယက်ဝန်ဆောင်မှုမဟုတ်ပဲ သယ်ယူပို့ဆောင်ရေးဖြစ်သည်။ MCP ဆားဗာကို သင့်စက်ပေါ်တွင် stdio ပေါ်တွင် ဒေသခံလုပ်ငန်းစဉ်အဖြစ် ပြေးစေ၍ ကိရိယာများကို ကိုယ်စားလှယ်ထံ ပေးပို့သည့် ပုံမှန် protocol ဖြင့် ထုတ်ပေးနိုင်သည်။ ထို့ကြောင့် MCP ဆားဗာများ စုပေါင်းလာသည့် စနစ်များ— ဖိုင်စနစ်ဝင်ရောက်ခွင့်၊ git လုပ်ဆောင်ချက်များ၊ ဒေတာဘေ့စ် စုံစမ်းမှုများ— ကို အော့ဖ်လိုင်း မှာ အပြည့်အဝ အသုံးပြုနိုင်သည်။
လုံခြုံရေး အခြေနေသည် မိုးကောင်းကင်နှင့် မတူပါ၊ သို့သော် မရှိသေးသောအမျိုးမျိုးမဟုတ်ပါ။ ဒေသခံ MCP ဆားဗာသည် သင့်အသုံးပြုသူ ခွင့်ပြုချက်ဖြင့် ပြေးသောကြောင့် ဖြတ်တောက်လိုသည့် အရာများကို အကန့်အသတ်ပေးပြီး (ဥပမာ - စီမံကိန်း ဒိုင်ရေးထရီတစ်ခုသာ ဖြတ်သည့်) ၎င်းထုတ်လွှင့်သည့် အချက်အလက်များကို စစ်ဆေးပြီး အတည်ပြုပြုလုပ်ရမည်ဖြစ်သည်။
ဒေသခံဦးတည်မှု သာ ဆက်တိုက် သာမက။ ကြီးပွားသောစနစ်များတွင် သိသိသာသာ နှင့် အခက်ခဲအလိုက် လမ်းညွှန်မှု ပြုလုပ်သည်။
| အခြေအနေ | ဘယ်နေရာတွင် ပြေးသလဲ |
|---|---|
| ကိုယ်ရေးအချက်အလက်/ တင်းကြပ်သော ဒေတာ သို့မဟုတ် အော့ဖ်လိုင်း မဖြစ်သည့် အခြေအနေ | ဒေသခံ SLM |
| ရိုးရှင်းပြီး ကန့်သတ်ထားသော အလုပ် | ဒေသခံ SLM (စျေးသက်သာ၊ အမြန်) |
| ခက်ခဲသော အကြိမ်ရေများလောင်းခြင်း (multi-hop) နိုင်ငံတကာ knowledge မပါသော ဒေတာ | မိုးကောင်းကင်မော်ဒယ် |
| နေရာတိုင်းတွင်, အဓိကကွဲပြားမှုအချိန် | ဒေသခံ SLM (အဆင့်ဆင်းသက်သာခြင်း) |
၎င်းသည် Lesson 16 ၏ မော်ဒယ်လမ်းညွှန်မှု ဆင်တူသည် - ဒေသခံစက်ကို မော်ဒယ်တစ်ခုအဖြစ် သတ်မှတ်ထားသည်။ မိုးကောင်းကင် မရနိုင်လျှင် ဒေသခံကို ပြန်လည်အသုံးပြု၍ ကိုယ်စားလှယ်၏ အရည်အသွေး ညှစ်ယှက်မှု ရှိစေရန် ဖြစ်သည်။
flowchart LR
Q[တောင်းဆိုမှု] --> S{စိတ်တိုင်းကျ သို့မဟုတ် အော့ဖ်လိုင်းလား?}
S -->|ဟုတ်တယ်| L[ဒေသိယ SLM]
S -->|မဟုတ်ဘူး| C{နက်ရှိုင်းသော အမြင်ရယူမှုလိုအပ်သလား?}
C -->|မဟုတ်ဘူး| L
C -->|ဟုတ်တယ်| Cloud[ကလောင်မော်ဒယ်]
L --> Out[တုံ့ပြန်ချက်]
Cloud --> Out
code_samples/17-local-agent-foundry-local.ipynb ကိုဖွင့်ကာ လေ့လာပါ။ သင်သည် ဒေသခံ အင်ဂျင်နီယာ ကူညီသူ တစ်ဦး တည်ဆောက်မည်ဖြစ်ပြီး အလုပ်အပြည့်အဝ သင့်စက်ပေါ်တွင် ပြေးသည်။ ၎င်းသည် -
မည်သည့်မိုးကောင်းကင် inference ကိုမိမိ ဘယ်အချိန်တွင်မျှ မသုံးပါ။
ကူညီသူသည် OpenAI-compatible endpoint ကို သုံး၍ Foundry Local နှင့် ချိတ်ဆက်သည်၊ ထို့ကြောင့် ကိုယ်စားလှယ်ကုဒ်သည် မိုးကောင်းကင်သင်ခန်းစာများနှင့် တူညီသော်လည်း client တစ်ခုသာ ကွဲပြားသည်။
from foundry_local import FoundryLocalManager
from openai import OpenAI
# Foundry Local သည် မော်ဒယ်ကို ရှာဖွေ下载ယူပြီး မိမိတို့အား ဒေသတွင်း အဆုံးအစွန် တစ်ခု ပေးသည်။
manager = FoundryLocalManager(\"qwen2.5-7b-instruct\")
client = OpenAI(base_url=manager.endpoint, api_key=manager.api_key) # api_key သည် ဒေသတွင်း နေရာသတ်မှတ်ချက်ဖြစ်သည်။
ကိရိယာများသည် စီမံကိန်း ဒိုင်ရေးထရီအတွင်း သတ်မှတ်ထားသော ပုံမှန် Python function များဖြစ်သည်။
def read_file(path: str) -> str:
\"\"\"Read a file, but only inside the sandboxed project directory.\"\"\"
full = (PROJECT_ROOT / path).resolve()
if PROJECT_ROOT not in full.parents and full != PROJECT_ROOT:
return \"Access denied: path is outside the project directory.\"
return full.read_text(encoding=\"utf-8\")
sandbox စစ်ဆေးချက်ကို မှတ်ပါတော့ - ဒေသခံမှာ တန်ဆာမပြိုင် ဖတ်သည့် ဂရုပျမာန့်ထားသော ကိရိယာသည် အန္တရာယ်ရှိနိုင်သည်။ notebook ေတွမှာ တစ်စီမံကိန်း အစအဆုံးကိုသာ ကန့်သတ်ထားသည်။
မူကြမ်း လုပ်ငန်းသို့ ရောက်ရှိရန် မတိုင်ခင် သင်၏ နားလည်မှုကို စစ်ဆေးပါ။
၁။ ကိုယ်စားလှယ်အား မိုးကောင်းကင်တွင် မဟုတ်ဘဲ ဒေသခံတွင် ပြေးရန် အကြောင်းပြချက် နှစ်ချက် ထုတ်ပြောပါ။
၂။ ဒေသခံ ကိုယ်စားလှယ်တွင် SLM နှင့် ကိရိယာများအကြား အလုပ်ခွဲဝေမျိုးက ဘာဖြစ်ပြီး အကြောင်းရင်းက ဘာလဲ?
၃။ Foundry Local နှင့် cloud ကိုယ်စားလှယ်ကုဒ်ကို ထပ်မံအသုံးပြုနိုင်ခြင်း၏ အကြောင်းရင်းဘာလဲ?
၄။ ဘာကြောင့် သည်သင်ခန်းစာတွင် မည်သည့် SLM မဆိုမဟုတ်ဘဲ Qwen function-calling မော်ဒယ်ကို တိတိကျကျ သုံးသလဲ?
၅။ ဒေသခံ RAG အစီအစဉ်အတွင်း မည်သည့် ကဏ္ဍများသည် စက်ပေါ်တွင် ပြေးသနည်း?
၆။ ဒေသခံ MCP ဆားဗာသည် သင့်စက်ပေါ်တွင် ပြေးနေသည်။ ဒါဟာ အကြောင်းတရား ဘာကြောင့် လုံခြုံပါသလဲ? ဘယ်သတိပြုချက် ပြုလုပ်သင့်သနည်း?
၇။ ဒေသခံ မော်ဒယ် ပါဝင်သည့် သင့်တော်သော ပေါင်းစပ် စနစ် လမ်းညွှန်ချက်တစ်ခု ဖော်ပြပါ။
၈။ ဤသင်ခန်းစာတွင် ဒေသခံ ကိုယ်စားလှယ်ကို ပြေးရန် လိုအပ်သော အနည်းဆုံး RAM ထားရှိရန်ဖြစ်သော ဖြစ်နိုင်ခြေကို ဖော်ပြပါ၊ RAM ပိုမိုရှိခြင်းက ဘာကို ယူဆောင်လာသည်နည်း?
ဒေသခံ အင်ဂျင်နီယာ ကူညီသူကို သင့်ရွေးချယ်သည့် သေးငယ်သော စီမံကိန်းအတွက် ဒေသခံ စာရွက်စာတမ်း စိစစ်သူ တစ်ဦး အဖြစ် တိုးချဲ့ပါ (အကယ်၍ Interface repo ၏ သင်ခန်းစာ ဖိုလ်ဒါတစ်ခုမှအသုံးပြုလိုပါက)။
သင့်တင်သွင်းမှုသည် -
၁။ နက်ရှိုင်းသော စာရွက်စာတမ်း/ကုဒ် ဒိုင်ရေးထရီ တစ်ခုကို Chroma တွင် အညွှန်းဖော်ပါ (ဖိုင်ငါးဖိုင်အနည်းဆုံး)။
၂။ find_todos ကိရိယာတစ်ခု ထည့်သွင်းပြီး စီမံကိန်းအတွင်းရှိ TODO/FIXME မှတ်ချက်များကို ဖိုင်နာမည်နှင့် ကြောင်းအမှတ်ဖြင့် ရှာဖွေ၍ ပြန်လည်ပေးပါ - read_file ကဲ့သို့ အခြေခံ sandbox စစ်ဆေးမှု ရှိစေရန်။
ပြီးလျှင် ဒီစစ်ဆေးသူအတွက် ဘာတွေကို လေကြောင်းကလောင်မှာထားမလဲ၊ ဘာတွေကို ဒေသတွင်းမှာထားမလဲ ပြောရေးပြီး အကြောင်းရင်းနဲ့ တစ်ပြချင်းဖော်ပြပါ။ ဒေသတွင်းကိရိယာတွေကို မှန်ကန်စွာချိတ်ဆက်ထားတယ်၊ သင့်ရဲ့ ခြုံငုံအတတ်ပညာက သေချာတယ်ဆိုတာနဲ့ပဲ သတ်မှတ်ခံရမှာဖြစ်ပြီး မော်ဒယ်အရည်အသွေးပေါ်မှာ မဟုတ်ပါ။
ဒီသင်ခန်းစာမှာ သင်ရဲ့စက်ပေါ်မှာဘဲ အပြည့်အစုံပြေးဆဲ အိုင်ဂျင့်ကို တည်ဆောက်လိုက်ပါပြီ။
ဒါက တပ်ဆင်ခြင်းအပိုင်းကို ပြီးစီးစေသည်။ သင်ခန်းစာ 16 မှာ အိုင်ဂျင့်များကို Microsoft Foundry ထဲသို့ ပိုမိုကြီးထွားစေပြီး ဒီသင်ခန်းစာမှာ တစ်စက်ပေါ်ကို ခယ်မည်။ နောက်တစ်သင်ခန်းစာမှာ တပ်ဆင်ထားသော အိုင်ဂျင့်များကို ဘေးကင်းစေရန် ဦးတည်သည်။
ပြောကြားချက် ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု Co-op Translator အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။