繁中 ▾
stableaudio.top

適用於您音訊管線的無審查文字 API

取得 API 金鑰

LangChain 與 LangGraph 無需 API 金鑰

你無法完全不使用金鑰運行託管模型,但你可以先不付費使用 LangChain 與 LangGraph。一鍵試用金鑰與變更的 Base URL 即可。

等距節點圖,發光的連接立方體代表 LangGraph Agent 工作流程

更新於

重點摘要

  1. 每個託管端點都需要金鑰;試用金鑰無需信用卡,一鍵即可領取。

  2. 設定 base_url 與模型為 uncensored 後,LangChain 的 ChatOpenAI 類別即可運作。

  3. 具備函式呼叫的 LangGraph Agent 可無縫運作,但分支擴展必須遵守並行限制。

  4. 典型的六次呼叫 Agent 執行成本約為 $0.0039,因此 $0.50 的試用額度可執行約 128 次此類執行。

「無需 API 金鑰」在現實中可能代表的含義

搜尋 langchain 與 langgraph 無需 api key通常意味著以下三種情況之一。你可能希望在確認架構運作正常前避免付費。你可能不想將信用卡交給另一個供應商。或者你希望能完全不憑藉憑證運行 Agent 圖表。

第三種願望無法透過任何託管服務實現:為你執行工作的伺服器必須知道是誰在呼叫它。你可以獲得的是不收費且不需要提供信用卡的金鑰。新用戶在透過 Google 或電子郵件與密碼註冊後,可點擊 API 金鑰頁面一鍵領取 $0.50 的試用額度。每人限領一次,有效期為 7 天。

另一種「無金鑰」途徑是使用你自己機器上的服務來運行本地模型。這可行,但你必須承擔硬體成本,且筆記型電腦在長時間 Agent 執行時無法與託管端點匹敵。託管試用是確認圖表邏輯是否正確的更快方式,且你撰寫的程式碼與後續使用付費金鑰運行時完全相同。

由於端點與 OpenAI 相容,LangChain 不需要特殊的整合。你只需將其 OpenAI 聊天類別指向不同的基礎 URL,提供金鑰,並將模型命名為 uncensored。以下內容均基於此設定。

步驟 1:取得試用金鑰並設定環境

註冊、開啟金鑰頁面並按下試用按鈕。複製金鑰並將其保留在程式碼庫之外。將其放入環境變數中,以便同一腳本今天使用試用金鑰,未來使用完整金鑰也能運作。

export UNCENSORED_API_KEY="paste-your-key-here"
pip install -U langchain-openai langgraph langchain-core

在引入任何框架之前,請使用簡單請求檢查金鑰。這裡花費的兩分鐘可節省閱讀堆疊追蹤的一小時,後者通常是身份驗證錯誤。

curl https://api.stableaudio.top/v1/chat/completions \
  -H "Authorization: Bearer $UNCENSORED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"uncensored","messages":[{"role":"user","content":"Reply with one word: ready"}]}'

GET /v1/models呼叫是另一種快速檢查方式;它應列出 uncensored。試用金鑰允許 2 個並行請求和每分鐘 60 個請求,這對於開發圖表已足夠,但在加入並行節點時值得留意。

步驟 2:將 LangChain 指向端點

應使用的類別是來自 langchain-openai的 ChatOpenAI。兩個參數即可完成設定:base_url與api_key。模型名稱為 uncensored,通常的採樣設定也會一併傳入。

import os
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="uncensored",
    base_url="https://api.stableaudio.top/v1",
    api_key=os.environ["UNCENSORED_API_KEY"],
    temperature=0.7,
    max_retries=3,
)

print(llm.invoke("Give me three titles for an ambient track about rain.").content)

如果此處輸出文字,表示連線良好。串流輸出方式相同:迭代 llm.stream(...),區塊會透過伺服器發送的事件到達,並在串流結束時報告用量。

一個常見的失誤是未清除舊專案設定的 OPENAI_API_KEY變數。如果你忘記傳入 api_key,LangChain 會將該值發送到你自訂的 Base URL。明確傳入金鑰即可消除猜測。

步驟 3:最小化的 LangGraph 圖表

LangGraph 將 Agent 建模為在節點之間移動的狀態。最小的有用圖表包含一個節點,該節點呼叫模型並將回覆附加到訊息清單中。MessagesState 可讓你免費獲得該清單。

from langgraph.graph import StateGraph, MessagesState, START, END

def call_model(state: MessagesState):
    reply = llm.invoke(state["messages"])
    return {"messages": [reply]}

builder = StateGraph(MessagesState)
builder.add_node("model", call_model)
builder.add_edge(START, "model")
builder.add_edge("model", END)
graph = builder.compile()

out = graph.invoke({"messages": [("user", "Outline a three-act short story about a lighthouse keeper.")]})
print(out["messages"][-1].content)

這刻意保持簡單。重點在於 LangGraph 並不知道也不在乎 llm 背後是哪個供應商。任何節點都可以使用不同的模型物件,因此你可以為廉價的規劃步驟和較長的寫作步驟設定各自的設定,例如為規劃設定較低的 temperature。

步驟 4:加入工具與迴圈

當模型可以呼叫函式時,Agent 就會變得有趣。端點支援使用 tools與tool_choice的函式呼叫,工具結果以 role: "tool"訊息傳回。LangChain 與 LangGraph 會為你處理這些基礎設施。

from langchain_core.tools import tool
from langgraph.prebuilt import ToolNode, tools_condition

@tool
def word_count(text: str) -> int:
    'Count the words in a piece of text.'
    return len(text.split())

tools = [word_count]
llm_with_tools = llm.bind_tools(tools)

def agent(state: MessagesState):
    return {"messages": [llm_with_tools.invoke(state["messages"])]}

builder = StateGraph(MessagesState)
builder.add_node("agent", agent)
builder.add_node("tools", ToolNode(tools))
builder.add_edge(START, "agent")
builder.add_conditional_edges("agent", tools_condition)
builder.add_edge("tools", "agent")
graph = builder.compile()

result = graph.invoke({"messages": [("user", "Write a 40-word product blurb, then check its word count with the tool.")]})
print(result["messages"][-1].content)

迴圈是核心概念:Agent 節點回覆,tools_condition檢查回覆是否請求了工具,工具節點執行該工具,然後控制權返回 Agent。當回覆沒有工具呼叫時,圖表結束。

開放權重模型在工具參數的整潔度上各有不同。如果呼叫傳回格式錯誤,請縮減工具的說明文件、降低 temperature,並保持參數結構簡短。簡短且具型別的結構比包含許多可選欄位的長結構出錯機率更低。

速率限制、重試與並行分支

Agent 圖表最常出錯的地方在於並行處理。完整金鑰允許 8 個並行請求和每分鐘 300 個請求;試用金鑰允許 2 個和 60 個。如果你的圖表在試用金鑰上擴展為五個並行節點,其中三個將以 HTTP 429 被拒絕,錯誤程式碼為 concurrency。超過每分鐘預算將返回 rate_limited。暫時過載也會導致 429,並帶有 Retry-After: 5標頭。

以下三個習慣可讓情況可控:

  • 在 ChatOpenAI上將 max_retries設為 2 或 3,以便以退避機制重試短暫的 429 錯誤。
  • 將分支擴展限制在並行限制內。在 LangGraph 中,呼叫圖表時可傳入 config={"max_concurrency": 2}。
  • 記住串流請求會佔用其槽位直到串流結束,因此緩慢的消費者會佔用槽位。
out = graph.invoke(
    {"messages": [("user", "Draft five taglines in parallel.")]},
    config={"max_concurrency": 2},
)

回應標頭有助於除錯。X-Request-Id可標識呼叫,若需就此詢問支援團隊則很有用;X-Balance-USD會在每次請求後顯示剩餘額度。

圖表運作異常時的除錯檢查清單

首次 LangGraph 專案中的大多數失敗並非與模型有關。它們來自設定,而簡短的檢查清單可捕捉幾乎所有問題。

  1. 401 或身份驗證錯誤。金鑰遺失、輸入錯誤,或讀取了舊的 OPENAI_API_KEY。請列印腳本實際使用值的頭四個字元。
  2. 404 或找不到模型。模型名稱必須為 uncensored。如果不確定端點列出什麼,請呼叫 GET /v1/models。
  3. 連線錯誤。基礎 URL 必須以 /v1 結尾,且不得包含 /chat/completions;客戶端會加上該部分。
  4. 無限迴圈。如果代理持續呼叫工具,工具的返回值可能無法回答問題。請傳回純文字、簡短的字串,並透過圖形設定設定遞迴限制,讓錯誤的迴圈能提前停止。
  5. 空值或奇怪的回覆。在執行後列印完整的訊息清單。通常較早的節點寫入了與後續訊息矛盾的系統訊息。

當請求在伺服器端失敗時,請在訊息中引用 X-Request-Id 標頭給 支援。這能讓他們無需猜測即可找到該次確切的呼叫。同時請注意,失敗或被拒絕的請求不會收費,因此充滿錯誤的除錯階段不會消耗你的試用額度。

另一個設計要點。為每個節點賦予狹窄的職責和簡短的提示詞。擁有規劃器、撰寫者和檢查器,且各自擁有獨立的小型系統訊息的圖形,比擁有單一個節點且包含一頁說明的圖形更容易測試,且在連接之前,每個部分都可以透過直接的 llm.invoke 呼叫單獨進行測試。

實際試用的成本

價格為每 100 萬個輸入 token $0.15,每 100 萬個輸出 token $0.50,從預付額度中扣除。失敗或被拒絕的請求不會收費。Agent 圖表在每個任務中會多次呼叫模型,且每次呼叫都會重新發送不斷增長的訊息列表,因此輸入 token 佔據主導地位。

假設一次執行包含六次模型呼叫。假設每次呼叫輸入 3,000 個 token,輸出 400 個 token。這代表 18,000 個輸入 token 和 2,400 個輸出 token。

  • 輸入:18,000 / 1,000,000 x $0.15 = $0.0027
  • 輸出:2,400 / 1,000,000 x $0.50 = $0.0012
  • 總計:每次執行 $0.0039

$0.50 的試用額度除以 $0.0039,大約可以執行 128 次該大小的請求,足以妥善建立和測試圖形。當你超出試用額度時,儲值金額範圍從 $20 到 $500,且金額為整數;從 $50 起有 5% 的額外贈額,從 $100 起有 10% 的額外贈額,從 $200 起有 15% 的額外贈額;定價頁面 有詳細資訊。你可以使用信用卡(Visa、Mastercard、Apple Pay、Google Pay)或加密貨幣(TRC20 上的 USDT、Base 上的 USDC)付款。額度永不過期,且提示詞不會用於訓練。

上下文視窗為 100,000 個 token(包含提示詞與補全),因此較長的 Agent 歷史紀錄也能容納,但你仍需為每次重新發送的 token 付費。使用 LangGraph 的訊息工具修剪舊訊息,可降低費用與延遲。有關此背後的所有原始請求格式,請參閱 API 文件。

問答

我可以在完全沒有 API 金鑰的情況下使用 LangChain 或 LangGraph 嗎?

無法。使用託管模型時,伺服器必須識別呼叫者。你可以一鍵取得免費試用金鑰,無需信用卡,或者自行執行本地模型。

我應該使用哪個 LangChain 類別?

來自 langchain-openai 的 ChatOpenAI。將 base_url 設定為端點,將金鑰作為 api_key 傳遞,並使用模型名稱 uncensored。

工具呼叫在 LangGraph 代理中運作嗎?

是的。該端點支援工具、tool_choice 和 role: tool 結果,因此 bind_tools、ToolNode 和 tools_condition 的運作方式與上述範例相同。

為什麼當我的圖表並行執行分支時會收到 429 錯誤?

你已超過並行請求限制,試用金鑰的限制為 2,完整金鑰的限制為 8。請在圖表設定中限制 max_concurrency,並保持重試功能開啟。

試用額度足夠測試一個 Agent 嗎?

通常可以。以適中規模的六次呼叫運行約需 $0.0039,$0.50 足以覆蓋超過一百次運行,且有效期為 7 天。

你的金鑰只需填寫一張表單即可取得

建立帳號、複製金鑰、更改基礎 URL。這就是整個設定過程。

取得 API 金鑰