![]()
Somo lililopita lilipanua maajenti hadi wingu. Hili linawaweka chini kwenye mashine moja. Mwisho utakuwa na msaidizi wa uhandisi anayefanya kazi anayefikiria, anaita zana, husoma faili zako, na kutafuta nyaraka zako — bila wito hata mmoja wa inference kwenye wingu.
Kwa nini ungependa hilo? Sababu tatu zinazoibuka mara kwa mara katika kazi halisi za uhandisi:
Jambo la kuchukua ni kwamba unabadilisha mfano wa wingu wa kiwango cha juu kwa Mfano Mdogo wa Lugha (SLM) unaoendesha kwenye CPU, GPU, au NPU yako. Somo hili linaangazia kujenga maajenti ambao ni wazuri ndani ya kikomo hicho badala ya kudanganya kuwa kikomo hakipo.
Somo hili litashughulikia:
Baada ya kumaliza somo hili, utajua jinsi ya:
Somo hili linadhani umemaliza masomo ya awali na unajua:
Pia utahitaji:
requirements.txt, pamoja na foundry-local-sdk, openai, na chromadb kwa somo hili.Mfano mkubwa wa wingu una parameta mamia ya bilioni na kituo cha data nyuma yake. SLM ina parameta chache bilioni na inapaswa kuendeshwa kwenye RAM ya kompyuta yako ya kubebeka. Tofauti hiyo huweka matarajio wazi.
SLMs ni nzuri kwa:
SLMs ni dhaifu kwa:
Mkakati wa kushinda kwa maajenti wa ndani ni: uwaache SLM kuratibu, na ziache zana zikamilishe kazi kubwa. Mfano hauhitaji kujua msimbo wako — unahitaji kujua wakati wa kuita read_file na search_docs. Hii inalingana na nguvu za SLM.
flowchart LR
U[Mtaalamu wa Maendeleo] --> A[Wakala wa SLM wa Mitaa]
A -->|anaamua chombo gani| T1[soma_faili]
A -->|anaamua chombo gani| T2[tafuta_hati RAG]
A -->|anaamua chombo gani| T3[chambua_msimbo]
T1 --> A
T2 --> A
T3 --> A
A --> R[Jibu, kikamilifu kwenye kifaa]
Microsoft Foundry Local ni runtime nyepesi inayopakua, kusimamia, na kuhudumia mifano kabisa kwenye mashine yako. Kipengele chake muhimu kwetu ni kwamba huweka wazi kiunganishi cha HTTP kinacholingana na OpenAI — maana yake ni SDK ya OpenAI na wateja wa Microsoft Agent Framework wanaweza kuifanya kazi kwa kubadilisha tu base_url. Kila kitu ulichojifunza kuhusu kujenga maajenti kinaelekezwa moja kwa moja; kiunganishi tu ndicho kinachobadilika kutoka wingu hadi localhost.
Foundry Local pia huchagua ujenzi bora wa mfano kwa vifaa vyako moja kwa moja — ujenzi wa CPU, ujenzi wa CUDA/GPU, au ujenzi wa NPU — kwa hiyo huna haja ya kuboresha kila mashine kwa mkono.
Sakinisha Foundry Local (angaliza nyaraka kwa OS yako), 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 anza huduma ya hapa hapa
foundry model run qwen2.5-7b-instruct
foundry service status
Mara huduma inaendesha unapata kiunganishi cha ndani kinacholingana na OpenAI (kawaida http://localhost:PORT/v1). Daftari la maelezo linatumia foundry-local-sdk kugundua kiunganishi moja kwa moja, kwa hiyo hutalazimika kuandika nambari ya bandari kikaboni.
Ajenti ni ajenti tu ikiwa anaweza kuitwa zana. SLM nyingi zinaweza kuzungumza lakini kutoa wito wa zana usioaminika na wenye muundo mbaya. Mifano ya Qwen imetengenezwa kwa kuitwa kazi na kutoa muundo mzuri wa wito wa zana mara kwa mara — ndiyo hasa inavyoifanya mfano wa mazungumzo wa ndani kuwa ajenti wa ndani.
Mzunguko ni wa kawaida wa kuweka wito wa zana unayojua, tu ukifanyika kifaa ndani:
sequenceDiagram
participant U as Mtumiaji
participant A as Wakala wa Qwen (mitaa)
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 juu ya maudhui
A-->>U: Maelezo
Utafutaji nyaraka ndio sehemu maajenti wa ndani hupata thamani yao. Badala ya kutegemea SLM kukumbuka nyaraka za mfumo wako, unaweka nyaraka hizo kwenye hifadhidata ya vector ya ndani na kumruhusu ajenti kurudisha sehemu husika anapohitaji.
Tunatumia Chroma, duka la vector lililo ndani linaloendesha kwa pamoja bila seva ya kusimamia. Mchoro mzima ni wa ndani kabisa: mfano wa embedding wa ndani → vector za ndani → upataji wa ndani → SLM ya ndani.
flowchart TB
D[Nyaraka / msimbo wako] --> E[Mfano wa ufungaji wa ndani]
E --> V[(Chroma vector DB - kwenye diski)]
Q[Swali la wakala] --> QE[Weka swali ndani ya mfumo]
QE --> V
V -->|vipande bora-k| A[Wakala wa Qwen]
A --> Ans[Jibu lililo thibitishwa]
Hii ni mfano sawa wa Agentic RAG kutoka Somo 5 — mabadiliko pekee ni kwamba kila kipengele kinaendesha kwenye mashine yako.
MCP ni usafirishaji, si huduma ya wingu. Seva ya MCP inaweza kuendesha kama mchakato wa ndani kwenye stdio, ikionyesha zana kwa ajenti yako kupitia itifaki ya kawaida. Hii inakuwezesha kutumia mifumo inayokua ya seva za MCP — upatikanaji wa mfumo wa faili, operesheni za git, kuulizia hifadhidata — kabisa bila mtandao.
Hali ya usalama ni tofauti na wingu, lakini haiko mbali: seva ya MCP ya ndani bado inaendesha na ruhusa za mtumiaji wako, kwa hiyo fikia kile inaweza kugusa (direktori ya mradi, sio folda yako yote nyumbani) na chukua mazao yake kama ingizo la kuangalia kabla ya kutenda.
Kwanza ni kwa ndani si kwamba ni kwa ndani tu. Mifumo imara huandaa kulingana na hali na ugumu:
| Hali | Wapi inaendesha |
|---|---|
| Msimbo / data nyeti, au kutokuwa mtandaoni | SLM ya Ndani |
| Kazi rahisi na iliyojumlishwa | SLM ya Ndani (gharama nafuu, haraka) |
| Mantiki ngumu ya hatua nyingi kwenye data isiyo nyeti | Mfano wa Wingu |
| Kila kitu, wakati hitilafu | SLM ya Ndani (kuharibika kwa heshima) |
Hii inafanana na wazo la uuratibu wa mfano kutoka Somo 16 — isipokuwa mmoja wa “mifano” sasa ni mashine yako. Muundo thabiti huhama ndani inaposhindwa wingu, kwa hiyo ajenti hupungua ubora badala ya kushindwa kabisa.
flowchart LR
Q[Ombi] --> S{Nyeti au nje ya mtandao?}
S -->|ndiyo| L[SLM ya Mtaa]
S -->|hapana| C{Inahitaji mantiki ya 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 ifanyie kazi. Utajenga msaidizi wa uhandisi wa ndani anayefanya kazi kabisa kwenye eneo lako la kazi na anaweza:
Hakuna inference ya wingu inayotumika wakati wowote.
Msaidizi huungana na Foundry Local kupitia kiunganishi kinacholingana na OpenAI, kwa hiyo msimbo wa ajenti unaonekana karibu sawa na somo la wingu — mteja tu anabadilika:
from foundry_local import FoundryLocalManager
from openai import OpenAI
# Foundry Local hugundua/hupakua mfano na hutupa nukta ya mwisho ya ndani.
manager = FoundryLocalManager(\"qwen2.5-7b-instruct\")
client = OpenAI(base_url=manager.endpoint, api_key=manager.api_key) # api_key ni nafasi ya msingi ya ndani
Zana ni kazi za kawaida za Python zilizo na wigo wa direktori ya 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\")
Kumbuka ukaguzi wa sandbox — hata ndani, zana inayosoma njia za faili yoyote ni hatari. Daftari linahakikisha kila zana ina wigo wa mzizi wa mradi mmoja.
Jaribu kuelewa kabla ya kuendelea na kazi.
1. Toa sababu mbili halisi za kuendesha ajenti kwa ndani badala ya wingu.
2. Mgawanyo wa kazi unaopendekezwa kati ya SLM na zana zake katika ajenti wa ndani ni ule gani, na kwa nini?
3. Nini kinachowezesha kutumia upya msimbo wa ajenti wa wingu na Foundry Local?
4. Kwa nini tunatumia mfano wa kuitwa kazi wa Qwen badala ya SLM yoyote?
5. Katika pipeline ya RAG ya ndani, ni vipengele gani vinaendesha kwenye mashine?
6. Seva ya MCP ya ndani inaendesha kwenye mashine yako. Je, hiyo inafanya ipatikane salama kiotomatiki? Ni tahadhari gani bado unapaswa kuchukua?
7. Eleza kanuni ya usafirishaji mchanganyiko inayojumuisha mfano wa ndani.
8. Ni kiasi gani cha chini cha RAM kinachofaa kwa kuendesha ajenti wa ndani katika somo hili, na RAM zaidi inakupa nini?
Panua msaidizi wa uhandisi wa ndani kuwa mkaguzi wa nyaraka za ndani kwa mradi mdogo wa chaguo lako (tumia moja ya folda za somo za repo hii kama unataka).
Uwasilishaji wako unapaswa:
Ongeza zana ya find_todos inayosaka maelezo ya TODO/FIXME katika mradi na kuyarudisha pamoja na safu ya faili na nambari ya mstari — ukihifadhi ukaguzi huo wa sandbox kama ilivyo read_file.
Kisha andika aya fupi kuhusu nini ungehamisha kwenda wingu na nini ungebaki eneo la karibu kwa mkaguzi huyu, na kwanini. Utapimwa kama vipengele vya eneo la karibu vimeunganishwa vizuri na kama uamuzi wako mchanganyiko ni mzuri — si ubora wa mfano.
Katika somo hili ulijenga wakala anayeendesha kikamilifu kwenye mashine yako mwenyewe:
Hii inakamilisha mzunguko wa utekelezaji: Somo la 16 liliinua wakala hadi Microsoft Foundry, na somo hili liliwapunguzia kwenye workstation moja. Somo lifuatalo linahusu jinsi ya kuzuia wakala waliotekelezwa.
Kuweka Wakala Wanaoweza Kupandishwa
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.