跳转至

模式一:UV库模式

此种模式下,对应着上面所说的每个数据处理节点,单独对外提供服务,每种服务能力我们称为一个U, V。

🚀开发环境搭建

✅前置要求

  • Python >= 3.10, 首选 Python 3.12

💾安装依赖

# 添加内部镜像源
pip config set global.index-url https://nexus.mybigai.ac.cn/repository/pypi/simple 
# 安装tongos python开发包
pip install tongos-general-unit-python==${version_you_want}

安装tongos python开发包

pip install tongos-general-unit-python==${version_you_want}

📖开发示例

我们假设您的工程项目结构如下

.(test_u_demo)
├── component # 您的核心功能代码,包含模型初始化和推理接口
│ └── my_fun.py
├── config # 您的配置文件
│ └── config.yaml
└── u_api # 您的u库申明
│ └── my_u.py
└── requirements.txt # 所依赖安装包

u_api/my_u.py里面申明U库,示例如下:

from tongos_general_unit_python import tongos_api
from component import my_func
uv = tongos_api.UV()

# 初始化
my_func.initialize()

@uv.U(name="testU", provider="[email protected]",description="测试1")
async def test_u(req:map):
  return my_func.inference(req)

如上所示,您只需要添加@uv.U 注解,就可以将一个python函数申明为U库。

其中name是这个U在特定provider下面的唯一标记名字。

provider指明U提供方,可以用邮箱等可以联系到您的格式来表明。

description是对U的功能和使用说明。

component/my_fun.py示例如下,可以通过获取sdk里面的环境变量来获取环境配置

mode = 'local'

def initialize():
  print("do some initialization work!")
  if mode != 'local':
    # from tongos_general_unit_python import env
    # 通过tongos_general_unit_python.env中的环境变量来加载模型
    # loadModel(env.model_path, model_name)
    pass
  else:
    # 加载本地目录上的模型
    # loadModel("/opt/data/","myModel.xxx")
    pass

def inference(input):
  print("do inference")
  return {"data":"test123"}

📋线下测试

  1. 启动UV服务

  2. uv_service u_api.my_u:uv # 启动uv服务,此示例采用的是上文中的项目结构,请适配自己的目录结构

  3. 通过sdk接口进行调用测试

payload = {"a":"bb"}
resp = tongos_api_client.u_call(
  payload,
  u_name="testU",                   # 跟声明的UName保持一致
  provider="[email protected]",    # 跟声明的provider保持一致
  u_service="localhost:8002"        # 本地测试默认是8002端口
)
print(resp)