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

本课目标
读完这一课,你将能够
- 说出语言模型块由哪三部分组成,以及模型为什么只能「请求」工具
- 说出模型写数据为什么必须经过 Action
- 把一段用模型判断的逻辑映射到 AIDC 的工作流 AI 分析步骤或智能体
模型作为逻辑里的一块
有些逻辑既写不成规则,也难写成代码:读一段备注,判断哪份文件对得上,在几个都不完美的选项里挑一个。标准模型的做法是:它仍然是一个函数,输入是对象或文字,输出是值、对象,或一份对数据的修改;只是函数体不是代码,而是一串块。每个块接收输入、给出输出,后面的块用前面的结果。
块有很多种:读写对象、计算、聚合、调用别的函数、循环、条件分支,最核心的一块是语言模型块。它由三部分组成:
提示
用自然语言写。先写任务概述,再给数据,最后说什么时候该用哪个工具。模型只知道你给它的东西。
工具
四类:查询对象(可限定对象类型和属性,省 token)、调用函数、应用 Action、计算器。
输出
有类型:一个字符串、一个数、一组对象……后面的块和调用方才能放心地用。
关键规则:模型自己碰不到工具,只能「请求」使用,由平台在调用者的权限内执行。所以模型读不到调用者读不到的数据。但读权限只管读进提示的内容,不管模型的输出。
写数据也一样。让模型挑选并调用 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:预演时它只返回将要写入的计划,正式运行才落库。模型自己不写数据。
maxTokens 的上限(缺省 1,200)智能体:会自己找资料的那一块
工作流的分析步骤是固定的一次调用;智能体是一个循环:自己决定先查什么、再查什么,用命令行(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 里要插入哪些前面步骤的结果。
把「建议工单上哪条产线」拆成三类:确定性的读取与计算、需要模型判断的部分、必须走 Action 的写入。
用样板里带 AI 分析步骤的报价工作流跑一次:aidc semantic automate run quote-workflow --param rfq_no=RFQ-2609-002 --preview,看每一步的输出与 token。
小测
选一个答案,马上看解析。
Q1AIDC 工作流里的 AI 分析步骤,能自己调用 Action 吗?
分析步骤没有工具,只做一次调用;写数据一律经过 Action,由 use 步骤发出,预演时只返回计划。
Q2模型的回复不是合法 JSON,AI 分析步骤会怎样?
声明了类型的输出要可靠才有意义:回复不合法就让这一步失败,而不是悄悄放行。
Q3为什么说模型只能「请求」工具,而不是直接使用?
模型的每次请求都由平台代为执行,并受调用者权限约束;改数据的工具仍然是 Action,带着自己的校验。