用模型写逻辑

第 4 课 · 共 6 课 约 9 分钟

语言模型作为逻辑里的一块:提示、工具、类型化的输出;AIDC 里由工作流的 AI 分析步骤和智能体承担。

本课目标

读完这一课,你将能够

  • 说出语言模型块由哪三部分组成,以及模型为什么只能「请求」工具
  • 说出模型写数据为什么必须经过 Action
  • 把一段用模型判断的逻辑映射到 AIDC 的工作流 AI 分析步骤或智能体

模型作为逻辑里的一块

有些逻辑既写不成规则,也难写成代码:读一段备注,判断哪份文件对得上,在几个都不完美的选项里挑一个。标准模型的做法是:它仍然是一个函数,输入是对象或文字,输出是值、对象,或一份对数据的修改;只是函数体不是代码,而是一串块。每个块接收输入、给出输出,后面的块用前面的结果。

块有很多种:读写对象、计算、聚合、调用别的函数、循环、条件分支,最核心的一块是语言模型块。它由三部分组成:

PROMPT

提示

用自然语言写。先写任务概述,再给数据,最后说什么时候该用哪个工具。模型只知道你给它的东西。

TOOLS

工具

四类:查询对象(可限定对象类型和属性,省 token)、调用函数、应用 Action、计算器。

OUTPUT

输出

有类型:一个字符串、一个数、一组对象……后面的块和调用方才能放心地用。

关键规则:模型自己碰不到工具,只能「请求」使用,由平台在调用者的权限内执行。所以模型读不到调用者读不到的数据。但读权限只管读进提示的内容,不管模型的输出。

写数据也一样。让模型挑选并调用 Action 是一种;另一种是确定性的「应用 Action」块,参数由你填,不经模型。两种方式,数据都只在函数被一个 Action 调用时才真正改变,改动暂存,结束时一起提交。

在 AIDC 里:AI 分析步骤

工作流里的 model 步骤,是最接近模型块的东西:一次调用,读前面步骤放进提示的结果,按你声明的字段返回。「建议一张工单上哪条产线」可以这样写;模型要登记在清单的 models 里,这里用的是 deepseek-flash:

"steps": [
  { "id": "wo", "kind": "use", "title": "Work order", "use": "factory-mes/work_order",
    "with": { "work_order_no": "=input.work_order_no" } },
  { "id": "load", "kind": "use", "title": "Line load", "use": "factory-mes/line_load" },
  { "id": "suggest", "kind": "model", "title": "Suggest a line", "model": "deepseek-flash",
    "system": "You schedule e-bike assembly. Choose exactly one line from the list and say why.",
    "prompt": "Work order: {{ steps.wo.row }}\nLines and open load: {{ steps.load.rows }}",
    "output": { "line_code": "text", "reason": "text", "needs_review": "boolean" },
    "maxTokens": 600 }
]

代码里的 factory-mes/work_order 和 factory-mes/line_load 是一个假想的提供方应用在清单 exports 里导出的两个能力。步骤之间的先后是自动排出来的:suggest 引用了前两步的结果,就会等它们先跑完。

  • 类型化的输出:output 声明字段和类型,可以是 text、number、boolean、text[]、json;平台把每个字段转成声明的类型,回复不是合法 JSON,这一步就失败。
  • 没有工具:模型只看得到前面步骤放进 prompt 的内容。想限制它能看的属性,就在提供数据的能力里用 select 挑出来。
  • 计费与上限:用量记在这个工作流应用名下,受 limits.dailyTokens 封顶;一个工作流最多 40 步。

模型只给出建议。接下来一个 use 步骤才调用 release-work-order:预演时它只返回将要写入的计划,正式运行才落库。模型自己不写数据。

16一个 AI 分析步骤最多声明的输出字段
4,000maxTokens 的上限(缺省 1,200)
40一个工作流最多的步骤数

智能体:会自己找资料的那一块

工作流的分析步骤是固定的一次调用;智能体是一个循环:自己决定先查什么、再查什么,用命令行(aidc semantic …)当工具,够了才回答,对应标准模型里带工具的模型块。它先读本体(Ontology)的说明书(aidc semantic describe --markdown,可以直接放进系统提示词),再按业务的说法去查。

智能体可用 Agent Key 读取本体。写入走 Action,可用已配置写权限及 Action 白名单的 Agent Key,也可用开发者凭证。先 --validate-only 检查参数和条件,再执行。会写入的应用 API 先 --preview,把计划给人看,确认后正式调用。

标准模型AIDC 今天
语言模型块带提示、工具、输出的一块model 步骤(一次调用),或智能体(多轮)
查询对象工具限定类型与属性的读取前面的 use 步骤,或智能体读本体
类型化输出块的输出类型output 声明的字段
应用 Action工具或确定性的块后面的 use 步骤;智能体先只校验再执行
调试看模型每一步的思路运行记录里每一步的输入、输出和 token

要点

  • 语言模型块 = 提示 + 工具 + 类型化的输出;模型只请求工具,由平台在调用者权限内执行。
  • 读权限管读进提示的内容,不管模型的输出;数据改变只经过 Action。
  • AIDC 的 AI 分析步骤是一次无工具的调用,按声明的字段返回;智能体则多轮自己找资料。
  • 模型给建议,use 步骤调用 Action;预演只返回计划,正式运行才写入。

练一练

给「供应商评分」设计模型的那一块

分数的算法由表达式定,模型只负责说明原因、提醒需要人看。

为一个 AI 分析步骤写 output:至少一个 number、一个 text[]、一个 boolean;再写 prompt 里要插入哪些前面步骤的结果。

小测

选一个答案,马上看解析。

Q1AIDC 工作流里的 AI 分析步骤,能自己调用 Action 吗?

Q2模型的回复不是合法 JSON,AI 分析步骤会怎样?

Q3为什么说模型只能「请求」工具,而不是直接使用?

延伸阅读