Semantica Knowledge Explorer 完全指南:安装启动、工作区导航与实时图谱工作台

【免费下载链接】semantica Graph-Native Infrastructure for Context and Accountable AI Systems 【免费下载链接】semantica 项目地址: https://gitcode.com/GitHub_Trending/sema/semantica

Semantica Knowledge Explorer 是 Semantica 平台自带的浏览器端图工作台(browser-based graph workbench):它把知识图谱的探索、时间线回放、决策因果链追踪、实体去重与本体(Ontology)可视化管理整合进一个 Web 界面,构建于 React 19 + Sigma.js 之上。本文以 explorer/README.md 为骨架,结合 semantica/explorer 后端源码、explorer/src 前端源码与 docs/reference/explorer.md 参考文档,完整讲解 Explorer 的两种运行方式、CLI 参数、安全模型、工作区能力、环境变量、开发代理与故障排查,读完后你可以立即把任意 ContextGraph JSON 文件启动成可交互的图谱仪表盘,并理解其前后端协作的底层原理。

一、Explorer 是什么:从 JSON 文件到交互式图谱工作台

Explorer 的定位是一个 server process(服务进程),而不是可导入的 Python 库。它将 Semantica 生态中已经构建好的知识图谱(ContextGraph)加载进内存,通过 FastAPI 提供 REST 与 WebSocket 接口,再由 React 前端把图渲染成可平移缩放(pan & zoom)的实时画布。核心能力包括:

  • 图谱探索:拖拽缩放实时画布、ForceAtlas2 物理布局、Ego Mode、语义距离热力图、路径高亮;
  • 时间线回放:拖动时间轴观察图谱随时间演化;
  • 决策审计:浏览每条已记录决策背后的因果链,附带结果徽章与置信度分数;
  • 实体解析:基于 blocking + 语义去重审查并合并重复实体;
  • 本体管理:SHACL Studio、可视化拖拽编辑器、跨本体对齐、SKOS 浏览器;
  • 溯源可视化:基于 W3C PROV-O 标准展示任意实体的 Lineage。

从前端代码看,App.tsx 定义了六类导航工作区(Knowledge Explorer / Analyze / Decisions / Enrich / Manage / Ontology Hub),而 src/workspaces 下实际实现了 14 个具体工作区,包括 GraphWorkspace、DecisionWorkspace、DiffMergeWorkspace、EnrichWorkspace、ImportExportWorkspace、LineageWorkspace、ManageWorkspace、OntologyWorkspace、SparqlWorkspace、VocabularyWorkspace,以及 MemoryWorkspace 与 ReasoningWorkspace。这说明 README 中的工作区表格是能力的最小集,实际前端已覆盖更广。

二、环境要求

依赖最低版本
Python3.8+
Node.js18.x 或更高(推荐 20.x)
npm9.x 或更高

启动前建议先验证三者的版本:

python --version
node --version
npm --version

注意:Node.js 18+ 的限制来自 Vite 6(详见本文“故障排查”一节),如果使用源码开发模式运行前端,Node 版本过低会导致 npm run dev 失败。

三、两种运行方式

Explorer 提供两条运行路径:pip 安装(推荐给使用者)源码运行(推荐给贡献者 / 前端开发者)。两者共享同一套 FastAPI 后端,区别仅在于前端是使用预构建 bundle 还是 Vite 开发服务器。

Option A — pip 安装(推荐)

安装带 explorer extras 的包,wheel 内已包含预构建前端 bundle,无需 Node.js

pip install "semantica[explorer]"

启动时用 --graph 指向任意图 JSON 文件:

semantica-explorer --graph my_graph.json

服务默认启动在 http://127.0.0.1:8000,并自动在默认浏览器中打开仪表盘。

CLI 参数完整表格:

Flag默认值说明
--graph / -g(必填)ContextGraph JSON 文件路径
--port / -p8000服务绑定端口
--host127.0.0.1绑定主机(本地开发用 127.0.0.1;参见下文安全说明)
--no-browser关闭跳过自动打开浏览器

CLI 入口源码 可以看到,这确实是 Explorer 支持的全部四个参数,且 --graph 是必填项——若文件不存在,程序会打印 Error: graph file not found 并直接 sys.exit(1)。图加载完成后终端会输出节点/边统计:

✓ Graph loaded — 42 nodes, 87 edges

常用示例:

# 默认方式——打开于 http://127.0.0.1:8000
semantica-explorer --graph my_graph.json

# 自定义端口
semantica-explorer --graph my_graph.json --port 8080

# 禁止自动打开浏览器
semantica-explorer --graph my_graph.json --no-browser

# 等价于 python -m 方式
python -m semantica.explorer --graph my_graph.json

python -m semantica.explorersemantica/explorer/main.py 提供模块入口,最终同样调用 main()

安全说明:API Key 与匿名访问

自 v0.6.5 起,Explorer 的 API 在受保护路由上强制要求 API Key:

  • 设置环境变量 SEMANTICA_API_KEY,并通过 X-API-Key 请求头发送;
  • 未配置 Key 时,受保护路由一律 fail closed,返回 503,绝不会匿名放行;
  • 仅本地开发需要匿名访问时,必须显式设置 SEMANTICA_ALLOW_ANONYMOUS=true
  • /api/health/api/info 刻意保持免鉴权。

这套“默认拒绝”逻辑在 dependencies.py 中有完整的源码实现:require_auth 依赖先检查 SEMANTICA_ALLOW_ANONYMOUS,若未开启匿名,再检查 SEMANTICA_API_KEY 是否配置——未配置则抛 503 SERVICE_UNAVAILABLE,配置了但 Key 不匹配则抛 401 UNAUTHORIZED,且比较时使用 hmac.compare_digest 做常数时间比较,避免时序侧信道。Key 每次从环境变量实时读取(不缓存),因此运维可以在不重启进程的情况下轮换 Key。

主机绑定风险提示:

默认 --host 127.0.0.1 只绑定本地回环,局域网内其他机器无法访问。如果绑定到 0.0.0.0,则任何能触达该端口的主机都可读写全部图数据(受 API Key 鉴权约束)。CLI 在两种情况下会打印警告(见 CLI 源码):

  • 绑定非回环主机且处于匿名模式(SEMANTICA_ALLOW_ANONYMOUS=true);
  • 绑定非回环主机但未设置 SEMANTICA_API_KEY(受保护路由将全部拒绝 503)。
# 典型安全启动组合
export SEMANTICA_API_KEY="your-secret-key"
semantica-explorer --graph my_graph.json --host 127.0.0.1

Option B — 源码运行(贡献者 / 前端开发)

此模式运行 React 开发服务器,启用热模块替换(HMR),前端改动可即时在浏览器中生效,无需重新构建。

Step 1 — 克隆仓库

git clone https://github.com/semantica-agi/semantica.git
cd semantica

Step 2 — 安装 Python 包

pip install -e ".[explorer]"

Step 3 — 安装前端依赖

cd explorer
npm ci

Step 4 — 启动 Python 后端

在仓库根目录打开一个终端:

semantica-explorer --graph path/to/my_graph.json --no-browser

API 运行于 http://127.0.0.1:8000,保持该终端开启。

Step 5 — 启动前端开发服务器

explorer/ 目录打开第二个终端:

npm run dev

Vite 启动于 http://localhost:5173,在浏览器打开该地址。所有 /api/ws 请求都会自动代理到 http://127.0.0.1:8000 的 Python 后端。

四、构建生产 bundle

如果需要让 Python 服务器直接托管 UI(而不依赖 Vite 开发服务器):

cd explorer
npm ci
npm run build

构建产物写入 ../semantica/static/。之后 Python 服务器会在 http://127.0.0.1:8000 直接提供完整仪表盘,无需额外的 Vite 进程。

vite.config.ts 可以看清构建细节:build.outDir 指向仓库根的 semantica/staticemptyOutDir: true),并通过 manualChunks 把 Sigma/Graphology(graph-vendor)、vis-timeline(timeline-vendor)、@tanstack/react-query(query-vendor)拆分为独立 vendor chunk,优化缓存与首屏加载。后端侧,app.py 会挂载 /assets 静态目录,并提供 /{full_path:path} 的 SPA 回退路由——任何非 /api 路径都返回 index.html,交由前端路由接管;如果静态目录里没有 index.html,根路径会返回一个说明修复方式的 HTML 页面(Explorer UI not available),同时提示 REST API 在 /docs 仍可用。

五、工作区全景

工作区你可以做什么
Knowledge Graph实时 Sigma.js 画布 · ForceAtlas2 布局 · Ego Mode · 语义距离热力图 · 路径高亮
Timeline时间事件滑动条——观察图谱随时间演化
Decisions浏览每条已记录决策背后的因果链,附带结果徽章与置信度分数
Registry每一次图变更(add-node、add-edge、delete、update)的实时审计日志
Entity Resolution通过 blocking + 语义去重审查并合并重复实体
KG Overview聚合统计、社区分解、中心性热力图
Ontology HubSHACL Studio · 可视化拖拽编辑器 · 跨本体对齐 · SKOS 浏览器
Lineage任意实体的 W3C PROV-O 溯源可视化

各工作区在前端有明确对应实现,例如 GraphWorkspace 及其 behaviors/(点击选择、缩放适配、相机聚焦、悬停激活、路径高亮、搜索聚焦、视图切换)与 plugins/(探索特效、图例、邻域面板、时间叠加层);OntologyWorkspace 内含 ShaclStudio、OntologyEditor、SKOSVocabularyManager、AlignmentsTab、HealthTab、VersionsTab 等十余个模块。后端则为每个工作区提供对应 REST 路由,完整路由清单见 semantica/explorer/routes,共 13 个路由模块(analytics、annotations、decisions、enrich、export_import、graph、markdown、memories、ontology、provenance、sparql、temporal、vocabulary)。

关键 REST API 速查

所有 API 的交互式文档在启动后位于 http://localhost:8000/docs(Swagger UI)。以下是 docs/reference/explorer.md 中记录的常用端点:

端点方法用途
/api/graph/statsGET节点数、边数、实体类型分布
/api/graph/searchPOST索引化搜索:{query, limit, filters, anchor_node}
/api/graph/pathGET最短路径:?source=&target=&algorithm=bfs&directed=true
/api/graph/node/{id}/neighborsGET邻域展开:?depth=1(1–5)
/api/analyticsGET图指标:?metrics=centrality,community,connectivity
/api/analytics/validationGET图质量校验报告(孤儿节点、缺失类型等)
/api/enrich/dedupPOST重复检测
/api/enrich/mergePOST合并重复节点
/api/temporal/snapshotGET指定时刻图快照:?at=ISO8601
/api/temporal/diffGET两时刻间的图差异:?from_time=&to_time=
/api/ontology/registryGET已加载本体列表
/api/ontology/shacl/validatePOST用 SHACL 校验 RDF
/api/ontology/skos/concept/{uri}GET获取 SKOS 概念
/api/sparqlPOST只读 SPARQL 查询(SELECT/ASK/CONSTRUCT/DESCRIBE)
/api/decisions/{id}/chainGET决策因果链
/api/provenanceGET实体溯源:?node_id=
/api/exportPOST导出图:{format: "json"\|"csv", node_ids}
/api/importPOST.json/.csv 导入(上限 50 MB)
/api/healthGET返回 {"status": "ok"}
/api/infoGET服务器名称、版本、状态、能力

六、环境变量

变量默认值说明
EXPLORER_CORS_ORIGINShttp://localhost:5173,http://127.0.0.1:5173允许的 CORS 来源,逗号分隔
EXPLORER_CORS_CREDENTIALSfalse设为 true 允许带凭据的跨域请求(仅当位于需要鉴权的反向代理之后时才需要)
SEMANTICA_API_KEY(未设置)v0.6.5 起受保护路由所需的 API Key,通过 X-API-Key 头发送;未设置时受保护路由返回 503
SEMANTICA_ALLOW_ANONYMOUSfalse设为 true 显式开启匿名访问(仅限本地开发)

后端源码中的细节值得补充说明:

  • app.py_read_explorer_settings 读取 CORS 来源时,会优先使用 ALLOWED_ORIGINS,其次 EXPLORER_CORS_ORIGINS,最后才落到默认值——即两者兼容,旧变量名仍然生效;
  • CORS 中间件显式放行 Content-TypeAuthorizationX-API-Key 三个请求头,方法限定为 GET/POST/PUT/DELETE/OPTIONS
  • EXPLORER_CORS_CREDENTIALS 默认关闭是因为 X-API-Key 鉴权本身不需要浏览器携带 Cookie,开启凭据反而会扩大跨站请求风险面(见 app.py 注释);
  • 后端还会读取 FALKORDB_HOST / FALKORDB_PORT / SEMANTICA_PROVENANCE_DB / EXPLORER_PROVENANCE_DB,其中 provenance 存储路径会传给 GraphSession 用于溯源持久化。

一个把 CORS 与安全组合起来的完整启动示例:

EXPLORER_CORS_ORIGINS="http://myapp.example.com" \
SEMANTICA_API_KEY="secret" \
  semantica-explorer --graph my_graph.json --host 0.0.0.0 --port 8080 --no-browser

七、可用脚本(npm)

以下命令需在 explorer/ 目录内执行:

# 启动开发服务器(热模块替换)
npm run dev

# 类型检查并构建生产 bundle 到 ../semantica/static/
npm run build

# 本地预览生产构建
npm run preview

# 对全部源码运行 ESLint
npm run lint

# 运行图存储多边单元测试
npm run test:graph-store

# 运行图工作区展示测试
npm run test:graph-workspace

explorer/package.json 可以看到完整的脚本清单,build 内部先执行 tsc -b(TypeScript 严格模式类型检查)再执行 vite buildtest:graph-workspace 通过 node --import tsx --test 运行一组覆盖 markdown 内容渲染、时间线生命周期、确定性渲染、图谱场景状态、图例、小图布局、实时图属性、本体编辑器模型等模块的测试。仓库 explorer/tests/ 下还有 graphStore.multi-edge.test.mjstemporalSnapshotGuards.test.tsdeterministicExplorerRendering.e2e.ts 等 19 个测试文件,可作为理解各工作区行为的入口。

八、开发模式的 API 与 WebSocket 代理

开发期间 Vite 自动转发请求,无需额外 CORS 配置:

模式转发目标
/api/*http://127.0.0.1:8000/api/*
/ws/*ws://127.0.0.1:8000/ws/*

代理配置位于 vite.config.ts,后端端口不同时修改 server.proxy 即可。另外,代理目标还支持两个环境变量覆盖:

  • VITE_EXPLORER_API_TARGET:覆盖 API 代理目标(默认 http://127.0.0.1:8000);
  • VITE_EXPLORER_WS_TARGET:覆盖 WebSocket 代理目标(默认取 API 目标的 httpws 替换结果)。

WebSocket 实时更新协议

实时图变更事件通过 ws://127.0.0.1:8000/ws/graph-updates 推送。Python 客户端示例(来自 docs/reference/explorer.md):

import asyncio
import json
import websockets

async def watch_updates():
    async with websockets.connect("ws://localhost:8000/ws/graph-updates") as ws:
        # 服务端连接后先发 ack
        ack = json.loads(await ws.recv())
        print("Connected:", ack)

        # 发送 ping 验证连接存活
        await ws.send("ping")

        async for message in ws:
            event = json.loads(message)
            print("[{}] {}".format(event["event"], event.get("data")))

asyncio.run(watch_updates())

消息结构:

{
  "event":     "graph_mutation",
  "data": {
    "event_type":  "ADD_NODE",
    "entity_id":   "node_123",
    "payload":     {}
  },
  "timestamp": "2024-01-15T10:30:00+00:00"
}

事件类型包括 connection_ackponggraph_mutation(节点/边经导入或富化被增改删时触发);发送文本 "ping" 会收到 pong

WebSocket 的鉴权与关闭码(源码见 ws.py):

  • 浏览器 Origin 不在 CORS 白名单 → 关闭码 4403
  • 浏览器无法在 WebSocket 握手时设置自定义头,因此必须把 Key 作为查询参数传递:
    ws://127.0.0.1:8000/ws/graph-updates?api_key=<your-key>
    

    非浏览器客户端(原生应用、脚本)则可以用 X-API-Key 头发送;

  • Key 缺失或错误 → 关闭码 4401SEMANTICA_API_KEY 未设置且 SEMANTICA_ALLOW_ANONYMOUS 不为 true 时同样拒绝连接;
  • 单条消息超过 64 KB → 关闭码 1009

注意:URL 中的 API Key 会出现在服务器日志中,非浏览器客户端请优先使用 Header 方式传递。

九、项目结构(前后端对应)

README 给出的前端结构(已按当前仓库实际内容核对,workspaces/ 下比 README 列出的更多):

explorer/
├── src/
│   ├── App.tsx                        # 根布局、标签路由、工作区装配
│   ├── index.css                      # 全局 reset、字体、关键帧动画
│   ├── store/
│   │   ├── graphStore.ts              # 内存图状态
│   │   └── registryStore.ts           # Pub/sub 审计注册表
│   └── workspaces/
│       ├── GraphWorkspace/            # Sigma.js 画布 + 检查器 + 行为
│       ├── DecisionWorkspace/         # 因果流程图 + 决策列表
│       ├── DiffMergeWorkspace/        # 图差异与合并视图
│       ├── EnrichWorkspace/           # 实体解析 + 注册表标签页
│       ├── ImportExportWorkspace/     # 导入 CSV/JSON、导出图
│       ├── LineageWorkspace/          # W3C PROV-O 谱系图
│       ├── ManageWorkspace/           # KG Overview + Ontology Summary
│       ├── OntologyWorkspace/         # SHACL Studio、可视化编辑器、SKOS 浏览器
│       ├── SparqlWorkspace/           # 浏览器内 SPARQL 查询编辑器
│       ├── VocabularyWorkspace/       # SKOS 词汇表管理器
│       ├── MemoryWorkspace.tsx        # Agent 记忆工作区
│       └── ReasoningWorkspace.tsx     # 推理工作区
├── index.html
├── vite.config.ts                     # 开发代理 → 127.0.0.1:8000,构建 → ../semantica/static
└── package.json

后端结构(semantica/explorer):

semantica/explorer/
├── __init__.py       # CLI 入口:参数解析、图加载、uvicorn 启动、自动开浏览器
├── __main__.py       # python -m semantica.explorer 模块入口
├── app.py            # FastAPI 应用工厂:CORS、鉴权装配、静态托管、SPA 回退
├── dependencies.py   # require_auth 鉴权依赖、GraphSession 注入
├── runtime.py        # explorer_capabilities 能力探测、mutation bridge 装配
├── session.py        # GraphSession:线程安全会话、节点/边规范化、分页、搜索
├── ws.py             # WebSocket 连接管理 + 图更新广播
├── search_index.py   # 图搜索索引
├── markdown_resources.py
├── schemas.py
└── routes/           # 13 个 REST 路由模块

后端运行链:从命令行到 WebSocket 广播

把整条链路串起来看(均可从源码验证):

  1. CLI 入口 调用 GraphSession.from_file(args.graph) 加载 ContextGraph,打印节点/边统计;
  2. create_app 创建 FastAPI 应用,将所有业务路由挂上 require_auth 鉴权依赖,仅 /api/health/api/info、静态资源与 SPA 回退免鉴权;
  3. lifespan 阶段调用 install_mutation_bridge,把 on_mutation 回调挂到 session.graph.mutation_callback 上——任何节点/边的增改删都会:① 同步维护搜索索引与图 revision;② 通过 asyncio.run_coroutine_threadsafegraph_mutation 事件广播给所有已连接 WebSocket 客户端;
  4. GraphSessionthreading.RLock 保护并发访问,提供 paginate_nodes/paginate_edges(含 cursor 分页与搜索/bbox 过滤)、get_neighborssearchget_temporal_boundsget_cached_embeddings(缓存按图 revision 失效)等能力,并懒加载 CentralityCalculatorCommunityDetectorPathFinder 等分析组件(依赖 semantica[kg] extras,缺失时优雅降级)。

十、故障排查

仪表盘显示空白白页或 "UI not available" 提示

说明服务器静态目录中缺少前端 bundle。修复方式:

  • pip 安装用户pip install --upgrade "semantica[explorer]"——wheel 包含预构建 bundle;
  • 源码安装用户:在仓库根目录执行 cd explorer && npm ci && npm run build,然后重启服务器;
  • 开发模式:改用 Vite 开发服务器地址 http://localhost:5173,而不是后端地址。

浏览器中图空白 / 无数据加载

  • 确认 Python 后端正在运行,检查终端有无报错;
  • 打开浏览器 DevTools → Network 面板,查找失败的 /api/graph 请求;
  • 如果后端在不同端口,更新 vite.config.ts 中的 server.proxy

npm ci 失败或提示缺少 lockfile

package-lock.json 必须存在。先执行一次 npm install 生成它并提交,之后统一使用 npm ci

npm run dev 报 Node 版本错误

Vite 6 要求 Node 18 或更高。执行 node --version 检查;如果仍是 Node 16,请升级 Node 版本。

端口 5173 被占用

Vite 会自动尝试下一个可用端口,并在终端打印实际 URL,使用终端输出的地址即可。

WebSocket 连接不上(实时变更不出现)

  • 确认后端暴露了 /ws/graph-updates WebSocket 端点;
  • 查看 DevTools → Network → WS 标签的连接状态与错误码;
  • 确保后端版本与前端匹配——大版本混用可能造成协议不匹配;
  • 鉴权/ws/graph-updates 与 REST 路由使用同一 API Key。浏览器无法在 WebSocket 握手时设置自定义头,因此需以查询参数传递:ws://127.0.0.1:8000/ws/graph-updates?api_key=<your-key>;非浏览器客户端可用 X-API-Key 头。Key 缺失或错误会得到关闭码 4401;若 SEMANTICA_API_KEY 未设置且 SEMANTICA_ALLOW_ANONYMOUS 不为 true,连接同样被拒绝。注意 URL 中的 Key 会出现在服务器日志,非浏览器客户端请用 Header。

其他常见问题(参考 docs/reference/explorer.md

  • Error: graph file not found--graph 必须指向真实存在的文件;
  • Error: uvicorn is required:执行 pip install "semantica[explorer]" 安装 extras;
  • API 调用 Connection refused:默认只绑定 127.0.0.1,跨机器/容器访问需加 --host 0.0.0.0
  • 导入后图为空/api/import 只解析 .json.csv,其他格式返回 HTTP 422;JSON 需包含顶层 entities/nodes 数组或 relationships/edges 数组;
  • PathFinder not available:路径查找依赖 semantica[kg] extras,安装 pip install "semantica[all]"
  • 语义邻域返回 503:需要节点属性中存有 embedding(键为 embeddingvectornode2vec_embedding),无 embedding 的图会返回 503;
  • 重启后会话状态丢失:会话仅存内存,无自动保存。关闭前调用 POST /api/export(body {"format": "json"})下载当前状态。

另外,docs/reference/explorer.md 中的性能参考(在其文档所述硬件环境与 118k 节点图上测得)可作为容量规划参考:索引化节点搜索 0.004ms、depth-2 邻域展开 <5ms、BFS 路径 <50ms、简单 SPARQL SELECT <20ms;节点搜索索引在启动时构建,>500k 节点的图需预留额外启动时间;距离矩阵单请求上限 50 对节点。大图建议先过滤出相关子图再导出 JSON(CLI 会把整个 JSON 载入内存)。

十一、技术栈

  • React 19 + TypeScript(严格模式)
  • Vite 6 + babel-plugin-react-compiler
  • Sigma.js 3 + Graphology —— 图渲染与内存图模型
  • ForceAtlas2 —— 物理布局
  • @tanstack/react-query —— 本体与词汇表标签页的异步数据获取
  • vis-timeline —— 时间事件可视化
  • @xyflow/react —— Lineage 图渲染
  • Monaco Editor —— 浏览器内 SPARQL / SHACL 编辑器
  • lucide-react —— 图标集

explorer/package.json 还揭示了 README 未展开的细节:图算法依赖 graphology-communities-louvain(社区检测)、graphology-layout-forceatlas2graphology-metricsgraphology-shortest-path;前端表单/编辑器还有 react-arborist(树)、react-dropzone(文件拖放导入)、react-markdown + remark-gfm(Markdown 节点内容渲染)、@sigma/edge-curve@sigma/node-border(Sigma 边曲线与节点描边),并针对 dompurifyuuidesbuild 配置了依赖覆盖(overrides)。

十二、贡献与延伸阅读

贡献指南见仓库根目录 CONTRIBUTING.md。以下文档可以继续深入:

至此,你已经掌握 Semantica Knowledge Explorer 从安装、启动、安全配置到工作区使用、实时协议与排障的完整闭环:pip install "semantica[explorer]" 一条命令即可把你的知识图谱 JSON 变成可交互、可审计、支持时间回放与本体治理的浏览器工作台。

【免费下载链接】semantica Graph-Native Infrastructure for Context and Accountable AI Systems 【免费下载链接】semantica 项目地址: https://gitcode.com/GitHub_Trending/sema/semantica

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐