专家模式试用
  XPQuant 4天前 48 0

专家模式

专家模式中调用了一个叫Pydantic库,它的核心作用:数据验证与解析。在 Python 这种动态类型语言中,变量的类型随时可能发生变化。当你从外部环境(比如前端的 API 请求、数据库读取、读取本地 JSON 文件)接收数据时,你很难保证传入的数据格式完全符合你的预期。比如你期望一个代表年龄的整数 age,别人却传进了一个字符串 “twenty”,如果直接处理,代码在运行到深处时就会崩溃。
Pydantic 就是用来解决这个痛点的。它利用 Python 的类型提示机制,在数据进入你的核心业务逻辑之前,强制对其进行检查、清洗和过滤。

老师给我们展示了一个案例,两数相加的节点。我自己添加了备注展示如下:

# 导入 Python 类型提示模块 Optional (表示值可能为 None) 和 Type (表示类本身的类型) from typing import Optional, Type # 从 panda_plugins.base 导入节点基类 BaseWorkNode 和节点注册装饰器 work_node from panda_plugins.base import BaseWorkNode, work_node # 从 pydantic 导入数据模型基类 BaseModel,用于提供严格的数据参数类型校验 from pydantic import BaseModel # 定义输入数据模型:继承自 BaseModel,它指定了节点在运行时需要接收到什么参数及其要求 class InputModel(BaseModel): """ Define the input model for the node. Use pydantic to define, which is a library for data validation and parsing. Reference: https://pydantic-docs.helpmanual.io 为工作节点定义输入模型. 使用 Pydantic 定义, Pydantic 是一个用于数据验证和解析的库. 参考文档: https://pydantic-docs.helpmanual.io """ # 定义参数 number1,类型必须为整数 (int),Pydantic 会自动在运行前验证传入值 number1: int # 定义参数 number2,类型也必须为整数 (int) number2: int # 定义输出数据模型:继承自 BaseModel,它规范了节点在执行完毕后会输出什么样的数据结构 class OutputModel(BaseModel): """ Define the output model for the node. Use pydantic to define, which is a library for data validation and parsing. Reference: https://pydantic-docs.helpmanual.io 为工作节点定义输出模型. 使用 Pydantic 定义, Pydantic 是一个用于数据验证和解析的库. 参考文档: https://pydantic-docs.helpmanual.io """ # 定义输出字段 result,即计算出来的相加结果,数据类型为整数 (int) result: int # 使用 @work_node 装饰器将该类注册为系统的可用节点 # name="Example - Add Two Numbers" 是节点在前端控制面板中显示的名称,group="Test Nodes" 是该节点所属的分组 @work_node(name="Example - Add Two Numbers", group="Test Nodes") # 定义节点核心执行类,必须继承 BaseWorkNode 基类才能被系统识别和调用 class ExamplePluginAddition(BaseWorkNode): """ Implement a example node, which can add two numbers and return the result. 实现一个示例节点, 完成一个简单的加法运算, 输入 2 个数值, 输出 2 个数值的和. """ # Return the input model # 返回输入模型 # 使用 @classmethod 表明这是一个类方法,框架在无需实例化节点对象时,就能主动调用获取这里的输入规范 @classmethod def input_model(cls) -> Optional[Type[BaseModel]]: # 返回上方定义好的 InputModel 类,作为本节点的输入契约 return InputModel # Return the output model # 返回输出模型 # 同样使用 @classmethod 提供对外访问本节点输出结构的方法 @classmethod def output_model(cls) -> Optional[Type[BaseModel]]: # 返回上方定义好的 OutputModel 类,作为本节点的输出契约 return OutputModel # Node running logic # 节点运行逻辑 # 核心算法执行函数。当系统触发该节点运行时,系统将输入的数据实例化为 BaseModel (此处为 InputModel) 并传入 def run(self, input: BaseModel) -> BaseModel: # 提取 input 实例对象中的 number1 和 number2 属性,执行加法,将结果存入 result 变量 result = input.number1 + input.number2 # 将计算得到的数值 result 封装到事先约定好的 OutputModel 实例中,并返回给工作流系统 return OutputModel(result=result) # 这是一个 Python 的标准独立执行入口判断。只有当该脚本文件被作为主程序直接运行时才会执行,被其他文件 import 时不会执行 if __name__ == "__main__": # 本地调试:实例化上面声明的加法计算节点 node = ExamplePluginAddition() # 本地调试:手动构造一个符合 InputModel 规范的对象,赋予 number1 为 1,number2 为 2 input = InputModel(number1=1, number2=2) # 本地调试:调用被实例化节点的 run 方法,传入刚刚创建的输入对象,并把返回结果打印到控制台中 print(node.run(input))

1.点击创建工作流旁边的专家模式
image.png

2.在专家模式中写的节点可以在自定义节点中展示
image1.png

3.拖动节点到面板,即可以实现节点功能
image2.png

总结

这个专家模式还没有很熟悉,正在学习中,希望能够跟各位交流共进。

最后一次编辑于 4天前 0

暂无评论

推荐阅读