![]()
មេរៀនមុននេះបានបង្កើនទំហំភ្នាក់ងារជារូងចូលមេឃ។ មេរៀននេះនាំពួកវាចុះទៅលើកុំព្យូទ័រតែមួយ។ នៅចុងបញ្ចប់ អ្នកនឹងមានជំនួយការបច្ចេកទេសដែលដំណើរការបាន នឹកឃើញ សម្រង់ឧបករណ៍ អានឯកសាររបស់អ្នក និងស្វែងរកឯកសារជំនួយរបស់អ្នក — ដោយមិនមានការហៅករណីបញ្ញាសិប្បនិម្មិតមេឃជាដើម។
ហេតុអ្វីបានជាអ្នកចង់បានបែបនេះ? មានបីហេតុផលដែលបង្ហាញឡើងជាប្រចាំក្នុងការងារបច្ចេកទេសពិតប្រាកដ៖
បញ្ហាគឺថាអ្នកកំពុងប្តូរគំរូបង្ហាញមេឃមួយសម្រាប់ គំរូភាសាតូច (SLM) ដែលដំណើរការលើ CPU, GPU, ឬ NPU របស់អ្នក។ មេរៀននេះគឺអំពីការសាងសង់ភ្នាក់ងារដែលមានគុណភាពក្នុងកំណត់នោះជាងតែធ្វើមើលថាកំណត់នោះមិនមាន។
មេរៀននេះគ្រប់គ្រងដូចតទៅ៖
បន្ទាប់ពីបញ្ចប់មេរៀននេះ អ្នកនឹងដឹងថាអាច៖
មេរៀននេះបំរាស់បំរើថាអ្នកបានបញ្ចប់មេរៀនមុនៗ ហើយមានជំនាញ៖
អ្នកក៏ត្រូវការផងដែរ៖
requirements.txt, បូករួម foundry-local-sdk, openai, និង chromadb សម្រាប់មេរៀននេះ។គំរូមេឃជាគំរូដែលមានប៉ារ៉ាម៉ែត្រ៖រាប់រយពាន់លាន និងមានមជ្ឈមណ្ឌលទិន្នន័យពីក្រោយ។ SLM មានប៉ារ៉ាម៉ែត្រចំនួនប៉ុន្មានពាន់លាន ហើយត្រូវតែដាក់បានក្នុង RAM នៃកុំព្យូទ័រយួរដៃរបស់អ្នក។ ភាពខុសគ្នានេះកំណត់ការរំពឹងទុកយ៉ាងច្បាស់។
SLMs ល្អក្នុងការធ្វើ៖
SLMs ខ្សោយក្នុងការធ្វើ៖
របៀបជោគជ័យសម្រាប់ភ្នាក់ងារមូលដ្ឋានគឺ: អនុញ្ញាតឲ្យ SLM គ្រប់គ្រង ប៉ុន្តែឲ្យឧបករណ៍ធ្វើការការងារកម្រ។ គំរូមិនត្រូវតែនឹង ស្គាល់ កូដរបស់អ្នកទេ — ត្រូវតែកំណត់ពេលណាហៅ read_file និង search_docs។ នេះជារបៀបដែលបញ្ចេញក្រសោប SLM។
flowchart LR
U[អ្នកអwickសអភិវឌ្ឍន៍] --> A[តំណាង SLM ផ្ទាល់]
A -->|សម្រេចចិត្តឧបករណ៍ណា| T1[អានឯកសារ]
A -->|សម្រេចចិត្តឧបករណ៍ណា| T2[ស្វែងរកឯកសារ RAG]
A -->|សម្រេចចិត្តឧបករណ៍ណា| T3[វិភាគកូដ]
T1 --> A
T2 --> A
T3 --> A
A --> R[បំលាស់ប្រតិបត្តិការ, លើឧបករណ៍ពេញលេញ]
Microsoft Foundry Local គឺជាកម្មវិធីដំណើរការស្រាលដែលទាញយក គ្រប់គ្រង និងបម្រើគំរូទាំងស្រុងនៅលើម៉ាស៊ីនរបស់អ្នក។ លក្ខណៈសំខាន់បំផុតរបស់វាទៅកាន់យើងគឺបង្ហាញ ចំណុចចូល HTTP សមរម្យជាមួយ OpenAI — ដែលមានអរគុណថា OpenAI SDK និង Microsoft Agent Framework OpenAI client អាចប្រើជាមួយវាតាមរយៈការផ្លាស់ប្តូរ base_urlតែប៉ុណ្ណោះ។ អ្វីៗដែលអ្នកបានរៀនអំពីការសាងសង់ភ្នាក់ងារត្រូវបានផ្ទេរត្រឹមតែចំណុចចូលប្តូរពីមេឃមកកាន់ localhost។
Foundry Local ក៏ជ្រើសរើសចាប់ជំនួសកំណែគំរូល្អបំផុតសម្រាប់រឹងម៉ាស៊ីនរបស់អ្នកដោយស្វ័យប្រវត្តិ — កំណែ CPU, កំណែ CUDA/GPU ឬ NPU — ដូច្នេះអ្នកមិនត្រូវផ្លាស់ប្តូរដោយដៃសម្រាប់ម៉ាស៊ីននីមួយៗទេ។
ដំឡើង Foundry Local (មើលឯកសារណែនាំ documentation សម្រាប់ប្រព័ន្ធប្រតិបត្តិការ របស់អ្នក) បន្ទាប់មកធ្វើការបញ្ជាក់ថាវាដំណើរការ៖
# ធ្វើការតម្លើង (ឧទាហរណ៍; អនុវត្តតាមឯកសារសម្រាប់វេទិការបស់អ្នក)
winget install Microsoft.FoundryLocal # វីនដូ
# brew install microsoft/foundrylocal/foundrylocal # macOS
# ទាញយក និងរត់គំរូ Qwen មួយ បន្ទាប់មកចាប់ផ្តើមសេវាកម្មក្នុងស្រុក
foundry model run qwen2.5-7b-instruct
foundry service status
ពេលដែលសេវាកម្មកំពុងដំណើរការអ្នកមានចំណុចចូល OpenAI-compatible local (ធម្មតា http://localhost:PORT/v1)។ សៀវភៅកំណត់ត្រាប្រើ foundry-local-sdk ដើម្បីរកចំណុចចូលដោយស្វ័យប្រវត្តិ ដូច្នេះអ្នកមិនត្រូវបញ្ចូលលេខ Port ដោយដៃទេ។
ភ្នាក់ងារត្រូវតែជាភ្នាក់ងារ បើវាអាចហៅឧបករណ៍បាន។ SLMs ជាច្រើនអាចសន្ទនាបាន ប៉ុន្តែមិនមានសុពលភាពក្នុងការបង្កើតហៅឧបករណ៍ត្រឹមត្រូវ។ គំរូ Qwen ត្រូវបានហ្វឹកហាត់សម្រាប់ហៅមុខងារ ហើយបញ្ចេញរចនាសម្ព័ន្ធហៅឧបករណ៍បែបត្រឹមត្រូវជាប្រចាំ — ការនេះហើយនាំឲ្យម៉ូចាតមូលដ្ឋានបម្លែងទៅជាភ្នាក់ងារមូលដ្ឋាន។
ជំនួសស្វ័យប្រវត្តិហៅឧបករណ៍ជារង្វង់ដែលអ្នកបានស្គាល់ ស្ទើរតែដំណើរការនៅលើឧបករណ៍៖
sequenceDiagram
participant U as អ្នកប្រើ
participant A as ចុងភៅ Qwen (ក្នុងស្រុក)
participant T as ឧបករណ៍ក្នុងស្រុក
U->>A: "auth.py ធ្វើអ្វី?"
A->>A: សម្រេចចិត្ត៖ ហៅ read_file
A->>T: read_file("auth.py")
T-->>A: ខ្លឹមសារឯកសារ
A->>A: ហេតុផលលើខ្លឹមសារ
A-->>U: ការពន្យល់
ការស្វែងរកឯកសារជីវិតនៅចំណុចដែលភ្នាក់ងារមូលដ្ឋានមានតម្លៃ។ ជំនួសការរំពឹងថា SLM មានឯកសាររចនាសម្ព័ន្ធ អ្នកបញ្ចូលវិចិត្រសញ្ញានៃឯកសារជាលេខតូចៗនៅក្នុង មូលដ្ឋានទិន្នន័យវែវទ័រមូលដ្ឋានមូលដ្ឋានមូលដ្ឋាន ហើយអោយភ្នាក់ងារទាញយកចំណុចមានសារៈសំខាន់នៅពេលត្រូវការ។
យើងប្រើ Chroma គឺជាស្តុរក្សាទិន្នន័យវែវទ័រដែលបញ្ចូលនៅក្នុងដំណើរការដោយគ្មានសេវាកម្មជួយគ្រប់គ្រង។ សំណង់បណ្ដាញគឺពេញលេញមូលដ្ឋាន៖ ម៉ូដែលបញ្ចូលមូលដ្ឋាន → វែវទ័រមូលដ្ឋាន → ការទាញយកមូលដ្ឋាន → SLM មូលដ្ឋាន។
flowchart TB
D[ឯកសារ / កូដរបស់អ្នក] --> E[ម៉ូដែលបញ្ចូលក្នុងតំបន់]
E --> V[(ធនាគារវ៉ិចទ័រច្រូម៉ា - នៅលើឌីស)]
Q[សំណួរយោងភ្នាក់ងារ] --> QE[បញ្ចូលសំណួរយោងក្នុងតំបន់]
QE --> V
V -->|ចំណែកខ្លះៗខ្ពស់-k| A[ភ្នាក់ងារ Qwen]
A --> Ans[ចម្លើយដាក់ប្លង់រឹង]
នេះគឺជាអ្វីដែលចម្លងពីគំរូ Agentic RAG ក្នុងមេរៀន 5 — ផ្តល់ការផ្លាស់ប្តូរតែគ្រឿងផ្សំប៉ុណ្ណោះដែលរត់លើម៉ាស៊ីនរបស់អ្នក។
MCP គឺជាការដឹកជញ្ជូនមួយ មិនមែនសេវាកម្មមេឃទេ។ ម៉ាស៊ីនមេ MCP អាចដំណើរការជាដំណើរការមូលដ្ឋានលើ stdio ដែលបង្ហាញឧបករណ៍ទៅភ្នាក់ងារ ហើយប្រើប្រព័ន្ធស្តង់ដារ។ នេះអាចឲ្យអ្នកប្រើប្រាស់ម៉ាស៊ីនមេ MCP ដែលកំពុងដំណើរការជាច្រើន ដូចជា ការចូលប្រព័ន្ធឯកសារ ប្រតិបត្តិការហ្គីត សំណួរទិន្នន័យ ដោយគ្មានការតភ្ជាប់ទៅមេឃ។
ទស្សនៈសុវត្ថិភាពខុសពីមេឃ ប៉ុន្តែមិនបាត់បង់៖ ម៉ាស៊ីនមេ MCP មូលដ្ឋាននៅតែដំណើរការជាមួយសិទ្ធិរបស់អ្នកប្រើ ប្រាប់អោយកំណត់វិសាលភាពអ្វីដែលវាអាចប៉ះដល់ (ថតគម្រោង មិនមែនថតផ្ទះទាំងមូល) ហើយគួរសម្របសម្រួលលទ្ធផលរបស់វាទៅជា ទិន្នន័យបញ្ចូលសម្រាប់ផ្ទៀងផ្ទាត់។
មូលដ្ឋានជាមុនមិនមានន័យថាជា មូលដ្ឋានតែមួយ។ ប្រព័ន្ធមានវ័យវង្វេងគឺបញ្ជូនតាមភាពរក្សារពាត និងកំលូលៈ
| ស្ថានភាព | កន្លែងដំណើរការ |
|---|---|
| កូដ / ទិន្នន័យដែលមានអានុភាព ឬបិទភ្ជាប់ | SLM មូលដ្ឋាន |
| ការងារងាយស្រួល កំណត់ | SLM មូលដ្ឋាន (ថ្លៃថោក លឿន) |
| ការត្រួតពិនិត្យច្រើនជំហានលំបាកលើទិន្នន័យមិនសំខាន់ | គំរូមេឃ |
| អ្វីគ្រប់យ៉ាង ពេលការផ្អាក | SLM មូលដ្ឋាន (ការធ្លាក់ថយយ៉ាងរាបសារ) |
នេះតំណាងឲ្យគំនិត កំពង់ផែគំរូ ពីមេរៀន 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 ហើយធ្វើការសិក្សាតាម។ អ្នកនឹងបង្កើត ជំនួយការបច្ចេកទេសមូលដ្ឋាន ដែលដំណើរការចំពោះកុំព្យូទ័ររបស់អ្នក ហើយអាច៖
គ្មានការហៅករណីបញ្ញាសិប្បនិម្មិតមេឃណាមួយប្រើនៅពេលណាទេ។
ជំនួយការ ភ្ជាប់ទៅ Foundry Local តាមចំណុចចូលដែលសមរម្យជាមួយ OpenAI ដូច្នេះកូដភ្នាក់ងារត្រូវស្រដៀងគ្នាច្រើនជាមួយមេរៀនមេឃ — ផ្លាស់ប្តូរតែ 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 functions ធម្មតាដែលកំណត់ជួរផ្នែកលើថតគម្រោងមួយ៖
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 — ទោះបីនៅក្នុងមូលដ្ឋានក៏ដោយ ឧបករណ៍អានផ្លូវណាមួយពិតជា អាចបង្កអំពើហិង្សា។ សៀវភៅកំណត់ត្រួតពិនិត្យឲ្យឧបករណ៍ទាំងអស់នៅក្នុងកំណត់ថតគម្រោងតែមួយ។
សាកល្បងយកចំណេះដឹងរបស់អ្នកមុនចូលទៅប្រទេសការងារ។
1. ផ្តល់ហេតុផលពីរដើម្បីដំណើរការភ្នាក់ងារមូលដ្ឋានជំនួសជាមេឃ។
2. តើការបែងចែកការងារដែលណែនាំរវាង SLM និងឧបករណ៍នៅក្នុងភ្នាក់ងារមូលដ្ឋានគឺដូចម្តេច ហើយហេតុអ្វី?
3. តើអ្វីជាអ្វីដែលធ្វើឲ្យអាចប្រើវិញកូដភ្នាក់ងារមេឃជាមួយ Foundry Local?
4. ហេតុអ្វីបានជាយើងប្រើគំរូហៅមុខងារ Qwen ជាក់លាក់ មិនប្រើ SLM ណាមួយទេ?
5. ក្នុងបណ្តាញ Local RAG ឧបករណ៍ណាត្រូវដំណើរការលើម៉ាស៊ីន?
6. ម៉ាស៊ីនមេ MCP មូលដ្ឋានដំណើរការលើម៉ាស៊ីនរបស់អ្នក។ តើនោះធ្វើអោយវាសុវត្ថិដោយស្វ័យប្រវត្តិទេ? តើអ្នកត្រូវយកការប្រុងប្រយ័ត្នអ្វីបន្ថែមទៀត?
7. សូមពិពណ៌នាអំពីច្បាប់ត្រួតសម្ភាសដែលសមរម្យ ដែលរាប់បញ្ចូលគំរូមូលដ្ឋានមួយ។
8. តើតម្លៃ RAM តិចបំផុតសម្រាប់ដំណើរការភ្នាក់ងារមូលដ្ឋានក្នុងមេរៀននេះមានប៉ុន្មាន ហើយ RAM ច្រើនជួយអ្វី?
ពង្រីកជំនួយការបច្ចេកទេសមូលដ្ឋានទៅជាអ្នកពិនិត្យឯកសារមូលដ្ឋានសម្រាប់គម្រោងតូចមួយដែលអ្នកចូលចិត្ត (ប្រើថតមេរៀនមួយនៅក្នុងបណ្ណដា repo នេះ បើអ្នកចូលចិត្ត)។
ការដាក់ស្នើរបស់អ្នកគួរតែ៖
ដាក់ឧបករណ៍ find_todos ដែលស្កេនគម្រោងសម្រាប់ចំណាំ TODO/FIXME ហើយបញ្ចូនជាមួយឈ្មោះឯកសារ និងលេខខួប — រក្សាការត្រួតពិនិត្យ sandbox ដូច read_file។
បន្ទាប់មកសរសេរបថ្ចេកខ្លីអំពី អ្វីដែលអ្នកនឹងផ្លាស់ប្តូរទៅក្នុងពពក និងអ្វីដែលអ្នកនឹងរក្សាទុកក្នុងកន្លែងក្នុងម៉ាស៊ីន សម្រាប់អ្នកពិនិត្យនេះ ហើយហេតុអ្វី។ អ្នកត្រូវបានវាយតម្លៃថា ឧបករណ៍ក្នុងកន្លែងត្រូវបានភ្ជាប់គ្នាឲ្យត្រឹមត្រូវ និងតើការត្រួតពិនិត្យចម្រុះរបស់អ្នកគួរឱ្យទុកចិត្ត ឬ មិនមែនលើគុណភាពម៉ូឌែលទេ។
ក្នុងមេរៀននេះ អ្នកបានបង្កើតអ្នកប្រតិបត្តិការដែលដំណើរការបំពេញនៅលើម៉ាស៊ីនរបស់អ្នកដោយផ្ទាល់:
នេះបញ្ចប់ដំណើរផ្សាយផ្សងបន្តរណ៍ ៖ មេរៀនទី១៦ បានពង្រីកភ្នាក់ងារទៅកាន់ Microsoft Foundry, ហើយមេរៀននេះបានថយចុះទៅលើកុំព្យូទ័រតែមួយ។ មេរៀនបន្ទាប់នឹងផ្ដោតទៅលើការជួយការពារភ្នាក់ងារដែលបានផ្សាយ។
ការចេញផ្សាយភ្នាក់ងារដែលអាចប្រើបានធំទូលាយ
ការការពារភ្នាក់ងារបច្ចេកវិទ្យាបញ្ញាសិប្បនិម្មិត្ត
ការបដិសេធ: ឯកសារនេះត្រូវបានបម្លែងភាសា ដោយប្រើសេវាបម្លែងភាសា AI Co-op Translator។ ទោះយើងខ្ញុំមានក្តីប្រាថ្នាឱ្យបានច្បាស់លាស់ តែសូមយល់ដឹងថាការបម្លែងដោយស្វ័យប្រវត្តិក៏អាចមានកំហុសឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមជាភាសាទីតាំងគួរត្រូវបានគេប្រើជាប្រភពច្បាស់លាស់។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំឱ្យប្រើប្រាស់ការប្រែដោយមនុស្សជំនាញ។ យើងខ្ញុំមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុសបន្ទាប់ពីការប្រើប្រាស់ការបម្លែងនេះនោះទេ។