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 服务端操作的标准使用范式。可通过路径 设置 ‣ 技术 ‣ 服务端操作,进入服务端操作菜单。

備註

该服务端操作的设计用途为识别文档内容并添加标签,但操作本身**并不**执行文档移动或标签添加操作,仅会根据文档内容判定应调用的工具。

此操作的 模型`字段配置为*文档*,:guilabel:`类型 字段配置为AI。

自动整理收件箱文档服务端操作的相关配置记录。

该动作的提示词会同时提供文档相关上下文,以及该动作的执行意图。

工具 字段中配置了多项可根据该提示词触发的操作,包括文档移动、标签添加、发票创建、账单创建等。

備註

AI:添加标签AI:移动至文件夹AI:重命名文档 均为*执行代码*类型的服务端操作,即这类动作会触发 Python 代码执行。

举例来说,若该动作根据文档内容判定,最适配的工具为 *AI:移动至文件夹 *,则对应的 Python 代码会执行下述操作:

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

此段代码被调用后将无条件执行,并通过现有方法完成文档移动操作。

備註

AI不会从 Python 代码或方法签名中自动推导所需参数,传递给工具的所有参数,均由工具自身的配置唯一确定。

AI:移动至文件夹 工具为例,其 Python 代码需接收一个名为`folder_id`的变量。AI 之所以能准确传入该参数,是因为该变量已在工具配置中被显式声明为入参,相关配置可在服务端动作的*用途*标签页、AI 模式 字段中查看。AI 模式下的 :guilabel:`名称`列,其内容必须与 Python 代码中使用的变量名完全一致。

AI 会通过入参的描述信息,理解该参数的含义、预期的数值类型,以及适用的传入场景。

若某一参数未在用途标签页中定义,即便 Python 代码中引用了该参数,AI 也无法为其传入对应值。

AI 移动至文件夹服务端操作的用途标签页。

创建自定义 AI 工具

上文*自动整理收件箱文档*示例中采用的范式,也可通过 Odoo 标准逻辑实现。例如,若需创建一个能更新任务描述的动作,可新建一个*执行代码*类型的服务端动作,并写入以下代码:

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

为确保该工具正常运行,*必须*在工具的*用途*标签页中将 `content`显式定义为入参。

其他資料

服务器操作

常见问题

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

  • 确认至少一个服务器操作已启用 AI 中使用

  • 确认至少有一个工具与该 AI 服务端动作配置了相同的 模型

工具已运行但无任何效果?

  • Python 代码执行完毕但未触发任何数据变更;

  • 必需的入参缺失或为空值;

  • 工具逻辑中未实现对应的业务校验条件。

AI 为何选择了非预期的工具?

  • 提示词缺少足够的上下文信息;

  • 多个工具匹配了相同的执行意图;

  • 工具层面未设置任何调用约束条件。