用途
本技能用于 Jinkō SDK 的安装、凭据配置与连接验证,帮助用户确认 Python 能够通过 jinko-sdk 对 Jinkō 项目完成认证,并读取一个项目条目列表。技能范围限定在 SDK 设置与凭据检查,不涉及模型、vpop、协议、输出集或试验等后续工作流。
主要能力
- 配置并检查 Jinkō 凭据:JINKO_PROJECT_ID 与单一凭据(优先 JINKO_SESSION_CODE,其次 JINKO_API_KEY)。
- 运行 SDK 自带的确定性连接检查脚本,验证认证与最小只读项目条目访问。
- 在验证通过后,使用 client.search() 浏览项目、按名称或自由文本查找条目,为后续工作流做定位。
- 提供客户端选择指导:JinkoClient 用于指定项目,JinkoOrgClient 用于未设置项目 ID 或跨多个项目的任务。
- 提供 SDK 签名读取方式:仅从 jinko 导入 JinkoClient、JinkoOrgClient 及可选异常,其余对象从客户端获取并用 help() 查看签名与文档字符串。
使用方式
凭据准备
JinkoClient() 从环境变量读取凭据。每条 SDK 命令都需要导出:
- JINKO_PROJECT_ID:用户所在项目的 id,始终设置,不要自行编造。
- 一个凭据:当 Jinko MCP 工具 get_session_code 可用时优先使用 JINKO_SESSION_CODE;该工具不可用时才使用 JINKO_API_KEY。两者同时设置时使用 JINKO_SESSION_CODE。
会话码只能交换一次。在每次 SDK 进程(包括连接检查和后续每条命令)之前立即调用 get_session_code,不要复用已传给进程的码。调用 get_session_code 时不带参数,工具返回包含 code 与 expiresAt 的 JSON,将该 code 导出为 JINKO_SESSION_CODE 供该进程使用。会话码不要放入 .env、聊天、日志或版本控制。在该进程内,SDK 会交换一次码,将 bearer 保存在 JINKO_API_TOKEN 中,并丢弃 JINKO_SESSION_CODE;新进程看不到该 bearer,需要重新获取码。在 expiresAt 之后或 SDK 报告认证失败时,也需重新调用 get_session_code。若 get_session_code 失败且已配置 JINKO_API_KEY,可继续使用 API key,并说明会话码不可用。
API key 仅在无 Jinko MCP get_session_code 工具可用时,从环境或本地 .env 使用 JINKO_API_KEY,不要让用户把 key 粘贴到聊天中。
连接检查
运行确定性检查并按其成功或错误信息处理:
python -m jinko.cli.check_jinko_connection
该脚本会:
- 在安装 python-dotenv 时加载 .env。
- 显示配置时对敏感值进行脱敏。
- 要求 JINKO_API_KEY(项目 key 或组织 key)或 JINKO_SESSION_CODE;两者同时设置时使用 JINKO_SESSION_CODE。
- 未设置 JINKO_PROJECT_ID 时,用 JinkoOrgClient().list_projects() 列出该 key 可见的项目;该列表不显示 key 范围,因此脚本不报告 key 类型。
- 设置 JINKO_PROJECT_ID 时,构造 JinkoClient(),调用 client.auth_check(),再调用 client.search(limit=1, show_table=False, show_table_hint=False) 以证明最小只读项目条目访问。
- 成功时打印最小输出,设置 JINKO_PROJECT_ID 时包含 key 类型。
仅在调试本地设置时使用 --show-config,它打印存在性与脱敏值,绝不打印完整 API key 或会话码。
验证之后
连接检查通过后,优先使用 client.search(...) 进行项目探索,因为它能让用户立即查看项目条目。最小示例:
from jinko import JinkoClient
client = JinkoClient() client.search(limit=20, columns="compact")
当用户想要浏览已配置项目中存在的内容、按名称或自由文本查找条目、或在选择模型、协议、vpop 或试验工作流之前定位自己时,使用 search()。设置脚本仅在认证后使用单条目、非渲染的 search() 作为项目读取检查;更大的交互式 search() 仅在验证成功后用于探索。
读取 SDK 签名
仅从 jinko 导入 JinkoClient 和/或 JinkoOrgClient,以及可选的异常。SDK 没有 jinko.model 或 jinko.models 模块。其他所有对象从客户端获取,需要时用 help() 读取其签名与文档字符串:
model = client.get_model("cm-...") help(client.get_model) help(type(model)) # 返回对象的每个方法 help(model.simple_solve)
仅当需要在类型注解中命名类时,才从 jinko.domain 导入类,例如 from jinko.domain import Model。避免在已安装包源码中搜索签名。
选择客户端
两个客户端都接受项目 key 和组织 key,因此按任务选择。JinkoClient() 用于 JINKO_PROJECT_ID 指定的项目内工作。JinkoOrgClient 用于 JINKO_PROJECT_ID 未设置或任务跨多个项目的情况。JinkoOrgClient 仅读取 JINKO_API_KEY 与 JINKO_BASE_URL:
from jinko import JinkoOrgClient
org = JinkoOrgClient() for project in org.list_projects(): print(project.id, project.name)
client = org.project(project.id) # 该项目的 JinkoClient
使用 org.auth_check() 在没有项目 ID 的情况下读取 key 声明的范围。list_projects() 可能包含该范围之外的项目。在多项目工作流中,对每个项目客户端调用 client.auth_check() 并捕获 AuthenticationError 以跳过范围外的项目,然后请求项目资源以验证实际访问。没有 key 元数据的认证响应仅接受凭据检查。
适用场景
- 首次安装并配置 jinko-sdk,需要验证 Python 能否认证 Jinkō。
- 需要确认凭据(会话码或 API key)与项目 ID 是否正确。
- 在进入模型、vpop、协议、输出集或试验工作流之前,需要先浏览或查找项目条目。
- 需要区分 JinkoClient 与 JinkoOrgClient 的使用场景。
限制
- 本技能仅用于 SDK 设置与凭据检查,不覆盖模型、vpop、协议、输出集或试验工作流。
- 正确的包是 jinko-sdk,它导出 jinko 模块;jinko 是另一个无关的包。
- 会话码只能交换一次,不能复用,且不得放入 .env、聊天、日志或版本控制。
- 当 Jinko MCP 服务器已连接时,缺少 .env 是预期情况,不要停下来创建它。
- 故障排除时重新运行检查并按其确定性诊断处理,不要用临时检查替代,也不要让用户分享密钥。
- 关于收费、价格、平台支持范围等事实,资料未提供。