ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Low-code LLM 技术指南:TaskMatrix 中基于可视化工作流的人机协作式 LLM 交互框架

Low-code LLM 技术指南:TaskMatrix 中基于可视化工作流的人机协作式 LLM 交互框架 【免费下载链接】TaskMatrix项目地址https://gitcode.com/gh_mirrors/ta/TaskMatrix点击查看免费下载导读本文围绕 TaskMatrix 仓库中的 Low-code LLM 子项目系统讲解一种将人类纳入循环human-in-the-loop的新型人机交互模式——由规划 LLM 将复杂任务拆解为结构化工作流用户通过六种预定义低代码操作可视化地审查与编辑工作流再由执行 LLM 严格按工作流生成响应。读完本文你将掌握该框架的整体架构、三种核心 API 的调用链、Docker 一键部署与 OpenAI/Azure 双端接入方式以及工作流 JSON 数据模型与前后端实现细节可直接复现运行并在此基础上扩展自己的前端界面。一、核心思想为什么需要低代码的人机交互Low-code LLM是 TaskMatrix 项目中提出的一种新型 human-LLM interaction pattern人类-LLM 交互模式。与一次性提问、一次性回答的传统对话式 LLM 使用方式不同Low-code LLM 的核心主张是将人类纳入循环human in the loop以获得**更可控、更稳定more controllable and stable**的 LLM 响应。其理念与 TaskMatrix.AI 一脉相承TaskMatrix.AI 致力于通过更有效地拆解任务并利用现有的基础模型以及其他 AI 模型/系统的 API在数字与物理领域实现多样化任务的自动化而 low-code 人机交互模式可以增强用户对过程的控制controlling over the process与偏好的表达expressing their preference二者形成互补。从源码结构看该想法的落地形态是一个两阶段 LLM 流水线planningLLM规划 LLM负责把任务变成标准作业程序SOPexecutingLLM执行 LLM负责按 SOP 产出最终答复人类则站在两者之间对工作流进行可视化审查与编辑。详见 LowCodeLLM/src/lowCodeLLM.py 中的lowCodeLLM类它聚合了self.PLLM planningLLM(...)与self.ELLM executingLLM(...)两个组件。需要注意的是作者在 README 中明确说明由于时间限制仓库提供的代码是最小可行版本minimum viable version仅用于演示 Low-code LLM 人机交互的核心概念并欢迎任何人改进前端界面。二、系统概览四步人机协作闭环整套交互过程由下图所示的闭环完成图源仓库 assets/low-code-llm.png整个 human-LLM 交互流程包含四个环节规划Planning一个 Planning LLM 为复杂任务生成高度结构化的工作流highly structured workflow。用户编辑User Editing用户使用预定义的低代码操作编辑工作流——这些操作全部通过**点击clicking、拖拽dragging或文本编辑text editing**完成无需写代码。执行Executing一个 Executing LLM 基于用户审阅后的工作流生成响应。精化Refinement用户持续调整工作流直到获得满意的结果。这四步与 LowCodeLLM/src/app.py 中暴露的三个 HTTP 接口一一对应/api/get_workflow生成初始工作流、/api/extend_workflow扩展子工作流、/api/execute按确认的工作流对话执行前端每次操作都会调用这些接口与后端lowCodeLLM实例交互。仓库还附带了一个概念演示视频README 中标注 This is a conceptual video demo to demonstrate the complete process用于展示完整流程。三、快速开始Docker 部署与 OpenAI / Azure 双端接入3.1 环境要求Docker 环境可用的OpenAI API或Azure OpenAI Service凭证端口8888未被占用容器内应用默认监听8888。3.2 构建与运行按照 README 的 Quick Start完整步骤如下# 克隆仓库 git clone https://gitcode.com/gh_mirrors/ta/TaskMatrix # 进入 LowCodeLLM 目录 cd LowCodeLLM # 构建镜像 docker build -t lowcode:latest . # 方式一使用 OpenAI API —— 只需提供 API Key docker run -p 8888:8888 --env OPENAIKEY{Your_Private_Openai_Key} lowcode:latest # 方式二使用 Azure OpenAI Service —— 建议将必要信息写入配置文件 # 1. 复制 config.template 并命名为 config.ini # 2. 在 config.ini 中填好各项信息 docker run -p 8888:8888 --env-file config.ini lowcode:latest启动后浏览器访问http://localhost:8888/即可进入 Demo 页面。3.3 两种 API 接入方式的配置说明README 明确指出OpenAI API 与 Azure OpenAI Service 均已支持运行前需要提供调用这些 API 的必要信息。使用OpenAI API时只需通过--env OPENAIKEY...注入密钥即可代码会默认使用gpt-3.5-turbo模型见 LowCodeLLM/src/openAIWrapper.py。使用Azure OpenAI Service时信息较多建议复制 LowCodeLLM/config.template 为config.ini后逐项填写再以--env-file config.ini传入容器。config.template的完整字段如下配置项说明示例值USE_AZURE是否使用 Azure 服务True走 Azure 分支否则走 OpenAI 分支TrueOPENAIKEYAzure OpenAI 服务的密钥your-azure-openai-service-keyAPI_BASEAzure 服务的 Base URLyour-base-url-for-azureAPI_VERSIONAzure API 版本号2023-03-15-previewMODELAzure 上的 GPT 部署名deployment nameyour-gpt-deployment-name以上字段在源码中均有对应读取逻辑openAIWrapper.py通过os.environ.get(OPENAIKEY)读取密钥将USE_AZURE字符串按lower() true转为布尔值并在 Azure 分支下依次读取API_BASE、API_VERSION、MODEL三个环境变量见 LowCodeLLM/src/openAIWrapper.py。注意USE_AZURE未定义时默认视为False即默认走 OpenAI 直连模式。3.4 Docker 镜像与进程管理查看 LowCodeLLM/Dockerfile 可知镜像基于ubuntu:22.04安装python3.11、pip、supervisor安装 LowCodeLLM/src/requirements.txt 中的依赖并将src目录拷贝到/app/src作为工作目录。容器启动命令为supervisord -c supervisord.conf由 LowCodeLLM/src/supervisord.conf 统一托管进程——其核心配置为[program:flask] commandgunicorn --timeout 300 --bind 0.0.0.0:8888 app:app --log-level debug --capture-output --worker-class gevent即通过 gunicorngevent worker、超时 300 秒将 Flask 应用绑定到0.0.0.0:8888并开启autorestarttrue自动重启。依赖版本在requirements.txt中锁定为Flask2.2.5、Flask_Cors3.0.10、openai0.27.2、gunicorn20.1.0、gevent21.8.0。四、后端 API 设计与调用链剖析后端是一个轻量 Flask 服务LowCodeLLM/src/app.py全局实例化llm lowCodeLLM()后暴露三个 JSON 接口均启用cross_origin()支持跨域便于前端页面直接调用。4.1POST /api/get_workflow—— 生成初始工作流请求体{task_prompt: 任务描述}调用链app.get_workflow → llm.get_workflow(task_prompt) → PLLM.get_workflow(task_prompt)响应一个 JSON 数组格式的工作流失败时返回{errmsg: internal errors}与 500 状态码。4.2POST /api/extend_workflow—— 为指定步骤生成子工作流请求体{task_prompt: ..., current_workflow: ..., step: STEP n}调用链app.extend_workflow → llm.extend_workflow(task_prompt, current_workflow, step) → PLLM.extend_workflow(...)后端会先把当前工作流 JSON 转成文本_json2txt连同需要扩展的步骤一起送入规划 LLM返回的子工作流同样为 JSON 数组。4.3POST /api/execute—— 按确认工作流对话执行请求体{task_prompt: ..., confirmed_workflow: ..., curr_input: ..., history: [...]}调用链app.execute → llm.execute(task_prompt, confirmed_workflow, history, curr_input) → ELLM.execute(curr_input, history)后端将task_prompt与confirmed_workflow组装为 system 消息The overall task you are facing is: ... / The standard operating procedure(SOP) is: ...再拼上对话历史与当前输入后送入执行 LLM见 LowCodeLLM/src/lowCodeLLM.py。五、六种预定义低代码操作README 强调所有工作流编辑操作都由点击、拖拽或文本编辑支持。仓库提供的示意图图源 assets/low-code-operation.png展示了六种操作结合前端源码 LowCodeLLM/src/index.html从源码结构看这六种操作由节点右键菜单contextMenu与连线右键菜单edgeMenu触发分别对应操作菜单项 id作用实现方式源码位置新增步骤add在选中节点后插入一个新步骤并自动重排后续STEP编号与连线index.html中handleMenuClick的add分支删除步骤delete移除选中节点及其关联连线并重排编号add同函数中的delete分支编辑步骤edit通过prompt弹窗以文本方式修改步骤名称/描述edit分支节点与边菜单均有上移步骤moveup将选中节点与其前驱节点交换位置moveup分支扩展步骤extend调用/api/extend_workflow为选中步骤生成子工作流并展开到图中extend分支见下文 5.2添加跳转条件addcondition弹窗输入目标节点 ID 与条件文本在图上添加一条带箭头的条件连线polylineaddcondition分支同时画布本身配置了drag-canvas、zoom-canvas、drag-node三种交互模式LowCodeLLM/src/index.html并使用dagre分层布局渲染工作流从而真正实现了点击、拖拽、文本编辑三种低代码编辑能力。5.1 工作流 JSON 数据模型所有操作最终都在编辑一个 JSON 数组格式的工作流每个步骤step包含四个字段测试用例中可见完整示例如 LowCodeLLM/src/test/testcases/execute_test_cases.json{ stepId: STEP 1, stepName: Research, stepDescription: Gather statistics and information about drunk driving issue, jumpLogic: [], extension: [] }stepId步骤编号如STEP 1、STEP 2.1子步骤stepName步骤名称stepDescription步骤描述jumpLogic判断逻辑数组每项形如{Condition: if lack of information, Target: STEP 1}表示当条件满足时跳转到目标步骤extension该步骤的子工作流数组扩展操作的结果会写入这里并在前端展开为图中的多个节点。一个带跳转逻辑的完整示例摘自 LowCodeLLM/src/test/testcases/execute_test_cases.json{ stepId: STEP 4, stepName: Develop a prevention plan, stepDescription: Create a plan to prevent drunk driving, jumpLogic: [ {Condition: if lack of information, Target: STEP 1}, {Condition: if unclear causes, Target: STEP 2}, {Condition: if incomplete analysis, Target: STEP 2}, {Condition: if unrealistic plan, Target: STEP 4} ], extension: [] }5.2 扩展操作的前端联动逻辑extend分支LowCodeLLM/src/index.html展示了完整的扩展流程前端将task_prompt、当前工作流G6ToData()序列化与目标步骤 ID 打包 POST 到/api/extend_workflow拿到子工作流后把原步骤替换为扩展出的若干子步骤同时将原步骤的jumpLogic迁移到扩展列表末尾并同步修正后续所有步骤的STEP编号与跳转目标编号最后通过graph.read()重绘整个画布。这一步实现了一键把粗糙步骤细化成子 SOP的低代码能力。六、工作流文本格式与底层解析原理工作流在 LLM 与后端之间以文本形式传输格式为STEP 1: [step name][step descriptions][[[if condition1][Jump to STEP]], [[if condition2][Jump to STEP]], ...]规划 LLM 的 system 提示词LowCodeLLM/src/planningLLM.py严格要求其只输出上述格式的 SOP 文本、不得输出任何其他文字并在后缀中再次强调格式纪律NEVER reply any word other than the standard operating procedure。解析方向有两个文本 → JSONplanningLLM._txt2jsonLowCodeLLM/src/planningLLM.py按STEP行切分用正则匹配方括号提取stepId / stepName / stepDescription再解析jumpLogic从[[[if condition][Jump to STEP]]]中提取Condition与Target若跳转字段不含字母则视为无跳转逻辑。解析失败时会打印Format error, please try again.并返回None。JSON → 文本lowCodeLLM._json2txtLowCodeLLM/src/lowCodeLLM.py将 JSON 步骤逐一还原为stepId: [stepName][stepDescription][...jumpLogic...]文本并递归展开extension子步骤供执行 LLM 阅读。执行 LLM 侧LowCodeLLM/src/executingLLM.py的提示词要求其严格遵循 SOP作答同时提醒它对面是不知道 SOP 存在的真实人类因此不要把正在遵循的步骤展示给用户只需直接给出答案。七、参数调优与测试验证7.1 温度参数lowCodeLLM.__init__提供了两个可调参数LowCodeLLM/src/lowCodeLLM.pyPLLM_temperature0.4规划 LLM 的采样温度适中的温度让拆解出的 SOP 既有稳定性又有一定灵活性ELLM_temperature0执行 LLM 的温度设为 0保证在固定 SOP 约束下输出确定性最强、最可复现的响应。调用方可根据需要覆盖默认值例如测试脚本中统一使用lowCodeLLM(0.5, 0)。7.2 自带测试仓库提供了三个最小测试脚本及其用例可在设置好OPENAIKEY环境变量后直接运行LowCodeLLM/src/test/test_get_workflow.py对Write an essay about drunk driving issue.、Write an bolg about Microsoft.、I want to write a two-player battle game.三个任务调用get_workflow断言返回结果至少包含一个步骤用例见 LowCodeLLM/src/test/testcases/get_workflow_test_cases.jsonLowCodeLLM/src/test/test_extend_workflow.py对确认后的工作流调用extend_workflow展开指定步骤用例见 LowCodeLLM/src/test/testcases/extend_workflow_test_cases.json同样断言返回至少一个子步骤LowCodeLLM/src/test/test_execute.py携带工作流与对话历史调用execute断言返回非空字符串用例见 LowCodeLLM/src/test/testcases/execute_test_cases.json。三个脚本均在用例之间time.sleep(5)以规避限流展示了该框架规划 → 扩展 → 执行三条核心调用链的最小验证方式。八、设计优势README 总结了 Low-code LLM 框架的三大优势可控生成Controllable Generation复杂任务被分解为结构化执行计划并以工作流形式呈现给用户用户通过低代码操作控制 LLM 的执行从而获得更符合需求的响应——按定制工作流生成的回答与用户要求的对齐度更高。友好交互Friendly Interaction直观的工作流让用户快速理解 LLM 的执行逻辑基于图形化界面的低代码操作让用户以友好的方式便捷地修改工作流。这一机制缓解了耗时费力的 prompt engineering提示词工程让用户能高效地把想法转化为详细指令获得高质量结果。广泛适用性Wide applicability该框架可应用于各领域的大量复杂任务尤其适合需要人类智慧或偏好的场景。九、延伸与致谢Low-code 人机交互模式是 TaskMatrix 愿景的一部分未来 TaskMatrix.AI 将更有效地拆解任务并利用既有基础模型及其他 AI 模型/系统的 API在数字与物理领域完成多样化任务的自动化而 low-code 模式将在其中增强用户对过程与偏好的控制。值得一提的是README 的 Acknowledgement 披露了一个有趣的细节本论文指 Low-code LLM 相关工作的部分内容本身就是通过与所提出的 Low-code LLM 交互协作完成的——GPT-4 先勾勒框架作者补充创新想法并优化工作流结构最终由 GPT-4 生成连贯且富有说服力的文本。这恰好是该框架人类在环、可控生成理念的一次自我印证。如需继续深入建议按顺序阅读核心聚合类 LowCodeLLM/src/lowCodeLLM.py、规划模块 LowCodeLLM/src/planningLLM.py、执行模块 LowCodeLLM/src/executingLLM.py、API 封装 LowCodeLLM/src/openAIWrapper.py、Web 服务 LowCodeLLM/src/app.py 以及前端画布 LowCodeLLM/src/index.html。赞分享【免费下载链接】TaskMatrix项目地址https://gitcode.com/gh_mirrors/ta/TaskMatrix点击查看免费下载相关推荐终极指南TaskMatrix工作流引擎如何通过双LLM协同实现智能任务自动化终极指南TaskMatrix工作流引擎如何通过双LLM协同实现智能任务自动化 TaskMatrix工作流引擎是一个革命性的AI协作框架它创新性地将PlannTransformer Explainer终极指南如何通过交互式可视化快速理解LLM工作原理Transformer Explainer终极指南如何通过交互式可视化快速理解LLM工作原理 Transformer Explainer是一款强大的交互式可视数据可视化人工智能大模型AI 应用多模态机器人交互革命基于awesome-multimodal-ml的人机协作新范式多模态机器人交互革命基于awesome multimodal ml的人机协作新范式 还在为机器人交互的生硬和局限而烦恼传统单模态机器人只能处理单一类型信息知识库多模态人工智能上一篇猫抓浏览器扩展5个步骤掌握终极网页资源嗅探工具下一篇qmcdumpQQ音乐加密音频格式转换实战完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表