Шлюз және айналмалы қозғалтқыш
AiHummer-дің жүрегі бір ғана шлюз қызметі. Бұл бір уақытта басқару жазықтығы (әкімші API, баптаулар, арна сымдары, нарық) және қозғалтқышты қосуды бұру (жауап шығаратын функция шақыру тізбегі). Сондықтан типтік орналастыру тек сол бір қызмет пен PostgreSQL ғана — сізге бөлек жұмысшы деңгейін іске қосу міндетті емес.
Бір қызмет, екі рөль
Ғаламтор қақпасы тыңдайды қоғамдық порт :8780 әдепкі бойынша, бақыланатын AIHUMMER_GATEWAY_ADDR — бұл порт барлық сыртқы трафикті өңдейді (API, жұптау, WS/SSE, кіріс вебхуктар, қосымша/қалта проксиі және денсаулық бақылаулары). Әкімші веб-интерфейсі жұмыс істейді дара, жекеше тыныс алушы (әдепкі) :8781, AIHUMMER_WEBUI_ADDR), түбір жолында қызмет көрсетілді / және идеалды жағдайда тек ішкі интерфейске байланған. Қалай болғанда да, процесс әрқашан бірдей бір қызмет болып табылады.
# gateway.env — the only required setting
AIHUMMER_DATABASE_URL=postgres://user:pass@localhost:5432/aihummer?sslmode=disable
# Admin Web UI after start at http://localhost:8781/ (the private Web UI listener)
Бұл тек қатты тәуелділік PostgreSQL. Postgres агенттер, параметрлер, әңгімелер, жады, жеткізу күйі және аудит үшін жалғыз дәлел көзі болып табылады. Барлығы басқа — қосымша қызметтер, векторлық сақтау және модель провайдерлері — тек сіз оны баптаған кезде қосылады.
[!NOTE] Деректер қоры болмаса, шлюз іске қосылады тек денсаулық режимі: ол жауап береді
GET /healthzсондықтан ұйымдастырушы немесе жүктемені теңгеруші процесті көре алады тірі, бірақ ол ешқандай қызмет етпейді.GET /readyzPostgreSQL тексереді және қайтарады503мәліметтер қоры қол жетімсіз болғанда.
Бастапқы жүктеу кезінде не болады
Жүйе іске қосылғанда шлюз бірнеше қадамдарды қатаң тәртіппен орындайды:
- мәліметтер қорының қосылым кешенін ашады,
- Postgres кеңесші құлыпта кезектегі миграцияларды қолданады,
- конфигурацияны шешеді (дерекқор мәні → қоршаған орта айнымалысы → кірістірілген) әдепкі), және
- қызметтерді біріктіреді — маршрутизатор, оркестратор, арналары, құралдар, жад, жеткізу — жұмыс істеп тұрған шлюзге.
Маңызды салдары мынада көптеген функцияларды параметрлер кілті арқылы қосуға болады. Бапталмаған мүмкіндік тек іске қосылмайды, бұл әдепкі орындалу уақытын кіші және болжамды етеді. Сіз оны веб-әкімші интерфейсінен немесе AIHUMMER_* айнымалы, және шлюз оларды келесі іске қосқанда (немесе оны қолдайтын бұранда үшін ыстық режимде) шешеді.
Айналу қозғалтқышы
Хабар шлюзге жеткенде, айналдыру қозғалтқышы басқарады. Ол іске қосылады функция шақыру циклі: модельге жүйелік пәрмен мен әңгімені береді, ол құралдарды шақыра алады (немесе қосалқы агенттерді туғызады), әр құралдың нәтижесі кері байланыс ретінде беріледі, және цикл модель соңғы жауап шығаратынға дейін жалғасады. Сол жауап кейін жеткізу қабатына беріледі.
inbound message
└─▶ turn engine
├─ assemble layered system prompt
├─ call model ──▶ tool calls / sub-agents ──▶ tool results ─┐
│ ▲ │
│ └────────────────────────────────────────────────-─┘
└─ final answer ─▶ reliable delivery ─▶ originating channel
Цикл әрбір кірістің қайдан келетініне қатысты детерминистік болғандықтан, жауаптар әңгіме тарихынан және құрал нәтижелерінен шешіледі — нұсқауларға сенімсіз мәтінді енгізу арқылы емес. Бұл қасиет төмендегі сұрау қабаттастыруды қауіпсіз әрі жылдам ететін нәрсе.
Қабатты, кэшке ыңғайлы жүйелік нұсқау
Жүйелік пәрмен бір бүтін емес. Ол қабаттар бойынша құрастырылады, мақсатты түрде реттелген, сонда тұрақты бөліктер алдымен келеді, ал тұрақсыз бөліктер соңында келеді. Бұл маңызды, өйткені модельді жеткізушілер сұранысты оның префиксі бойынша кэштейді: сұраныстың басы дәл байт бойынша бірдей болған жағдайда, кэштелген префикс қайта қолданылады және тек соңғы бөлігі қайта өңделеді.
| Аймақ | Қабаттар (реттілігі бойынша) | Өзгерістер… |
|---|---|---|
| Тұрақты префикс (кэштеуге болатын) | негізгі сәйкестілік + құрал/есептеу нұсқаулығы → жалгер → персона → дағдылар | сирек — агент/тұрақкер үшін |
| Тұрақсыз құйрық (соңына қосылды) | жұмысқа қабылдау жағдайы → жадты толықтыру → тірі күн | әр бұрылыста |
Тұрақты префикс агенттің кім екендігін анықтайтын барлық нәрсені қамтиды: ендірілген идентификатор мен құралдар мен жадының қалай жұмыс істейтінін көрсететін нұсқаулық, содан кейін тұрғын қабаты, агенттің тұлғасы және көрсетілген дағдылар блогы. Бұл нәрсенің ешқайсысы бір агенттің екі қатар келетін әрекетінде өзгермейді, сондықтан ол қайта қолданылатын кэштелген префиксті құрайды.
Тұрақсыз құйрық қосылды кейін кеңейткіш префикс дәл солай, сондықтан ол ешқашан кэшті жарамсыз етпейді: кіріспе күйі, осы нақты әңгіме үшін енген жады және ағымдағы күн әр айналым сайын өзгерсе де, олар соңында тұрғандықтан тек қосатын нәрсесі үшін ғана шығындалады.
[!TIP] Осы реттеу бүгінгі күн сияқты нақты деректердің болуының себебі болып табылады әрбір бұрылысты барлық тұлғаны қайта кодтамай-ақ жасау. Ұста тұрақты қабаттардағы әр агентке арналған жеке мазмұн (персона, дағдылар) және беруге қозғалтқыш өзгермелі құйрықты басқарады.
Келесі қайда
- Жалға алушылардың қалай оқшауланғанын көріңіз Көпқабатты және идемпотенттік.
- Жауаптардың қалай қайтарылатынын үйреніңіз Сенімді жеткізу және қалпына келтіру.
- Міндетті емес мүмкіндіктер ретінде іске қосылады Сайдкарлар.