AI摘要

本文详细介绍了一个AI驱动的传输网络资源分析与编排平台的设计,该平台包括资源信息录入、关系关联梳理、信息查询、业务需求分析和资源选择与产品交付五个环节。平台采用原子化资源模型,结合LLM、图数据库和优化求解器,实现能懂人话、会找资料、会搭网络、能下配置的功能。总体架构分为交互层、AI编排层、数据与知识层和集成与执行层。核心数据模型包括关系图、事务库和向量索引。AI多智能体职责与协同包括Intent Router、NL解析/抽取Agent、关系梳理Agent、语义检索RAG Agent、需求分析Agent、方案规划Agent、配置生成Agent和解释/报告Agent。五大场景工作流分别为资源信息录入、关系关联梳理、信息查询、业务需求分析和资源选择与产品交付。GPT API集成细节包括函数模式Schema,如资源抽取、需求解析→约束生成和方案解释/报告。优化与“缺3以内资源”处理包括目标函数、硬约束和缺口策略。接口与服务划分简洁明确,如POST /nl/ingest和POST /graph/reconcile等。实现要点包括语言/框架、图数据库、检索、求解器、设备驱动、CI/CD、可观测、安全合规和人机协同。 示例展示了一条北京↔上海100G、1+1方案的实现过程。最后,里程碑与工作拆分建议分为8-12周完成首版。

下面给你一套可落地开发的“​AI 驱动的传输网络资源分析与编排平台​”详细设计,围绕你要的五个环节:​资源信息录入 → 关系关联梳理 → 信息查询 → 业务需求分析 → 资源选择与产品交付​。方案以“原子化资源模型”为底座,采用 LLM(GPT API)+ 图数据库 + 优化求解器 的组合拳,做到“能懂人话、会找资料、会搭网络、能下配置”。


一、总体架构(分层+多智能体)

[交互层]

- Web/APP/工单门户(NL对话、表单、可视拓扑)

[AI编排层]
- Intent Router(意图路由)
- NL解析/抽取Agent(需求/文档到结构化)
- 语义检索RAG(向量库+索引)
- 约束生成Agent(SLA→约束CSP/MILP)
- 方案规划Agent(多目标优化/启发式)
- 配置生成Agent(模板渲染/意图→配置)
- 解释与报告Agent(面向客户/运维)

[数据与知识层]
- 原子资源关系图(Neo4j):节点=原子资源;边=连接/承载/隶属
- 事务库(PostgreSQL):资源主数据、库存状态、订单、工单
- 向量索引(OpenSearch/pgvector):文档与字段描述嵌入
- 时序库(TimescaleDB):性能与状态指标
- 对象存储(MinIO/S3):OTDR测试、图纸、合同、报表

[集成与执行层]
- 采集/同步:NMS/EMS、NETCONF/RESTCONF、SNMP、BMS、GIS
- 事件总线:Kafka(数据入库、告警、回写)
- 配置下发:Ansible/Netmiko/自研驱动(厂商适配)
- 审批与人机协同:Flowable/Camunda(可选)


二、核心数据模型(与原子化一致)

2.1 关系图(图数据库 Neo4j)

  • 节点类型​:FiberCore(单芯)、DuctHolePortOpticalModuleBoardSlotDeviceRackUODUkOTUkLSPPWRoomSiteMicrowaveLinkODFPortPowerFeed
  • 关键边​:

    • (:FiberCore)-[:PATCHED_TO]->(:ODFPort)
    • (:Port)-[:HOUSES]->(:OpticalModule)
    • (:Port)-[:LINKS_TO]->(:Port)
    • (:ODUk)-[:MAPPED_IN]->(:OTUk)
    • (:Port)-[:BELONGS_TO]->(:Board)-[:IN]->(:Slot)-[:IN]->(:Device)
    • (:Device)-[:INSTALLED_AT]->(:RackU)-[:IN]->(:Room)-[:AT]->(:Site)
关系图既保存​空间约束​(机房/机架/U位)又保存​承载关系​(ODU/OTU、LSP/PW、波长/纤芯)。

2.2 事务库(PostgreSQL)主表(示例)

-- 原子端口

create table port (
port_id uuid
primary key,
device_id uuid
not null,
slot_no
int not null,
port_no
int not null,
phy_type text,
-- SFP+/QSFP28/CFP2
speed_gbps
int,
state text,
-- up/down/maint
rx_power_dbm
numeric,
unique(device_id, slot_no, port_no)
);

-- 光纤单芯
create table fiber_core (
core_id uuid
primary key,
cable_id uuid
not null,
core_index
int not null,
spec text,
-- G.652D/...
status text,
-- idle/used/fault/reserved
loss_db_per_km
numeric,
unique(cable_id, core_index)
);

-- ODUk/OTUk
create table oduk (
oduk_id uuid
primary key,
type text,
-- ODU0/1/2/3/4/flex
parent_otuk_id uuid,
slot_range text,
-- 时隙描述
state text,
-- idle/used/...
sla_latency_ms
numeric
);

-- 业务订单/需求
create table demand (
demand_id uuid
primary key,
customer_id uuid
not null,
src_site uuid
not null,
dst_site uuid
not null,
bandwidth_gbps
numeric not null,
latency_sla_ms
numeric,
protection text,
-- none/1+1/SNCP/FRR
created_at timestamptz
default now(),
raw_text text
-- 原始自然语言
);

-- 规划方案与明细
create table plan (
plan_id uuid
primary key,
demand_id uuid
not null,
score
numeric,
objective jsonb,
-- {cost:..., latency:..., availability:...}
shortage jsonb,
-- {missing: ["ODU4","fiber_core"], count: 2}
status text,
-- proposed/approved/deployed
created_at timestamptz
default now()
);

create table plan_item (
plan_item_id uuid
primary key,
plan_id uuid
not null,
resource_type text,
-- port/fiber_core/oduk/otuk/lsp/pw
resource_id uuid,
role text
-- working/protect/a-z segment
);

2.3 向量索引

  • 索引对象:资源说明、机房规程、设备手册、SOP、历史变更单、地理/GIS细节摘要。
  • 字段:doc_id, chunk_text, embedding, tags, valid_from, valid_to

三、AI 多智能体职责与协同

  1. Intent Router

    • 判定用户请求类型:录入/查询/分析/编排/报表/下发。
    • 工具:分类提示 + 少样本,必要时调度函数(function calling)。
  2. NL解析/抽取 Agent(录入/清洗)

    • 输入:自然语言、PDF/Word、NMS导出表、OTDR报告。
    • 输出:符合原子表单 JSON Schema的结构化对象(见 §5.1)。
    • 能力:实体对齐(去重)、缺失字段补全建议、数据质量评分。
  3. 关系梳理 Agent(Linker)

    • 功能:在图数据库中创建/修正边;执行约束校验(如端口↔板卡↔槽位↔设备一致性、ODU↔OTU时隙不重叠)。
    • 联合​图算法​(最短路、连通性、环保护识别)和​链路预测​(GraphSage/GAT)。
  4. 语义检索 RAG Agent(查询)

    • NL→混合检索(BM25+向量)→SQL/Gremlin/Cypher 生成→执行→归纳可视化。
    • 支持“问图谱”(如“NE3 到 NE8 可用 100G 端到端链路有哪些?”)。
  5. 需求分析 Agent(SLA→约束)

    • 把用户“人话”转为CSP/MILP约束:带宽、时延、冗余、地域、维护窗、厂商偏好、功耗等。
    • 维护​规则库​(YAML):如“<5ms → 城域/骨干直达;1+1 → 节点/路由完全分离”。
  6. 方案规划 Agent(选资源 & 多目标优化)

    • 求解器:​OR-Tools CP-SAT / MILP(CBC/Gurobi) + 启发式(k-最短路、遗传算法)​。
    • 目标:min(cost) + α*min(latency) + β*max(availability) + γ*min(utilization_imbalance)
    • 产出:​3 套最优​(成本优先/时延优先/可用率优先)+ “​缺 3 以内资源​”的备选(列出缺口与替代路径)。
  7. 配置生成 Agent(意图→配置)

    • 模板引擎:Jinja2(按厂商/机型差异)、NETCONF/YANG/CLI 渲染。
    • 自动校验:仿真执行/干跑(dry-run)、回滚脚本生成。
  8. 解释/报告 Agent

    • 向客户与运维输出差异化报告(拓扑、SLA 证明、容量占用、风险点、成本拆解)。

四、五大场景工作流(端到端)

4.1 资源信息录入(AI Assisted Intake)

输入​:NMS导出、Excel、自然语言、照片/PDF。
流程​:

  1. 抽取:OCR/表格解析 → LLM 结构化抽取(function calling)。
  2. 去重与主数据对齐:相似度比对(embedding+规则)→ merge/pick。
  3. 约束校验:外键、唯一性、规格匹配(端口↔光模块波长/速率)。
  4. 入库:事务库 + 图数据库建点/建边。
  5. 质检报告:缺字段、疑似冲突、置信度<阈值的项进入人工待办。

好处​:录入速度**×5**,错误率**-80%**(经验值,供 KPI 参考)。

4.2 关系关联梳理(Graph Build & Validate)

  • 自动连边​:基于“父ID+序号”“物理接续记录”“ODU→OTU时隙”等键提议候选关系→人机确认。
  • 一致性检查​:例如同一纤芯被两个业务同时占用、同一板卡端口速率冲突。
  • 可视拓扑​:机柜/机房/ODF/链路/环网视图;一键定位熔接段。

4.3 信息查询(NL2SQL/NL2Cypher + RAG)

  • 用户问:“NE1 到 NE5 之间还能不能走一条 100G 且 1+1 的路?”
  • 流程:NL→意图分类→RAG 检索→生成 Cypher → 执行→可视化路径与容量。
  • 支持:**静态(资源/关系) + 动态(性能/时延)**混合查询。

4.4 业务需求分析(SLA→约束)

  • 输入示例:“北京-上海、100G、端到端时延 < 5ms、1+1 完全分离、厂商优先华为、机房 A/B 限电”。
  • 产出:约束 JSON(节点/通道路由分离、沿线站点白/黑名单、波长/ODU 类型、功耗上限、维护窗)。
  • 可复用​行业模板​(金融专线、云专线、广电干线、IDC互联等)。

4.5 资源选择与产品交付(规划→下发→验收)

  1. 规划:求解器吐出 3 套Pareto最优 + “缺 3 内资源”备选(含缺口采购/改迁建议)。
  2. 审批:工单编排(人机协作、签名、变更窗口)。
  3. 下发:NETCONF/CLI/Ansible;自动比对设备回显。
  4. 验证:TWAMP/OTN性能、收光门限、保护切换演练;生成验收报告与SLA基线。

五、GPT API 集成细节

5.1 函数模式(Function Calling)Schema

a) 资源抽取(从文本/Excel说明中抽端口/模块/纤芯等)

{

"name": "ingest_atomic_resources",
"description": "从自由文本/表格抽取原子资源对象",
"parameters": {

</span><span>&#34;type&#34;</span><span>:</span><span> </span><span>&#34;object&#34;</span><span>,</span><span>
</span><span>&#34;properties&#34;</span><span>:</span><span> </span><span>{</span><span>
  </span><span>&#34;ports&#34;</span><span>:</span><span> </span><span>{</span><span>
    </span><span>&#34;type&#34;</span><span>:</span><span> </span><span>&#34;array&#34;</span><span>,</span><span>
    </span><span>&#34;items&#34;</span><span>:</span><span> </span><span>{</span><span>
      </span><span>&#34;type&#34;</span><span>:</span><span> </span><span>&#34;object&#34;</span><span>,</span><span>
      </span><span>&#34;required&#34;</span><span>:</span><span> </span><span>[</span><span>&#34;device_id&#34;</span><span>,</span><span>&#34;slot_no&#34;</span><span>,</span><span>&#34;port_no&#34;</span><span>,</span><span>&#34;phy_type&#34;</span><span>,</span><span>&#34;speed_gbps&#34;</span><span>]</span><span>,</span><span>
      </span><span>&#34;properties&#34;</span><span>:</span><span> </span><span>{</span><span>
        </span><span>&#34;device_id&#34;</span><span>:</span><span> </span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;string&#34;</span><span>}</span><span>,</span><span>
        </span><span>&#34;slot_no&#34;</span><span>:</span><span> </span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;integer&#34;</span><span>}</span><span>,</span><span>
        </span><span>&#34;port_no&#34;</span><span>:</span><span> </span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;integer&#34;</span><span>}</span><span>,</span><span>
        </span><span>&#34;phy_type&#34;</span><span>:</span><span> </span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;string&#34;</span><span>}</span><span>,</span><span>
        </span><span>&#34;speed_gbps&#34;</span><span>:</span><span> </span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;integer&#34;</span><span>}</span><span>,</span><span>
        </span><span>&#34;rx_power_dbm&#34;</span><span>:</span><span> </span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;number&#34;</span><span>}</span><span>
      </span><span>}</span><span>
    </span><span>}</span><span>
  </span><span>}</span><span>,</span><span>
  </span><span>&#34;fiber_cores&#34;</span><span>:</span><span> </span><span>{</span><span>
    </span><span>&#34;type&#34;</span><span>:</span><span> </span><span>&#34;array&#34;</span><span>,</span><span>
    </span><span>&#34;items&#34;</span><span>:</span><span> </span><span>{</span><span>
      </span><span>&#34;type&#34;</span><span>:</span><span>&#34;object&#34;</span><span>,</span><span>
      </span><span>&#34;required&#34;</span><span>:</span><span>[</span><span>&#34;cable_id&#34;</span><span>,</span><span>&#34;core_index&#34;</span><span>,</span><span>&#34;spec&#34;</span><span>,</span><span>&#34;status&#34;</span><span>]</span><span>,</span><span>
      </span><span>&#34;properties&#34;</span><span>:</span><span> </span><span>{</span><span>
        </span><span>&#34;cable_id&#34;</span><span>:</span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;string&#34;</span><span>}</span><span>,</span><span>
        </span><span>&#34;core_index&#34;</span><span>:</span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;integer&#34;</span><span>}</span><span>,</span><span>
        </span><span>&#34;spec&#34;</span><span>:</span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;string&#34;</span><span>}</span><span>,</span><span>
        </span><span>&#34;status&#34;</span><span>:</span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;string&#34;</span><span>}</span><span>,</span><span>
        </span><span>&#34;loss_db_per_km&#34;</span><span>:</span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;number&#34;</span><span>}</span><span>
      </span><span>}</span><span>
    </span><span>}</span><span>
  </span><span>}</span><span>
</span><span>}</span><span>

}
}

b) 需求解析 → 约束生成

{

"name": "compile_constraints",
"description": "把自然语言需求转为规划约束",
"parameters": {

</span><span>&#34;type&#34;</span><span>:</span><span> </span><span>&#34;object&#34;</span><span>,</span><span>
</span><span>&#34;properties&#34;</span><span>:</span><span> </span><span>{</span><span>
  </span><span>&#34;bandwidth_gbps&#34;</span><span>:</span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;number&#34;</span><span>}</span><span>,</span><span>
  </span><span>&#34;latency_ms&#34;</span><span>:</span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;number&#34;</span><span>}</span><span>,</span><span>
  </span><span>&#34;protection&#34;</span><span>:</span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;string&#34;</span><span>,</span><span>&#34;enum&#34;</span><span>:</span><span>[</span><span>&#34;none&#34;</span><span>,</span><span>&#34;1+1&#34;</span><span>,</span><span>&#34;SNCP&#34;</span><span>,</span><span>&#34;FRR&#34;</span><span>]</span><span>}</span><span>,</span><span>
  </span><span>&#34;src_city&#34;</span><span>:</span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;string&#34;</span><span>}</span><span>,</span><span>
  </span><span>&#34;dst_city&#34;</span><span>:</span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;string&#34;</span><span>}</span><span>,</span><span>
  </span><span>&#34;hard_rules&#34;</span><span>:</span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;array&#34;</span><span>,</span><span>&#34;items&#34;</span><span>:</span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;string&#34;</span><span>}</span><span>}</span><span>,</span><span>
  </span><span>&#34;soft_prefs&#34;</span><span>:</span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;array&#34;</span><span>,</span><span>&#34;items&#34;</span><span>:</span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;string&#34;</span><span>}</span><span>}</span><span>
</span><span>}</span><span>,</span><span>
</span><span>&#34;required&#34;</span><span>:</span><span>[</span><span>&#34;bandwidth_gbps&#34;</span><span>,</span><span>&#34;src_city&#34;</span><span>,</span><span>&#34;dst_city&#34;</span><span>]</span><span>

}
}

c) 方案解释/报告

{

"name":"explain_plan",
"description":"将规划结果转为面向客户/运维的分层解释与风险提示",
"parameters":{

</span><span>&#34;type&#34;</span><span>:</span><span>&#34;object&#34;</span><span>,</span><span>
</span><span>&#34;properties&#34;</span><span>:</span><span>{</span><span>
  </span><span>&#34;plan_id&#34;</span><span>:</span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;string&#34;</span><span>}</span><span>,</span><span>
  </span><span>&#34;audience&#34;</span><span>:</span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;string&#34;</span><span>,</span><span>&#34;enum&#34;</span><span>:</span><span>[</span><span>&#34;customer&#34;</span><span>,</span><span>&#34;noc&#34;</span><span>,</span><span>&#34;exec&#34;</span><span>]</span><span>}</span><span>,</span><span>
  </span><span>&#34;highlights&#34;</span><span>:</span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;array&#34;</span><span>,</span><span>&#34;items&#34;</span><span>:</span><span>{</span><span>&#34;type&#34;</span><span>:</span><span>&#34;string&#34;</span><span>}</span><span>}</span><span>
</span><span>}</span><span>,</span><span>
</span><span>&#34;required&#34;</span><span>:</span><span>[</span><span>&#34;plan_id&#34;</span><span>,</span><span>&#34;audience&#34;</span><span>]</span><span>

}
}

通过函数调用,LLM 输出结构化结果,后端直接入库/调用求解器。

六、优化与“缺 3 以内资源”处理

  • 目标函数​:
    J = w1*Cost + w2*Latency + w3*(1-Availability) + w4*Penalty(utilization>θ)
  • 硬约束​:

    • 带宽 ≥ 需求;
    • 路由/节点完全分离(适用于 1+1);
    • 时隙/端口/纤芯不冲突;
    • 设备功耗与机房回路负载不超限。
  • 缺口策略​:

    • 将“待采购/待改迁资源”映射为​虚拟资源​(附加 procurement\_cost 与 lead\_time);
    • 允许最多 3 个虚拟资源入选,附加惩罚项并给出​替代建议​(如改走微波备链/跨域合作)。
  • 求解器​:

    • 先用 k-最短路径枚举候选,再用 CP-SAT/MILP 全局选择;
    • 生成 ​3 套 Pareto 前沿解​(成本/时延/可用率各优)。

七、接口与服务划分(简洁明确)

  • POST /nl/ingest:上传文档/文本 → 返回抽取结果与质检
  • POST /graph/reconcile:建点/建边/一致性校验
  • POST /query/nl:自然语言查询 → 图/SQL 结果
  • POST /demand/parse:需求文本 → 约束 JSON
  • POST /plan/solve:约束 → 3 套方案 + 缺口解
  • POST /plan/{id}/deploy:渲染配置 → 下发 → 验证
  • GET /plan/{id}/report?audience=customer|noc|exec:PDF/Word 报告

八、实现要点(选型与落地)

  • 语言/框架​:后端 Python(FastAPI)/ Go(高并发);前端 React + ECharts + 拓扑组件(Cytoscape.js)。
  • 图数据库​:Neo4j(Cypher)或 JanusGraph;​检索​:OpenSearch + pgvector。
  • 求解器​:OR-Tools(开源)→ 如有商用诉求接入 Gurobi。
  • 设备驱动​:NETCONF/YANG 首选;遗留设备走 CLI Driver/Ansible。
  • CI/CD​:GitLab CI + Helm/K8s;​可观测​:Prometheus + Grafana + Loki + OpenTelemetry。
  • 安全合规​:RBAC/ABAC、多租户隔离、审计日志、脱敏/最小化采集、变更回滚。
  • 人机协同​:关键环节(录入低置信度/方案审批/变更窗口)门禁。

九、示例:一条北京↔上海 100G、1+1 方案(简版)

  1. 客户输入(自然语言) → 需求分析 Agent 生成:
{"bandwidth_gbps":100,"latency_ms":5,"protection":"1+1","src_city":"北京","dst_city":"上海","hard_rules":["节点分离","路径分离"],"soft_prefs":["华为优先","走既有光缆优先"]}

  1. 规划 Agent:

    • 主用:ODU4@OTU4,经 NE1–NE3–NE5,纤芯 F001-#48,端口 NE1:S3:P7 ↔ NE5:S1:P3;
    • 保护:ODU4@OTU4,经 NE2–NE4–NE6,纤芯 F002-#12;
    • 输出 3 套解(成本优/时延优/高可用优)+ 缺 2(例:保护段缺 ODU4 与 100G LR4 模块)。
  2. 配置生成 → NETCONF 下发 → TWAMP 验证 → 报告与SLA基线归档。

十、里程碑与工作拆分(8–12 周首版)

  • W1–2​:数据 Schema & 图谱建模、采集适配;
  • W3–4​:NL 抽取/去重/校验链路跑通;
  • W5–6​:NL 查询 + RAG、需求→约束编译;
  • W7–8​:规划求解器与 3 套解/缺口策略;
  • W9–10​:配置模板与下发、验证闭环;
  • W11–12​:报表、权限、安全、性能压测与上线。

结语

这套设计把 ​LLM 的语义能力​、​图谱的关系确定性​、优化求解的可证明性 融合起来:

  • 录入更快更准;
  • 关系更全更清;
  • 查询更自然;
  • 需求自动变​约束​;
  • 方案既优且可落地,并能在缺 3的现实条件下给出稳妥替代。
    按此方案即可分阶段实现并逐步扩展厂商与技术域覆盖。
扫码加入猫哥的AI群
最后修改:2025 年 08 月 29 日
点赞的人是最酷的