ikc-open-platform-sdk
ikc-open-platform 第三方开发者 SDK(导入包 ikc_open_platform_sdk)。
- 认证:应用 API Key(
Authorization: Bearer <api-key>,由管理面/admin/apps/{appId}/keys创建)。 - 协议:统一响应壳
errCode/errMsg/data/traceId/reqId解包;业务模型一律复用ikc-sdk-lib(本 SDK 不自定义业务模型)。 - 追踪:每请求注入 23 位纯数字
X-Request-Id;reqId可显式传入,缺省 SDK 生成req_前缀值并随壳回显。 - 能力面(四类业务域 + 知识库子资源域 Wiki / 图谱 + 记忆域 Flash Knowledge):
client.knowledge_bases:create / update / query / getclient.documents:ingest / ingest_and_parse / upload / getclient.parse:parse / parse_direct / query_result / issue_download_ticket / downloadclient.search:universal_search(V1)/ universal_search_v2(V2)/ deep_search / query(兼容别名)client.wiki:tree / page / stat / export / build / job(W-01/W-02/W-04/W-05 只读 + W-06/W-07 构建)client.graph:stat / nodes / edges / export / build / job(G-01/G-02/G-03/G-05 只读 + G-06/G-07 构建)client.flash:observe / write / recall / query / get / update / delete / consolidate / job / jobs / policy(记忆域 M-01~M-11;面向 agent 的短期 / 长期记忆)
- 错误模型:
OpenPlatformAPIError(errCode/errMsg/traceId/reqId)、OpenPlatformConnectionError、OpenPlatformTimeoutError、OpenPlatformProtocolError。 - 响应校验:W/G 域按
ikc_sdk.core.api.{wiki,graph}.*、记忆域按ikc_sdk.flash.api模型校验;实例侧字段漂移时记 warning 并回落原始dict, 不因契约模型过严打断调用。模型本身的缺陷回ikc-sdk-lib修(先例:W-02page.unitId实测为null,ikc-sdk-lib0.9.2 已把WikiPageView.unitId放宽为str | None——不在此处改契约)。
安装
pip install ikc-open-platform-sdk # PyPI(0.4.0,依赖 ikc-sdk-lib 0.15.0)
pip install sdk/python/ # 或本地源码
快速开始
from ikc_open_platform_sdk import OpenPlatformClient
from ikc_sdk.core.api.search.universal import SearchQueryRequest
with OpenPlatformClient("http://localhost:18000", api_key="<app-api-key>") as client:
result = client.search.universal_search(SearchQueryRequest(query="IKC 平台"))
for hit in result.hits:
print(hit)
client.wiki.stat("kb_10001") # W-04
client.graph.stat("kb_10001") # G-01
client.flash.policy() # M-10(记忆域加工策略快照)
检索 V2(universal_search_v2,D-03)
V2 把文档 / Wiki / 图谱 / 事实收进同一个召回面;V1(universal_search)行为不变、两版并存:
from ikc_sdk.core.api.search.universal_v2 import UniversalSearchV2Request
resp = client.search.universal_search_v2(UniversalSearchV2Request(
query="设备支持的最大并发数是多少?",
kbIds=["kb_10001"], # 必填,1~20 个且不重复
topK=10,
include={"wikiPage": True, "graphEntities": True, "graphRelations": True},
))
resp.strategy # 如 lexical@search-v2.1
resp.partial # true = 某一路降级,原因见 warnings[](如 vector_unavailable)
resp.nextCursor # 不透明签名游标:原样回填 cursor,不得解析、不得跨查询复用
for hit in resp.hits:
print(hit.retrievalId, hit.representationKind, hit.score, hit.snippet)
模型是 extra="forbid":tenantId / principalIds / authorizedOrgPaths / queryVector / index / routing
等安全字段由平台按调用方身份注入,调用方不发送也不构造。filters.currentVersionOnly 缺省 true(只召回当前版本)。
Wiki / 图谱(知识库子资源)
Wiki(W 域)与图谱(G 域)是知识库子资源,路径挂在 /api/v1/knowledge-bases/{kbId} 下,共用知识库读写门禁:
from ikc_sdk.core.api.wiki.build import WikiBuildRequest
client.wiki.tree("kb_1", page=1, page_size=20) # W-01 页面树(根节点分页)
client.wiki.page("kb_1", stable_key="部署手册") # W-02 页面详情(stableKey / pageId 二选一)
client.wiki.export("kb_1", format="jsonl") # W-05 导出(只导出可见页)
client.wiki.build("kb_1", WikiBuildRequest( # W-06 同步:返回落地计数
docId="doc_1", markdown="# 标题\n正文",
))
job = client.wiki.build("kb_1", {"docId": "doc_1", "markdown": "# 标题", "async": True}) # W-06 异步
job = client.wiki.job("kb_1", job.jobId) # W-07 轮询至 status 终态
client.graph.nodes("kb_1", page=1, page_size=20, entity_type="ORG") # G-02 实体
client.graph.edges("kb_1", relation_type="WORKS_AT") # G-03 关系
client.graph.export("kb_1", format="json") # G-05 导出(北向只有 json / jsonl)
命令行(CLI)
安装后可用 ikc-op(或 python -m ikc_open_platform_sdk.cli):
export OPEN_PLATFORM_BASE_URL=http://localhost:18000
export OPEN_PLATFORM_API_KEY=<app-api-key>
ikc-op kb-query --page 1 --page-size 20
ikc-op kb-get kb_10001
ikc-op search-query --query "IKC 平台" --kb-id kb_10001 --top-k 5
ikc-op search-v2 --query "IKC 平台" --kb-ids '["kb_10001"]' --top-k 10 # Search V2(D-03)
ikc-op wiki-stat --kb-id kb_10001
ikc-op wiki-build --kb-id kb_10001 --doc-id doc_1 --markdown-file ./doc.md --async
ikc-op graph-nodes --kb-id kb_10001 --type ORG --page-size 50
ikc-op sys-catalog # 免认证系统路由
退出码:0 成功;1 业务错误;2 未认证(100401);3 无权限(100403);5 占位未实现(501001);6 传输层错误。
环境变量与全局选项:OPEN_PLATFORM_BASE_URL / --base-url、OPEN_PLATFORM_API_KEY / --api-key、
--timeout、OPEN_PLATFORM_EXTRA_HEADERS / --extra-headers(JSON 对象)。平台 AUTH_MODE=static /
gateway_header 时业务接口要求身份头,靠 --extra-headers 发
{"X-User-Id":"u_1","X-Tenant-Id":"t_1"}(经平台自带 HAProxy 时同发 X-Auth-User-Id / X-Auth-Tenant-Id),
实例路由头 X-Ikc-Instance-Id 也走这里;缺身份头会回 100401。
MCP Server(stdio)
安装后可用 ikc-op-mcp(或 python -m ikc_open_platform_sdk.mcp --transport stdio),向 MCP 客户端暴露 39 个工具(kb_* / doc_* / parse_* / search_* / wiki_* / graph_* / flash_* / sys_*),仅需 Python 标准库(NDJSON JSON-RPC 2.0)。
测试
python -m pytest sdk/python/tests -q
Metadata
Release files for ikc-open-platform-sdk 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ikc_open_platform_sdk-0.4.0.tar.gz | 30.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ikc_open_platform_sdk-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 60.4 kB
Release files / ikc_open_platform_sdk-0.4.0.tar.gz
| Download URL | ikc_open_platform_sdk-0.4.0.tar.gz |
|---|---|
| Size | 30.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
117bad7cc881131fad9c8484adf999a7f224194c9ac607fd75beb4e2c1ed9d41
|
|
BLAKE2b-256 checksum How to use checksums |
46d421c043e7df92018b2fa61802a120e280986e25871f09b950dc683a2537c4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / ikc_open_platform_sdk-0.4.0-py3-none-any.whl
| Download URL | ikc_open_platform_sdk-0.4.0-py3-none-any.whl |
|---|---|
| Size | 30.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3898511fad77c91a2c3acd33f610fceb17fff499cb1c80bef646ed7c47860369
|
|
BLAKE2b-256 checksum How to use checksums |
bbf1eba605f392498e7a12fc6f357a179f0d6359b89b5eacca10d74fa03dab1c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|