رات تین بجے بغیر کسی نگرانی کے کام کرنے والا ایجنٹ اتنا ہی کارآمد ہے جتنا آپ بعد میں یہ جوڑ سکیں کہ اس نے کیا کیا۔ «رات بھر میں 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 ماہانہ کے قابل ہے؟ اگر آپ کے ایجنٹس ٹوکنز پر اس سے زیادہ خرچ کرتے ہیں — اور زیادہ تر بغیر نگرانی والے ایجنٹس کرتے ہیں — تو ٹوکن کہاں گئے یہ جاننا پہلی ہی بار وصول ہو جاتا ہے جب کوئی لوپ بے قابو ہو۔ دن میں ایک بار چلنے والے چھوٹے ایجنٹ کو ان میں سے کچھ نہیں چاہیے: ایک لاگ فائل اور ٹوکن کاؤنٹر کافی ہے۔
متعلقہ
- سرور VPS برائے AI ایجنٹس: جہاں خود ایجنٹس چلتے ہیں
- سرور VPS برائے ملٹی ایجنٹ سسٹمز: پورے بیڑے کے وسائل کا اندازہ
- سرور VPS برائے LiteLLM پراکسی: تمام ماڈل کیز کے لیے ایک گیٹ وے، خرچ کی حد کے ساتھ
- درخواست پر Pro پلانز: ایجنٹس کے بیڑے کے لیے 32 سے 80 GB RAM
- فائر وال ufw کیسے سیٹ کریں
تبصرے
ابھی کوئی تبصرہ نہیں۔ پہلے بنیں۔