星海智算开发文档
应用开发开发教程

运行本地模拟

运行本地模拟:沿用平台当前公开 SDK 合同,区分本地模拟、联网调试与正式运行。

本地模拟不联网、不启动真实模型、不扣积分。它在本机回环地址启动一个短期 HTTP 服务,把与联网调试和中心运行相同的环境变量注入子进程。因此业务代码不需要为“本地模式”写另一套调用。

先创建 local_demo.py

from jusp_sdk.runtime import RuntimeClient, RuntimeHttpClient

runtime = RuntimeHttpClient()
session_api = RuntimeClient(app_key="my-app")

try:
    session = session_api.resolve_dev_session()
    print(session.identity().account_id)

    print(runtime.services())
    reply = runtime.chat_completions({
        "model": "local-chat",
        "messages": [{"role": "user", "content": "你好"}],
    })
    print(reply["choices"][0]["message"]["content"])
finally:
    runtime.close()
    session_api.close()

jusp app 启动:

jusp app dev --local --app-key my-app -- python local_demo.py

本地 HTTP 模拟覆盖所有 SDK 公开运行面接口:服务发现、对话、向量、重排、OCR、语音转写、提示词优化、图片/视频/音频/文档异步任务、Job 查询、Asset 上传/读取、RuntimeSession 交换/解析和应用间授权。异步任务第一次查询为 running,第二次为 succeeded,便于验证轮询逻辑。

这里的“所有公开运行面接口”还包括 openapi()models()voices()voice()preview_admission()head_asset()。它们同样经过本机 HTTP 请求、认证头、JSON 解析和错误映射,不是绕过 SDK 的 Python 假对象。创建应用、上传版本、导入镜像和审核属于会留下真实记录的控制面,不在模拟范围内;其离线校验分别由 jusp app inspect / validate / package 完成。

--scenario 验证错误分支:

场景命令参数预期
组织管理员--scenario success(默认)两个分组、三名成员的固定示例
普通组织成员--scenario organization_member身份解析成功,目录请求 403
无组织个人--scenario personal身份不含组织;Python SDK 调用目录前抛出 ValueError,直接 HTTP 请求则返回 403
会话过期--scenario expired_session身份解析 401
参数错误--scenario invalidHTTP 400
积分不足--scenario insufficient_balanceHTTP 402
限流--scenario rate_limitedHTTP 429,带 Retry-After
依赖失败--scenario dependency_errorHTTP 503
超时--scenario timeoutHTTP 504
幂等冲突--scenario idempotency_conflictHTTP 409
异步任务失败--scenario async_failedJob 返回 failed

例如:

jusp app dev --local --scenario rate_limited -- python local_demo.py

模拟器不会伪造开发者控制面中的创建应用、上传版本、上传镜像或审核;这些动作必须联网且保留真实记录。固定模拟文本只用于验证业务代码的请求、成功、失败和超时处理,不代表真实模型质量。


返回应用开发 · 下一步:连接真实平台调试