AI 服务器操作

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

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

AI 服务器操作的工作原理

Odoo 中由 AI 驱动的工作流围绕明确的职责分离构建:一方是 AI 服务器操作(即 管理器),另一方是工具(即 执行器)。

AI 服务器操作:管理器

AI 服务器操作充当决策者,即管理器。它读取记录及其上下文,解释 AI 提示,并决定调用哪个工具以及使用哪些参数。

服务器操作不强制执行业务规则、不直接修改记录,也不保证操作的正确性。其作用仅限于决策。

AI 工具:执行器

工具是标准服务器操作,在其 用途 选项卡中启用了 在 AI 中使用 选项。工具包含所有执行逻辑,并执行记录更新、移动或写入。工具 必须 在 Python 代码中显式强制执行业务规则。

如果工具由 AI 服务器操作调用,它将无条件执行,除非代码本身阻止执行。

AI 服务器操作工作流

AI 服务器操作工作流按以下顺序进行:

  1. 某条记录触发 AI 服务器操作。

  2. 以该记录为上下文对 AI 提示进行求值。

  3. AI 选择其中一个可用工具。

  4. AI 提供该工具所需的参数。

  5. 所选工具执行其 Python 代码。

重要

只有在 Odoo 中已存在底层行为(例如将文档移动到文件夹)时,AI 服务器操作才能在没有自定义逻辑的情况下工作。在这些情况下,AI 选择参数,由 Odoo 执行操作。

用例演示

自动整理收件箱中的文档 示例展示了完整的 AI 服务器操作模式。前往 设置 ‣ 技术 ‣ 服务器操作 即可打开 服务器操作 菜单。

注解

此服务器操作旨在审查文档内容并添加标签。该操作本身 不 移动文档或添加标签,它仅根据文档的内容决定应使用哪个工具。

该操作的 模型 列为 文档,类型 为 AI。

自动整理收件箱中的文档服务器操作的记录界面。

此操作的提示提供有关文档的上下文以及该操作的意图。

工具 字段包含可根据此提示执行的多个操作,包括移动文档、添加标签或创建发票或账单。

注解

AI:添加标签、AI:移动到文件夹 和 AI:重命名文档 都是 执行代码 服务器操作,即它们会触发 Python 代码。

例如,如果该操作根据文档内容判断最合适的工具是 AI:移动到文件夹,则 Python 代码会执行以下操作:

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

此代码在调用时会无条件执行,并使用现有的方法完成移动。

注解

AI 不会从 Python 代码或方法签名中推断参数。相反,传递给工具的参数完全由工具的配置决定。

对于 AI:移动到文件夹 工具,Python 代码需要一个名为 folder_id 的变量。AI 之所以知道要提供 folder_id,是因为它在配置中被显式声明为参数。该配置位于服务器操作的 用途 选项卡的 AI 架构 字段中。AI 架构 下的 名称 列必须与 Python 代码中使用的变量名完全一致。

AI 使用参数说明来理解该参数代表什么、期望什么类型的值,以及何时适合提供该参数。

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

AI 移动到文件夹服务器操作的用途选项卡。

创建自定义 AI 工具

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

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

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

另请参阅

服务器操作

常见问题

为什么“工具”字段为空?

  • 确认至少有一个服务器操作启用了 在 AI 中使用。

  • 确认至少有一个工具被分配给与该服务器操作相同的模型 模型。

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

  • Python 代码在退出时未做任何更改。

  • 必需的参数缺失或为空。

  • 工具逻辑中未实现业务条件。

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

  • 提示缺少足够的上下文。

  • 多个工具匹配同一意图。

  • 在工具层面未强制执行任何约束。