AI 服务器操作¶
AI 服务器操作扩展了 Odoo 的自动化框架,允许人工智能在工作流程中做出决策。
此类服务端动作适用于业务逻辑无法通过固定条件完整实现,但仍需依托标准服务端动作实现可控执行的场景。
AI 服务端动作的工作原理¶
Odoo 中由 AI 驱动的工作流,核心是让 AI 服务端操作(即 管理端) 与工具(即 执行端) 实现清晰的职责分离。
AI 服务端动作:管理端¶
AI 服务端动作承担决策角色,即管理端的职责:读取记录及相关上下文、解析 AI 提示词、选定待调用的工具并确定所需传入的参数。
该服务端动作不负责执行业务规则、直接修改记录,也不保障操作的准确性,其作用仅限定于决策环节。
AI 工具:执行端¶
工具是指在*用途*标签页中开启了*AI 中使用*选项的标准服务端动作,所有执行逻辑均封装在工具中,记录的更新、转移、写入等操作也由工具完成。工具必须在 Python 代码中显式定义并执行相关业务规则。
工具被 AI 服务端动作调用后,将无条件执行,除非其自身代码中设置了执行限制条件。
AI 服务端动作工作流¶
AI 服务端动作的工作流遵循以下执行顺序:
某条记录触发 AI 服务端动作。
以该记录为上下文,对 AI 提示词进行解析运算。
AI 从可用工具中选定其一。
AI 向该工具传入其所需的参数。
被选定的工具执行自身的 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 工具¶
上文*自动整理收件箱文档*示例中采用的范式,也可通过 Odoo 标准逻辑实现。例如,若需创建一个能更新任务描述的动作,可新建一个*执行代码*类型的服务端动作,并写入以下代码:
record.write({'description': content})
为确保该工具正常运行,*必须*在工具的*用途*标签页中将 `content`显式定义为入参。
其他資料
常见问题¶
为什么“工具” 字段为空?¶
确认至少一个服务器操作已启用 AI 中使用。
确认至少有一个工具与该 AI 服务端动作配置了相同的 模型。
工具已运行但无任何效果?¶
Python 代码执行完毕但未触发任何数据变更;
必需的入参缺失或为空值;
工具逻辑中未实现对应的业务校验条件。
AI 为何选择了非预期的工具?¶
提示词缺少足够的上下文信息;
多个工具匹配了相同的执行意图;
工具层面未设置任何调用约束条件。