Odoo AI 服务器动作:工作流决策与工具执行指南


AI 服务器动作

AI(人工智能) 服务器动作通过允许人工智能在工作流中做出决策,扩展了 Odoo 的自动化框架。

它们适用于逻辑无法完全通过固定条件表达,但仍需通过标准服务器动作进行受控执行的场景。

AI 服务器动作的工作方式

Odoo 中的 AI 驱动工作流围绕 AI(人工智能)服务器动作(即 管理者)和工具(即 工作者)之间的明确职责划分构建。

AI 服务器动作:管理者

AI(人工智能) 服务器动作充当决策者或管理者。它读取记录及其上下文,解释 AI(人工智能) Prompt,并决定调用哪个工具以及使用哪些参数。

服务器动作不强制业务规则、不会直接修改记录,也不保证操作的正确性。其角色仅限于做出决策。

AI 工具:工作者

工具是启用了 在 AI 中使用 选项的标准服务器动作(在 使用 选项卡中勾选)。工具包含所有执行逻辑,负责记录的更新、移动或写入。工具 必须 在 Python 代码中显式实现业务规则。

如果工具被 AI(人工智能) 服务器动作调用,它将无条件执行,除非代码本身阻止执行。

AI 服务器动作工作流

AI(人工智能) 服务器动作的工作流遵循以下顺序:

  1. 记录触发 AI(人工智能) 服务器动作。
  2. 使用记录作为上下文评估 AI(人工智能) Prompt。
  3. 在可用工具中选择一个。
  4. 提供工具所需的参数。
  5. 所选工具执行其 Python 代码。

:::: important
::: title
重要提示
:::

只有当底层行为已经在 Odoo 中实现(如将文档移动到文件夹)时,AI(人工智能) 服务器动作才能在无需自定义逻辑的情况下工作。在这些情况下,AI(人工智能) 只选择参数,Odoo 完成实际动作。
::::

使用案例演练

收件箱文档自动分类 示例展示了完整的 AI(人工智能) 服务器动作模式。进入 设置 → 技术 → 服务器动作 菜单即可查看。

:::: note
::: title
备注
:::

该服务器动作用于审查文档内容并添加标签。动作本身 移动文档或添加标签,仅依据文档内容决定使用哪个工具。

动作的 模型Document类型AI
::::

该动作的 Prompt 提供了文档的上下文以及动作意图。

工具 字段列出了可基于 Prompt 执行的多种操作,如移动文档、添加标签或创建发票/账单。

:::: note
::: title
备注
:::

AI: Add TagsAI: Move to FolderAI: Rename Document 均为 执行代码 服务器动作,意味着它们会触发 Python 代码。
::::

比如,若动作根据文档内容判断最合适的工具是 AI: Move to Folder,对应的 Python 代码如下:

ai['result'] = record._ai_action_move_in_folder(folder_id)

该代码在被调用时无条件执行,并使用已有方法完成移动。

:::: note
::: title
备注
:::

AI(人工智能) 并不会从 Python 代码或方法签名中推断参数。传递给工具的参数完全由工具的配置决定。

对于 AI: Move to Folder 工具,Python 代码期望一个名为 folder_id 的变量。AI(人工智能) 能提供 folder_id,因为它在工具的 使用 选项卡的 AI Schema 字段中被显式声明。AI Schema 中的 名称 列必须与代码中使用的变量名完全一致。

AI(人工智能) 使用参数描述来理解该参数代表什么、期待何种值以及何时提供。

如果在 使用 选项卡中未定义某个参数,即使代码引用了该参数,AI 也无法提供。

::::

创建自定义 AI 工具

上述 收件箱文档自动分类 示例的相同模式也可以使用标准 Odoo 逻辑实现。例如,要创建一个能够更新任务描述的动作,可以新建一个 执行代码 动作,代码如下:

record.write({'description': content})

要使其正常工作,content 必须 在工具的 使用 选项卡中定义为参数。

::: seealso
服务器动作 <reference/actions/server>
:::

常见问题

为什么 Tools 字段为空?

  • 确认至少有一个服务器动作启用了 在 AI 中使用
  • 确认至少有一个工具与该服务器动作的 模型 相同。

为什么工具运行了但没有任何变化?

  • Python 代码在未做修改的情况下退出。
  • 必需的参数缺失或为空。
  • 业务条件未在工具逻辑中实现。

为什么 AI 选择了意料之外的工具?

  • Prompt 缺乏足够的上下文。
  • 多个工具匹配相同意图。
  • 工具层面未强制约束条件。
滚动至顶部