<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網易首頁 > 網易號 > 正文 申請入駐

      Daggr:介于 Gradio 和 ComfyUI 之間的 AI 工作流可視化方案

      0
      分享至


      Daggr 是一個代碼優先的 Python 庫,可將 AI 工作流轉換為可視化圖,支持對 Gradio 管道進行檢查、重跑和調試。

      單模型、單 prompt 的簡單 demo 通常不會有什么問題。但當工作流擴展到多個步驟,比如加入后處理函數、背景移除、轉錄摘要、檢索重排等等時情況就開始失控了。

      狀態在各個環節之間流轉,我們不得不反復運行 cell、打印中間結果、注釋掉大段代碼來定位問題。每次出錯,甚至不確定該從哪個環節開始排查:是輸入有問題?模型出了狀況?還是中間的膠水代碼邏輯不對?

      這種場景在 AI 應用開發中極為常見。

      Daggr 正是為解決這類問題而設計的。它不是要取代 Python,也不是強推拖拽式編輯器,而是填補一個長期存在的空白:用代碼定義工作流,用可視化圖審視系統狀態。



      Daggr 概述

      Daggr 是一個用于構建 AI 工作流的開源 Python 庫。工作流通過代碼定義,使用標準 Python 語法,無需 DSL 或 YAML 配置。

      Daggr 的核心功能是從代碼生成可視化畫布。這張畫布是一個實時更新、可交互檢查的有向圖,精確反映代碼的執行狀態。每個計算步驟對應一個節點,節點之間的數據流向清晰可見,所有中間輸出均可點擊查看、單獨重跑或回溯歷史。

      一個關鍵的設計決策是:可視化層僅作為觀察工具,代碼始終是唯一的事實來源。這一選擇決定了 Daggr 與傳統可視化編排工具的本質區別。

      使用體驗

      安裝:

      pip install daggr

      創建一個 Python 文件,例如 app.py:

      import random
      import gradio as gr
      from daggr import GradioNode, Graph
      glm_image = GradioNode(
      "hf-applications/Z-Image-Turbo",
      api_name="/generate_image",
      inputs={
      "prompt": gr.Textbox(
      label="Prompt",
      value="A cheetah in the grassy savanna.",
      lines=3,
      ),
      "height": 1024,
      "width": 1024,
      "seed": random.random,
      },
      outputs={
      "image": gr.Image(
      label="Image"
      ),
      },
      )
      background_remover = GradioNode(
      "hf-applications/background-removal",
      api_name="/image",
      inputs={
      "image": glm_image.image,
      },
      postprocess=lambda _, final: final,
      outputs={
      "image": gr.Image(label="Final Image"),
      },
      )
      graph = Graph(
      name="Transparent Background Image Generator", nodes=[glm_image, background_remover]
      )
      graph.launch()

      運行:

      daggr app.py

      輸出的不是傳統的黑盒 Gradio demo,而是一張可視化畫布:兩個節點通過邊連接,輸入參數可調整,輸出結果可檢查。開發者可以單獨重跑圖像生成節點或背景移除節點,也可以在歷史結果之間切換,觀察下游節點如何響應不同的輸入狀態。

      整個調試過程無需 print 語句,無需人工追蹤狀態變化。

      與 Gradio 的差異

      Gradio 在構建單步 demo 方面表現出色,但當工作流涉及多個步驟時,調試難度顯著上升。修改一個 prompt 后,下游某處出現問題,但難以確定:該步驟是否重新執行?使用的是哪組輸入參數?

      Daggr 直接解決了這一問題。每次節點運行都會被記錄,每個輸出結果都可追溯其來源,每條連接都標記了數據的新鮮度。當上游值發生變化時,Daggr 會通過視覺提示告知開發者;下游節點若未重新執行,狀態一目了然。

      Daggr 的工作流模型非常直觀:工作流本質上是一個有向無環圖(DAG)。

      每個節點代表一次計算操作,可以是 Gradio Space API 調用、Hugging Face 推理請求,或普通的 Python 函數。節點通過輸入端口和輸出端口定義接口,數據沿著端口之間的連接流動。

      核心概念就是這些,但實現細節中有許多值得關注的設計。

      GradioNode:封裝現有 Gradio 應用

      GradioNode 用于調用已有的 Gradio 應用,支持 Hugging Face Spaces 上的遠程應用和本地運行的應用。

      from daggr import GradioNode
      import gradio as gr
      image_gen = GradioNode(
      space_or_url="black-forest-labs/FLUX.1-schnell",
      api_name="/infer",
      inputs={
      "prompt": gr.Textbox(label="Prompt"),
      "seed": 42,
      "width": 1024,
      "height": 1024,
      },
      outputs={
      "image": gr.Image(label="Generated Image"),
      },
      )

      對于熟悉 Hugging Face Spaces "Use via API" 功能的開發者,這種接口定義方式會非常熟悉。Daggr 采用了相同的參數命名和端點定義規范。

      由于 GradioNode 調用的是外部服務,默認采用并發執行模式,無需處理線程管理或鎖機制。

      FnNode:自定義 Python 函數

      當工作流需要自定義邏輯而非模型調用時,FnNode 提供了相應的支持。典型應用場景包括數據解析、過濾、組合和后處理。

      from daggr import FnNode
      import gradio as gr
      def summarize(text: str, max_words: int = 100) -> str:
      words = text.split()[:max_words]
      return " ".join(words) + "..."
      summarizer = FnNode(
      fn=summarize,
      inputs={
      "text": gr.Textbox(label="Text to Summarize", lines=5),
      "max_words": gr.Slider(minimum=10, maximum=500, value=100),
      },
      outputs={
      "summary": gr.Textbox(label="Summary"),
      },
      )

      Daggr 會自動檢查函數簽名,按名稱匹配輸入參數,按順序將返回值映射到輸出端口。

      值得注意的是,FnNode 默認采用串行執行模式。這是一個經過權衡的設計決策:本地 Python 代碼可能涉及文件操作、GPU 資源、全局狀態,以及各種非線程安全的庫。Daggr 選擇了更保守的默認行為。

      如需并發執行,可以顯式聲明:

      node = FnNode(my_func, concurrent=True)

      InferenceNode:云端模型推理

      InferenceNode 允許通過推理服務直接調用 Hugging Face 模型,無需下載模型權重或配置本地環境。

      from daggr import InferenceNode
      import gradio as gr
      llm = InferenceNode(
      model="meta-llama/Llama-3.1-8B-Instruct",
      inputs={
      "prompt": gr.Textbox(label="Prompt", lines=3),
      },
      outputs={
      "response": gr.Textbox(label="Response"),
      },
      )

      InferenceNode 默認并發執行,并自動傳遞 Hugging Face token,支持 ZeroGPU 計費追蹤、私有 Space 訪問和受限模型調用。

      Daggr 一些主要特征

      溯源是 Daggr 的核心特性之一。

      每次節點執行時,Daggr 都會保存輸出結果及產生該結果的精確輸入參數。結果歷史可以像版本控制一樣瀏覽。選擇某個歷史結果時,Daggr 會自動恢復當時的輸入狀態,不僅針對當前節點,下游節點的狀態也會同步恢復。

      這意味著開發者可以自由探索不同的參數變體而不丟失上下文。例如,生成三張圖片,對其中兩張執行背景移除,之后選擇第一張圖片,整個工作流圖會自動對齊到對應的狀態。

      這不僅僅是便利性的提升,而是一種不同的開發范式。

      狀態可視化

      Daggr 使用邊的顏色傳遞數據狀態信息:橙色表示數據是最新的,灰色表示數據已過期。

      當上游輸入發生變化時,所有依賴該輸入的邊都會變為灰色,清晰地指示哪些節點需要重新執行。

      Scatter 和 Gather 模式

      部分工作流需要處理列表數據:生成多個項目,分別處理,最后合并結果。Daggr 通過 .each 和 .all() 語法支持這種模式:

      script = FnNode(fn=generate_script, inputs={...}, outputs={"lines": gr.JSON()})
      tts = FnNode(
      fn=text_to_speech,
      inputs={
      "text": script.lines.each["text"],
      "speaker": script.lines.each["speaker"],
      },
      outputs={"audio": gr.Audio()},
      )
      final = FnNode(
      fn=combine_audio,
      inputs={"audio_files": tts.audio.all()},
      outputs={"audio": gr.Audio()},
      )

      語法仍然是標準 Python,邏輯顯式清晰,同時 Daggr 能夠理解數據的分發與聚合語義。

      Choice 節點

      當需要在多個備選方案之間切換時,例如使用不同的圖像生成器或 TTS 服務,但保持下游邏輯不變,可以使用 Choice 節點:

      host_voice = GradioNode(...) | GradioNode(...)

      UI 中會顯示一個選擇器,下游連接保持不變,選擇結果在 sheet 中持久保存。這種設計便于進行對比實驗,同時保持代碼庫的整潔。

      Sheets:多狀態工作區

      Daggr 引入了 sheets 的概念,可以理解為獨立的工作區。每個 sheet 擁有獨立的輸入參數、緩存結果和畫布布局,但共享相同的工作流定義。

      這與復制 notebook 進行實驗的場景類似,但管理更加規范。

      API 與部署

      Daggr 工作流自動暴露 REST API,可以通過以下方式查詢 schema:

      curl http://localhost:7860/api/schema

      部署同樣簡潔:

      daggr deploy my_app.py

      Daggr 會自動提取工作流圖、創建 Hugging Face Space、生成元數據并完成部署。

      總結

      對于單模型 demo,Gradio 已經足夠;對于純可視化編排需求,ComfyUI 可能更合適;對于生產級任務調度,Airflow 或 Prefect 是更成熟的選擇。

      而Daggr 的定位是中間地帶:工作流復雜度足以需要可視化檢查和調試,但尚未達到需要正式編排系統的程度;開發者仍處于探索、調整和迭代的階段。

      這是 Daggr 最能發揮價值的場景。

      https://avoid.overfit.cn/post/725b46b7dd434d9eb3a90ff9d67b968a

      作者: Civil Learning

      特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關推薦
      熱點推薦
      伊朗最大“內鬼”被抓?革命衛隊:勾結以色列,指揮官卡尼被拘!

      伊朗最大“內鬼”被抓?革命衛隊:勾結以色列,指揮官卡尼被拘!

      青青子衿
      2026-03-05 11:57:03
      打瘋了!東契奇首節狂轟22+5三分 生涯30次單節20+升歷史第四

      打瘋了!東契奇首節狂轟22+5三分 生涯30次單節20+升歷史第四

      醉臥浮生
      2026-03-07 12:13:33
      伊拉克庫爾德第一夫人宣言:我們不是任人驅使的炮灰!

      伊拉克庫爾德第一夫人宣言:我們不是任人驅使的炮灰!

      勝研集
      2026-03-06 13:44:23
      廣東一女子不愿上班常年坐街邊,因長得好看被路人投喂:又懶又饞

      廣東一女子不愿上班常年坐街邊,因長得好看被路人投喂:又懶又饞

      明智家庭教育
      2026-03-06 17:19:16
      美以伊軍事沖突最大副作用,是斬斷了俄羅斯的“救命稻草”

      美以伊軍事沖突最大副作用,是斬斷了俄羅斯的“救命稻草”

      廖保平
      2026-03-05 12:08:52
      “不想為以色列賣命”:帝國最后的遮羞布,美式民主終成笑話

      “不想為以色列賣命”:帝國最后的遮羞布,美式民主終成笑話

      怪口歷史的K先生
      2026-03-06 15:22:51
      為何關閉霍爾木茲海峽就能掐全球脖子?因為伊朗原油是全世界最好的

      為何關閉霍爾木茲海峽就能掐全球脖子?因為伊朗原油是全世界最好的

      風向觀察
      2026-03-06 21:31:15
      兩會不到3天,5大好消息傳來!老百姓暗暗叫好:希望國家盡快落實

      兩會不到3天,5大好消息傳來!老百姓暗暗叫好:希望國家盡快落實

      談史論天地
      2026-03-07 06:54:29
      1979年,張國燾凍死在養老院,許世友:除了主席,沒人是他的對手

      1979年,張國燾凍死在養老院,許世友:除了主席,沒人是他的對手

      文史季季紅
      2026-03-05 13:35:03
      寫入教科書的一天:F-35在德黑蘭完成全球首次實戰空對空擊殺

      寫入教科書的一天:F-35在德黑蘭完成全球首次實戰空對空擊殺

      斌聞天下
      2026-03-06 07:30:03
      伊方:因美以襲擊喪生的伊朗人三成為青少年

      伊方:因美以襲擊喪生的伊朗人三成為青少年

      環球網資訊
      2026-03-07 06:39:29
      為什么美國的華人華裔地位那么低 網友從各方面分析 真就那樣

      為什么美國的華人華裔地位那么低 網友從各方面分析 真就那樣

      侃神評故事
      2026-03-06 07:10:03
      我包養過一個女大學生,七年花了一千多萬

      我包養過一個女大學生,七年花了一千多萬

      煙火人間故事匯
      2026-03-06 23:05:03
      性壓抑已經變態至此了?

      性壓抑已經變態至此了?

      黯泉
      2026-03-07 11:28:43
      蘿莉島,是進入核心圈層的投名狀,你猜他們為什么都穿紅皮鞋

      蘿莉島,是進入核心圈層的投名狀,你猜他們為什么都穿紅皮鞋

      百曉生談歷史
      2026-03-05 22:00:08
      一份“煮熟的三文魚”火了,原來低認知的家長,真能搞出人命!

      一份“煮熟的三文魚”火了,原來低認知的家長,真能搞出人命!

      妍妍教育日記
      2026-03-07 08:45:06
      伊朗萬萬沒想到,自家王牌武器遭到破解,美軍多了一張底牌

      伊朗萬萬沒想到,自家王牌武器遭到破解,美軍多了一張底牌

      空天力量
      2026-03-06 13:09:18
      上次被發現還是1911年!上海寶山驚現1只,專家:可能是坐船來的

      上次被發現還是1911年!上海寶山驚現1只,專家:可能是坐船來的

      萬象硬核本尊
      2026-03-06 23:54:22
      女子實名舉報某團外賣:不上大額券就讓我變成“凌晨營業”,你們真黑!

      女子實名舉報某團外賣:不上大額券就讓我變成“凌晨營業”,你們真黑!

      回旋鏢
      2026-03-06 21:13:59
      塔圖姆復出15分12板7助攻凱爾特人大勝獨行俠,布朗24分7板7助

      塔圖姆復出15分12板7助攻凱爾特人大勝獨行俠,布朗24分7板7助

      湖人崛起
      2026-03-07 10:25:09
      2026-03-07 13:43:00
      deephub incentive-icons
      deephub
      CV NLP和數據挖掘知識
      1940文章數 1456關注度
      往期回顧 全部

      科技要聞

      OpenClaw爆火,六位"養蝦人"自述與AI共生

      頭條要聞

      特朗普突然放話"先解決伊朗后解決古巴" 梅西聽懵了

      頭條要聞

      特朗普突然放話"先解決伊朗后解決古巴" 梅西聽懵了

      體育要聞

      塔圖姆歸來:凱爾特人的春之綠

      娛樂要聞

      周杰倫田馥甄的“JH戀” 被扒得底朝天

      財經要聞

      針對"不敢休、不讓休"怪圈 國家出手了

      汽車要聞

      逃離ICU,上汽通用“止血”企穩

      態度原創

      旅游
      家居
      時尚
      教育
      軍事航空

      旅游要聞

      文旅部部長:7名外國游客到上海旅游,買了40箱貨;“成為中國人”成了熱詞

      家居要聞

      暖棕撞色 輕法奶油風

      這些才是適合普通人的穿搭!搭配腰帶、多穿牛仔褲,簡單舒適

      教育要聞

      兩會速遞|教育部部長:將實施新一輪學生心理健康促進行動

      軍事要聞

      伊朗:使用無人機擊中美軍"林肯"號航母

      無障礙瀏覽 進入關懷版