−25%

Windows کی سالانہ ادائیگی پر، 31 اکتوبر تک۔ پلانز دیکھیں

EQVPS
شروع کریں

سرور VPS برائے Langfuse: آپ کے AI ایجنٹس نے کیا کیا

اپنا Langfuse خود چلائیں اور بغیر نگرانی چلنے والے ایجنٹس کی ہر LLM کال اور ہر ٹول قدم ٹریس کریں۔ آزمایا ہوا Docker Compose، اصل RAM کے اعداد اور موزوں پلان۔

رات تین بجے بغیر کسی نگرانی کے کام کرنے والا ایجنٹ اتنا ہی کارآمد ہے جتنا آپ بعد میں یہ جوڑ سکیں کہ اس نے کیا کیا۔ «رات بھر میں 38 $ کے ٹوکن پھونک دیے» ایک بری صبح ہے۔ «38 $ پھونک دیے کیونکہ سرچ ٹول نے خالی صفحہ لوٹایا اور پلانر نے 400 بار دوبارہ کوشش کی» ایک بگ ہے جسے آپ دوپہر کے کھانے سے پہلے ٹھیک کر لیتے ہیں۔ دوسرے جملے کے لیے ٹریس چاہیے۔

ہر LLM کال، ہر prompt، ٹول قدم، ٹوکن کی گنتی اور تاخیر کو Langfuse ایک درخت کی صورت میں درج کرتا ہے جس میں آپ کلک کر کے گھوم سکتے ہیں۔ جب آپ اسے خود ہوسٹ کرتے ہیں تو یہ prompts اور جوابات — جن میں اکثر گاہکوں کا ڈیٹا، API آؤٹ پٹ اور کبھی کوئی بھولا ہوا سیکرٹ بھی ہوتا ہے — آپ کے اپنے کنٹرول والے سرور پر رہتے ہیں، کسی اور کے ڈیش بورڈ میں نہیں۔

اسے چلائے رکھنے کی لاگت

‏Langfuse v4 کوئی چھوٹی بائنری نہیں بلکہ چھ کنٹینرز ہیں: ویب ایپ، بیک گراؤنڈ worker، ‏Postgres، ایونٹس کے لیے ClickHouse، ‏Redis اور فائلوں کے لیے MinIO۔ ہم نے اسے ٹیسٹ سرور پر لگایا اور خالی پروجیکٹ کے ساتھ تقریباً 3.5 GB RAM استعمال میں ناپی۔ جو بڑھتا ہے وہ ClickHouse ہے، کیونکہ آپ کا بھیجا ہر span وہیں جاتا ہے۔

لوڈپلان
چند ایجنٹس، ہفتوں کے ٹریسMedium-IP: 6 vCPU، 6 GB، 45 GB ($20/ماہ)
ایجنٹس کا بیڑا، مہینوں کی ہسٹریPro پلانز، 32 GB RAM سے اوپر — درخواست پر

چھوٹے پلانز پر یہ انسٹال تو ہو جاتا ہے، مگر جیسے ہی ClickHouse اور worker کو ایک ساتھ میموری چاہیے، ہانپنے لگتا ہے۔ میں 6 GB سے کم نہ لیتا۔

ایجنٹس کہاں رہتے ہیں؟ اگر وہ دوسری مشینوں پر چلتے ہیں تو اپنے IPv4 والا پلان لیں: انہیں HTTPS اینڈپوائنٹ چاہیے، اور NAT پلان پر باہر جانے والا ایڈریس آپ کا اپنا نہیں ہوتا اور باہر سے صرف SSH پورٹ تک رسائی ہوتی ہے۔ اگر ایجنٹس اسی سرور پر چلتے ہیں تو Langfuse کو انٹرنیٹ کی طرف کھلنے کی ضرورت ہی نہیں: آزمانے کے لیے NAT والا Medium ($12/ماہ) کافی ہے۔ دو لوکیشنز ہیں، جرمنی اور فن لینڈ؛ دستیابی آرڈر کرتے وقت دکھائی دیتی ہے۔ وہ چنیں جو ایجنٹس کے قریب ہو، آپ کے نہیں۔ سرور کی ادائیگی کرپٹو میں ہوتی ہے، بغیر KYC کے۔

انسٹالیشن

نئے Ubuntu 24.04 یا Debian 12 سرور پر، root کے طور پر۔ پہلے Docker:

curl -fsSL https://get.docker.com | sh

پھر خود Langfuse، compose فائل کی ڈیفالٹ قدروں کی جگہ اصلی سیکرٹس کے ساتھ:

git clone --depth 1 https://github.com/langfuse/langfuse.git
cd langfuse

PG=$(openssl rand -hex 16); MINIO=$(openssl rand -hex 16)
cat > .env <<EOF
NEXTAUTH_URL=https://langfuse.example.com
NEXTAUTH_SECRET=$(openssl rand -hex 32)
SALT=$(openssl rand -hex 32)
ENCRYPTION_KEY=$(openssl rand -hex 32)
POSTGRES_PASSWORD=$PG
DATABASE_URL=postgresql://postgres:$PG@postgres:5432/postgres
CLICKHOUSE_PASSWORD=$(openssl rand -hex 16)
MINIO_ROOT_PASSWORD=$MINIO
LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY=$MINIO
LANGFUSE_S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY=$MINIO
LANGFUSE_S3_BATCH_EXPORT_SECRET_ACCESS_KEY=$MINIO
REDIS_AUTH=$(openssl rand -hex 16)
TELEMETRY_ENABLED=false
EOF
chmod 600 .env

ان میں سے دو پاس ورڈز جوڑی میں ہیں: Postgres کا پاس ورڈ DATABASE_URL کے اندر بھی ہے، اور MinIO کا پاس ورڈ تین S3_..._SECRET_ACCESS_KEY لائنوں سے ملنا چاہیے۔ اسی لیے ہر ایک ایک ہی ویری ایبل سے آتا ہے۔

اب جال۔ compose فائل ویب ایپ کو پورٹ 3000 پر اور MinIO کو 9090 پر تمام انٹرفیسز پر شائع کرتی ہے، اور Docker کے شائع کیے گئے پورٹس ufw کو بائی پاس کرتے ہیں۔ دونوں کو localhost سے باندھ دیں تاکہ reverse proxy ہی واحد راستہ رہے:

sed -i 's/- 3000:3000/- 127.0.0.1:3000:3000/; s/- 9090:9000/- 127.0.0.1:9090:9000/' docker-compose.yml
docker compose up -d
curl -s http://127.0.0.1:3000/api/public/health

آخری کمانڈ کو {"status":"OK", ...} دکھانا چاہیے۔ پہلی بار چلنے پر ڈیٹا بیس مائیگریشنز چلتی ہیں؛ ہمارے ٹیسٹ میں کنٹینرز اٹھنے کے تقریباً 15 سیکنڈ بعد ہیلتھ چیک پاس ہوا۔

سامنے HTTPS

ڈومین langfuse.example.com کو سرور کے IP کی طرف اشارہ کریں، پھر:

apt install -y caddy
cat > /etc/caddy/Caddyfile <<'EOF'
langfuse.example.com {
    reverse_proxy 127.0.0.1:3000
}
EOF
systemctl reload caddy
ufw allow 22/tcp && ufw allow 80/tcp && ufw allow 443/tcp && ufw enable

سرٹیفکیٹ Caddy خود لے لیتا ہے۔ سائٹ کھولیں، اپنا اکاؤنٹ بنائیں (یہ پہلی تنظیم بنتا ہے)، ایک پروجیکٹ شامل کریں اور اس کی پبلک اور سیکرٹ کیز کاپی کریں۔

پھر دروازہ بند کر دیں۔ ‏Langfuse ویری ایبل AUTH_DISABLE_SIGNUP سمجھتا ہے، مگر ڈیفالٹ compose فائل اسے web کنٹینر تک نہیں پہنچاتی، اس لیے langfuse-web کے نیچے ایک لائن اور چاہیے:

sed -i 's|^      NEXTAUTH_SECRET: \(.*\)$|      NEXTAUTH_SECRET: \1\n      AUTH_DISABLE_SIGNUP: ${AUTH_DISABLE_SIGNUP:-false}|' docker-compose.yml
echo "AUTH_DISABLE_SIGNUP=true" >> .env
docker compose up -d

اب سے سائن اپ کی ہر کوشش کو «Sign up is disabled» ملتا ہے۔ ساتھیوں کو پروجیکٹ کے اندر سے شامل کریں۔

ایجنٹ سے ٹریس بھیجنا

‏Python SDK آپ کے فنکشنز کو لپیٹتا ہے، اور ایک دوسرے کے اندر کی کالز ایک دوسرے کے اندر کے spans بن جاتی ہیں:

python3 -m venv venv && . venv/bin/activate
pip install langfuse
export LANGFUSE_PUBLIC_KEY=pk-lf-...
export LANGFUSE_SECRET_KEY=sk-lf-...
export LANGFUSE_BASE_URL=https://langfuse.example.com
from langfuse import get_client, observe

langfuse = get_client()  # LANGFUSE_* متغیرات پڑھتا ہے

@observe(name="fetch-prices")
def fetch_prices(pair: str) -> dict:
    return {"pair": pair, "bid": 64210.5}

@observe(name="nightly-agent-run")
def run() -> str:
    data = fetch_prices("BTC/USDT")
    return f"done: {data['pair']}"

print(run())
langfuse.flush()  # مختصر اسکرپٹ پس منظر کی ترسیل مکمل ہونے سے پہلے ختم ہو جاتے ہیں

ویری ایبل LANGFUSE_BASE_URL کو نہ چھوڑیں۔ اس کے بغیر SDK خاموشی سے سب کچھ Langfuse کے کلاؤڈ پر بھیج دیتا ہے، آپ کی کیز وہاں نہیں ہوتیں اور آپ خالی ڈیش بورڈ دیکھتے رہ جاتے ہیں۔

ٹرمینل سے جانچیں کہ spans پہنچ گئے:

curl -s -u "$LANGFUSE_PUBLIC_KEY:$LANGFUSE_SECRET_KEY" \
  "$LANGFUSE_BASE_URL/api/public/v2/observations?limit=5"

ورژن v4 میں پرانا اینڈپوائنٹ /api/public/traces events-only موڈ کے بارے میں ایرر لوٹاتا ہے۔ یہ متوقع ہے، انسٹالیشن خراب نہیں۔ اصل ایجنٹ میں آپ LLM کال اور ہر ٹول کو اسی طرح لپیٹتے ہیں؛ ساتھ ہی Langfuse میں مقبول LLM SDKs اور ایجنٹ فریم ورکس کی انٹیگریشنز موجود ہیں، اس لیے اکثر ہر جگہ ڈیکوریٹر لگانے کے بجائے ایک import بدلنا کافی ہوتا ہے۔

کن چیزوں پر نظر رکھیں

  • ڈسک۔ آپ کا بھیجا ہوا سب کچھ ClickHouse اور MinIO رکھتے ہیں۔ جگہ کہاں گئی، یہ docker system df -v دکھاتا ہے۔ اگر آپ لمبے prompts اور جوابات ٹریس کرتے ہیں تو Medium-IP کی 45 GB ڈسک برسوں میں نہیں، ہفتوں میں بھر جاتی ہے۔ مہینے میں ایک بار دیکھیں؛ جگہ کم پڑے تو 400 GB یا اس سے زیادہ والا Pro پلان درخواست پر دستیاب ہے۔
  • اپ ڈیٹس۔ ‏compose فائل مین ورژن (:4) کو پن کرتی ہے۔ ‏docker compose pull && docker compose up -d اسی کے اندر کی درستیاں لاتا ہے۔ مین ورژن بدلنے سے پہلے changelog پڑھیں: ٹریس والا اینڈپوائنٹ ٹھیک v4 میں ہی غائب ہوا۔
  • بیک اپ۔ جو اہم ہے وہ Docker والیومز میں ہے: ‏Postgres میں یوزرز، پروجیکٹس اور کیز؛ ‏ClickHouse اور MinIO میں خود ٹریس۔ انہیں طے شدہ شیڈول پر سرور سے باہر کاپی کریں۔

کیا یہ $20 ماہانہ کے قابل ہے؟ اگر آپ کے ایجنٹس ٹوکنز پر اس سے زیادہ خرچ کرتے ہیں — اور زیادہ تر بغیر نگرانی والے ایجنٹس کرتے ہیں — تو ٹوکن کہاں گئے یہ جاننا پہلی ہی بار وصول ہو جاتا ہے جب کوئی لوپ بے قابو ہو۔ دن میں ایک بار چلنے والے چھوٹے ایجنٹ کو ان میں سے کچھ نہیں چاہیے: ایک لاگ فائل اور ٹوکن کاؤنٹر کافی ہے۔

متعلقہ

تعینات کے لیے تیار؟ کرپٹو میں ادائیگی کریں، بغیر KYC — تقریباً ایک منٹ میں لائیو۔

ابھی ڈیپلائے کریں →

عمومی سوالات

اپنے سرور پر Langfuse کو کتنی RAM چاہیے؟

ہمارے ٹیسٹ سرور پر Langfuse v4 چھ کنٹینرز کی صورت میں چلا — web، worker، Postgres، ClickHouse، Redis اور MinIO — اور خالی پروجیکٹ کے ساتھ تقریباً 3.5 GB RAM استعمال کی۔ آپ جو بھی span بھیجتے ہیں، اس کے ساتھ ClickHouse بڑھتا ہے۔ چند ایجنٹس کے لیے Medium-IP (6 GB RAM، 45 GB ڈسک) اسے آرام سے چلاتا ہے؛ مہینوں کی ہسٹری والے پورے ایجنٹ بیڑے کو Pro پلان چاہیے، جو درخواست پر دستیاب ہے۔

کیا Langfuse کو اپنا الگ IP ایڈریس چاہیے؟

صرف اس صورت میں جب ایجنٹس کہیں اور چلتے ہوں اور ٹریس انٹرنیٹ کے ذریعے بھیجتے ہوں: انہیں HTTPS اینڈپوائنٹ چاہیے، اور NAT پلان باہر سے صرف آپ کا SSH پورٹ قبول کرتا ہے۔ اگر ایجنٹس اسی سرور پر رہتے ہیں تو Langfuse localhost پر رہ سکتا ہے اور ڈیش بورڈ آپ SSH ٹنل سے کھولتے ہیں؛ اس کے لیے NAT والا Medium پلان کافی ہے۔

کوڈ چل رہا ہے مگر ڈیش بورڈ خالی ہے۔ کیوں؟

تقریباً ہمیشہ LANGFUSE_BASE_URL سیٹ نہیں ہوتا۔ اس کے بغیر SDK سب کچھ خود Langfuse کے کلاؤڈ پر بھیجتا ہے، آپ کے اپنے انسٹینس کی کیز وہاں موجود نہیں ہوتیں اور آپ کے سرور تک کچھ نہیں پہنچتا۔ ویری ایبل میں اپنا ایڈریس ڈالیں۔

اینڈپوائنٹ ‎/api/public/traces ایرر دیتا ہے۔ کیا انسٹالیشن خراب ہے؟

نہیں۔ Langfuse v4 events-only موڈ میں چلتا ہے، جس میں یہ اینڈپوائنٹ بند ہوتا ہے۔ ڈیٹا ‎/api/public/v2/observations سے پڑھیں — اسی کال سے ہم نے تصدیق کی تھی کہ ہمارے ٹیسٹ spans پہنچ گئے ہیں۔

اجنبیوں کو اپنے انسٹینس پر سائن اپ کرنے سے کیسے روکوں؟

‏Langfuse ویری ایبل AUTH_DISABLE_SIGNUP پڑھتا ہے، مگر ڈیفالٹ docker-compose.yml اسے web کنٹینر تک نہیں پہنچاتا، اس لیے صرف ‎.env میں لکھنا بے اثر ہے۔ langfuse-web کے environment میں ایک لائن شامل کریں (کمانڈ نیچے ہے)، اپنا اکاؤنٹ بنانے کے بعد اسے true کریں، اور اگلے سائن اپ کو «Sign up is disabled» ملے گا۔

تبصرے

ابھی کوئی تبصرہ نہیں۔ پہلے بنیں۔

ایک تبصرہ چھوڑیں

تبصرے ظاہر ہونے سے پہلے moderate کیے جاتے ہیں۔