配置即资产:从12345政务热线分拨助手看智能体工作流的导出与导入,不用写代码,也能让AI业务流随身携带
1. 前言
如果你正在参与政务数字化转型、12345热线智能化升级,或者只是刚刚接触AI应用的业务人员,这篇文章会用简单通俗的,带你掌握一项让智能体工作流像Word文件一样“复制、粘贴、带走” 的核心技能。
三个让你立刻产生共鸣的亮点:
- 亮点1:告别“在我这能跑,到你那就卡”的尴尬
你在办公室拖拽调试好的“12345热线分拨助手”,导入到政务云后所有节点、提示词、逻辑关系原封不动,不用二次开发,不用重新教AI。
- 亮点2:把“配置”变成“资产”
一个精心调优的热线分拨工作流,导出成一个不足100KB的文件,下次新建项目直接导入,甚至可以分享给其他区县、其他地市复用。
- 亮点3:业务人员也能成为“模板贡献者”
你不需要写一行代码,只需要在可视化画布里完成流程编排,点一下“导出”,一个可复用的政务智能体模板就诞生了。
一句话总结:
本文不教你“怎么画流程图”,而是以12345热线分拨助手为样本,手把手教你如何把你画好的流程图打包带走,并在任意政务环境、任意科室中立刻复活它。
2. 背景与热点:为什么“导入导出”是政务智能体的必答题?
2.1 当前12345热线智能化的真实痛点
近年来,各地12345热线纷纷引入大模型,建设“智能分拨”“智能问答”系统。然而,很多项目陷入了这样的死循环:
- 环境割裂:开发人员在云上调试好的分拨模型,因为政务外网与互联网物理隔离,到了生产环境必须手动重新拖一遍节点,漏掉一个条件分支就得排查半天。
- 协作原始:A区做了一个“城管类工单识别准确率95%”的分拨助手,B区也想用,只能让A区的人截图讲解,B区的人对着截图重新搭,不仅慢,还容易抄错提示词。
- 无法追溯:一个分拨工作流优化过十几版,想回退到上个月的旧逻辑?只能凭记忆重连。
2.2 贴合数字政府“一地创新、多地复用”新趋势
2025年以来,国家大力推进“AI+政务”全场景应用,智能体(Agent)已成为数字政府的新型基础设施。国家数据局多次强调“避免重复建设,推动应用组件复用”。智能体不能是“一次性定制开发”,必须能够跨部门、跨层级、跨地域快速复制推广。
openJiuwen的导入导出能力,正是为了响应这一需求而生。它让智能体配置脱离了具体的机器、网络、账号,成为一份可以独立流通的“数字图纸”。有了这份图纸,任何一个政务节点都可以快速装配出功能相同的AI办事员——这正是“一地创新、多地复用”的最佳技术落地。
3. 完整操作:以12345政务热线智能分拨助手为例,从“零代码拖拽”到“一键复用”
本章节将完全聚焦于这一个真实场景,把每一个操作细节掰开揉碎,让你不仅能学会,还能讲给别人听。
3.1 场景设定:为什么要做一个“智能分拨助手”?
业务背景:
某市12345热线每天接到近2万通电话,其中约30%是咨询类,70%是投诉举报类。话务员接听后,需要根据市民描述,在30秒内判断应由城管、住建、水务、人社、市场监管、生态环境等20多个部门中的哪一个负责处理。
人工分拨存在三个问题:
- 速度慢——平均耗时45秒,高峰期排队严重;
- 准确率波动——新员工培训周期长,分拨错误导致工单退回;
- 标准不统一——同一类问题,不同话务员可能分给不同部门。
建设目标:
用大模型搭建一个“智能分拨助手”,话务员输入市民描述,系统自动推荐责任部门及置信度,话务员确认后一键派单。
为什么选这个场景演示导入导出?
因为分拨工作流逻辑清晰、复用价值极高——几乎每个地市、区县都有12345热线,都面临同样的分拨需求。一套调试好的分拨模型,完全可以作为标准化模板在全市、全省推广。
3.2 准备工作:环境与账号
角色 | 部署环境 |
市级开发员 | openJiuwen Studio(市局服务器) |
区县接收员 | openJiuwen Studio(区县服务器) |
关键点:双方环境可以不同——这就是导入导出要解决的问题。
3.3 Step 1:在Studio中搭建分拨工作流(详细拆解)

登录openJiuwen,创建一个新的工作流Government_Hotline_Dispatch
节点1:开始节点(市民提问)
- 变量名:query
- 数据类型:字符串
- 示例输入:“你好,房产证在哪里办理。”

节点2:大模型节点(意图识别与部门匹配)

这是整个工作流的核心。配置如下:
- 选择模型:deepseekR1(模型管理里面配置deepseek模型api接入)
- 作用:这是工作流的“智能调度中心”。它深度分析用户咨询的自然语言描述,精准识别其业务类型和可能涉及的科室,支持单科室或多科室关联识别。这是实现精准分流和协同应答的关键。
- 编写精炼的 系统提示词(System Prompt)(精心调优后):
“你是一个政务业务分类专家。请分析用户咨询,判断其主要涉及以下哪个或哪几个科室: 1. 住建局,2. 公安局,3. 人社局 4. 水务局,5. 环保局 6 市场监督局 请输出格式为JSON: {“departments”: [“科室A”, “科室B”]}。若无明确对应,则为[“其他科室”]。” 将开始节点的 query 变量作为用户输入(User Prompt)传入。 输入: {{query}} 输出: output节点3:分流业务处理

- 作用:接收上一步LLM输出的科室列表(如 [“人社”, “公安”,“水务局”]),通过代码将数据转成结构化的数据传到下一个节点,进行分类
- 代码如下:
def main(args: Args): import json try : data = json.loads(args.params['input']) return {'result': data['departments']} except ValueError : return {'result' : ['其他部门']}节点4:部门选择器
介绍:本节点是选择器节点:连接多个下游分支。只有满足设定条件的对应分支才会被执行。
作用:该节点读取分流业务处理节点输出的department字段,将工单导向不同的后续处理分支(此处简化,仅演示判断逻辑)
- 分支1:如果department 包含 "人社局" → 进入“人社业务大模型,处理群众需求,推送工单”
- 分支2:如果department 包含 "水务局" → 进入“水务业务大模型,处理群众需求,推送工单”
- 分支3:其他 → 进入“人工处理队列”

节点5:部门业务模型
节点:多个并联的 Large Language Model (LLM) 节点,每个节点代表一个部门,并可选择挂载该科室的专属 知识库。
作用:在每个科室分支上,由专属的LLM节点扮演该科室政策专家的角色进行回复。知识库中预存了该科室的政策文件、办事指南、常见问题等,确保回复的专业性和准确性。

节点6:结束节点(输出业务办理结果)

⚠️ 关键技巧:变量绑定必须用“选择器”
在配置结束节点的输出内容时,千万不要手动敲{{department}},必须点击右侧面板的“变量选择器”,从节点输出里选中department字段。
- ✅ 正确操作后,变量会显示为绿色高亮背景。
- ❌ 手动敲入,会显示为纯白色代码块,导入后无法识别为变量,只会原样输出“{{department}}”字符串。
3.4 Step 2:测试与调优
在Studio右侧点击“运行测试”,输入几组典型市民描述:
- “小区门口有游商占道卖菜,堵路” → 输出:城管 +办理科室+ 办理流程
- “房产证如何办理” → 输出:住建+办理科室+办理流程
- “公司拖欠我三个月工资” → 输出:人社+办理流程
确认分拨逻辑符合业务要求后,就可以进入下一步——导出。


3.5 Step 3:导出工作流模板
点击画布右上角的「导出」按钮,选择「导出为模板(.jiuwen_template)」。
系统会生成一个JSON文件。它长什么样? 我们把它打开,看看里面到底存了什么“魔法”:
{ "nodes": [ { "id": "start_rUWFU", "type": "1", "meta": { "position": { "x": 180, "y": 418 } }, "data": { "title": "开始", "outputs": { "type": "object", "properties": { "query": { "type": "string", "default": "你好,请帮我分析一下这个问题。" } } } } }, { "id": "end_rUWFU", "type": "2", "meta": { "position": { "x": 2480, "y": 418 } }, "data": { "title": "结束", "inputs": { "inputParameters": { "城管": { "type": "ref", "content": [ "llm_GDALL", "output" ], "extra": { "index": 0 } }, "住建": { "type": "ref", "content": [ "llm_jdHP1", "output" ], "extra": { "index": 1 } }, "人社": { "type": "ref", "content": [ "llm_NgZdl", "output" ], "extra": { "index": 2 } }, "医保": { "type": "ref", "content": [ "llm_hDY1k", "output" ], "extra": { "index": 3 } } }, "content": { "type": "template", "content": "{{城管}}\n{{住建}}\n{{人社}}\n{{医保}}" } }, "streaming": false } }, { "id": "llm_1HcNN", "type": "3", "meta": { "position": { "x": 640, "y": 386 } }, "data": { "title": "用户意图—部门分类模型", "output_format": "text", "inputs": { "llmParam": { "systemPrompt": { "type": "template", "content": "你是一个12345热线专家,需要根据市民描述,在30秒内判断应由城管、住建、水务、人社、市场监管、生态环境等20多个部门中的哪一个负责处理。\n请输出格式为JSON: {“departments”: [“部门A”, “部门B”]}。若无明确对应,则为[“其他部门”]。”" }, "prompt": { "type": "template", "content": "{{input}}" }, "model": { "id": "1", "name": "deepseek", "type": "deepseek-ai/DeepSeek-R1" } }, "inputParameters": { "input": { "type": "ref", "content": [ "start_rUWFU", "query" ], "extra": { "index": 0 } } } }, "outputs": { "type": "object", "properties": { "output": { "type": "string", "extra": { "index": 1 } } }, "required": [ "output" ] } } }, { "id": "code_GWWz8", "type": "10", "meta": { "position": { "x": 1100, "y": 401 } }, "data": { "title": "部门分类", "inputs": { "inputParameters": { "input": { "type": "ref", "content": [ "llm_1HcNN", "output" ], "extra": { "index": 0 } } }, "language": "python", "code": "def main(args: Args):\n import json\n try:\n data= json.loads(args.params['input'])\n return {\"result\" :data['departments']}\n except ValueError\n return {'result': ['其他部门']]}" }, "outputs": { "type": "object", "properties": { "result": { "type": "string", "description": "代码执行结果" } }, "required": [ "result" ] }, "exceptionConfig": { "retryTimes": 3, "timeoutSeconds": 30, "processType": "break", "executeStep": { "defaultStep": "0", "errorStep": "1" } } } }, { "id": "condition__YRg9", "type": "4", "meta": { "position": { "x": 1560, "y": 0 } }, "data": { "title": "选择器", "branches": [ { "conditions": [ { "left": { "type": "ref", "content": [ "code_GWWz8", "result" ] }, "operator": "contains", "right": { "type": "constant", "content": "城管", "schema": { "type": "string", "extra": { "weak": true } } } } ], "logic": 2, "branchId": "branch_oo3cw" }, { "conditions": [], "logic": 2, "branchId": "branch_Vf6wz" } ] } }, { "id": "condition_HSDv4", "type": "4", "meta": { "position": { "x": 1560, "y": 264 } }, "data": { "title": "选择器", "branches": [ { "conditions": [ { "left": { "type": "ref", "content": [ "code_GWWz8", "result" ] }, "operator": "contains", "right": { "type": "constant", "content": "住建", "schema": { "type": "string", "extra": { "weak": true } } } } ], "logic": 2, "branchId": "branch_RLFWq" }, { "conditions": [], "logic": 2, "branchId": "branch_y8V9W" } ] } }, { "id": "condition_WKHtY", "type": "4", "meta": { "position": { "x": 1560, "y": 792 } }, "data": { "title": "选择器", "branches": [ { "conditions": [ { "left": { "type": "ref", "content": [ "code_GWWz8", "result" ] }, "operator": "eq", "right": { "type": "constant", "content": "医保", "schema": { "type": "string", "extra": { "weak": true } } } } ], "logic": 2, "branchId": "branch_BXwWU" }, { "conditions": [], "logic": 2, "branchId": "branch_wtEFo" } ] } }, { "id": "llm_GDALL", "type": "3", "meta": { "position": { "x": 2020, "y": 56 } }, "data": { "title": "城管业务办理模型", "output_format": "text", "inputs": { "llmParam": { "systemPrompt": { "type": "template", "content": "你是一个{{depart}}的部门专家,这个是用户的需求{{input}}}},请给出解决方案" }, "prompt": { "type": "template", "content": "{{input}}" }, "model": { "id": "1", "name": "deepseek", "type": "deepseek-ai/DeepSeek-R1" } }, "inputParameters": { "input": { "type": "ref", "content": [ "start_rUWFU", "query" ], "extra": { "index": 0 } }, "depart": { "type": "ref", "content": [ "llm_1HcNN", "output" ], "extra": { "index": 1 } } } }, "outputs": { "type": "object", "properties": { "output": { "type": "string", "extra": { "index": 1 } } }, "required": [ "output" ] } } }, { "id": "condition_gP4Nb", "type": "4", "meta": { "position": { "x": 1560, "y": 528 } }, "data": { "title": "选择器", "branches": [ { "conditions": [ { "left": { "type": "ref", "content": [ "code_GWWz8", "result" ] }, "operator": "contains", "right": { "type": "constant", "content": "人社", "schema": { "type": "string", "extra": { "weak": true } } } } ], "logic": 2, "branchId": "branch_jHWdM" }, { "conditions": [], "logic": 2, "branchId": "branch_1MTlv" } ] } }, { "id": "llm_jdHP1", "type": "3", "meta": { "position": { "x": 2020, "y": 320 } }, "data": { "title": "住建业务办理大模型", "output_format": "text", "inputs": { "llmParam": { "systemPrompt": { "type": "template", "content": "你是一个{{depart}}的部门专家,这个是用户的需求{{input}}}},请给出解决方案" }, "prompt": { "type": "template", "content": "{{input}}" }, "model": { "id": "1", "name": "deepseek", "type": "deepseek-ai/DeepSeek-R1" } }, "inputParameters": { "input": { "type": "ref", "content": [ "start_rUWFU", "query" ], "extra": { "index": 0 } }, "depart": { "type": "ref", "content": [ "llm_1HcNN", "output" ], "extra": { "index": 1 } } } }, "outputs": { "type": "object", "properties": { "output": { "type": "string", "extra": { "index": 1 } } }, "required": [ "output" ] } } }, { "id": "llm_hDY1k", "type": "3", "meta": { "position": { "x": 2020, "y": 848 } }, "data": { "title": "医保业务办理模型", "output_format": "text", "inputs": { "llmParam": { "systemPrompt": { "type": "template", "content": "你是一个{{depart}}的部门专家,这个是用户的需求{{input}}}},请给出解决方案" }, "prompt": { "type": "template", "content": "{{input}}" }, "model": { "id": "1", "name": "deepseek", "type": "deepseek-ai/DeepSeek-R1" } }, "inputParameters": { "input": { "type": "ref", "content": [ "start_rUWFU", "query" ], "extra": { "index": 0 } }, "depart": { "type": "ref", "content": [ "llm_1HcNN", "output" ], "extra": { "index": 1 } } } }, "outputs": { "type": "object", "properties": { "output": { "type": "string", "extra": { "index": 1 } } }, "required": [ "output" ] } } }, { "id": "llm_NgZdl", "type": "3", "meta": { "position": { "x": 2020, "y": 584 } }, "data": { "title": "人社业务办理大模型", "output_format": "text", "inputs": { "llmParam": { "systemPrompt": { "type": "template", "content": "你是一个{{depart}}的部门专家,这个是用户的需求{{input}}}},请给出解决方案" }, "prompt": { "type": "template", "content": "{{input}}" }, "model": { "id": "1", "name": "deepseek", "type": "deepseek-ai/DeepSeek-R1" } }, "inputParameters": { "input": { "type": "ref", "content": [ "start_rUWFU", "query" ], "extra": { "index": 0 } }, "depart": { "type": "ref", "content": [ "llm_1HcNN", "output" ], "extra": { "index": 1 } } } }, "outputs": { "type": "object", "properties": { "output": { "type": "string", "extra": { "index": 1 } } }, "required": [ "output" ] } } } ], "edges": [ { "sourceNodeID": "start_rUWFU", "targetNodeID": "llm_1HcNN" }, { "sourceNodeID": "llm_GDALL", "targetNodeID": "end_rUWFU" }, { "sourceNodeID": "condition__YRg9", "targetNodeID": "end_rUWFU", "sourcePortID": "branch_Vf6wz" }, { "sourceNodeID": "condition_HSDv4", "targetNodeID": "end_rUWFU", "sourcePortID": "branch_y8V9W" }, { "sourceNodeID": "condition_gP4Nb", "targetNodeID": "end_rUWFU", "sourcePortID": "branch_1MTlv" }, { "sourceNodeID": "condition_WKHtY", "targetNodeID": "end_rUWFU", "sourcePortID": "branch_wtEFo" }, { "sourceNodeID": "llm_jdHP1", "targetNodeID": "end_rUWFU" }, { "sourceNodeID": "llm_NgZdl", "targetNodeID": "end_rUWFU" }, { "sourceNodeID": "llm_hDY1k", "targetNodeID": "end_rUWFU" }, { "sourceNodeID": "llm_1HcNN", "targetNodeID": "code_GWWz8" }, { "sourceNodeID": "code_GWWz8", "targetNodeID": "condition__YRg9", "sourcePortID": "0" }, { "sourceNodeID": "code_GWWz8", "targetNodeID": "condition_HSDv4", "sourcePortID": "0" }, { "sourceNodeID": "code_GWWz8", "targetNodeID": "condition_gP4Nb", "sourcePortID": "0" }, { "sourceNodeID": "code_GWWz8", "targetNodeID": "condition_WKHtY", "sourcePortID": "0" }, { "sourceNodeID": "condition__YRg9", "targetNodeID": "llm_GDALL", "sourcePortID": "branch_oo3cw" }, { "sourceNodeID": "condition_HSDv4", "targetNodeID": "llm_jdHP1", "sourcePortID": "branch_RLFWq" }, { "sourceNodeID": "condition_WKHtY", "targetNodeID": "llm_hDY1k", "sourcePortID": "branch_BXwWU" }, { "sourceNodeID": "condition_gP4Nb", "targetNodeID": "llm_NgZdl", "sourcePortID": "branch_jHWdM" } ] }通俗解释:这个文件就是你工作流的“DNA”——里面存着每一个节点怎么连、提示词怎么写、用哪个模型、输出字段叫什么。只要有了它,就能在任何环境重建一个一模一样的工作流。
3.6 Step 4:导入模板到区县环境
把这个Government_Hotline_Dispatch_Assistant.json文件通过政务邮箱发给B区的工作人员。
B区人员登录openJiuwen政务版,新建测试工作流,点击「导入」,选择该文件。

此时会发生什么?


导入完成! 整个工作流出现在B区的工作流列表中,节点、连线、提示词、分支条件、输出变量,全部与A区一致。
3.7 Step 5:验证与微调
B区人员可以立即运行测试:
输入市民描述:“工地夜间施工噪声扰民”
理想输出应该是:责任部门→生态环境(部分地区城管),但B区可能因本地部门划分不同,需要将“生态环境”改为“城管”。
如何修改?
只需要修改大模型节点的系统提示词,把部门列表中的“生态环境”改为“城管”,其他完全不用动。
整个定制过程不超过2分钟——这就是模板复用的效率。
4. 避坑指南:为什么你导出的分拨助手“跑不通”?(小白特供版)
以下是我们在多个政务项目中遇到的最隐蔽、最容易踩坑的四个问题,每个都配有连业务人员都能执行的解决方案。
❌ 坑1:变量变成了纯文字“{{citizen_desc}}”
现象:大模型收到的输入不是市民描述,而是字符串“{{citizen_desc}}”。
根因:你在配置大模型的“用户提示词”时,手动打了{{citizen_desc}},而不是通过右侧变量选择器插入。
✅ 小白解决方案:
- 导出前:养成习惯,所有变量绑定必须点击变量选择器。如果你发现输入框里的变量名是黑色字体,说明是文本;如果是绿色高亮背景,说明是变量。只认绿色。
- 导入后:检查【结束】节点的输出——如果输出里出现了{{department}}字样,说明变量绑定失败,删掉它,重新从变量选择器选一次。
❌ 坑2:导入后报错“Tool not found”或“插件不存在”
现象:明明没有用工具,却提示找不到某个函数。
根因:你在源环境使用了自定义代码节点,并且代码里硬编码了绝对路径(例如C:/Users/admin/data.xlsx),导入后路径不存在。
✅ 小白解决方案:
- 导出前:如果用了代码节点,把所有文件路径改成相对路径,或者通过环境变量读取。导出时,将该代码依赖的文件一并打包发给接收方。
- 导入后:把依赖文件放到指定位置,修改代码节点里的路径。
5. 不止于案例:从“12345分拨”到“百类政务分类场景”
看到这里,你可能会想:“这篇文章讲的是12345热线分拨,我负责的是信访件分类、企业诉求派单、网格事件分拨,这套方法还能用吗?”
答案是:不仅能用,而且完全一样。
5.1 模板复用的本质:分类工作流的“骨架”是通用的
12345分拨助手的核心逻辑是:
输入文本 → 大模型理解 → 映射到预定义类别 → 输出类别及置信度
这个逻辑可以无缝应用到以下场景:
业务场景 | 输入 | 输出类别 |
信访件智能分类 | 信访人描述 | 纪检监察、劳动保障、征收补偿、涉法涉诉... |
企业诉求派单 | 企业留言 | 税务、市场监管、融资、用工、行政审批... |
网格事件分拨 | 网格员上报 | 市容环境、公共设施、矛盾纠纷、安全隐患... |
政务服务“一件事”推荐 | 用户模糊需求 | 出生、入学、就业、退休、身后... |
如何复用?
三步完成:
- 将12345分拨工作流导出为模板;
- 在新项目导入;
- 修改两处配置:
- 修改大模型节点的系统提示词,换成新场景的类别定义;
- 修改分支节点的条件,匹配新类别的值。
完全不需要重新拖拽节点、重新连接线。 一个熟练的业务人员,5分钟就能“改装”出一个新场景的分拨助手。
5.2 独特性:为什么其他低代码平台做不到这么“丝滑”?
市面上很多低代码平台也有“导出导入”功能,但通常只能导出流程图结构,而提示词、变量绑定、模型参数、输出字段名这些“血肉”往往丢失。导入后需要重新填一大堆配置。
openJiuwen的导入导出之所以强大,是因为它完整保留了智能体工作流的三层资产:
- 视觉层:节点位置、连线(可以不管);
- 逻辑层:分支条件、变量传递;
- 认知层:提示词、模型参数、输出格式定义——这是AI应用最值钱的部分。
正是这“认知层”的完整导出,让模板复用具备了业务价值,而不仅仅是画图的复用。
6.结语:让每一个政务智能体都能“一次开发,到处运行”
在数字政府建设从“系统上网”迈向“智能重塑”的今天,AI应用不再是锦上添花的展示品,而是提升政务服务效能的核心生产力。
12345热线的智能分拨,只是政务智能体应用版图中的一个缩影。当每一个科室、每一个区县都能通过“导入模板”快速获得成熟业务能力时,我们才能真正摆脱“重复造轮子”的泥潭。
openJiuwen的导出导入,不是一个大而全的平台功能,却恰恰是解决政务AI推广“最后一公里”的关键。它让智能体的设计、调试、交付彻底解耦。
附录:政务智能体导入导出速查卡
操作步骤 | 关键动作 | 常见误区 | 小白必杀技 |
配置变量 | 使用变量选择器 | 手动敲{{变量}} | 绿色高亮才安全 |
导出模板 | 点击“导出” | 忘记模型映射预判 | 导出文件建议命名为场景_版本_日期 |
导入模板 | 选择文件,映射模型 | 直接点确认,忽略模型差异 | 确认目标环境模型可用 |
验证测试 | 输入典型Case | 只测1条 | 至少测5条覆盖主要类别 |
修改定制 | 改提示词、改分支 | 改乱了无法回退 | 修改前复制一份工作流 |