Stories

Detail Return Return

Langflow:面向 AI Agent、API 與 LLM 的拖拽式流程構建工具 - Stories Detail

我最近一直在探索一個叫Langflow的工具。

如果你曾經試着把LLMs、APIs和各種工具連起來,你就會知道那種挫敗感——太亂了。
6cb97376449f4286ccd854e69971c3b5.webp

一大堆樣板代碼,好多問題像“為什麼這個不工作”,通常花太多時間在設置上。

Langflow試圖讓這一切變得更容易。

它基本上就是一個AI工作流的視覺構建器。

拖動東西,連接塊,突然你就有一個agent,能執行任務比如抓取URL或解決數學問題。

當你準備好了,你可以直接把它跑成一個API。

初印象

那麼你到底能得到什麼?一個畫布,你可以把組件拖進去:LLMs、inputs、outputs和tools。你把它們連起來。就完了。

好的部分:如果你不喜歡被限制,你可以打開Python那邊自定義東西。所以它不只是拖拽——它還可hack。

它支持最受歡迎的工具,包括OpenAI、vector databases和Groq,還有其他。它內置了observability,這通常是我等到出問題才想起來要加的。

安裝方法

這裏是我一開始有點卡住的地方,因為有大概四種安裝方式。

最簡單的路徑,抓Langflow Desktop。下載,點擊,就好了。適用於macOS 13+和Windows。

如果你喜歡容器,就跑Docker image:

docker run -p 7860:7860 langflowai/langflow:latest

打開
http://localhost:7860,你就進去了。

我的選擇?Python package。更靈活。這裏是我需要的最基本的東西:

uv venv myenv
source myenv/bin/activate   # Mac/Linux
myenv\Scripts\activate      # Windows

uv pip install langflow
uv run langflow run

然後它在
http://127.0.0.1:7860 啓動了。

大概花了兩分鐘。

探索Simple Agent的實際運行

我從“Simple Agent”模板開始。它基本上是:

Chat input → Agent → Tools (Calculator + URL fetch) → Chat output

我問它:“Add 4 and 4。”

它回覆:“The answer is 8。”

然後我問當前新聞,它從URL tool拉取。沒什麼驚天動地的,但它展示了這些部分是怎麼拼起來的。

我最喜歡什麼?你可以看到agent的推理一步一步。它不覺得像個黑箱。
f37a34d420b21f6e16caaaa071ef121e.webp

通過代碼應用

一旦我讓一個flow跑起來,我想從Python調用它。幸好Langflow讓這變得容易。

import requests

url = "http://localhost:7860/api/v1/run/FLOW_ID"
payload = {
"output_type": "chat",
"input_type": "chat",
"input_value": "hello world!"
}
headers = {
"Content-Type": "application/json",
"x-api-key": "YOUR_LANGFLOW_API_KEY"
}
res = requests.post(url, json=payload, headers=headers)
print(res.json())

就是這樣。你打/run endpoint,flow就幹活了。

一個聊天循環

為了好玩,我把它包成一個終端chatbot。沒什麼花哨的。

def ask_agent(q):
payload = {"output_type": "chat", "input_type": "chat", "input_value": q}
headers = {"Content-Type": "application/json", "x-api-key": "YOUR_KEY"}
res = requests.post(url, json=payload, headers=headers)
data = res.json()
return data["outputs"][0]["outputs"][0]["outputs"]["message"]["message"]

prev = None
while True:
q = input("Ask something: ")
if q == "quit":
break
elif q == "compare":
print("Last answer:", prev if prev else "none")
continue
ans = ask_agent(q)
print("Agent:", ans)
prev = ans

現在我可以問它問題,然後打“compare”看它上次説什麼。傻乎乎的,但挺有趣。

一個巧妙的技巧:你可以只為單次運行覆蓋東西。比如,如果我通常跑OpenAI但想為一個query試Groq,我加一個“tweaks”對象到payload。

payload = {
"output_type": "chat",
"input_type": "chat",
"input_value": "hello world!",
"tweaks": {
"Agent-ZOknz": {
"agent_llm": "Groq",
"api_key": "GROQ_API_KEY",
"model_name": "llama-3.1-8b-instant"
}
}
}

它是臨時的,所以我不搞亂原flow。

Langflow達到了一個不錯的平衡:簡單到你可以點來點去幾分鐘建好東西,但又靈活到能真正集成進app。

如果你是AI agents的新手,從Desktop或Docker開始。如果你更像開發者,我推薦用Python package。

雖然它不完美——偶爾需要點耐心啓動東西,documentation還在趕上——但它仍是我用過的最無縫的AI工作流工具之一。

關注公眾號,每天獲取AI最新技術。
qrcode_for_gh_dc0f07db3b18_430.jpg

user avatar zhidechaomian_detxs7 Avatar u_16776161 Avatar ting_61d6d9790dee8 Avatar definecloud Avatar openfuyao Avatar u_16018702 Avatar u_16640205 Avatar u_15591470 Avatar u_15214399 Avatar rivers_chaitin Avatar yeshan333 Avatar nixideshatanku Avatar
Favorites 24 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.