Letta agents کو ایک OpenAI-compatible endpoint پر چلائیں۔
Updated 2026-07-29
Self-hosted Letta environment سے OPENAI_API_BASE اور OPENAI_API_KEY پڑھتا ہے، تو دو variables اس کے stateful agents کو gateway پر point کرتے ہیں۔ Upstream proxy endpoints کو unofficial کہتا ہے، اور یہ page اسے سنجیدگی سے لیتا ہے: کیا کام کرتا ہے، شرائط کیا ہیں، اور نازک کنارے کہاں ہیں۔
فوری جواب: server پر دو environment variables۔
OpenAI-compatible endpoints کے لیے Letta کا documented راستہ self-hosted server پر environment configuration ہے: server شروع کرتے وقت OPENAI_API_BASE کو endpoint URL پر اور OPENAI_API_KEY کو اس کی key پر سیٹ کریں، اور Letta وہ models register کرتا ہے جو endpoint serve کرتا ہے۔ APIsRouter کے لیے base ہے https://api.apisrouter.com/v1۔ UI میں کوئی per-agent base-URL field نہیں ہے؛ endpoint ایک server-level فیصلہ ہے، یہی وجہ ہے کہ environment وہ surface ہے جو اہم ہے۔ ایک شرط غیر مذاکراتی ہے اور کچھ بھی دیکھنے سے پہلے پڑھنے کے قابل ہے: Letta کے docs کہتے ہیں کہ OpenAI-compatible endpoints کو function calling سپورٹ کرنی چاہیے، کیونکہ agent loop tool calls پر بنا ہے۔ ایک endpoint جو صرف plain chat completions کرے وہ Letta agent بالکل نہیں چلا سکتا۔ APIsRouter پر کیٹلاگ models /v1/chat/completions پر standard tool calling بولتی ہیں، جو وہی shape ہے جو Letta توقع رکھتا ہے۔
docker run \
-v ~/.letta/.persist/pgdata:/var/lib/postgresql/data \
-p 8283:8283 \
-e OPENAI_API_KEY="$APISROUTER_API_KEY" \
-e OPENAI_API_BASE="https://api.apisrouter.com/v1" \
letta/letta:latestLetta اپنے model پر ایک chat app سے زیادہ کیوں انحصار کرتا ہے۔
Letta (GitHub پر letta-ai، تقریباً 24K stars) MemGPT research project سے نکلا اور stateful agents بناتا ہے: ایسے agents جن کی persistent، self-editing memory sessions کے پار برقرار رہتی ہے۔ جہاں ایک chat client آپ کا message بھیجتا ہے اور reply print کرتا ہے، وہاں ایک Letta agent ہر interaction پر ایک inner loop چلاتا ہے، اس کے بارے میں reason کرتا ہے جو وہ جانتا ہے، memory tools کو اپنے core memory اور archival storage کو پڑھنے اور دوبارہ لکھنے کے لیے call کرتا ہے، اور تب ہی جواب پیدا کرتا ہے۔ اس architecture کے routing کے لیے دو نتائج ہیں۔ پہلا، loop کا ہر step ایک tool-calling request ہے، یہی وجہ ہے کہ function calling ایک nice-to-have نہیں بلکہ hard requirement ہے؛ ایک model جو tool schemas میں لڑکھڑائے وہ یہاں خوبصورتی سے degrade نہیں ہوتی، یہ agent کی یاد رکھنے کی صلاحیت توڑ دیتی ہے۔ دوسرا، فی interaction request volume conversation transcript کی نسبت زیادہ ہے، کیونکہ memory management ہر جواب کے ساتھ فائر ہوتا ہے۔ یہ سب serve کرنے والا model id endpoint کے لیے ایک plain string ہے، تو OPENAI_API_BASE کے پیچھے ایک multi-vendor gateway کے ساتھ، ایک Claude id agent loop چلا سکتی ہے جبکہ ایک تیز id اسی server پر ہلکے agents serve کرے، ہر ایک اپنے handle سے addressed۔
Upstream سے ایماندار support state، سیدھی طرح۔
Letta کے اپنے docs کہتے ہیں کہ OpenAI proxy endpoints آفیشل طور پر سپورٹڈ نہیں ہیں اور آپ کو errors ملنے کا امکان ہے، براہِ راست provider connections کی سفارش کرتے ہوئے۔ وہ warning quote کرنے کے قابل ہے دبانے کے قابل نہیں، کیونکہ اس topic پر زیادہ تر pages ایسے دکھاوا کرتے ہیں جیسے یہ موجود ہی نہیں۔ عملی طور پر اس کا مطلب اس سے تنگ ہے جتنا یہ سنائی دیتا ہے: Letta first-party APIs کے خلاف test کرتا ہے، اور ایک endpoint جو OpenAI semantics سے ہٹے، خاص طور پر tool calling کے ارد گرد، ایسی failures پیدا کرتا ہے جنہیں upstream priority نہیں دے گا۔ ایک endpoint جو genuinely spec implement کرے، tool calls سمیت، ٹھیک چلتا ہے، اور یہی وہ compatibility bar ہے جس پر ایک gateway جیتتا یا ہارتا ہے۔ Support history میں ایک حقیقی bug بھی تھا جسے جاننا ضروری ہے۔ 2026 کے early تک، OPENAI_API_BASE کے ذریعے registered models کو ایک openai-proxy provider کے طور پر auto-prefixed کیا جاتا تھا جبکہ agent creation accepted prefixes کی ایک چھوٹی list کے خلاف validate کرتی تھی، تو proxy models register تو ہو جاتیں مگر agents بنانے کے لیے استعمال نہیں ہو سکتی تھیں۔ یہ issue جنوری 2026 میں ایک fix کے ساتھ بند ہوا؛ اگر آپ ایک pinned پرانا server چلاتے ہیں اور agent creation ایسی models رد کرے جنہیں server واضح طور پر list کرتا ہے، تو یہی mismatch ہے جس سے آپ ٹکرا رہے ہیں، اور upgrade کرنا ہی حل ہے۔ ایک اور حرکت کرتا ہوا نشانہ: Letta کی product surface بدل رہی ہے، اور اس کے docs فی الحال نئے users کو نئے deployment modes کی طرف رہنمائی کرتے ہیں جبکہ نوٹ کرتے ہیں کہ classic Docker image اب actively maintained surface نہیں ہے۔ اوپر دیے گئے environment variables self-hosted server کے لیے documented mechanism ہیں؛ جس ہفتے آپ deploy کریں، موجودہ docs چیک کریں کہ upstream کون سا server artifact تجویز کرتا ہے۔
# after the server is up, list models Letta knows about
curl -s http://localhost:8283/v1/models/ | head -50
# use the handle exactly as listed when creating agentsStateful agents کے لیے models چننا۔
جو evaluation اہم ہے وہ loop fidelity ہے: ایک test agent بنائیں، ایسی گفتگو کریں جو memory updates پر مجبور کرے، پھر agent کی core memory پڑھیں اور تصدیق کریں کہ یہ واقعی بدلی۔ ایک model دلکش replies لکھ سکتا ہے اور پھر بھی memory contract فیل کر سکتا ہے، اور صرف loop test ہی یہ پکڑتا ہے۔
- Memory editing structured tool work ہے۔ claude-sonnet-4-6 اور gpt-5.5 rewrite-your-own-memory loop کو قابلِ اعتماد طریقے سے سنبھالتے ہیں، جو وہ core competence ہے جس کی ایک Letta agent کو ضرورت ہوتی ہے۔
- Long-lived agents context جمع کرتے ہیں۔ وہ models جو context window میں گہرائی تک coherent رہتی ہیں یہاں stateless chat سے زیادہ اہم ہیں، یہی وہ جگہ ہے جہاں claude-opus-4-7 high-stakes assistants کے لیے اپنی جگہ کماتا ہے۔
- Lightweight agents کے fleets، فی user یا فی task ایک، volume workloads ہیں۔ claude-haiku-4-5-20251001 فی-agent cost کو flat رکھتا ہے جبکہ اب بھی competent tool calls کرتا ہے۔
- deepseek-v4-pro ان agents کے لیے ٹیسٹ کرنے کے قابل ہے جو reasoning کو bilingual traffic کے ساتھ ملاتے ہیں؛ tool-calling requirement gate ہے، تو صرف prose نہیں loop بھی ٹیسٹ کریں۔
- جو بھی آپ چنیں، فی agent چنیں۔ Server پورا کیٹلاگ register کرتا ہے، اور ہر agent ایک handle سے bind ہوتا ہے، تو ایک memory-heavy concierge اور ایک disposable task agent الگ الگ ids پر ساتھ ساتھ چل سکتے ہیں۔
استعمال کے مطابق ادائیگی · سرکاری قیمت سے کم
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| ماڈل | سرکاری قیمت | ہماری قیمت |
|---|---|---|
| Claude Sonnet 4.6 | $3.00 / $15.00 per M | $2.40 / $12.00 per M |
| Claude Opus 4.7 | $5.00 / $25.00 per M | $4.00 / $20.00 per M |
| GPT-5.5 | $5.00 / $30.00 per M | $4.00 / $24.00 per M |
| Claude Haiku 4.5 20251001 | $1.00 / $5.00 per M | $0.80 / $4.00 per M |
| DeepSeek V4 Pro | $0.43 / $0.87 per M | $0.40 / $0.90 per M |
Letta سے مخصوص failure modes۔
Agent creation کا کسی ایسی model کو رد کرنا جسے server list کرتا ہے وہ historical prefix bug ہے۔ proxy کے ذریعے registered models ایک provider prefix رکھتی تھیں جسے agent creation متاثرہ versions پر قبول کرنے سے انکار کرتی تھی۔ fix جنوری 2026 میں آیا؛ موجودہ releases پر model listing میں دکھایا گیا handle ہی وہ handle ہے جو کام کرتا ہے۔ اگر آپ ایک پرانی image پر pinned ہیں، تو کچھ اور debug کرنے سے پہلے upgrade کرنا سب سے مضبوط وجہ ہے۔ ایک agent جو جواب دے مگر کبھی یاد نہ رکھے وہ tool-calling failure ہے۔ یا تو endpoint function calling implement نہیں کرتا، یا id کے پیچھے model tool schemas کو خراب طریقے سے سنبھالتی ہے۔ symptom ایسی conversations ہیں جو کام کرتی ہیں جبکہ core memory کبھی update نہیں ہوتی۔ endpoint مسائل کو model مسائل سے الگ کرنے کے لیے وہی agent claude-sonnet-4-6 پر ٹیسٹ کریں۔ غلط جگہ سیٹ کیے گئے environment variables Docker کا classic مسئلہ ہیں: آپ کے shell میں export کیا گیا OPENAI_API_BASE ایک ایسے container کے لیے کچھ نہیں کرتا جو -e flags کے بغیر شروع ہوا۔ variables کو خود server process تک پہنچنا چاہیے۔ اور چونکہ endpoint server-level ہے، blast radius یاد رکھیں: OPENAI_API_BASE بدلنا اس server کے ہر agent کو move کرتا ہے۔ کوئی per-agent endpoint override نہیں ہے، تو فی gateway ایک server صاف topology ہے، جہاں model choice فی agent فرق پیدا کرتا ہے۔
Letta کو gateway کے ذریعے کون route کرتا ہے۔
- Persistent assistants کے وہ builders جو Claude-quality memory editing چاہتے ہیں بغیر ہر model کے لیے ایک الگ vendor account، key، اور billing surface کے۔
- وہ teams جو agent fleets چلاتی ہیں جہاں ہر user کو ایک agent ملتا ہے، اور per-key usage tracking memory layer کی حقیقی cost کو ایک پڑھنے کے قابل report میں بدل دیتی ہے۔
- وہ researchers جو یہ compare کرتے ہیں کہ models self-editing memory کیسے سنبھالتی ہیں، جہاں ہر candidate ایک test agent پر handle change ہے، provider migration نہیں۔
- وہ self-hosters جن کے environments میں براہِ راست vendor API access بلاک ہے اور جہاں network policy صرف ایک gateway endpoint کی اجازت دیتی ہے۔
- وہ developers جن کے پاس کسی مخصوص vendor کی billing تک رسائی نہیں۔ Top-up پر مبنی رسائی بغیر کارڈ کی شرط کے فی-provider sign-up کا انحصار ختم کر دیتی ہے۔
Endpoint verify کریں اور پہلا agent debug کریں۔
Server سے پہلے gateway verify کریں: key کے ساتھ models list کریں، اور ایک tool definition attached کے ساتھ ایک chat completion چلائیں، کیونکہ tool calling ہی وہ capability ہے جس پر Letta واقعی انحصار کرتا ہے۔ اگر tool-call round trip curl میں کام کرے، تو endpoint کا آدھا حصہ ثابت ہو گیا۔ پھر دونوں variables کے ساتھ server شروع کریں اور اس کی model listing پڑھیں۔ وہاں models نظر آنا registration ثابت کرتا ہے؛ کسی listed handle سے کامیابی سے بنایا گیا agent prefix path ثابت کرتا ہے؛ ایسی conversation جو core memory update کرے پورا loop سرے سے سرے ثابت کرتی ہے۔ اسی ترتیب میں debug کریں، کیونکہ ہر stage کا اپنا الگ failure set ہے: بالترتیب env vars، server version، اور model کی tool competence۔ جب agents چلنے لگیں، APIsRouter console per-request model، token counts، اور spend دکھاتا ہے۔ Stateful agents فی interaction اپنے transcripts کی نسبت زیادہ bill کرتے ہیں، کیونکہ memory management ہر جواب کے پیچھے چلتا ہے، اور usage log وہی جگہ ہے جہاں یہ چھپا ہوا multiplier ایک قابلِ budget عدد بن جاتا ہے۔
curl -s https://api.apisrouter.com/v1/chat/completions \
-H "Authorization: Bearer $APISROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-4-6",
"messages":[{"role":"user","content":"What is 2+3?"}],
"tools":[{"type":"function","function":{
"name":"calc","description":"add numbers",
"parameters":{"type":"object","properties":{
"a":{"type":"number"},"b":{"type":"number"}}}}}]}'عمومی سوالات
میں Letta کو ایک custom OpenAI-compatible endpoint پر کیسے point کروں؟
Self-hosted Letta server کے environment میں OPENAI_API_BASE اور OPENAI_API_KEY سیٹ کریں، مثلاً docker run پر -e flags کے طور پر۔ کوئی per-agent base-URL field نہیں ہے؛ endpoint server level پر configure ہوتا ہے اور اس server کا ہر agent اسے استعمال کرتا ہے۔
کیا Letta آفیشل طور پر proxy endpoints کو سپورٹ کرتا ہے؟
Upstream انہیں آفیشل طور پر سپورٹڈ نہیں کہتا اور warn کرتا ہے کہ آپ کو errors مل سکتی ہیں، براہِ راست providers کی سفارش کرتے ہوئے۔ عملی طور پر شرط strict OpenAI compatibility ہے بشمول function calling؛ ایک endpoint جو مکمل spec implement کرے وہ agent loop چلاتا ہے، جو وہی bar ہے جس کے خلاف APIsRouter بنایا گیا ہے۔
Function calling کیوں ضروری ہے؟
Letta agents اپنی memory کو tool calls کے ذریعے manage کرتے ہیں: memory کو پڑھنا، دوبارہ لکھنا، اور archive کرنا وہ functions ہیں جو model ہر interaction پر invoke کرتا ہے۔ ٹھوس tool calling کے بغیر ایک endpoint یا model loop نہیں چلا سکتی، اور symptom ایک ایسا agent ہے جو چیٹ کرے مگر کبھی یاد نہ رکھے۔
Agent creation میری server list کردہ models کو کیوں رد کرتی ہے؟
پرانے server versions proxy models کو ایک provider prefix کے تحت register کرتے تھے جسے agent creation validate کرنے سے انکار کرتی تھی، ایک bug جو جنوری 2026 میں ایک fix کے ساتھ بند ہوا۔ server upgrade کریں، پھر بالکل وہی handle استعمال کریں جیسے model listing میں ظاہر ہو۔
کیا مختلف Letta agents ایک endpoint کے ذریعے مختلف models استعمال کر سکتے ہیں؟
جی ہاں۔ Server endpoint کی serve کردہ ہر id register کرتا ہے، اور ہر agent creation کے وقت ایک model handle سے bind ہوتا ہے۔ claude-opus-4-7 پر ایک concierge agent اور claude-haiku-4-5-20251001 پر task agents کا ایک fleet ایک server اور ایک key share کر سکتے ہیں۔
کیا یہ Letta Cloud یا self-hosted server پر لاگو ہوتا ہے؟
Self-hosted server پر، جہاں آپ environment کو کنٹرول کرتے ہیں۔ Letta Cloud اپنی model calls خود server-side manage کرتا ہے۔ یہ بھی نوٹ کریں کہ Letta کے تجویز کردہ self-hosting artifacts بدل رہے ہیں، تو موجودہ docs چیک کریں کہ وہ آج کون سا deployment mode maintain کرتے ہیں۔