【ai_agent】从零写一个agent框架(五)基于egui制作一个agent/workflow在线编辑器

Dify.AI 与 ComfyUI 的相似之处 《Dify.AI 与 ComfyUI 的相似之处》 关键词:Dify.AI, ComfyUI, 人工智能,自动化,用户体验,软件开发,界面设计 摘要:本文将深入探讨 Dify.AI 和 ComfyUI 这两种新兴的软件开发 阅读详情

前言

上篇我们实现了基础节点,并暴露出grpc服务,但是手动编辑文本制作一个workflow实在强人所难。

所以本文我们做个webui自动生成workflow。

开搞之前先看看别人怎么做的。

Dify 的ui

效果如下图示:

  • 支持多种功能节点

  • 但只能打开一个节点的详细内容

  • 提供debug能力,能看到执行细节

image.png

Coze的ui

界面算是dify的升级版,一样丝滑,效果如下图示:

  • 能在编辑页直接看到每个节点的细节,但是当节点非常多的时候,非常难以操作,看的眼晕。
  • debug在每个节点中可以直接看到。

image.png

Stable diffusion 的comfyui

画风一转,是我喜欢的类型

  • 更自由的节点设计,任意扩散
  • 不再是节点间的流转,而是变量间相互链接
  • 和coze一个毛病,节点多了极难维护。

image.png

设计和目标

  • 能够看到整体节点的流转,但是每个界面可以单独打开关闭,参考dify。

  • 必须提供debug功能。最好是和coze一样直接绑定到节点上。

  • 节点的界面设计和comfyui一样是开放式的,可以随意定义。

效果预览

服务启动方法:【ai_agent】从零写一个agent框架(一)打造最强开放agent编辑框架,拳打dify,脚踩coze

操作方法:

  • 顶边控制栏 project|setting|about ,点击会在左边生成控制界面,在project界面可以加载项目的service节点。

  • 编辑窗口

    • FlowChart LLM Script Workflow 都是具体的服务节点。
    • 红色clean,清理所有的已经生成的节点
    • 红色reset,重置整个界面
    • 绿色save,保存配置,默认30s自动保存,时间在project界面可以调整。
    • 绿色debug,debug一次流程。
  • 右边上侧为所有节点列表,可以在这里打开关闭节点视图,也可以删除。

  • work-flow-view,查看节点间的流转关系

  • plan-text-view:查看执行计划,下载所有生成的节点,上传节点配置(会覆盖当前配置)。

  • 底边为日志信息,可以展开

如下窗口: image.png

关于窗口的设计

窗口的结构目前是固定的五部分,当然未来可能会更多。

  • 节点编号,描述,service类型,

  • input,输入参数结构

  • output,输出参数结构

  • goto,向那些节点流转

  • debug,调试信息

我们看一下窗口的具体定义,以openai-llm为例。在线查看,我这里也贴一下:

{
    "plugin_list":[
        {
            "code":"openai-LLM",
            "class":"LLM",
            "desc":"openai LLM chat",
            "ui_type":"window",
            "service_type":"openai_llm",
            "input_vars": {
                "model": {
                    "type":"string",
                    "default":"gpt-3.5-turbo",
                    "ui_type": "enum",
                    "ui_extend_enum": [
                        "gpt-4o",
                        "gpt-4-turbo",
                        "gpt-4",
                        "gpt-3.5-turbo"
                    ]
                },
                "temperature":{
                    "type":"f32",
                    "default": 0.7,
                    "desc":"The randomness of the model generated responses",
                    "ui_extend_slider": {
                        "max": 2.0,
                        "min": 0.0,
                        "speed": 0.01
                    }
                },
                "max_tokens":{
                    "type":"number",
                    "default": 512,
                    "desc":"answer max tokens",
                    "ui_extend_slider": {
                        "max": 512,
                        "min": 0,
                        "speed": 1
                    }
                },
                "prompt":{
                    "type":"string",
                    "default":"",
                    "ui_type":"text_edit_multi"
                },
                "query":{
                    "type":"string",
                    "default":"",
                    "required":true
                },
                "tools":{
                    "type": "list"
                },
                "context": {
                    "type": "list"
                },
                "extend":{
                    "type": "object"
                }
            },
            "output_vars": {
                "answer": "this is text",
                "tools": [
                    {
                        "function_name": "tool name",
                        "args": "function call args"
                    }
                ]
            }
        }
    ]
}

那么它对应展示的效果如下。

image.png

如果自己定义了一个功能视图,应该放在哪里?

所有的视图配置都在webui/server/plugin目录下,当点击project->LOAD按钮时,会默认加载这个目录下的全部配置。

代码实现

仓库地址:ai_agent/webui at main · woshihaoren4/ai_agent

  • webui本身也是一个前后端分离的项目,webui/server这个文件是一个微小的服务端,提供插件加载,debug调用的功能,通过go run main.go启动
  • webui项目是跨端的,可以当做应用打开。
  • 也可以在浏览器上打开,此时以wasm的模型运行,需要用trunk启动,trunk安装使用教程。

具体的实现就不贴了,用egui画的,顺着update往下捋就行了。

尾语

目前做的这版UI还是很简洁的,算是基本能用。

整个ai_agent在设计思路上参考了BaaS Solution,也就是说你在webui上设计好了流程后,最终拿到生产环境上用时就不需要webui的参与了,直接api调用。

当然如果你觉得界面实在丑陋到无法接受,那可以自己搞一套。

本文转自 https://juejin.cn/post/7383201975733796891,如有侵权,请联系删除。

eGUI++ 一个很不错的c++GUI库 忘了在哪淘到的了编译需要boost,用c++的方式进行gui编程 直观一点用代码说明这个库,创建一个窗口如下wnd<form> w = new_(); 立即下载

相关推荐

Unity FPS射击控制系统:数据驱动的武器行为解耦方案

在Unity第一人称射击(FPS)开发中,射击系统常因输入、状态、行为耦合导致连发异常、换弹冲突与网络同步失准。其本质是缺乏对‘武器行为’(如后坐力曲线、弹药逻辑)与‘射击控制’(如输入合法性校验、冷却调度)的正交分离。本方案基于ScriptableObject实现WeaponData数据资产化,配合ShootingController状态机服务,达成输入解耦、运行时参数可调、协程受控、网络预测友好等工程目标。适用于中大型FPS项目架构升级与数据驱动转型,尤其解决Unity InputSystem与物理反馈

weixin_30536861的博客 609

打通 Dify 和 ComfyUI 的绘画尝试

感兴趣的小伙伴,赠送全套AIGC学习资料,包含AI绘画、AI人工智能等前沿科技教程和软件工具,具体看这里。AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。

xiaoganbuaiuk的博客 3636

开启虚拟人物互动新时代:探索相芯Avatar SDK驱动功能(Android)

相芯SDK提供了男孩和女孩Avatar驱动模型,这些模型具备半身驱动和全身驱动的功能,使得虚拟角色能够根据用户的面部表情和动作实时模仿和响应。半身驱动功能: 相芯SDK的男孩和女孩Avatar驱动模型具备上身驱动功能,即能够通过用户的面部表情和动作来驱动虚拟角色的上半身行为。这意味着用户的面部表情、头部转动和上半身姿态等动作可以直接映射到虚拟角色上,使得虚拟角色能够栩栩如生地模仿用户的动作。例如,用户微笑时,虚拟角色会展现出笑容;用户转动头部时,虚拟角色也会相应地转动头部。

Faceunity2023的博客 631

社区版Dify 轻松实现文生图,Dify+LLM+ComfyUI

然后输入你的网络地址,就可以本地 127.0.0.1 或者 localhost 调用了,但是,现在是要给到Dify 去调用,ComfyUI 要把网给出去,设置一下0.0.0.0就行。,里面存放的就是你的各种模型文件,新手先熟悉,checkpoints, loras ,很简单,直接下载文件 丢到里面存就行。,这是一个ComfyUI 工作流中的节点调用,如果你需要安装新的节点(实现更加高阶的功能),是在这个文件夹里面存储的。上面的LLM给你提供了很大的创造的可能,可以自行搭建有趣的应用!

weixin_44119512的博客 7019

Lumerical FDTD新手教程:5步搞定MMI波导光谱模拟(附避坑指南)

本文提供Lumerical FDTD新手教程,详细讲解5步完成MMI波导光谱模拟的实用方法,包括环境准备、结构建模、光源配置、仿真优化和结果分析。特别针对多模干涉耦合器(MMI)的模拟难点,提供避坑指南和优化策略,帮助光学工程师快速掌握FDTD仿真技术。

kite3的博客 359

大疆控制算法笔试复习指南:从PID到MPC核心考点解析

控制算法是无人机、机器人等智能装备实现自主运行的核心技术。从经典控制到现代控制,PID控制算法、LQR控制算法、预测控制算法(MPC)以及Stanley控制算法等,构成了工程实践中不可或缺的方法体系。理解其数学原理、适用条件与调参逻辑,是评估系统稳定性、动态响应与抗扰能力的基础。在无人机飞控、云台增稳、车载路径跟踪等典型场景中,这些算法直接决定了设备的实际性能表现。大疆等企业相关岗位的笔试,正是围绕上述核心知识点,考查候选人对控制系统本质的理解、数学推导能力以及工程实现素养。本文整理了一套覆盖理论基石、高频

weixin_33178839的博客 359

【AI_agent】从零写一个agent框架(五)基于egui制作一个agent/workflow在线编辑器

上篇我们实现了基础节点,并暴露出grpc服务,但是手动编辑文本制作一个workflow实在强人所难。所以本文我们做个webui自动生成workflow。开搞之前先看看别人怎么做的。

xxue345678的博客 2009

AI人工智能与TensorFlow的教育科技应用

随着科技的飞速发展,AI人工智能在各个领域都展现出了巨大的潜力,教育领域也不例外。本文章的目的在于深入探讨AI人工智能与TensorFlow在教育科技中的具体应用,包括智能教学系统的开发、学生学习情况的评估与预测等方面。范围涵盖了从基础概念到实际项目应用的各个层面,旨在为教育科技工作者和相关研究者提供全面且深入的技术指导。本文将首先介绍AI人工智能和TensorFlow的核心概念及其联系,让读者对相关技术有基本的了解。接着详细讲解核心算法原理和具体操作步骤,并结合数学模型和公式进行深入分析。

AI智能探索者的博客 1697

深入BIMCraft架构:Rust核心、egui前端与MCP三层设计完整剖析

如果你听说过"用 AI 自动画建筑图纸",BIMCraft 就是最好的例子之一:这是一个**开源、纯 Rust 实现的 BIM 建筑信息模型软件**,完整复刻了 Revit 的工作流,并刻意设计成"每个动作都是一条命令",因此人类用户和 AI Agent 能驱动同一套引擎。本文将从 [BIMCraft](https://link.gitcode.com/i/d45b6aa421bea5d92b5e

gitblog_00087的博客 463

Mixly/Arduino实战:WS2812点阵动态显示自定义图案与汉字

本文手把手教你使用Mixly和Arduino驱动WS2812点阵屏,实现自定义图案与汉字的动态显示。内容涵盖硬件连接、取模软件设置、高效数据处理技巧(巧用Excel)、Mixly图形化编程及Arduino代码解析,并深入探讨动态显示与滚动汉字原理,最后提供常见问题排查与性能优化心得,助你从零开始轻松玩转智能硬件。

weixin_29185199的博客 454

SAP Fiori 从技术上而言到底包含哪些组件?

SAP Fiori是企业级UX设计的系统化解决方案,基于五大原则构建:角色导向(Role-based)、自适应(Adaptive)、简洁(Simple)、一致(Coherent)和愉悦(Delightful)。其技术实现包含SAPUI5开发框架、Fiori Launchpad统一入口、OData服务网关等核心组件,通过标准化设计模式与开发工具链,显著提升企业应用的用户体验和开发效率。典型案例显示,遵循Fiori原则可缩短30%以上的操作时长,降低50%的培训成本。该体系既保持跨设备一致性,又支持业务场景的深

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 223

艾尔登法环存档修改指南:ER-Save-Editor 实战手册

200 小时练出来的角色,因为一次手误把点数全砸进错了属性,回档又抹掉了十几小时的成果。ER-Save-Editor 是一个艾尔登法环存档编辑器,兼容 PC 与 PlayStation 存档,让你直接在存档文件上修改角色、道具和进度。 ## 📦 项目速览 - 项目定位:艾尔登法环存档编辑工具,面向单机玩家的角色养成与进度修正 - 技术栈:Rust 开发,基于 eframe / egui 构建

gitblog_00475的博客 415

微信文件自动归档!手把手教你用OpenClaw搭个自己的“数字员工”,告别重复劳动

很多人说“AI是未来”,但未来不是靠喊口号的。OpenClaw的真正价值,是让你把重复劳动交出去,把时间留给真正需要创造力的事。这事真能干,而且不难。下载OpenClaw(GitHub仓库按我写的步骤跑一遍遇到坑,评论区留言——我亲自帮你看作者后记:上周五,我让AI自动归档了文件后,终于在5点准时下班。回家路上,我给它发了条消息:“干得漂亮”。它没回,但我知道——它在默默等我的下一条指令。

2601_94871597的博客 413

ER-Save-Editor:艾尔登法环存档编辑器,属性修改与跨平台存档编辑指南

# ER-Save-Editor:艾尔登法环存档编辑器,属性修改与跨平台存档编辑指南 ER-Save-Editor 是一个用 Rust 编写的《艾尔登法环》存档编辑器,支持属性修改、物品添加、装备更换以及 Boss、赐福点等游戏内容开关,能同时读取 PC(Steam)的 .sl2 存档文件和经 Save Wizard 导出为 .txt 的 PlayStation 存档。所有操作都在一个桌面图形窗

gitblog_00187的博客 367

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ER-Save-Editor 完全指南:5 分钟上手艾尔登法环存档编辑器,改属性、批量加装备、管理 BOSS

ER-Save-Editor 是一款用 Rust 编写的艾尔登法环存档编辑器,兼容 PC 存档和经 Save Wizard 导出的 PlayStation 存档。它能直接修改八大属性、卢恩数量与角色等级,把武器、防具、护符、灰痕批量加入库存,还能切换赐福点、BOSS 存活状态与入侵区域。本文带你走通编译启动、核心编辑操作与常见避坑点,目标是在 5 分钟内完成第一次改档。 ## 🧩 ER-Sav

gitblog_00260的博客 521

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

艾尔登法环存档编辑器 ER-Save-Editor:3 步搬走老角色,本地改 sl2 不用上传

换台电脑,存档列表里老角色凭空消失——.sl2 其实绑着 Steam 账号。ER-Save-Editor 是一个纯本地运行的艾尔登法环存档编辑器,直接改写 .sl2 文件里的角色数据,同时支持 PC 和 PlayStation 两种存档格式。 ## 先确认你的存档在不在支持范围 它是个休闲向的本地工具,README 把定位写得很清楚:方便做 build 用,不背书线上作弊。全程不联网上传,存档

gitblog_00423的博客 306

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

艾尔登法环存档编辑器教程:10分钟改 SteamID,把 .sl2 存档转移到新电脑

ER-Save-Editor 是一款能直接改写 SteamID 绑定的艾尔登法环存档编辑器,上周有朋友换了台电脑,游戏里发现存档加载不出来,把 `.sl2` 文件拷过去也不认——后来用这个工具把存档里的 SteamID 改成新账号的,存档就正常进游戏了。 ## 它适合谁,又不太适合谁 一句话定位:ER-Save-Editor 是一个带图形界面的 Rust 艾尔登法环存档编辑器,同时支持 PC

gitblog_00095的博客 172

oh-my-opencode-slim 桌面伴生 UI(Companion)架构全解:会话状态追踪、原生二进制分发与自动更新机制

本文以 oh-my-opencode-slim 仓库的 [src/companion/codemap.md](https://link.gitcode.com/i/294ee2d7e5b23fb28275af8b6c434083) 为核心骨架,系统讲解可选桌面伴生动画 UI(Companion)功能:它如何在 OpenCode 核心编排之外独立运行、如何通过 Producer-Consumer 模

gitblog_00083的博客 93

如何构建下一代企业级AI数据助手:DB-GPT的3大架构创新与实施指南

DB-GPT作为开源代理式AI数据助手,正在重新定义企业数据智能的工作范式。在数据驱动的决策时代,传统的数据分析流程面临着技术门槛高、响应速度慢、资源消耗大等核心挑战。DB-GPT通过深度融合大型语言模型与多源数据系统,为企业提供了一套革命性的智能数据解决方案,实现了从自然语言需求到业务洞察的端到端自动化。 ## 🔍 行业挑战与数据智能的瓶颈 在数字化转型的浪潮中,企业面临着前所未有的数据挑

gitblog_00295的博客 430

LightCraft 浏览器版:3 步在网页里修完 RAW,图库还留在你自己的浏览器

出差路上手边只有一台临时电脑,不想装软件、也不想把原片交给任何网盘,就想把昨晚拍的那张 RAW 修完发出去——LightCraft 浏览器版就是为这种场景准备的。这个用纯 Rust 写的开源照片管理与 RAW 处理工具,被完整编译成 WebAssembly 跑在网页里:导入、调参、导出与桌面版是同一套逻辑,而所有数据只存在于你自己的浏览器中。 ## 它是什么:桌面版原封不动搬进网页 - 界面就

gitblog_00956的博客 95

PhotoCraft 路线图解读:从 M0–M12 里程碑到 Photoshop 对齐度的诚实量化

PhotoCraft 是一个以纯 Rust 干净室(clean-room)方式重新实现 Adobe Photoshop 的开源项目。本文基于仓库中的 [docs/roadmap.md](https://link.gitcode.com/i/e2ffbf50163d8bf637db343c72cc1753) 展开,梳理项目的里程碑体系(M0–M12)、菜单接线(menu parity)、PSD 保真

gitblog_00451的博客 832

PhotoCraft 项目路线图:M0–M12 里程碑定义、cargo xtask parity 度量体系与横切安全加固序列

PhotoCraft 是一个用纯 Rust 从零(clean-room)重新实现 Adobe Photoshop 的开源项目,其"离 Photoshop 还有多远"的问题完全依赖一套公开、可复算的度量体系来回答:里程碑状态表、`cargo xtask parity` 生成的菜单覆盖率报告、语料库 oracle,以及一份定期更新的"诚实评估"。本文以文档书中的 [Roadmap 索引页](https

gitblog_01043的博客 1034

cn-math-taxonomy 深度拆解:中文数学知识图谱为什么不能靠翻译

开源世界能直接拿来的数学知识图谱,几乎全部以欧美课程为骨架:K-12 分段、Common Core 编号、英文术语。而中文数学教育的数据生态——课标是中文的、教材是中文的、"配方法""鸡兔同笼"这类题型在英文体系里根本没有对应节点——长期是空白。cn-math-taxonomy 把义务教育 2022 版数学课标 + 人教版小学到高中落成了 827 个数学知识点、1364 条先修边、3455 道诊断

gitblog_00198的博客 434

Rust图形界面:从零开始创建eGUi项目

主要来自两个结构体,分别是Ui和Widget。其中Ui里的组件以函数形式调用,Widget中的组件以结构体的形式调用。但大部分组件,二者之间可以互相转换。例如,在上面的代码中,通过调用`ui.label("name: ");`来创造一个标签,但也可以用另一种方法

微小冷的学习笔记 5461

使用Dify实现对comfyui的工作流实现

于是在这个环节中添加节点“参数提取器”,在提取参数和指令中观察要提取数据的特征,给定AI选取的范围,这里ai模型采用gpt-3.5-turbo-0125。2.在创建好的工作流中布置节点,在“开始”中新建我们需要用户输入的字段并命名,其中url就是我们在运行是初始输入,主要是输入链接地址。最终结果点击返回出的链接查看图片,这样我们在comfyui上的工作流就可以在Dify中实现了。4.进行参数提取,由于要拿到图片的位置,所以要想办法将这个提取出来。5.将输入的url和提取出来的参数进行拼接,如下图,代码。

Derrick_Kun的博客 3267
上一篇: 【ai_agent】从零写一个agent框架(四)用rust制作一个python的虚拟运行环境。
下一篇: 将图像自动文本化,图像描述质量更高、更准确了
我爱学大模型
博客等级 码龄3年 7883粉丝 687原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值