![]()
Somo lililopita lilipanua maajenti hadi kwenye wingu. Hili linaelekeza maajenti hao chini kwenye kompyuta moja. Mwishoni utakuwa na msaidizi wa uhandisi anayefanya kazi anayeweza kufikiria, kuitisha zana, kusoma faili zako, na kutafuta nyaraka zako — bila kuita moja ya maamuzi ya wingu.
Kwa nini ungependa hivyo? Sababu tatu zinazojitokeza mara kwa mara katika kazi halisi za uhandisi:
Changamoto ni kwamba unabadilisha mfano wa wingu wa kisasa kwa Mfano Mdogo wa Lugha (SLM) unaotumia CPU, GPU, au NPU yako. Somo hili ni kuhusu kujenga maajenti ambayo ni mazuri ndani ya kikomo hicho badala ya kudanganya kama kikomo hicho hakipo.
Somo hili litajumuisha:
Baada ya kumaliza somo hili, utajua jinsi ya:
Somo hili linadhani umeamaliza masomo ya awali na umezoea:
Pia utahitaji:
requirements.txt, pamoja na foundry-local-sdk, openai, na chromadb kwa somo hili.Mfano wa wingu wa kisasa una mabilioni ya parameters na kituo cha data nyuma yake. SLM ina mabilioni machache ya parameters na lazima ifanye kazi kwenye RAM ya kompyuta ya mkononi. Tofauti hiyo inaweka matarajio wazi.
SLMs ni nzuri kwa:
SLMs ni dhaifu katika:
Mkakati bora kwa maajenti wa ndani ni: ruhu SLM ipange mpango, na zana zifanye kazi nzito. Mfano hauhitaji kujua msimbo wako — unahitaji kujua lini kuita read_file na search_docs. Hii inaonyesha nguvu za SLM moja kwa moja.
flowchart LR
U[Mtaalamu wa Maendeleo] --> A[Wakala wa SLM wa Mitaa]
A -->|huamua chombo gani| T1[soma_faili]
A -->|huamua chombo gani| T2[tafuta_nakala RAG]
A -->|huamua chombo gani| T3[chambua_msimbo]
T1 --> A
T2 --> A
T3 --> A
A --> R[Jibu, kikamilifu kwenye kifaa]
Microsoft Foundry Local ni runtime nyepesi inayopakua, kudhibiti, na kuhudumia modeli zote kwenye kompyuta yako. Kipengele chake muhimu zaidi kwetu ni kwamba kinaonyesha endpoint ya HTTP inayolingana na OpenAI — ambayo inamaanisha SDK ya OpenAI na mteja wa Microsoft Agent Framework hufanya kazi nayo kwa kubadilisha tu base_url. Kila kitu ulichojifunza kuhusu kujenga maajenti kinahamisha moja kwa moja; endpoint tu inahamia kutoka wingu hadi localhost.
Foundry Local pia huchagua toleo bora la mfano kwa vifaa vyako moja kwa moja — toleo la CPU, toleo la CUDA/GPU, au toleo la NPU — hivyo huna haja ya kuboresha kwa mikono kwa kila kompyuta.
Sakinisha Foundry Local (angalia nyaraka kwa mfumo wako wa uendeshaji), kisha thibitisha inafanya kazi:
# Sakinisha (mfano; fuata nyaraka za jukwaa lako)
winget install Microsoft.FoundryLocal # Windows
# brew install microsoft/foundrylocal/foundrylocal # macOS
# Pakua na endesha mfano wa Qwen, kisha anzisha huduma ya ndani
foundry model run qwen2.5-7b-instruct
foundry service status
Mara huduma inapokuwa hai, una endpoint ya ndani inayolingana na OpenAI (kawaida http://localhost:PORT/v1). Daftari la maelezo hutumia foundry-local-sdk kugundua endpoint moja kwa moja, hivyo hautaji kuweka nambari ngumu ya bandari.
Msaidizi ni msaidizi tu kama anaweza kuitisha zana. SLM nyingi zinaweza kuzungumza lakini hutengeneza simu za zana zisizoaminika, zenye muundo mbaya. Qwen modeli zafundishwa kuitisha kazi na hutolewa kwa miundo ya simu za zana zilizoeleweka kila wakati — ambayo ni hasa kinachofanya mfano wa mazungumzo wa ndani kuwa msaidizi wa ndani.
Mzunguko ni kama wa kawaida wa kuitisha zana uliyojua, unaofanya kazi kwenye kifaa:
sequenceDiagram
participant U as Mtumiaji
participant A as Wakala wa Qwen (mtaa)
participant T as Zana ya Mtaa
U->>A: "auth.py hufanya nini?"
A->>A: Amua: piga read_file
A->>T: read_file("auth.py")
T-->>A: maudhui ya faili
A->>A: Fikiria kuhusu maudhui
A-->>U: Maelezo
Utafutaji wa nyaraka ndio mahali ambapo maajenti wa ndani hupata thamani yao. Badala ya kutegemea SLM kuhubiri nyaraka za mfumo wako, unajumuisha nyaraka hizo kwenye hifadhidata ya vektor ya ndani na unampa msaidizi uwezo wa kutafuta vipande vinavyohitajika wakati wowote.
Tunatumia Chroma, hifadhidata iliyojumuishwa ya vektor inayoendesha ndani bila seva ya kusimamia. Mlolongo ni wa ndani kabisa: mfano wa kuingiza ndani → vekta za ndani → upatikanaji wa ndani → SLM wa ndani.
flowchart TB
D[Hati / msimbo wako] --> E[Mfano wa uingizaji wa eneo]
E --> V[(DB ya vector ya Chroma - kwenye diski)]
Q[Swali la wakala] --> QE[Ingiza swali kwa karibu]
QE --> V
V -->|vipande vya juu-k| A[Wakala wa Qwen]
A --> Ans[Jibu lililo thabiti]
Hii ni muundo sawa wa Agentic RAG kutoka Somo 5 — mabadiliko pekee ni kwamba kila sehemu inaendesha kwenye kompyuta yako.
MCP ni usafirishaji, si huduma ya wingu. Seva ya MCP inaweza kuendesha kama mchakato wa ndani kwa stdio, ikionesha zana kwa msaidizi wako kupitia itifaki ya kawaida. Hii inakuwezesha kutumia upya mfumo unaokua wa seva za MCP — upatikanaji wa faili, shughuli za git, maswali ya hifadhidata — zote bila mtandao.
Usalama ni tofauti na wingu, lakini sio hana kabisa: seva ya MCP ya ndani bado inaendesha kwa ruhusa za mtumiaji wako, kwa hivyo weka mipaka ya kile inaweza kugusa (kabrasha la mradi, si folda yako yote ya nyumbani) na chukulia matokeo yake kama ingizo la kuthibitisha.
Kwanza ndani haimaanishi tu ndani. Mifumo imara hupeleka kazi kulingana na unyeti na ugumu:
| Hali | Mahali inayoendeshwa |
|---|---|
| Kanuni/data nyeti, au bila mtandao | SLM ya Ndani |
| Kazi rahisi, zilizopangwa | SLM ya Ndani (ghali nafuu, haraka) |
| Kufikiri kwa hatua nyingi katika data isiyo nyeti | Mfano wa Wingu |
| Yote, wakati wa tatizo | SLM ya Ndani (upungufu wa heshima) |
Hii inalingana na wazo la kupelekwa kwa modeli kutoka Somo 16 — isipokuwa moja ya “modeli” ni kompyuta yako mwenyewe. Ubunifu thabiti hurudi kwa ndani wakati wingu likipatikana, hivyo msaidizi hupungua kwa heshima badala ya kushindwa kabisa.
flowchart LR
Q[Ombi] --> S{Ni nyeti au hauko mtandaoni?}
S -->|ndiyo| L[SLM ya ndani]
S -->|hapana| C{Inahitaji uelewa wa kina?}
C -->|hapana| L
C -->|ndiyo| Cloud[Mfano wa wingu]
L --> Out[Jibu]
Cloud --> Out
Fungua code_samples/17-local-agent-foundry-local.ipynb na fanya kazi nayo. Utajenga msaidizi wa uhandisi wa ndani anayeendesha kazi zote kwenye kompyuta yako na anaweza:
Hakuna uamuzi wowote wa wingu unaotumiwa wakati wowote.
Msaidizi unaunganishwa na Foundry Local kupitia endpoint inayolingana na OpenAI, hivyo msimbo wa maajenti unaonekana karibu sawa na masomo ya wingu — mteja tu hubadilika:
from foundry_local import FoundryLocalManager
from openai import OpenAI
# Foundry Local hugundua/hupakua mfano na hutupatia sehemu ya kuingilia ya ndani.
manager = FoundryLocalManager(\"qwen2.5-7b-instruct\")
client = OpenAI(base_url=manager.endpoint, api_key=manager.api_key) # api_key ni kielekezi cha ndani
Zana ni kazi za kawaida za Python zilizo na uwezo wa kufikia kabrasha la mradi:
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\")
Angalia ukaguzi wa sandbox — hata ndani, zana inayosoma njia zisizojulikana ni hatari. Daftari linaweka kila zana kuwa na mipaka ya mzizi wa mradi mmoja.
Jaribu uelewa wako kabla ya kuendelea na kazi.
1. Toa sababu mbili halisi za kuendesha msaidizi kwa ndani badala ya kwenye wingu.
2. Gawanya kazi kati ya SLM na zana zake kwa maajenti wa ndani kwa nini?
3. Ni nini kinachowezesha kutumia tena msimbo wa maajenti wa wingu kwa Foundry Local?
4. Kwa nini tunatumia mfano wa kuitisha kazi wa Qwen badala ya SLM yoyote?
5. Katika mlolongo wa RAG ya ndani, ni vipengele gani vinaendesha kwenye kompyuta?
6. Seva ya MCP ya ndani inaendesha kwenye kompyuta yako. Je, inafanya iwe salama moja kwa moja? Ni tahadhari gani bado unapaswa kuchukua?
7. Eleza kanuni nzuri ya kupitisha kazi mseto inayojumuisha mfano wa ndani.
8. Ni kiasi gani cha chini cha kweli cha RAM kinachohitajika kuendesha msaidizi wa ndani katika somo hili, na RAM zaidi inakuuzaje?
Panua msaidizi wa uhandisi wa ndani hadi mchanganuzi wa nyaraka wa ndani kwa mradi mdogo wa uchaguzi wako (tumia moja ya folda za somo katika repozitori hii kama unavyotaka).
Kitoo chako kinafaa:
Ongeza zana ya find_todos inayotafuta maoni ya TODO/FIXME kwenye mradi na kuyarudisha pamoja na faili na nambari ya mstari — ukiweka ukaguzi sawa wa sandbox kama read_file.
Kisha andika aya fupi kuhusu ambacho utakigeuza kuwa wingu na ambacho utaweka mahali hapa kwa hakiki hii, na kwanini. Utapimwa jinsi vipengele vya mahali hapa vinavyounganishwa ipasavyo na kama hoja yako ya mseto ni thabiti — si ubora wa mfano.
Katika somo hili uliunda wakala anayekimbia kabisa kwenye mashine yako mwenyewe:
Hii inakamilisha mzunguko wa uanzishaji: Somo la 16 liliongezea wakala hadi Microsoft Foundry, na somo hili linapunguza hadi kwenye terminal moja. Somo lijalo linahusu usalama wa wakala waliowezeshwa.
Kutumia Wakala Wanaoweza Kuwekwa Kwenye Kiwango Kikubwa
Kionyozo: Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI Co-op Translator. Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii.