VI ▾
stableaudio.top

API văn bản không kiểm duyệt cho quy trình âm thanh của bạn

Lấy khóa API

LangChain và LangGraph không có API Key

Bạn không thể chạy mô hình lưu trữ mà không có khóa nào cả, nhưng bạn có thể chạy LangChain và LangGraph mà không phải trả tiền ngay lúc đầu. Khóa dùng thử một cú nhấp chuột và việc thay đổi base_url là đủ.

Đồ thị nút đẳng hướng với các khối kết nối phát sáng đại diện cho quy trình agent LangGraph

Cập nhật

Điểm chính

  1. Mọi endpoint lưu trữ đều cần một khóa; khóa dùng thử không cần thẻ và được nhận chỉ với một cú nhấp chuột.

  2. Lớp ChatOpenAI của LangChain hoạt động khi bạn đặt base_url và model thành uncensored.

  3. Các tác nhân LangGraph với gọi hàm chạy không thay đổi, nhưng các nhánh fan-out phải tuân thủ giới hạn độ đồng thời.

  4. Một lần chạy agent điển hình gồm 6 lời gọi tốn khoảng $0.0039, nên $0.50 dùng thử bao phủ khoảng 128 lần chạy như vậy.

Ý nghĩa thực tế của "không có API key"

Tìm kiếm langchain và langraph không có api key thường có nghĩa là một trong ba điều sau. Bạn có thể muốn tránh trả tiền trước khi biết rằng ngăn xếp công nghệ hoạt động. Bạn có thể không muốn cung cấp thẻ tín dụng cho một nhà cung cấp khác nữa. Hoặc bạn có thể hy vọng chạy một đồ thị agent mà không cần bất kỳ thông tin xác thực nào.

Mong muốn thứ ba không thể được đáp ứng bởi bất kỳ dịch vụ lưu trữ nào: một máy chủ thực hiện công việc cho bạn phải biết ai đang gọi nó. Những gì bạn có thể nhận được là một khóa không tốn gì và không yêu cầu thẻ. Người dùng mới trên trang web này có thể nhận $0.50 tín dụng dùng thử chỉ với một cú nhấp chuột trên trang khóa API sau khi đăng ký bằng Google hoặc bằng email và mật khẩu. Tín dụng này là một cho mỗi người và có hiệu lực trong 7 ngày.

Cách khác để có "không có khóa" là một mô hình cục bộ do một công cụ trên máy của bạn phục vụ. Điều đó hoạt động, nhưng bạn phải chịu phần cứng, và một máy tính xách tay sẽ không thể so sánh với một endpoint lưu trữ cho các lần chạy agent dài. Dùng thử lưu trữ là cách nhanh hơn để tìm ra xem logic đồ thị của bạn có đúng không, và mã bạn viết sẽ giống hệt những gì bạn sẽ chạy sau đó với khóa đã được tài trợ.

Vì endpoint tương thích với OpenAI, LangChain không cần tích hợp đặc biệt. Bạn trỏ lớp chat OpenAI của nó vào một base URL khác, cung cấp khóa và đặt tên mô hình là uncensored. Mọi thứ bên dưới giả định thiết lập đó.

Bước 1: nhận khóa dùng thử và thiết lập môi trường

Đăng ký, mở trang khóa và nhấn nút dùng thử. Sao chép khóa và giữ nó ngoài kho lưu trữ của bạn. Đặt nó vào một biến môi trường để cùng một tập lệnh hoạt động với khóa dùng thử ngày hôm nay và khóa đầy đủ sau này.

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

Trước khi liên quan đến bất kỳ khung nào, hãy kiểm tra khóa bằng một yêu cầu đơn giản. Hai phút ở đây tiết kiệm một giờ đọc các dấu vết ngăn xếp thực sự là lỗi xác thực.

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"}]}'

Một lệnh gọi GET /v1/models là một cách kiểm tra nhanh khác; nó nên liệt kê uncensored. Khóa dùng thử cho phép 2 yêu cầu đồng thời và 60 yêu cầu mỗi phút, điều này là rất đủ để phát triển một đồ thị nhưng cũng đáng nhớ khi bạn thêm các nút song song.

Bước 2: trỏ LangChain vào endpoint

Lớp để sử dụng là ChatOpenAI từ langchain-openai. Hai đối số thực hiện công việc: base_url và api_key. Tên mô hình là uncensored, và các cài đặt lấy mẫu thông thường được chuyển qua.

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)

Nếu điều này in văn bản, kết nối là tốt. Truyền phát hoạt động theo cách tương tự: lặp qua llm.stream(...) và các chunk đến qua sự kiện gửi từ máy chủ (SSE), với việc sử dụng được báo cáo vào cuối luồng.

Một lỗi phổ biến là để biến OPENAI_API_KEY được đặt từ một dự án cũ. LangChain sẽ vui lòng gửi giá trị đó đến base URL tùy chỉnh của bạn nếu bạn quên truyền api_key. Truyền khóa một cách rõ ràng và bạn loại bỏ sự phỏng đoán.

Bước 3: một đồ thị LangGraph tối thiểu

LangGraph mô hình hóa agent của bạn dưới dạng trạng thái di chuyển giữa các nút. Đồ thị hữu ích nhỏ nhất có một nút gọi mô hình và thêm câu trả lời vào danh sách tin nhắn. MessagesState cung cấp cho bạn danh sách đó miễn phí.

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)

Điều này cố tình đơn giản. Điểm mấu chốt là không có gì trong LangGraph biết hoặc quan tâm nhà cung cấp nào đứng sau llm. Bất kỳ nút nào cũng có thể lấy một đối tượng mô hình khác, vì vậy bạn có thể sau đó cung cấp cho một bước lập kế hoạch rẻ tiền và một bước viết dài hơn các cài đặt riêng của chúng, chẳng hạn như nhiệt độ thấp hơn cho việc lập kế hoạch.

Bước 4: thêm công cụ và vòng lặp

Các agent trở nên thú vị khi mô hình có thể gọi các hàm. Endpoint hỗ trợ gọi hàm với tools và tool_choice, và kết quả công cụ được trả về dưới dạng các tin nhắn role: "tool". LangChain và LangGraph xử lý việc đó cho bạn.

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)

Vòng lặp là toàn bộ ý tưởng: nút agent trả lời, tools_condition kiểm tra xem câu trả lời có yêu cầu một công cụ không, nút công cụ chạy nó, và điều khiển quay lại agent. Khi một câu trả lời không có gọi công cụ, đồ thị kết thúc.

Các mô hình trọng số mở khác nhau về mức độ sạch sẽ của các đối số công cụ của chúng. Nếu một cuộc gọi trả về bị lỗi, hãy siết chặt docstring của công cụ, giảm nhiệt độ và giữ lược đồ đối số nhỏ. Các lược đồ ngắn, có kiểu dữ liệu ít thất bại hơn các lược đồ dài có nhiều trường tùy chọn.

Giới hạn tốc độ, thử lại và các nhánh song song

Nơi đồ thị agent thường vấp ngã nhất là đồng thời. Khóa đầy đủ cho phép 8 yêu cầu đồng thời và 300 yêu cầu mỗi phút; khóa dùng thử cho phép 2 và 60. Nếu đồ thị của bạn phân nhánh thành năm nút song song trên một khóa dùng thử, ba trong số chúng sẽ bị từ chối với HTTP 429 và mã lỗi concurrency. Vượt quá ngân sách mỗi phút trả về rate_limited. Quá tải tạm thời cũng đưa ra một 429, với tiêu đề Retry-After: 5.

Ba thói quen giữ cho điều này có thể quản lý được:

  • Giữ max_retries ở mức 2 hoặc 3 trên ChatOpenAI để các lỗi 429 ngắn được thử lại với độ trễ.
  • Giới hạn phân nhánh ở giới hạn độ đồng thời của bạn. Trong LangGraph, bạn có thể truyền config={"max_concurrency": 2} khi gọi đồ thị.
  • Hãy nhớ rằng một yêu cầu truyền phát giữ vị trí của nó cho đến khi luồng kết thúc, vì vậy một người tiêu dùng chậm giữ một vị trí bận.
out = graph.invoke(
    {"messages": [("user", "Draft five taglines in parallel.")]},
    config={"max_concurrency": 2},
)

Các tiêu đề phản hồi giúp gỡ lỗi. X-Request-Id xác định một cuộc gọi nếu bạn cần hỏi hỗ trợ về nó, và X-Balance-USD hiển thị tín dụng còn lại của bạn sau mỗi yêu cầu.

Danh sách kiểm tra gỡ lỗi khi đồ thị hoạt động không đúng

Hầu hết các lỗi trong một dự án LangGraph đầu tiên không liên quan đến mô hình. Chúng đến từ cấu hình, và một danh sách kiểm tra ngắn bắt được gần như tất cả chúng.

  1. Lỗi 401 hoặc lỗi xác thực. Khóa bị thiếu, nhập sai hoặc một OPENAI_API_KEY cũ đang được sử dụng. Hãy in bốn ký tự đầu của giá trị mà script của bạn thực sự sử dụng.
  2. Lỗi 404 hoặc không tìm thấy mô hình. Tên mô hình phải là uncensored. Gọi GET /v1/models nếu bạn không chắc endpoint liệt kê những gì.
  3. Lỗi kết nối. URL cơ sở phải kết thúc bằng /v1 và không được bao gồm /chat/completions; máy khách sẽ thêm phần đó.
  4. Vòng lặp vô hạn. Nếu agent tiếp tục gọi một công cụ, giá trị trả về của công cụ có thể không trả lời câu hỏi. Trả về các chuỗi đơn giản, ngắn và đặt giới hạn đệ quy thông qua cấu hình đồ thị để một vòng lặp xấu dừng sớm.
  5. Phản hồi trống hoặc kỳ lạ. In danh sách tin nhắn đầy đủ sau một lần chạy. Thường thì một nút trước đó đã viết một tin nhắn hệ thống mâu thuẫn với tin nhắn sau đó.

Khi một yêu cầu thất bại ở phía máy chủ, hãy trích dẫn tiêu đề X-Request-Id trong tin nhắn của bạn đến hỗ trợ. Nó cho phép họ tìm ra chính xác cuộc gọi đó mà không cần phỏng đoán. Hãy nhớ rằng các yêu cầu thất bại hoặc bị từ chối không bị tính phí, vì vậy một phiên gỡ lỗi đầy lỗi không làm cạn kiệt tín dụng dùng thử của bạn.

Một điểm thiết kế nữa. Giao cho mỗi nút một công việc hẹp và một prompt ngắn. Một đồ thị với một người lập kế hoạch, một người viết và một người kiểm tra, mỗi người có một tin nhắn hệ thống nhỏ riêng, dễ kiểm tra hơn một nút đơn với một trang hướng dẫn, và mỗi phần có thể được thử riêng biệt với một cuộc gọi llm.invoke trực tiếp trước khi bạn kết nối nó.

Chi phí thực tế của một lần chạy dùng thử

Giá là $0.15 cho mỗi 1 triệu token đầu vào và $0.50 cho mỗi 1 triệu token đầu ra, trừ từ tín dụng trả trước. Các yêu cầu bị lỗi hoặc bị từ chối không bị tính phí. Các biểu đồ tác nhân gọi mô hình nhiều lần cho mỗi nhiệm vụ, và mọi lệnh gọi đều gửi lại danh sách tin nhắn đang tăng dần, nên token đầu vào chiếm ưu thế.

Hãy thực hiện một lần chạy với sáu lệnh gọi mô hình. Giả sử mỗi lệnh gọi gửi 3.000 token đầu vào và nhận lại 400 token đầu ra. Tổng cộng là 18.000 token đầu vào và 2.400 token đầu ra.

  • Đầu vào: 18.000 / 1.000.000 x $0,15 = $0,0027
  • Đầu ra: 2.400 / 1.000.000 x $0,50 = $0,0012
  • Tổng cộng: $0,0039 cho mỗi lần chạy

Khoản tiền dùng thử $0.50 chia cho $0.0039 cho ra khoảng 128 lần chạy có kích thước đó, đủ để xây dựng và kiểm tra một biểu đồ đúng cách. Khi bạn vượt quá mức đó, các lần nạp tiền chạy từ $20 đến $500 với các số nguyên, kèm theo ưu đãi 5% từ $50, 10% từ $100 và 15% từ $200; trang bảng giá có chi tiết. Bạn có thể thanh toán bằng thẻ (Visa, Mastercard, Apple Pay, Google Pay) hoặc bằng tiền mã hóa (USDT trên TRC20, USDC trên Base). Tín dụng không bao giờ hết hạn, và các prompt không được sử dụng để huấn luyện.

Cửa sổ ngữ cảnh là 100.000 token cho cả prompt và kết quả, vì vậy các lịch sử agent dài sẽ vừa khớp, nhưng bạn vẫn phải trả phí cho mọi token bạn gửi lại. Việc cắt giảm các tin nhắn cũ bằng các tiện ích tin nhắn của LangGraph giúp giảm chi phí và độ trễ. Để xem định dạng yêu cầu thô phía sau tất cả những điều này, hãy xem tài liệu API.

Hỏi đáp

Tôi có thể dùng LangChain hoặc LangGraph mà không cần khóa API không?

Không thể với mô hình được lưu trữ. Máy chủ phải xác định được người gọi. Bạn có thể nhận khóa dùng thử miễn phí chỉ với một cú nhấp chuột, không cần thẻ, hoặc tự chạy một mô hình cục bộ.

Tôi nên sử dụng lớp LangChain nào?

ChatOpenAI từ langchain-openai. Đặt base_url thành endpoint, truyền khóa dưới dạng api_key và sử dụng tên mô hình uncensored.

Gọi hàm có hoạt động trong các agent LangGraph không?

Có. Endpoint hỗ trợ tools, tool_choice và kết quả đóng vai trò tool, nên bind_tools, ToolNode và tools_condition hoạt động giống như trong các ví dụ trên.

Tại sao tôi gặp lỗi 429 khi đồ thị của tôi chạy các nhánh song song?

Bạn đã vượt quá giới hạn đồng thời, là 2 đối với khóa dùng thử và 8 đối với khóa đầy đủ. Hãy giới hạn max_concurrency trong cấu hình đồ thị và giữ nguyên việc kích hoạt các lần thử lại.

Tín dụng dùng thử có đủ để kiểm tra một agent không?

Thông thường là đủ. Với chi phí khoảng $0,0039 cho một lần chạy vừa phải gồm sáu lệnh gọi, $0,50 đủ để thực hiện hơn một trăm lần chạy trong thời hạn 7 ngày.

Khóa của bạn chỉ cần điền một biểu mẫu

Tạo tài khoản, sao chép khóa, thay đổi URL cơ sở. Đó là toàn bộ thiết lập.

Lấy khóa API