Files
2024-07-04 11:34:32 +08:00

2.1 KiB

Documentation

  • Class name: AddTool
  • Category: SALT/Language Toolkit/Agents
  • Output node: False

AddTool节点旨在通过向会话代理注册新功能或工具来增强其能力。它抽象了为代理增加额外能力的过程,从而实现更加动态和多功能的交互体验。

Input types

Required

  • tool
    • 表示要添加到代理的工具,封装了该工具的功能、名称和描述。
    • Comfy dtype: TOOL
    • Python dtype: Dict[str, Any]
  • assistant
    • 将添加工具的主要会话代理,作为交互的主要接口。
    • Comfy dtype: AGENT
    • Python dtype: AGENT

Optional

  • executor
    • 一个可选的次要代理,可以执行工具的功能。如果未指定,默认为主要代理。
    • Comfy dtype: AGENT
    • Python dtype: AGENT

Output types

  • assistant
    • 增强后的会话代理,现在具备了新工具的能力。
    • Comfy dtype: AGENT
    • Python dtype: AGENT
  • executor
    • 负责执行工具功能的代理,可能与主要代理相同。
    • Comfy dtype: AGENT
    • Python dtype: AGENT

Usage tips

  • Infra type: CPU
  • Common nodes: unknown

Source code

class AddTool:
    @classmethod
    def INPUT_TYPES(cls):
        return {
            "required": {
                "tool": ("TOOL",),
                "assistant": ("AGENT",),
            },
            "optional": {
                "executor": ("AGENT",),
            }
        }

    RETURN_TYPES = ("AGENT", "AGENT",)
    RETURN_NAMES = ("assistant", "executor",)

    FUNCTION = "create_tool"
    CATEGORY = f"{MENU_NAME}/{SUB_MENU_NAME}/Agents"

    def create_tool(self, tool, assistant, executor=None):
        assistant = clone_conversable_agent(assistant)
        if executor is None:
            executor = assistant
        # Register the calculator function to the two agents.
        register_function(
            tool["function"],
            caller=assistant,
            executor=executor,
            name=tool["name"],
            description=tool["description"],
        )
        return (assistant, executor,)