ID ▾
stableaudio.top

API teks tanpa sensor untuk pipeline audio Anda

Dapatkan kunci API

LangChain dan LangGraph Tanpa Kunci API

Anda tidak dapat menjalankan model yang di-hosting tanpa kunci sama sekali, tetapi Anda dapat menjalankan LangChain dan LangGraph tanpa membayar terlebih dahulu. Kunci uji coba satu klik dan perubahan base URL sudah cukup.

Grafik node isometrik dengan kubus terhubung bercahaya yang mewakili alur kerja agen LangGraph

Diperbarui

Poin utama

  1. Setiap endpoint yang di-hosting memerlukan kunci; kunci uji coba tidak memerlukan kartu dan diklaim dengan satu klik.

  2. Kelas ChatOpenAI LangChain berfungsi setelah Anda mengatur base_url dan model menjadi uncensored.

  3. Agen LangGraph dengan pemanggilan fungsi berjalan tanpa perubahan, tetapi cabang fan-out harus mematuhi batas konkurensi.

  4. Satu eksekusi agen tipikal dengan enam panggilan memakan biaya sekitar $0.0039, sehingga kredit uji coba $0.50 mencakup sekitar 128 eksekusi semacam itu.

Apa yang "tanpa kunci API" dapat berarti secara realistis

Mencari langchain dan langgraph tanpa api key biasanya berarti salah satu dari tiga hal. Anda mungkin ingin menghindari pembayaran sebelum mengetahui bahwa tumpukan kerja berfungsi. Anda mungkin tidak ingin menyerahkan kartu kredit ke vendor lain. Atau Anda mungkin berharap dapat menjalankan grafik agen tanpa kredensial apa pun.

Keinginan ketiga tidak dapat dipenuhi oleh layanan yang di-hosting: server yang melakukan pekerjaan untuk Anda harus mengetahui siapa yang memanggilnya. Yang bisa Anda dapatkan adalah kunci yang tidak memerlukan biaya dan tidak meminta kartu. Pengguna baru di situs ini dapat mengklaim $0,50 kredit uji coba dengan satu klik pada halaman kunci API setelah masuk dengan Google atau dengan email dan kata sandi. Satu per orang dan berlaku selama 7 hari.

Jalur lain menuju "tanpa kunci" adalah model lokal yang dilayani oleh sesuatu di mesin Anda sendiri. Itu berfungsi, tetapi Anda membawa perangkat keras, dan laptop tidak akan cocok dengan endpoint yang di-hosting untuk menjalankan agen jangka panjang. Uji coba yang di-hosting adalah cara yang lebih cepat untuk mengetahui apakah logika grafik Anda valid, dan kode yang Anda tulis identik dengan yang akan Anda jalankan nanti dengan kunci yang didanai.

Karena endpoint kompatibel dengan OpenAI, LangChain tidak memerlukan integrasi khusus. Anda mengarahkan kelas obrolan OpenAI ke base URL yang berbeda, memberikannya kunci, dan menamai model uncensored. Semua di bawah ini mengasumsikan pengaturan itu.

Langkah 1: dapatkan kunci uji coba dan atur lingkungan

Daftar, buka halaman kunci, dan tekan tombol uji coba. Salin kunci dan simpan di luar repositori Anda. Masukkan ke dalam variabel lingkungan agar skrip yang sama berfungsi dengan kunci uji coba hari ini dan kunci penuh nanti.

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

Sebelum melibatkan kerangka kerja apa pun, periksa kunci dengan permintaan sederhana. Dua menit di sini menghemat satu jam membaca jejak tumpukan yang sebenarnya adalah kesalahan autentikasi.

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

Panggilan GET /v1/models adalah pemeriksaan cepat lainnya; itu harus mencantumkan uncensored. Kunci uji coba memungkinkan 2 permintaan konkuren dan 60 permintaan per menit, yang cukup untuk mengembangkan grafik tetapi patut diingat saat Anda menambahkan node paralel.

Langkah 2: arahkan LangChain ke endpoint

Kelas yang digunakan adalah ChatOpenAI dari langchain-openai. Dua argumen melakukan pekerjaan: base_url dan api_key. Nama model adalah uncensored, dan pengaturan pengambilan sampel biasa diteruskan.

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)

Jika ini mencetak teks, koneksi bagus. Streaming bekerja dengan cara yang sama: iterasi melalui llm.stream(...) dan potongan tiba melalui peristiwa yang dikirim server, dengan penggunaan dilaporkan di akhir aliran.

Kesalahan umum adalah membiarkan variabel OPENAI_API_KEY diatur dari proyek lama. LangChain akan dengan senang hati mengirimkan nilai itu ke base URL kustom Anda jika Anda lupa meneruskan api_key. Teruskan kunci secara eksplisit dan Anda menghilangkan tebakan.

Langkah 3: grafik LangGraph minimal

LangGraph memodelkan agen Anda sebagai state yang bergerak di antara node. Grafik paling berguna memiliki satu node yang memanggil model dan menambahkan balasan ke daftar pesan. MessagesState memberi Anda daftar itu secara gratis.

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)

Ini sengaja sederhana. Titik utamanya adalah tidak ada dalam LangGraph yang tahu atau peduli penyedia mana yang berada di balik llm. Node mana pun dapat mengambil objek model yang berbeda, sehingga Anda dapat memberikan langkah perencanaan murah dan langkah penulisan panjang pengaturan mereka sendiri, seperti suhu yang lebih rendah untuk perencanaan.

Langkah 4: tambahkan alat dan loop

Agen menjadi menarik ketika model dapat memanggil fungsi. Endpoint mendukung pemanggilan alat dengan tools dan tool_choice, dan hasil alat kembali sebagai pesan role: "tool". LangChain dan LangGraph menangani infrastruktur itu untuk Anda.

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)

Loop adalah ide utamanya: node agen menjawab, tools_condition memeriksa apakah balasan meminta alat, node alat menjalankannya, dan kontrol kembali ke agen. Ketika balasan tidak memiliki panggilan alat, grafik berakhir.

Model bobot terbuka bervariasi dalam kerapihan argumen alat mereka. Jika panggilan kembali tidak valid, perketat docstring alat, turunkan suhu, dan pertahankan skema argumen kecil. Skema pendek dan bertipe lebih jarang gagal daripada skema panjang dengan banyak bidang opsional.

Batas laju, coba ulang, dan cabang paralel

Titik di mana grafik agen paling sering tersandung adalah konkurensi. Kunci penuh memungkinkan 8 permintaan konkuren dan 300 permintaan per menit; kunci uji coba memungkinkan 2 dan 60. Jika grafik Anda menyebar menjadi lima node paralel pada kunci uji coba, tiga di antaranya akan ditolak dengan HTTP 429 dan kode kesalahan concurrency. Melebihi anggaran per menit mengembalikan rate_limited. Beban sementara juga memberikan 429, dengan header Retry-After: 5.

Tiga kebiasaan menjaga ini dapat dikelola:

  • Pertahankan max_retries pada 2 atau 3 pada ChatOpenAI sehingga 429 pendek dicoba lagi dengan backoff.
  • Batas fan-out pada batas konkurensi Anda. Di LangGraph Anda dapat meneruskan config={"max_concurrency": 2} saat memanggil grafik.
  • Ingat bahwa permintaan yang dialirkan memegang slotnya hingga aliran berakhir, sehingga konsumen lambat menjaga slot tetap sibuk.
out = graph.invoke(
    {"messages": [("user", "Draft five taglines in parallel.")]},
    config={"max_concurrency": 2},
)

Header respons membantu dengan debugging. X-Request-Id mengidentifikasi panggilan jika Anda perlu meminta dukungan tentangnya, dan X-Balance-USD menunjukkan sisa kredit Anda setelah setiap permintaan.

Daftar periksa debugging saat grafik berperilaku tidak wajar

Sebagian besar kegagalan dalam proyek LangGraph pertama Anda bukan disebabkan oleh model. Kegagalan berasal dari konfigurasi, dan daftar periksa singkat dapat menangkap hampir semuanya.

  1. Kesalahan otentikasi 401. Kunci tidak ada, salah ketik, atau OPENAI_API_KEY lama sedang dibaca. Cetak empat karakter pertama dari nilai yang sebenarnya digunakan skrip Anda.
  2. 404 atau model tidak ditemukan. Nama model harus uncensored. Panggil GET /v1/models jika Anda tidak yakin apa yang dicantumkan endpoint.
  3. Kesalahan koneksi. base URL harus berakhir dengan /v1 dan tidak boleh termasuk /chat/completions; klien menambahkan bagian itu.
  4. Perulangan tanpa akhir. Jika agen terus memanggil alat, nilai kembali alat mungkin tidak menjawab pertanyaan. Kembalikan string sederhana dan pendek serta tetapkan batas rekursi melalui konfigurasi graf agar perulangan yang buruk berhenti lebih awal.
  5. Balasan kosong atau aneh. Cetak daftar pesan lengkap setelah menjalankan. Seringkali node sebelumnya menulis pesan sistem yang bertentangan dengan yang berikutnya.

Saat permintaan gagal di sisi server, sertakan header X-Request-Id dalam pesan Anda ke tim dukungan support. Hal ini memungkinkan mereka menemukan panggilan tersebut secara tepat tanpa tebakan. Perlu diingat juga bahwa permintaan yang gagal atau ditolak tidak dikenakan biaya, sehingga sesi debugging yang penuh kesalahan tidak menguras kredit uji coba Anda.

Satu poin desain lagi. Berikan setiap node tugas yang sempit dan prompt yang pendek. Graf yang terdiri dari perencana, penulis, dan pemeriksa, masing-masing dengan pesan sistem kecilnya sendiri, lebih mudah diuji daripada satu node dengan halaman instruksi, dan setiap bagian dapat dicoba secara mandiri dengan panggilan llm.invoke langsung sebelum Anda menghubungkannya.

Berapa biaya sebenarnya dari jalankan uji coba

Harga adalah $0,15 per 1M token input dan $0,50 per 1M token output, dari saldo prabayar. Permintaan yang gagal atau ditolak tidak dibebankan. Grafik agen memanggil model beberapa kali per tugas, dan setiap panggilan mengirim ulang daftar pesan yang berkembang, sehingga token input mendominasi.

Lakukan satu kali pengujian dengan enam panggilan model. Katakan setiap panggilan mengirim 3.000 token masuk dan mengembalikan 400 token keluar. Itu adalah 18.000 token input dan 2.400 token output.

  • Input: 18.000 / 1.000.000 x $0,15 = $0,0027
  • Output: 2.400 / 1.000.000 x $0,50 = $0,0012
  • Total: $0,0039 per eksekusi

$0,50 uji coba dibagi dengan $0,0039 adalah sekitar 128 eksekusi dengan ukuran itu, cukup untuk membangun dan menguji grafik dengan benar. Saat kredit uji coba tidak lagi cukup, isi ulang saldo mulai dari $20 hingga $500 dalam jumlah utuh, dengan bonus 5% dari $50, 10% dari $100 dan 15% dari $200; halaman harga memiliki detailnya. Anda dapat membayar dengan kartu (Visa, Mastercard, Apple Pay, Google Pay) atau dengan kripto (USDT di TRC20, USDC di Base). Saldo prabayar tidak pernah habis, dan prompt tidak digunakan untuk pelatihan.

Jendela konteks adalah 100.000 token untuk prompt plus penyelesaian, sehingga riwayat agen yang panjang muat, tetapi Anda membayar untuk setiap token yang Anda kirim ulang. Memangkas pesan lama dengan utilitas pesan LangGraph menjaga biaya dan latensi tetap rendah. Untuk format permintaan mentah di balik semua ini, lihat dokumentasi API.

Tanya jawab

Bisakah saya menggunakan LangChain atau LangGraph tanpa kunci API sama sekali?

Tidak dengan model yang dihosting. Server harus mengidentifikasi pemanggil. Anda dapat mengklaim kunci uji coba gratis dengan satu klik, tanpa kartu, atau menjalankan model lokal sendiri.

Kelas LangChain mana yang harus saya gunakan?

ChatOpenAI dari langchain-openai. Atur base_url ke endpoint, teruskan kunci sebagai api_key dan gunakan nama model uncensored.

Apakah pemanggilan fungsi berfungsi di dalam agen LangGraph?

Ya. Endpoint mendukung alat, tool_choice dan hasil peran alat, sehingga bind_tools, ToolNode dan tools_condition berfungsi seperti pada contoh di atas.

Mengapa saya mendapatkan kesalahan 429 ketika grafik saya menjalankan cabang secara paralel?

Anda melebihi batas konkurensi, 2 pada kunci uji coba dan 8 pada kunci penuh. Batasi max_concurrency dalam konfigurasi grafik dan biarkan retry tetap aktif.

Apakah kredit uji coba cukup untuk menguji agen?

Biasanya. Pada sekitar $0,0039 untuk satu kali berjalan enam panggilan dengan ukuran sedang, $0,50 mencakup lebih dari seratus eksekusi dalam masa berlaku 7 hari.

Kunci Anda hanya selangkah lagi dari satu formulir

Buat akun, salin kunci, ubah URL dasar. Itu saja seluruh proses pengaturannya.

Dapatkan kunci API