全部產品
Search
文件中心

Container Service for Kubernetes:使用kagent快速構建一個問答Agent

更新時間:Mar 07, 2026

本文介紹如何使用kagent部署一個簡單的智能體。該智能體使用的模型為阿里雲百鍊提供的qwen3-coder-plus,使用的MCP服務為fetch(根據URL擷取網頁內容)。該智能體可以完成即時擷取網頁內容並進行總結的任務。

準備工作

  1. 在ACK叢集中建立kagent命名空間。

  2. 使用ACK應用市場或者ACK叢集應用 > Helm,在kagent命名空間中安裝kagent-crdskagent應用。

  3. 開通阿里雲百鍊服務,並一、擷取API Key

步驟一:建立ModelConfig

  1. 擷取叢集KubeConfig並通過kubectl工具串連叢集

  2. 在環境變數中註冊百鍊的API Key,並通過Secret來儲存和使用。

    export PROVIDER_API_KEY=${你的百鍊APIKey}
    kubectl create secret generic bailian-apikey -n kagent --from-literal credential="$PROVIDER_API_KEY"
  3. 建立ModelConfig。

    kubectl -n kagent apply -f - <<EOF
    apiVersion: kagent.dev/v1alpha2
    kind: ModelConfig
    metadata:
      name: bailian-provider-config
    spec:
      model: qwen3-coder-plus
      apiKeySecret: bailian-apikey
      apiKeySecretKey: credential
      openAI:
        baseUrl: https://dashscope-intl.aliyuncs.com/compatible-mode/v1
      provider: OpenAI
    EOF

步驟二:部署fetch MCP Server

  1. 在ACK叢集中部署fetch MCP Server。

    kubectl -n kagent apply -f - <<EOF
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: streamablehttp-fetch-deployment
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: streamablehttp-fetch
      template:
        metadata:
          labels:
            app: streamablehttp-fetch
        spec:
          containers:
          - name: streamablehttp-fetch-container
            image: registry-cn-hangzhou.ack.aliyuncs.com/dev/streamablehttp-fetch:latest
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: streamablehttp-fetch-service
    spec:
      selector:
        app: streamablehttp-fetch
      ports:
        - protocol: TCP
          port: 3000
          targetPort: 3000
      type: ClusterIP
    EOF

步驟三:註冊MCPServer

  1. 建立RemoteMCPServer資源。

    kubectl -n kagent apply -f - <<EOF
    apiVersion: kagent.dev/v1alpha2
    kind: RemoteMCPServer
    metadata:
      name: streamablehttp-fetch
    spec:
      description: A Model Context Protocol server that provides web content fetching capabilities. This server enables LLMs to retrieve and process content from web pages, converting HTML to markdown for easier consumption.
      protocol: STREAMABLE_HTTP
      sseReadTimeout: 5m0s
      terminateOnClose: true
      timeout: 30s
      url: http://streamablehttp-fetch-service:3000/
    EOF
  2. 確認RemoteMCPServer建立狀態。

    kubectl get RemoteMCPServer -n kagent

    預期輸出:

    NAME                   PROTOCOL          URL                                         ACCEPTED
    streamablehttp-fetch   STREAMABLE_HTTP   http://streamablehttp-fetch-service:3000/   True

步驟四:建立agent

  1. 建立問答agent。

    kubectl -n kagent apply -f - <<EOF
    apiVersion: kagent.dev/v1alpha2
    kind: Agent
    metadata:
      name: gateway-api-professor
      namespace: kagent
    spec:
      declarative:
        modelConfig: bailian-provider-config
        stream: true
        systemMessage: |-
          你是一個友好且樂於助人的代理,使用 streamablehttp-fetch 工具從以下地址擷取GatewayAPI 資訊來回答使用者關於GatewayAPI的問題。
          
          # 連結
          - intro: https://gateway-api.sigs.k8s.io/
          - api-overview: https://gateway-api.sigs.k8s.io/concepts/api-overview/
          - use-case: https://gateway-api.sigs.k8s.io/concepts/use-cases/
          - servicemesh: https://gateway-api.sigs.k8s.io/mesh/
          - implementations: https://gateway-api.sigs.k8s.io/implementations/
          - 1.4版本支援概況:https://gateway-api.sigs.k8s.io/implementations/v1.4/
          - 完整spec,頁面比較大:https://gateway-api.sigs.k8s.io/reference/spec/
    
          # Instructions
    
          - 如果使用者問題不清楚,在運行任何工具之前先請求澄清
          - 對使用者回答要友好,熱情
          - 如果你不知道如何回答問題,不要編造答案
            回答 "抱歉,我不知道如何回答這個問題" 並請使用者進一步澄清問題
          - 如果使用者的問題是總結、概述類型的,請確保通讀全文後再回答。
    
          # Response format
          - 總是以Markdown格式進行回複。
          - 你的回複需要包含你所執行的操作的總結以及對於結果的解釋。
        tools:
        - type: McpServer
          mcpServer:
            apiGroup: kagent.dev
            kind: RemoteMCPServer
            name: streamablehttp-fetch
            toolNames:
            - fetch
      description: 這個智能體主要回答和GatewayAPI Spec相關的問題。
      type: Declarative
    EOF
  2. 確認agent建立狀態。

    kubectl get pod -n kagent

    預期輸出:

    NAME                                               READY   STATUS    RESTARTS   AGE
    gateway-api-professor-7cb6496b9d-l7nlj             1/1     Running   0          3m1s
    kagent-controller-794fc765df-hqswt                 1/1     Running   0          45m
    kagent-ui-569cb875c6-h55mg                         1/1     Running   0          45m
    streamablehttp-fetch-deployment-75d5cd86cf-h9rvp   1/1     Running   0          4m3s

步驟五:訪問agent

kagent預設提供了Web UI可以直接與agent進行互動。

  1. 將kagent-ui服務通過連接埠轉寄至本地。

    kubectl port-forward -n kagent service/kagent-ui 8082:8080
  2. 在瀏覽器中通過localhost:8082訪問agent。

    1. 問答樣本一:Gateway API中有哪些API?

      image

      image

    2. 問答樣本二:現在哪個實現支援的Gateway API功能最全面?

      image

      image