licos-platform-sdk
LICOS 项目服务端 SDK,提供项目数据库、对象存储、企业知识库、本体和 OAuth 等平台能力。
项目登录身份
有内置登录用项目当前会话,没有内置登录用 LICOS 网页登录。显式配置模式,不按凭证是否存在切换身份:
from licos_platform_sdk import ProjectAuth, get_current_user
project_auth = ProjectAuth("platform")
token = project_auth.user_token(request)
user = get_current_user(user_token=token)
platform 模式接受调用方明确提供的 Bearer Token,或浏览器登录桥签发的 X-Licos-User-Ticket;两者同时出现会报错。票据只兑换一次,绑定 LICOS_PROJECT_ID,服务端使用 LICOS_AI_AGENT_TOKEN 兑换;不会根据初始化用户换 Token。
内置登录使用 ProjectAuth("builtin", resolve_builtin_token=已有会话取值函数),取值函数只返回该登录用户已授权的 LICOS Token。它缺失或失效时返回内置登录错误,不读取平台票据或容器用户。业务自签 JWT 不能直接传给平台 SDK。
Agent/Workflow 的请求节点使用 ctx.identity.user_token。异步 HTTP 处理器用 await asyncio.to_thread(project_auth.user_token, request) 完成票据兑换,避免阻塞事件循环。
沿用现有 OAuth 授权范围与接口权限。凭证无权访问目标接口时返回现有鉴权错误,不扩大权限或换用其他身份。
当前使用者信息(0.6.1 起)
from licos_platform_sdk import get_current_user
# token 是当前请求的用户 Bearer Token,不包含 "Bearer " 前缀。
sys_user = get_current_user(user_token=token)
print(sys_user["displayName"])
print(sys_user["departments"])
print(sys_user["primaryPosition"])
返回对象与低代码系统变量 sys_user 相同,保留平台的 camelCase 字段名:
id、username、displayName、avatarUrl、tenantId、tenantName、
primaryDepartment、departments、organizationAssignments、primaryPosition、primaryJobTitle。
部门包含 ID、名称、组织路径、ID 路径及主部门标志;组织任职包含岗位、职务和部门负责人标志。
SDK 自动读取 LICOS_PLATFORM_API_BASE_URL、LICOS_AI_AGENT_TOKEN 和项目工作空间。
workspace_id 可由服务端指定执行工作空间;默认依次读取 LICOS_WORKSPACE_ID、
LICOS_OWNER_WORKSPACE_ID、AGENT_WORKSPACE_ID。企业按执行工作空间确定,与低代码一致。
无企业时企业字段为 None;未加入执行企业的使用者,部门和任职为空,不能返回项目所有者的信息。
多用户服务每次传入当前请求的 Token。智能体/工作流可传 ctx.identity.user_token;
在异步节点中使用 await asyncio.to_thread(get_current_user, user_token=token)。
结果不做全局缓存。Token 无效时直接报错,由调用方处理登录失效。
从 0.7.0 起必须显式传入 user_token。LICOS_CURRENT_USER_ID 只是容器初始化用户,不能代表网页登录者。
本接口仅供服务端使用;LICOS_AI_AGENT_TOKEN 不得发送到浏览器。
企业本体
本体接口仅供项目服务端使用,通过平台网关 /ontology-api 调用。先搜索当前用户的授权目录,再按返回的参数 Schema 和模式调用:
from licos_platform_sdk import ontology
# token 来自本次请求的认证会话,不含 Bearer 前缀。
catalog = ontology.search_tools("查询设备状态", user_token=token)
selected = next(
item for item in catalog["items"]
if item["selection"] == "MATCH" and item["mode"] == "READ"
and item["definition"]["function"]["name"] == requested_tool_name
)
result = ontology.invoke_tool(
selected["definition"]["function"]["name"],
arguments_from_validated_request,
user_token=token,
catalog_version=catalog["catalogVersion"],
required_mode="READ",
)
elementId是已解析的部署实例 ID,用于上下文、属性、关系和数据查询。objectTypeId从实例上下文读取,是对象模板 ID,与template.templateId一致;不能混用。- 函数使用目录条目的
apiName和version,业务输入input按inputSchema填写;objects是对象导入描述,最多 8 组,每组pageSize为 1–100。动作仍使用列表id作为actionTypeId。
已发布本体从 0.8.0 起提供专门接口。编辑阶段用 ontology.list_releases(user_token=token)、get_package(release_id, user_token=token) 查看语义,再用 create_binding(release_id, objects, functions, user_token=token) 保存版本、属性和函数范围。objects 为 [{"elementId": "部署ID", "attributeIds": ["属性ID"]}],functions 为 [{"apiName": "函数名", "version": "函数版本"}];这些标识取自真实返回。
# binding 从应用可信配置读取;token 是本次调用身份,不来自模型参数。
context = ontology.validate_binding(binding, user_token=token)
evidence = ontology.query_package_objects(binding, element_id, {
"attributeIds": selected_attribute_ids,
"pagination": {"mode": "OFFSET", "pageNum": 1, "pageSize": 20},
}, user_token=token)
result = ontology.invoke_package_function(
binding, api_name, function_version, business_input, user_token=token,
)
每次消费都重新读取指定发布,核对身份及哈希元数据,不回退 CURRENT。查询保留主键、分页和上游数据时间;hasMore=true 表示结果未取全。函数 objects 导入会读取全部属性,因此属性受限的部署实例不能整对象导入。历史画布函数可查看但不可执行。新发布包动作暂不开放;旧动作继续使用其原有确认协议。绑定是应用范围约束,不替代上游实时权限;SDK 不授予权限、不重算缺少规范的产物哈希。
- 动作预览携带选定部署实例的
objectElementId、真实实例键objectKey和参数。用户确认后使用同一预览的confirmationId执行,目标或参数变化时重新预览。 - SDK 严格按动态目录校验。动作列表 AI 接口目前只接受
objectTypeId,列表按模板查询,预览指定objectElementId;列表按实例过滤需要上游补齐接口契约。 - 实时订阅使用
ontology.subscribe_realtime(element_ids, user_token=token);HTTP 401/403 终止订阅,由调用方更新 Token。异步服务通过工作线程调用同步 SDK。
身份选择(0.7.0 起)
LICOS_CURRENT_USER_ID 表示容器启动时配置的执行用户。SDK 不用它推断当前网页登录者,也不从进程级 LICOS_USER_TOKEN 取得本次请求凭证。项目身份指运行时配置的项目所有者身份,按接口选择:
| 接口 | 调用身份 |
|---|---|
get_current_user |
必须显式传入本次用户的 user_token |
enterprise_knowledge 全部接口 |
必须传 user_token,企业范围和权限由平台认证结果确定 |
本体 search_tools、resolve_tool、invoke_tool、subscribe_realtime |
必须传执行用户的 user_token;网页登录请求使用本次登录会话的 Token |
普通 knowledge 接口 |
默认项目身份;需要用户权限时显式传 user_token |
数据库、对象存储、oauth 应用管理 |
项目身份 |
oauth_runtime 授权码交换、刷新、userinfo、撤销 |
按 OAuth 协议传对应凭证,不使用容器用户替代 |
user_token 不含 Bearer 前缀。用户标识、名称和企业信息以平台认证结果为准;项目所有者、工作空间等资源归属字段单独保留。
from licos_platform_sdk import enterprise_knowledge, get_current_user, knowledge, ontology
# token 来自本次请求的认证会话。
user = get_current_user(user_token=token)
resources = enterprise_knowledge.tree(user_token=token)
catalog = ontology.search_tools('设备状态', user_token=token)
result = knowledge.search('资料', user_token=token)
网页登录请求缺少 Token 时,业务入口应返回登录错误,不能改用容器用户或项目所有者。每次调用显式传入 Token,不把请求 Token 或用户 ID 写入 os.environ,也不跨用户共享请求身份。
显式传入的 Token 失效时直接返回鉴权错误,由调用方更新登录凭证。实时订阅遇到网络中断会携带原 Token 重新检查授权并订阅,401/403 终止;取得新 Token 后重新创建订阅。后台常驻的项目订阅由调用方显式传项目所有者 Token。
独立 licos-platform CLI 的用户操作才默认按 LICOS_CURRENT_USER_ID 和运行时服务凭证换 Token。HTTP 服务通过 CLI 调用用户接口时使用 --token-stdin,不依赖容器默认用户。升级到 0.7.0 时,已有企业知识库和本体调用必须补上 user_token 参数。
Metadata
Release files for licos-platform-sdk 0.8.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 | Provenance | |
|---|---|---|---|---|
| licos_platform_sdk-0.8.0.tar.gz | 57.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| licos_platform_sdk-0.8.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 108.2 kB
Release files / licos_platform_sdk-0.8.0.tar.gz
| Download URL | licos_platform_sdk-0.8.0.tar.gz |
|---|---|
| Size | 57.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
128baca3bec6e7b0305b35f52c9561d0af37fd6662552b651d3ddd7096a1464f
|
|
BLAKE2b-256 checksum How to use checksums |
93d010c0d5e8f26199a1dbafa6b0293f1290602782bf91a3ced370a698ae0605
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.7
|
Release files / licos_platform_sdk-0.8.0-py3-none-any.whl
| Download URL | licos_platform_sdk-0.8.0-py3-none-any.whl |
|---|---|
| Size | 50.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
adc58d98bcef67573a72c0bbd46cf29a90fe8ebcf2e2a2458cad3f212926c532
|
|
BLAKE2b-256 checksum How to use checksums |
38dfa223576e4d3bcb3c2a9aadc88a62ea5a470104ae16c69fb535d84b6ef17a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.7
|
Security for licos-platform-sdk 0.8.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.