生成 YAML 定义 参数: node_name: 节点名称 description: 描述 language: 编程语言 parameters: 参数列表 returns: 返回值定义 返回: YAML 生成结果
(
self,
node_name: str,
description: str,
language: str,
parameters: list[dict[str, Any]],
returns: dict[str, Any],
)
| 397 | """ |
| 398 | |
| 399 | def generate_yaml( |
| 400 | self, |
| 401 | node_name: str, |
| 402 | description: str, |
| 403 | language: str, |
| 404 | parameters: list[dict[str, Any]], |
| 405 | returns: dict[str, Any], |
| 406 | ) -> YamlGenerationResult: |
| 407 | """生成 YAML 定义 |
| 408 | |
| 409 | 参数: |
| 410 | node_name: 节点名称 |
| 411 | description: 描述 |
| 412 | language: 编程语言 |
| 413 | parameters: 参数列表 |
| 414 | returns: 返回值定义 |
| 415 | |
| 416 | 返回: |
| 417 | YAML 生成结果 |
| 418 | """ |
| 419 | # 规范化节点名称 |
| 420 | sanitized_name = self._sanitize_name(node_name) |
| 421 | |
| 422 | # 构建 YAML 结构 |
| 423 | yaml_dict = { |
| 424 | "name": sanitized_name, |
| 425 | "kind": "node", |
| 426 | "description": description, |
| 427 | "version": "1.0.0", |
| 428 | "parameters": self._format_parameters(parameters), |
| 429 | "returns": returns, |
| 430 | "executor_type": "code", |
| 431 | "language": language, |
| 432 | } |
| 433 | |
| 434 | try: |
| 435 | dumped = yaml.dump( |
| 436 | yaml_dict, allow_unicode=True, default_flow_style=False, sort_keys=False |
| 437 | ) |
| 438 | if dumped is None: |
| 439 | yaml_content = "" |
| 440 | elif isinstance(dumped, bytes): |
| 441 | yaml_content = dumped.decode("utf-8", errors="replace") |
| 442 | else: |
| 443 | yaml_content = dumped |
| 444 | return YamlGenerationResult(yaml_content=yaml_content, is_valid=True) |
| 445 | except Exception as e: |
| 446 | return YamlGenerationResult(yaml_content="", is_valid=False, errors=[str(e)]) |
| 447 | |
| 448 | def _sanitize_name(self, name: str) -> str: |
| 449 | """规范化节点名称""" |