TR ▾
stableaudio.top

Ses pipeline'ınız için sansürsüz metin API'si

API anahtarı al

API Anahtarı Olmadan LangChain ve LangGraph

Hiç anahtarsız bir barındırılan modeli çalıştıramazsınız ancak LangChain ve LangGraph'ı ilk ödemeden önce çalıştırabilirsiniz. Tek tıkla bir deneme anahtarı ve değiştirilmiş base URL yeterlidir.

LangGraph ajan iş akışını temsil eden, parlayan bağlantılı küpler içeren izometrik düğüm grafiği

güncellendi

Temel noktalar

  1. Her barındırılan uç nokta bir anahtar gerektirir; deneme anahtarı kart gerektirmez ve tek tıkla alınır.

  2. LangChain'in ChatOpenAI sınıfı, base_url'yi ve modeli uncensored olarak ayarladıktan sonra çalışır.

  3. Fonksiyon çağırma ile LangGraph ajanları değişmeden çalışır, ancak dallanan yapılar eşzamanlılık sınırına saygı duymalıdır.

  4. Tipik bir altı isteklik ajan çalıştırma maliyeti yaklaşık $0,0039'dur; bu nedenle $0,50 deneme kredisi yaklaşık 128 böyle çalıştırmayı karşılar.

"API anahtarı olmadan" ifadesi gerçekçi olarak ne anlama gelebilir

langchain ve langraph için api anahtarı olmadan arama yapmak genellikle üç şeyin birini ifade eder. Çalışma kurulumunu bilmeden önce ödeme yapmak istemeyebilirsiniz. Henüz bir satıcıya kredi kartı vermek istemeyebilirsiniz. Veya herhangi bir kimlik bilgisi olmadan bir ajan grafiği çalıştırmayı umuyor olabilirsiniz.

Üçüncü dilek barındırılan herhangi bir hizmetle karşılanamaz: sizin için işi yapan bir sunucunun kimin çağırdığını bilmesi gerekir. Elde edebileceğiniz şey, kart istemeyen ve bedava olan bir anahtardır. Google veya e-posta ve şifre ile kayıt olduktan sonra, API anahtarı sayfası üzerindeki tek tıkla yeni kullanıcılar $0,50 deneme kredisi talep edebilir. Bu kişi başı bir kez geçerlidir ve 7 gün boyunca geçerlidir.

"Anahtarsız" olmanın diğer yolu, kendi makinenizdeki bir hizmet tarafından sunulan yerel bir modeldir. Bu çalışır ancak donanım yükü size aittir ve bir dizüstü bilgisayar, uzun ajan çalıştırmaları için barındırılan bir uç nokta ile rekabet edemez. Barındırılan bir deneme, grafik mantığınızın sağlam olup olmadığını öğrenmenin daha hızlı yoludur ve yazdığınız kod, daha sonra fonlanmış bir anahtarla çalıştıracağınız kodla aynıdır.

Uç nokta OpenAI ile uyumlu olduğu için LangChain'in özel bir entegrasyona ihtiyacı yoktur. ChatOpenAI sınıfını farklı bir base URL'ye yönlendirirsiniz, anahtarı verirsiniz ve modeli uncensored olarak adlandırırsınız. Aşağıdaki her şey bu kurulumu varsayar.

Adım 1: deneme anahtarını alın ve ortamı yapılandırın

Kaydolun, anahtar sayfasını açın ve deneme düğmesine basın. Anahtarı kopyalayın ve depolama alanınızda bırakmayın. Anahtarı bir ortam değişkenine yerleştirin ki aynı betik bugün deneme anahtarıyla ve daha sonra tam anahtarla çalışsın.

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

Herhangi bir çerçeveye dahil etmeden önce anahtarı basit bir istekle kontrol edin. Burada geçen iki dakika, aslında kimlik doğrulama hataları olan yığın izlemelerini okumak için harcanan bir saatten kurtarır.

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

Bir GET /v1/models çağrısı diğer hızlı kontroldür; uncensored'i listelemelidir. Deneme anahtarı dakikada 60 istek ve 2 eşzamanlı istek izni verir; bu bir grafik geliştirirken yeterlidir ancak paralel düğümler eklediğinizde hatırlanmaya değer.

Adım 2: LangChain'i uç noktaya yönlendirin

Kullanılacak sınıf langchain-openai paketinden ChatOpenAI'dir. İşlevi gören iki argüman vardır: base_url ve api_key. Model adı uncensored'dir ve normal örnekleme ayarları aktarılır.

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)

Bu metin yazarsa bağlantı iyidir. Akış aynı şekilde çalışır: llm.stream(...) üzerinde yineleme yapın ve parçalar sunucu tarafından gönderilen olaylar üzerinden gelir; kullanım akışın sonunda raporlanır.

Yaygın bir hata, OPENAI_API_KEY değişkenini eski bir projeden ayarlanmış olarak bırakmaktır. LangChain, api_key parametresini geçmeyi unutursanız bu değeri özel temel URL'nize gönderir. Anahtarı açıkça geçin ve tahminleri ortadan kaldırın.

Adım 3: minimal bir LangGraph grafiği

LangGraph, ajanınızı düğümler arasında hareket eden bir durum olarak modeller. En küçük işlevsel grafik, modeli çağıran ve yanıtı bir mesaj listesine ekleyen bir düğümden oluşur. MessagesState bu listeyi ücretsiz olarak sağlar.

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)

Bu kasıtlı olarak sade. Nokta, LangGraph içinde llm arkasındaki sağlayıcıyı bilen veya umursayan hiçbir şey olmamasıdır. Her düğüm farklı bir model nesnesi alabilir, böylece planlama için daha düşük sıcaklık gibi ayarlarla ucuz bir planlama adımına ve daha uzun bir yazma adımına sahip olabilirsiniz.

Adım 4: araçlar ve döngü ekleme

Modellerin fonksiyon çağırabilmesi ajanları ilginç kılar. Uç nokta tools ve tool_choice ile fonksiyon çağırma destekler ve araç sonuçları role: "tool" mesajları olarak geri döner. LangChain ve LangGraph bu altyapıyı sizin için yönetir.

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)

Döngü tüm fikirdir: ajan düğümü yanıt verir, tools_condition yanıtın bir araç isteyip istemediğini kontrol eder, araç düğümü bunu çalıştırır ve kontrol ajana döner. Yanıt bir araç çağrısı içermiyorsa grafik sonlanır.

Açık ağırlıklı modellerin araç argümanlarının düzeni değişkenlik gösterir. Bir çağrı hatalı gelirse aracın açıklama satırını düzeltin, sıcaklık parametresini düşürün ve argüman şemasını küçük tutun. Kısa, tipli şemalar, çok sayıda isteğe bağlı alana sahip uzun şemalardan daha az hata verir.

Hız limitleri, yeniden denemeler ve paralel dallar

Ajan grafiklerinin en çok takıldığı yer eşzamanlılıktır. Tam anahtar 8 eşzamanlı istek ve dakika başına 300 istek izni verir; deneme anahtarı 2 ve 60 izni verir. Grafik deneme anahtarında beş paralel düğüme yayılırsa, üçü HTTP 429 ile concurrency hata koduyla reddedilir. Dakikalık bütçeyi aşmak rate_limited döndürür. Geçici aşırı yüklenme de Retry-After: 5 başlığıyla 429 verir.

Bunu yönetilebilir kılmak için üç alışkanlık:

  • Kısa 429'ların geri denemesinin geri çekilme ile yapılması için max_retries değerini ChatOpenAI üzerinde 2 veya 3'te tutun.
  • Yayılımı eşzamanlılık sınırınızda sınırlayın. LangGraph'de grafiği çağırırken config={"max_concurrency": 2} geçebilirsiniz.
  • Akışlı bir isteğin, akış bitene kadar slotunu tuttuğunu unutmayın; bu nedenle yavaş bir tüketici slotu meşgul tutar.
out = graph.invoke(
    {"messages": [("user", "Draft five taglines in parallel.")]},
    config={"max_concurrency": 2},
)

Yanıt başlıkları hata ayıklamaya yardımcı olur. X-Request-Id bir çağrıyı tanımlar, X-Balance-USD ise her istekten sonra kalan kredinizi gösterir.

Grafik beklendiği gibi çalışmadığında hata ayıklama kontrol listesi

İlk LangGraph projelerindeki çoğu hata modelle ilgili değildir. Yapılandırmadan kaynaklanırlar ve kısa bir kontrol listesi neredeyse hepsini yakalar.

  1. 401 veya kimlik doğrulama hataları. Anahtar eksik, yanlış yazılmış veya eski bir OPENAI_API_KEY okunuyor. Betiğinizin gerçekten kullandığı değerin ilk dört karakterini yazdırın.
  2. 404 veya model bulunamadı. Model adı uncensored olmalıdır. Uç noktanın ne listelendiğinden emin değilseniz GET /v1/models çağırın.
  3. Bağlantı hataları. Temel URL /v1 ile bitmelidir ve /chat/completions içermemelidir; istemci bu kısmı ekler.
  4. Sonsuz döngüler. Ajan bir aracı sürekli çağırıyorsa, aracın dönüş değeri soruyu yanıtlamayabilir. Düz, kısa dizgeler döndürün ve grafik yapılandırması aracılığıyla bir özyineleme sınırı belirleyin ki kötü bir döngü erken dursun.
  5. Boş veya tuhaf yanıtlar. Bir çalıştırmadan sonra tam mesaj listesini yazdırın. Sıklıkla daha önceki bir düğüm, sonrakine çelişen bir sistem mesajı yazmıştır.

Bir istek sunucu tarafında başarısız olursa, mesajınızda X-Request-Id başlığını support ile alıntılamanız gerekir. Bu, tahmin etmeden tam o çağrıyı bulmalarını sağlar. Başarısız veya reddedilen isteklerin ücretlendirilmediğini unutmayın, bu nedenle hatalarla dolu bir hata ayıklama oturumu deneme kredinizi tüketmez.

Başka bir tasarım noktası. Her düğüme dar bir iş ve kısa bir istem verin. Planlayıcı, yazar ve denetleyici içeren bir grafik, her birinin kendi küçük sistem mesajı vardır; talimatlarla dolu tek bir düğümden daha kolay test edilir ve her parça, bağlamadan önce doğrudan llm.invoke çağrısıyla tek başına denenmelidir.

Bir deneme çalıştırmanın gerçek maliyeti

Fiyatlandırma, ön ödemeli krediden 1M girdi token başına $0,15 ve 1M çıktı token başına $0,50'dir. Başarısız veya reddedilen istekler ücretlendirilmez. Ajan grafikleri görev başına modele birkaç kez çağrı yapar ve her çağrı artan mesaj listesini yeniden gönderir; bu nedenle girdi tokenları baskındır.

Altı model çağrısı ile bir çalıştırma yapın. Her çağrının 3.000 token girdi olarak gönderip 400 token çıktı olarak döndürdüğünü varsayın. Bu, 18.000 girdi tokenı ve 2.400 çıktı tokenı anlamına gelir.

  • Girdi: 18.000 / 1.000.000 x $0,15 = $0,0027
  • Çıktı: 2.400 / 1.000.000 x $0,50 = $0,0012
  • Toplam: Çalıştırma başına $0.0039

$0.50 deneme, $0.0039'a bölündüğünde o boyuttaki yaklaşık 128 çalıştırma eder; bu da bir grafiği düzgün bir şekilde oluşturmak ve test etmek için yeterlidir. Bu süreyi aştığınızda, bakiye yükleme işlemleri $20 ile $500 arasında tam tutarlarda yapılır; $50'den itibaren %5 bonus, $100'den itibaren %10 bonus ve $200'den itibaren %15 bonus uygulanır. Detaylar fiyatlandırma sayfasında yer almaktadır. Kredi kartı (Visa, Mastercard, Apple Pay, Google Pay) veya kripto (TRC20 üzerinde USDT, Base üzerinde USDC) ile ödeme yapabilirsiniz. Kredi süresi dolmaz ve istemler eğitim için kullanılmaz.

Bağlam penceresi, istem ve tamamlama dahil olmak üzere 100.000 token kapasitesindedir; bu nedenle uzun ajan geçmişleri sığar, ancak yeniden gönderdiğiniz her token için ödeme yaparsınız. Eski mesajları LangGraph mesaj yardımcı programlarıyla kısaltmak, maliyeti ve gecikmeyi düşürür. Bunun arkasındaki ham istek formatı için API belgelerine bakın.

Sorular ve cevaplar

API anahtarı olmadan LangChain veya LangGraph kullanabilir miyim?

Barındırılan bir modelle değil. Sunucu çağrıyı yapanı tanımlamalıdır. Tek tıkla ücretsiz bir deneme anahtarı talep edebilir, kart gerekmez veya kendi başınıza yerel bir model çalıştırabilirsiniz.

Hangi LangChain sınıfını kullanmalıyım?

langchain-openai paketinden ChatOpenAI. base_url'yi uç noktaya ayarlayın, anahtarı api_key olarak geçin ve model adı olarak uncensored'ı kullanın.

Fonksiyon çağırma, LangGraph ajanları içinde çalışır mı?

Evet. Uç nokta, araçları, tool_choice'ı ve role tool sonuçlarını destekler; bu nedenle bind_tools, ToolNode ve tools_condition yukarıdaki örneklerdeki gibi çalışır.

Grafiğim dalları eşzamanlı olarak çalıştırdığında neden 429 hataları alıyorum?

Eşzamanlılık sınırını aştınız. Deneme anahtarında bu sınır 2, tam anahtarda ise 8'dir. Grafik yapılandırmasında max_concurrency değerini sınırlayın ve yeniden denemeleri etkin tutun.

Deneme kredisi bir ajanı test etmek için yeterli mi?

Genellikle. Orta boyutlu bir altı çağrılık çalıştırma başına yaklaşık $0.0039 maliyetle, $0.50, 7 günlük geçerlilik süresi içinde yüzün üzerinde çalıştırmayı karşılar.

Anahtarınız tek bir formun uzağında

Bir hesap oluşturun, anahtarı kopyalayın ve base URL'yi değiştirin. Kurulum bu kadar basit.

API anahtarı al