sdk for yrihr mcp-platform
Project description
ModelMcpSDK Python SDK 使用说明文档
目录
概述
ModelMcpSDK 是一个用于访问 MCP(Model Control Platform)模型的 Python SDK,提供以下核心功能:
- 模型核心服务:处理 NC 文件格式的转换
- 后处理服务:获取和处理模型计算结果
- 方案服务:管理模型方案和执行工作流
安装与初始化
安装
pip install model-mcp-sdk
初始化 SDK
from model_mcp_sdk import ModelMcpSDK
# 配置参数
BASE_URL = "http://gateway.yrihr.com"
APP_KEY = "your_app_key"
APP_SECRET = "your_app_secret"
# 初始化 SDK
sdk = ModelMcpSDK(BASE_URL, APP_KEY, APP_SECRET)
核心服务
模型核心服务
将 NC 文件转换为 JSON 结构
from model_mcp_sdk import ReadNcRequest
# 创建读取 NC 文件的请求
read_nc_request = ReadNcRequest(file_path="/path/to/your/file.nc")
# 调用 NC 转 JSON 方法
nc_info = sdk.model_cores().nc_to_json(read_nc_request)
# 打印结果
print("NC 文件信息:", nc_info)
后处理服务
获取方案的最新成果模型元素
SCHEME_ID = "your_scheme_id"
# 获取最新成果模型元素
latest_achievements = sdk.postprocess().get_latest_achievements_by_scheme_id(SCHEME_ID)
# 遍历成果模型元素
for achievement in latest_achievements:
print("成果模型:", achievement.node_name)
for letter_item in achievement.letter_list:
print(" - 字母项:", letter_item.letter_name)
获取成果完整数据
from model_mcp_sdk import GetIndexRequestVO
# 创建获取指标请求
get_index_request = GetIndexRequestVO(
instance_id="your_instance_id",
letter_name="A",
model_core_id="your_model_core_id",
scheme_id=SCHEME_ID
)
# 获取成果完整数据
achievements = sdk.postprocess().get_achievements_full_data(get_index_request)
# 处理成果数据
for achievement in achievements:
print("成果指标:", achievement.index_name, "值:", achievement.value)
方案服务
获取 NC 模型信息架构
SCHEME_ID = "your_scheme_id"
PARAM_KEY = "your_param_key"
# 获取 NC 模型信息架构
nc_info_schema = sdk.scheme_service().get_nc_info_schema_by_scheme_id(SCHEME_ID, PARAM_KEY)
# 打印结构信息
print("NC 模型架构:", nc_info_schema)
写入 NC 文件
from datetime import datetime, timedelta
# 准备数据
rainfall = ["0.1", "0.2", "0.3", "0.4", "0.5"]
begin = datetime.now()
end = begin + timedelta(hours=5)
# 更新模型架构数据
for variable in nc_info_schema.variables_list:
if variable.name == "PA": # 降雨量变量
variable.array_value = rainfall
for attr in nc_info_schema.global_list:
if attr.name == "BGTM": # 开始时间
attr.value = begin.strftime("%Y-%m-%d %H:%M:%S")
elif attr.name == "EDTM": # 结束时间
attr.value = end.strftime("%Y-%m-%d %H:%M:%S")
for dim in nc_info_schema.dimensions_list:
if dim.name == "TM": # 时间维度
dim.value = 5
# 写入 NC 文件
write_result = sdk.scheme_service().write_nc_file_with_nc_info([nc_info_schema])
print("写入结果:", write_result.file_path)
执行 Argo 服务工作流
from model_mcp_sdk import ExeArgoServiceReqVO, KeyValueItem
# 创建执行请求
exe_argo_req = ExeArgoServiceReqVO()
exe_argo_req.key = "your_instance_key"
exe_argo_req.call_back_url = "your_callback_url"
# 添加数据
for nc_file in write_result.file_list:
key_value = KeyValueItem()
key_value.key = "your_parameter_key" # 与实际参数对应
key_value.value = nc_file.file_path
exe_argo_req.data.append(key_value)
# 执行服务
exec_res = sdk.scheme_service().exec_scheme_service(SCHEME_ID, exe_argo_req)
print("工作流执行结果:", exec_res.instance_id)
完整工作流示例
def full_workflow_example():
# 初始化 SDK
sdk = ModelMcpSDK(BASE_URL, APP_KEY, APP_SECRET)
# 1. 获取 NC 模型架构
nc_schema = sdk.scheme_service().get_nc_info_schema_by_scheme_id(SCHEME_ID, PARAM_KEY)
# 2. 填充数据
# ... (填充数据逻辑)
# 3. 写入 NC 文件
write_result = sdk.scheme_service().write_nc_file_with_nc_info([nc_schema])
# 4. 执行 Argo 服务工作流
exe_argo_req = prepare_execution_request(write_result)
exec_res = sdk.scheme_service().exec_scheme_service(SCHEME_ID, exe_argo_req)
# 5. 处理回调 (模拟)
process_callback(sdk, exec_res)
# 6. 获取后处理数据
achievements = sdk.postprocess().get_latest_achievements_by_scheme_id(SCHEME_ID)
process_achievements(sdk, achievements, exec_res)
def prepare_execution_request(write_result):
# ... (准备执行请求)
def process_callback(sdk, exec_res):
# ... (处理回调逻辑)
def process_achievements(sdk, achievements, exec_res):
# ... (处理成果数据)
错误处理
SDK 方法可能抛出以下异常:
- ConnectionError:网络连接问题
- AuthenticationError:认证失败
- ApiError:API 返回错误
- ValidationError:参数验证失败
try:
nc_info = sdk.model_cores().nc_to_json(read_nc_request)
except ConnectionError as e:
print("网络连接错误:", e)
except AuthenticationError as e:
print("认证失败:", e)
# 尝试刷新令牌
sdk.token().refresh_token()
# 重试操作
nc_info = sdk.model_cores().nc_to_json(read_nc_request)
except ApiError as e:
print("API 错误:", e.response.status_code, e.response.text)
except ValidationError as e:
print("参数验证失败:", e)
最佳实践
-
令牌管理:
# 手动刷新令牌 sdk.token().refresh_token() # 获取当前令牌 token = sdk.token().get_current_token()
-
批量处理:
# 批量写入多个 NC 文件 nc_info_list = [nc_info1, nc_info2, nc_info3] write_result = sdk.scheme_service().write_nc_file_with_nc_info(nc_info_list)
-
异步处理:
import threading # 异步执行长时间操作 def async_nc_to_json(): try: nc_info = sdk.model_cores().nc_to_json(read_nc_request) # 处理结果... except Exception as e: # 错误处理... thread = threading.Thread(target=async_nc_to_json) thread.start()
-
数据缓存:
from cachetools import cached, TTLCache # 缓存方案数据 (10分钟有效) scheme_cache = TTLCache(maxsize=100, ttl=600) @cached(scheme_cache) def get_cached_scheme(scheme_id): return sdk.scheme_service().get_nc_info_schema_by_scheme_id(scheme_id, PARAM_KEY)
API参考
ModelMcpSDK
| 方法 | 描述 | 返回类型 |
|---|---|---|
model_cores() |
获取模型核心服务 | ModelCoresService |
postprocess() |
获取后处理服务 | PostprocessService |
scheme_service() |
获取方案服务 | SchemeServiceService |
token() |
获取令牌服务 | TokenService |
ModelCoresService
| 方法 | 描述 | 参数 | 返回类型 |
|---|---|---|---|
nc_to_json(request) |
将 NC 文件转换为 JSON 结构 | ReadNcRequest |
NcInfo |
PostprocessService
| 方法 | 描述 | 参数 | 返回类型 |
|---|---|---|---|
get_latest_achievements_by_scheme_id(scheme_id) |
获取最新成果模型元素 | scheme_id: str |
List[ShowSchemeModelElementVO] |
get_achievements_full_data(request) |
获取成果完整数据 | GetIndexRequestVO |
List[BaseAchievements] |
get_achievements_details(request) |
获取成果详情 | GetAchivementDetailRequestVO |
List[Dict] |
SchemeServiceService
| 方法 | 描述 | 参数 | 返回类型 |
|---|---|---|---|
get_nc_info_schema_by_scheme_id(scheme_id, key) |
获取 NC 模型信息架构 | scheme_id: str, key: str |
NcInfo |
write_nc_file_with_nc_info(nc_info_list) |
写入 NC 文件 | List[NcInfo] |
WriteNcFileRspVO |
exec_scheme_service(scheme_id, request) |
执行方案服务 | scheme_id: str, ExeArgoServiceReqVO |
ExeArgoServiceWorkflowResVO |
TokenService
| 方法 | 描述 | 返回类型 |
|---|---|---|
get_headers() |
获取认证头信息 | Dict[str, str] |
refresh_token() |
刷新认证令牌 | None |
get_current_token() |
获取当前令牌 | str |
本使用说明文档提供了 ModelMcpSDK 的基本用法和核心功能。更多详细信息和高级用法,请参考 SDK 的源代码和 API 文档。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
model_mcp_sdk-1.0.1.tar.gz
(30.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file model_mcp_sdk-1.0.1.tar.gz.
File metadata
- Download URL: model_mcp_sdk-1.0.1.tar.gz
- Upload date:
- Size: 30.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
98ca7cdc01c26049090391e7fa6d71952ab2b92d8b61115356b68fea94f65db5
|
|
| MD5 |
999a04003b71593bc41c2a905979502b
|
|
| BLAKE2b-256 |
a96e3a3a2128f19142c211b5c8c57a8fd89a1c5fc41c4b768f94582a44fbed9b
|
File details
Details for the file model_mcp_sdk-1.0.1-py3-none-any.whl.
File metadata
- Download URL: model_mcp_sdk-1.0.1-py3-none-any.whl
- Upload date:
- Size: 49.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37943b74afbdb9847004d554c1b2f7182d52588ec54828c6a962b207077f77c4
|
|
| MD5 |
e8174679b4165c6649741da75aa6091f
|
|
| BLAKE2b-256 |
5d6764bcf2f8d7cc1b8638d5374d042b6d99ec40a359df65a6f1b497c3307fef
|