跳转至

result

feishu.agent.result

ToolOutcome

Bases: str, Enum

工具执行结果的归一化处置(disposition)。

工具处理函数既可直接返回任意值(视同 COMPLETED),也可返回一个 feishu.agent.result.ToolResult 以显式声明处置。NEEDS_USER_AUTH 要求先引导用户完成 OAuth 授权:feishu.agent.loop.Agent 据此发送一张 授权卡片,并把一段提示回传给模型以继续本轮(并不挂起对话)。写操作的审批由工具的 requires_approval 在 分发**之前**统一挂起(见 feishu.agent.tools.Tool),不经由此枚举。由于继承自 str,枚举成员可直接与 字符串字面量比较。

示例:

Python Console Session
1
2
3
4
>>> ToolOutcome.NEEDS_USER_AUTH == "needs_user_auth"
True
>>> ToolOutcome("completed") is ToolOutcome.COMPLETED
True
源代码位于: feishu/agent/result.py
Python
class ToolOutcome(str, Enum):
    r"""
    工具执行结果的归一化处置(disposition)。

    工具处理函数既可直接返回任意值(视同 `COMPLETED`),也可返回一个 [feishu.agent.result.ToolResult][]
    以显式声明处置。`NEEDS_USER_AUTH` 要求先引导用户完成 OAuth 授权:[feishu.agent.loop.Agent][] 据此发送一张
    授权卡片,并把一段提示回传给模型以继续本轮(并不挂起对话)。写操作的审批由工具的 `requires_approval` 在
    分发**之前**统一挂起(见 [feishu.agent.tools.Tool][]),不经由此枚举。由于继承自 `str`,枚举成员可直接与
    字符串字面量比较。

    Examples:
        >>> ToolOutcome.NEEDS_USER_AUTH == "needs_user_auth"
        True
        >>> ToolOutcome("completed") is ToolOutcome.COMPLETED
        True
    """

    COMPLETED = "completed"
    FAILED = "failed"
    BLOCKED = "blocked"
    NEEDS_USER_AUTH = "needs_user_auth"
    CANCELLED = "cancelled"
    INFORMATIONAL = "informational"

ToolResult dataclass

工具处理函数的结构化返回值,向 feishu.agent.loop.Agent 声明处置与回传内容。

多数工具可直接返回原始值;需要声明处置时返回本类型:NEEDS_USER_AUTH 须随附 authorize_url (引导用户授权的链接,feishu.agent.loop.Agent 据此发卡并继续本轮)。content 是回传给模型的工具结果 文本/对象,is_errorTrue 时模型据此调整后续行为。写操作的二次确认由工具的 requires_approval 在分发 前统一处理,不经由本返回值。

示例:

Python Console Session
1
2
3
4
5
>>> ok = ToolResult(outcome=ToolOutcome.COMPLETED, content="已列出 3 个日程")
>>> ok.outcome
<ToolOutcome.COMPLETED: 'completed'>
>>> ok.is_error
False
源代码位于: feishu/agent/result.py
Python
@dataclass(slots=True)
class ToolResult:
    r"""
    工具处理函数的结构化返回值,向 [feishu.agent.loop.Agent][] 声明处置与回传内容。

    多数工具可直接返回原始值;需要声明处置时返回本类型:`NEEDS_USER_AUTH` 须随附 `authorize_url`
    (引导用户授权的链接,[feishu.agent.loop.Agent][] 据此发卡并继续本轮)。`content` 是回传给模型的工具结果
    文本/对象,`is_error` 为 `True` 时模型据此调整后续行为。写操作的二次确认由工具的 `requires_approval` 在分发
    前统一处理,不经由本返回值。

    Examples:
        >>> ok = ToolResult(outcome=ToolOutcome.COMPLETED, content="已列出 3 个日程")
        >>> ok.outcome
        <ToolOutcome.COMPLETED: 'completed'>
        >>> ok.is_error
        False
    """

    outcome: ToolOutcome
    content: Any = None
    authorize_url: str | None = None
    is_error: bool = False