Галоўная / Артыкулы / Практычныя прытамулі: Роз'яснення прыроды агентных сетак: масштабаванне AI-агентаў і LLM-аў

Практычныя прытамулі: Роз'яснення прыроды агентных сетак: масштабаванне AI-агентаў і LLM-аў

Практычныя прыказкі: Раз’яснення прынцыпа агентных сетак: масштабаванне AI-агентаў та LLM-аў для выкарыстоўвання ў контрактах, пераказах та спецыяльных слотах для коду, якія можна включыць у проекты команд, якія выкарыстоўваюць гэты патэрн.

2055 слоў

У гэтым керавані зноў ствараецца парадокс ад сыр'ёў да рабочай системы для: Раскрыць таінства агентных сетак: масштабаванне AI-агентаў і LLM-аў на Kubernetes. Акцэнт ставіцца на практычныя крокі, чыстае перакананне і код, які можна проста дадаць у репазітарый без неабязковасці здогадвацца пра мету. У стадзіі агледжэння неабходна практычна з'явіць вхідныя даны, адпаведальнага за крок і критэрыя завершэння прычымоў перад зменай коду. Аператары должны магчымае перадзвігнуць крок з вядомага пункта контролю без неабязковасці здогадвацца пра схованы стан. Неабходна адразу задокументаваць як шлях успеху, так і шлях вяснавання. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.

Асновныя перашкоды у працэўнай агентной AI

Калі працюеце над раздзелам «The Core Bottlenecks», спачатку запісайце умовы кантракту: неабяжлівыя даны, сигнал успеху і тое, што выходзіць пад частковыя аберанціі. Такі список контроля дапамагае залічыць змяны ў кодзе адпаведна. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, аберанцыя должна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Зберагаеце у кэшы стабільныя інструкцыі системы і схемы інструментаў. Перадзесланне ідэнтычных даных — частая прычына зайвага навантажэння.

Пазнайоміцеся з Stack: план агентскага сеткавага структура

Калі працуеце над этапам «Meet the Stack», спачатку запісайце контракт: неабяжлівыя даннэ, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список перакладзець пазнейшыя змены коду ў правільны направленні. Спрэцьвуйце да гэтага этапу як да контракту межа даннемі і перакананымі выходамі. Дайце назвы артыфактам, задаце критэрыя успеху і не падзволяйце частковаму завершэнню без паведамлення. Зберагаце ў кэшы стабільныя інструкцыі системы і схемы інструментаў. Перадача таго ж прамэра знову є частым выклікам расходавання ресурсаў.

1. kagent: Час адработкі агента

Калі працуеце над стадзіяй 1 kagent The Agent, спачатку запісайце умовы кантракту: неабяжлівыя даны, сигнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список дапамагае заліцьваты пазнейшыя змены коду.

2. agentgateway: Поліцая трафіку

Этап Traffic у агент-гейтвэя працюе найкраща, калі яго розглядаць як вимерную плошчу. Зафіксавце адзін ідеальны прымер работы, адзін кейс неудачы і запіс працэй па адвярненню, перш чым расширваць масштабы. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказваць на адзін конкрэтны элемент, а не на заплутаны ланцюг задач. Задаце ліміт токенав на кожны рунг і на кожную сесыю. Агентскія інструменты агрэсывна расширваюць контекст; строгі ліміты не дазволяюць дэм-версіям ператварыцца на неспакоўныя рахункі.

3. llm-d: Раздзелвальнік заваноў

Этап работы з трэйнаванням LLM-модэляў работае наякша, калі яго спрыяваць як мерыемую плошчу. Запісаўце адны ідеальны прыклад роботы, адны прыклад неудачы і прыметку па поверненню да пярвінскага стану пры розшырэнні масштаба. Спрыявайце гэты этап як кантракт межа вхіднымі дадзеннямі і паверыцельнымі выходамі. Даўце назвы артыфактам, задаце критэрыя успеху і адмовіцеся ад мовчанкавага частковага завершэння задачы. Задзеце бюджет токенаў на кожны раунд і на кожную сесію. Інструменты з агентнымі функцыямі агрэсывна расширваюць контекст; строгі ліміты не дазволяюць дэманстрацыям ператварацца на неспакоючыя рахункі.

4. vLLM: Сіла GPU

У раундзе 4 vLLM з GPU апаратным засобам лучша праця, калі ўваходзіць у расчытны прастор. Перш чым расширваць масштаб, зафіксавайце адны ідеальны прыклад роботы, адны прыклад неудачы і запіс пра вярнэнне да поперадньего стану.

1. Архітектура системы

У стадії 1 «Архітектура системы» неабяцо практычна вказаць інпуты, адміністратара крока та крэтыяры завершэння пры зміне коду. Аперацыйныя працавнікі павінны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшаў, прычына неудачы павінна вказываць на адну адпаведальнасць, а не на заплутаны ланцюг задач. Калі наступны крок — це код або вызов інструмента, лепш выбіраць структураваныя выходны данні з пераканальванням схемы замест вольнага формата тэксту.

У сутнасці: обробка запыту ў сетцы

Для стадіі обробкі падынутых дадзейнаў неабходна перад змянай коду адначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння. Аперацыяныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяйце цій стадіі як даговору межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, адначыць перакананні на успех і не прымайце часткова завершаныя рэзультаты без паведамлення. Калі наступны крок — це код або вызов інструмента, валідаванне за дапамою схемы лепша, чым вольная форма тэксту, для структураваных выходных дадзейнаў.

2. Установка кантролераў і CRD

Для стадіі 2 «Установка кантролераў CRDs» неабходна пазначыць вхідныя даны, адпаведальнага за этап і крэтыры завершэння пры перадзеі коду. Аперацыйныя працавнікі должны магчымае перайсці на гэты этап з вядомага пункта контролю, не спрабоўваючы здагадвацца пра захаваны стан. Запісвайце час выконання і вартасць токена або запыту разам з функцыйнальнымі рэзультатамі. Відразліва візуабільнасць вартасцей запобегае неспакоўным рахункам, калі процес пераходзіць з дэмовай среды ў спакульнаныя сераўеры. Калі наступны этап — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з перакананнем схэмы, чым вольныя тэкстовыя описы. Для стадіі 2 «Установка кантролераў CRDs» неабходна пазначыць вхідныя даны, адпаведальнага за этап і крэтыры завершэння пры перадзеі коду. Аперацыйныя працавнікі должны магчымае перайсці на гэты этап з вядомага пункта контролю, не спрабоўваючы здагадвацца пра захаваны стан. Адначасова задокументавайце шлях успеху і шлях вярнення. Перапрыбуткі, людзкі контроль і обработка некоректных паведамленняў є частью продукту, а не елементамі, якія дадаюцца пазней.

# 1. Install Kubernetes Gateway API & Inference Extension CRDs
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.5.0/standard-install.yaml
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api-inference-extension/releases/download/v0.1.0/manifests.yaml

# 2. Add Helm Registries
helm repo add agentgateway oci://cr.agentgateway.dev/charts
helm repo add kagent https://charts.kagent.dev
helm repo update

# 3. Install agentgateway (Control & Data Plane)
helm upgrade -i agentgateway-crds agentgateway/agentgateway-crds -n agentgateway-system --create-namespace
helm upgrade -i agentgateway agentgateway/agentgateway -n agentgateway-system

# 4. Install kagent (Agent Runtime)
helm upgrade -i kagent kagent/kagent -n kagent-system --create-namespace

3. Развертанне інфраструктуры для вычыслення на GPU (vLLM & llm-d)

Калі працуеце над 3-й стадзіяю развертання на GPU, спачатку запісайце шаблон: неабяжлівыя даннэ, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі список контроля дапамагае заліцьварыць пазнейшыя змены ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына нявыполнення павінна вказываць на адзін конкрэтны элемент, а не на заплутаны ланцюг задач. Зберагаеце у кэшы стабільныя інструкцыі системы і схемы інструментаў. Перадзял у тое ж самае прамэру ёсць частым выклікам ресурсоў.

Падзаполненне та дэкодаванне параметраў развертання (vllm-infrastructure.yaml)

Калі працюеце над стадзіяй Prefill Decode Deployment vllm-infrastructure, спачатку запісайце угоду: неабяжлівыя даннэ, сігнал успеху і тое, што выходзіць у случае частковага нявыпання. Такі список пераконтроўваець дапамагае залічыць змяны ў кодзе пазней. Спрыятліваеце гэтай стадзіяй як угоды межа даннэмі і перакананымі выходамі. Дайце назву артыфактам, задаце перакананні успеху і адмовіцеся ад тыхоўскага частковага завершэння. Зберагачыце інструкцыі стабільнай системы і схемы інструментаў. Перадача ідэнтычнага прамаргіналу — частая прычына працоўных траблэў.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: vllm-prefill
  namespace: llm-serving
  labels:
    app: vllm-prefill
spec:
  replicas: 1
  selector:
    matchLabels:
      app: vllm-prefill
  template:
    metadata:
      labels:
        app: vllm-prefill
    spec:
      containers:
      - name: vllm
        image: vllm/vllm-openai:latest
        args:
        - "--model"
        - "meta-llama/Meta-Llama-3-8B-Instruct"
        - "--experimental-prefill-only" # Optimization: Dedicated Prefill role
        - "--gpu-memory-utilization"
        - "0.90"
        - "--port"
        - "8000"
        ports:
        - containerPort: 8000
          name: http
        resources:
          limits:
            nvidia.com/gpu: "1" # Schedule on premium compute node
            cpu: "4"
            memory: 16Gi
        volumeMounts:
        - mountPath: /root/.cache/huggingface
          name: model-cache
        - mountPath: /dev/shm
          name: dshm
      volumes:
      - name: model-cache
        persistentVolumeClaim:
          claimName: vllm-model-cache-pvc
      - name: dshm
        emptyDir:
          medium: Memory
          sizeLimit: 4Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: vllm-decode
  namespace: llm-serving
  labels:
    app: vllm-decode
spec:
  replicas: 3 # Scale out dynamically based on load
  selector:
    matchLabels:
      app: vllm-decode
  template:
    metadata:
      labels:
        app: vllm-decode
    spec:
      containers:
      - name: vllm
        image: vllm/vllm-openai:latest
        args:
        - "--model"
        - "meta-llama/Meta-Llama-3-8B-Instruct"
        - "--experimental-decode-only" # Optimization: Dedicated token generator role
        - "--gpu-memory-utilization"
        - "0.90"
        - "--port"
        - "8000"
        ports:
        - containerPort: 8000
          name: http
        resources:
          limits:
            nvidia.com/gpu: "1" # Schedule on low-cost L4/A10G nodes
            cpu: "4"
            memory: 16Gi
        volumeMounts:
        - mountPath: /root/.cache/huggingface
          name: model-cache
        - mountPath: /dev/shm
          name: dshm
      volumes:
      - name: model-cache
        persistentVolumeClaim:
          claimName: vllm-model-cache-pvc
      - name: dshm
        emptyDir:
          medium: Memory
          sizeLimit: 4Gi

llm-d Канфігурацыя (llmd-routing.yaml)

Калі працуеце над стадзіяй llmd-routing yaml у налаштаваннях llm-d, спачатку запісайце умовы вярбунка: неабяжлівыя данні, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список дапамагае заліцьваты пазнейшыя змены коду. Запісуйце час выканання і вартась токенаў або запытак праза функцыйнальныя рэзултаты. Відразлівась вартасей з самага пачатку запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмавай версіі ў спяльныя среды. Зберагаеце у кэшы стабільныя інструкцыі системы і схемы інструментаў. Перадзял у тое ж самае прамэру ёсць частым выклікам витрачання ресурсаў. Калі працуеце над стадзіяй llmd-routing yaml у налаштаваннях llm-d, спачатку запісайце умовы вярбунка: неабяжлівыя данні, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список дапамагае заліцьваты пазнейшыя змены коду. Аддзекументавайце як шлях успеху, так і шлях вяснавання. Перапрыбуткі, людзкія контралі і обработка нераспакаваных запытак ёсць часткай продукту, а не пазнейшым дапрацоўкам.

apiVersion: inference.networking.x-k8s.io/v1alpha1
kind: InferencePool
metadata:
  name: llama3-decode-pool
  namespace: llm-serving
spec:
  selector:
    matchLabels:
      app: vllm-decode
  targetPort: 8000
---
apiVersion: inference.networking.x-k8s.io/v1alpha1
kind: InferenceObjective
metadata:
  name: llama3-serving-objective
  namespace: llm-serving
spec:
  modelName: "meta-llama/Meta-Llama-3-8B-Instruct"
  prefillService:
    name: vllm-prefill
    port: 8000
  decodePool:
    name: llama3-decode-pool

4. Налаштаванне agentgateway

Этап 4 «Налаштаванне agentgateway» працюе найэфектывней, калі яго розглядаць як параметр, які можна змерыць. Зберагчы адны ідеальны прыклад работы, адну ситуацыю абярошчэння і прыметкі па поверненню да пачатковага стану, перш чым расширваць масштабы. Лепей выбіраць маленькія, тэставальныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына абярошчэння павінна вказываць на адную конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Задаеце ліміт токенав на кожны рунг і на кожную сесыю. Інструменты з агентамі актыўна расширваюць контэкст; строгі ліміты не дазволяюць дэманстрацыям ператварыцца на неспакоўныя рахункі.

Апісанне гэтвейу (agent-gateway.yaml)

Агент-шлюз у стадії yaml з дэфініцыяю Gateway працуе наўсёрэй, калі яго спрыяваць як вимерную паверхню. Зафіксавайце адны ідеальны прымер, адзін кейс неудачы і прыказку па атрыбуцыі назад перш чым расширваць масштаб. Спрыявайце гэтую стадію як кантракт межа вхіднымі даннымі і пасвярджанымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаць критэрыя успеху і не падзеўляйцеся частым, некомплектным выкананнем задач. Задаць ліміт токенав на кожны раунд і на кожную сесію. Агентскія інструменты агрэсывна расширваюць контекст; жорсткія ліміты не дазволяюць дэмам ператварыцца на неспакоўныя рахункі.

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: agent-gateway
  namespace: agentgateway-system
spec:
  gatewayClassName: agentgateway
  listeners:
  - name: http
    protocol: HTTP
    port: 8080
    allowedRoutes:
      namespaces:
        from: All
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: llm-inference-route
  namespace: llm-serving
spec:
  parentRefs:
  - name: agent-gateway
    namespace: agentgateway-system
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /v1/chat/completions
    backendRefs:
    - name: llama3-serving-objective
      kind: InferenceObjective
      group: inference.networking.x-k8s.io
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: mcp-tools-route
  namespace: agent-tools
spec:
  parentRefs:
  - name: agent-gateway
    namespace: agentgateway-system
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /mcp/tools
    backendRefs:
    - name: mcp-tool-server-service
      port: 50051

5. Размешчэнне kagent AI Agent Pod

Стадія 5 Deploy kagent AI працуе наўсёрэй, калі яе спрыяваць як вимерную паверхню. Зафіксавайце адны ідеальны прымер, адзін кейс неудачы і прыказку па атрыбуцыі назад перш чым расширваць масштаб. Запісвайце часы виканання і кост токенав або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівае паказанне костаў з самага пачатку запобегае неспакоўным рахункам, калі процес пераходзіць з дэмы ў спяльныя сераверы.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kagent-orchestrator
  namespace: kagent-system
spec:
  replicas: 2
  selector:
    matchLabels:
      app: kagent-orchestrator
  template:
    metadata:
      labels:
        app: kagent-orchestrator
    spec:
      containers:
      - name: agent-runtime
        image: kagent/runtime:latest
        env:
        # Route all model and tool API calls through agentgateway
        - name: OPENAI_API_BASE
          value: "http://agent-gateway.agentgateway-system.svc.cluster.local:8080/v1"
        - name: MCP_SERVER_URL
          value: "http://agent-gateway.agentgateway-system.svc.cluster.local:8080/mcp/tools"
        resources:
          limits:
            cpu: "2"
            memory: 4Gi
          requests:
            cpu: "1"
            memory: 2Gi

6. Спісак перагляду для оптымізацыі і налашоўкі

Спісак перагляду для эксплуатацыі