−25%

kwa Windows ya mwaka, hadi 31 Okt. Tazama mipango

EQVPS
Anza

VPS kwa Langfuse: mawakala wako wa AI walifanya nini

Endesha Langfuse mwenyewe ufuatilie kila wito wa LLM na kila hatua ya zana ya mawakala wasiosimamiwa. Docker Compose iliyojaribiwa, RAM halisi na mpango.

Wakala anayefanya kazi saa tisa usiku bila mtu yeyote kumtazama ana thamani sawa na uwezo wako wa kujua baadaye alifanya nini. «Alichoma tokeni za 38 $ usiku» ni asubuhi mbaya. «Alichoma 38 $ kwa sababu zana ya utafutaji ilirudisha ukurasa mtupu na mpangaji akajaribu tena mara 400» ni hitilafu unayoirekebisha kabla ya chakula cha mchana. Sentensi ya pili inahitaji trace.

Langfuse hurekodi kila wito wa LLM, kila prompt, hatua ya zana, idadi ya tokeni na muda wa kusubiri kama mti unaoweza kuubofya. Ukiiendesha mwenyewe, prompt na majibu hayo — ambayo mara nyingi yana data za wateja, matokeo ya API na wakati mwingine siri iliyopotea — hubaki kwenye seva unayoidhibiti, si kwenye dashibodi ya mtu mwingine.

Gharama ya kuiendesha

Langfuse v4 si faili moja dogo, bali kontena sita: programu ya wavuti, worker wa nyuma, Postgres, ClickHouse kwa matukio, Redis na MinIO kwa faili. Tuliisakinisha kwenye seva ya majaribio na tukapima takriban GB 3.5 za RAM zikitumika ikiwa na mradi mtupu. Kinachokua ni ClickHouse, kwa sababu kila span unayotuma huishia hapo.

MzigoMpango
Mawakala wachache, trace za wiki kadhaaMedium-IP: 6 vCPU, 6 GB, 45 GB ($20/mwezi)
Kundi la mawakala, historia ya mieziMipango ya Pro, kuanzia RAM ya GB 32 — kwa ombi

Kwenye mipango midogo zaidi itasakinishwa, lakini kisha itahangaika mara tu ClickHouse na worker wanapohitaji kumbukumbu kwa wakati mmoja. Mimi nisingeshuka chini ya GB 6.

Mawakala wanaishi wapi? Ikiwa wanaendeshwa kwenye mashine nyingine, chagua mpango wenye IPv4 yake: wanahitaji endpoint ya HTTPS, na kwenye mpango wa NAT anwani ya kutoka si yako mwenyewe na kutoka nje unafikia bandari ya SSH pekee. Ikiwa mawakala wanaendeshwa kwenye seva hii hii, Langfuse haihitaji kuonekana kwenye intaneti hata kidogo: kwa majaribio inatosha Medium yenye NAT ($12/mwezi). Kuna maeneo mawili, Ujerumani na Ufini; upatikanaji unaonekana wakati wa kuagiza. Chagua lililo karibu zaidi na mawakala, si na wewe. Seva hulipiwa kwa crypto, bila KYC.

Usakinishaji

Kwenye seva mpya ya Ubuntu 24.04 au Debian 12, kama root. Kwanza Docker:

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

Kisha Langfuse, kwa siri halisi badala ya thamani chaguo-msingi za faili la 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

Nywila mbili kati ya hizo zinaenda kwa jozi: nywila ya Postgres pia imo ndani ya DATABASE_URL, na nywila ya MinIO lazima ilingane na mistari mitatu ya S3_..._SECRET_ACCESS_KEY. Ndiyo maana kila moja inatoka kwenye kigezo kimoja.

Sasa mtego. Faili la compose huchapisha programu ya wavuti kwenye bandari 3000 na MinIO kwenye 9090 kwenye violesura vyote, na bandari zinazochapishwa na Docker hupita kando ya ufw. Zifunge zote mbili kwenye localhost ili reverse proxy ibaki mlango pekee:

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

Amri ya mwisho inapaswa kuonyesha {"status":"OK", ...}. Uzinduzi wa kwanza huendesha uhamishaji wa hifadhidata; katika majaribio yetu, ukaguzi wa afya ulipita takriban sekunde 15 baada ya kontena kuwaka.

HTTPS mbele

Elekeza langfuse.example.com kwenye IP ya seva, kisha:

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 huchukua cheti chenyewe. Fungua tovuti, unda akaunti yako (inakuwa shirika la kwanza), ongeza mradi na unakili funguo zake za umma na za siri.

Kisha funga mlango nyuma yako. Langfuse inaelewa AUTH_DISABLE_SIGNUP, lakini faili la compose la kawaida halipitishi kwenye kontena la web, kwa hiyo unahitaji mstari mmoja zaidi chini ya 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

Kuanzia sasa, jaribio la kujisajili linapata «Sign up is disabled». Wenzako unawaongeza kutoka ndani ya mradi.

Kutuma trace kutoka kwa wakala

SDK ya Python hufunika funksheni zako, na wito zilizo ndani ya nyingine huwa span zilizo ndani ya nyingine:

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()  # inasoma vigezo vya 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()  # skripti fupi huisha kabla utumaji wa chinichini haujakamilika

Usiruke LANGFUSE_BASE_URL. Bila hiyo, SDK kimya kimya hutuma kila kitu kwenye wingu la Langfuse, funguo zako hazipo huko, na unabaki ukitazama dashibodi tupu.

Kuhakikisha kutoka kwenye terminal kwamba span zimefika:

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

Katika v4, endpoint ya zamani /api/public/traces hujibu kwa hitilafu kuhusu hali ya events-only. Hilo linatarajiwa, si usakinishaji ulioharibika. Kwenye wakala halisi unafunika wito wa LLM na kila zana kwa njia hiyo hiyo; zaidi ya hayo Langfuse ina miunganisho ya SDK za LLM na mifumo ya mawakala inayotumika sana, kwa hiyo mara nyingi inatosha kubadilisha import moja badala ya kutawanya decorator kila mahali.

Mambo ya kufuatilia

  • Diski. ClickHouse na MinIO huhifadhi kila kitu unachotuma. docker system df -v huonyesha nafasi imeenda wapi. Ukifuatilia prompt na majibu marefu, GB 45 za Medium-IP hujaa ndani ya wiki, si miaka. Kagua mara moja kwa mwezi; nafasi ikibana, mpango wa Pro wenye GB 400 au zaidi unapatikana kwa ombi.
  • Masasisho. Faili la compose hufunga toleo kuu (:4). docker compose pull && docker compose up -d huleta marekebisho ndani yake. Soma changelog kabla ya kubadilisha toleo kuu: ni katika v4 hasa ambapo endpoint ya trace ilitoweka.
  • Nakala rudufu. Kilicho muhimu kimo kwenye volume za Docker: Postgres huhifadhi watumiaji, miradi na funguo; ClickHouse na MinIO huhifadhi trace zenyewe. Zinakili nje ya seva kwa ratiba.

Je, inastahili $20 kwa mwezi? Ikiwa mawakala wako hutumia zaidi ya hapo kwenye tokeni — na mawakala wengi wasiosimamiwa hufanya hivyo — kujua tokeni zilienda wapi hujilipia mara ya kwanza kitanzi kinapokwenda kombo. Wakala mdogo anayeendeshwa mara moja kwa siku hahitaji chochote kati ya haya: faili la log na kihesabu cha tokeni vinatosha.

Zinazohusiana

Uko tayari kusambaza? Lipa kwa crypto, bila KYC — hai kwa takriban dakika moja.

Sambaza sasa →

Maswali

Langfuse inayoendeshwa kwenye seva yako inahitaji RAM kiasi gani?

Kwenye seva yetu ya majaribio, Langfuse v4 iliendeshwa kama kontena sita — web, worker, Postgres, ClickHouse, Redis na MinIO — na ilitumia takriban GB 3.5 za RAM ikiwa na mradi mtupu. ClickHouse hukua kwa kila span unayotuma. Medium-IP (RAM ya GB 6, diski ya GB 45) inaiendesha kwa urahisi kwa mawakala wachache; kundi zima la mawakala lenye historia ya miezi linahitaji mpango wa Pro, unaopatikana kwa ombi.

Je, Langfuse inahitaji anwani yake ya IP?

Ikiwa tu mawakala wanaendeshwa mahali pengine na kutuma trace kupitia intaneti: wanahitaji endpoint ya HTTPS, na mpango wa NAT unapokea kutoka nje bandari yako ya SSH pekee. Ikiwa mawakala wako kwenye seva hiyo hiyo, Langfuse inaweza kubaki kwenye localhost na dashibodi unaifungua kupitia handaki la SSH; kwa hilo mpango wa Medium wenye NAT unatosha.

Msimbo unaendeshwa, lakini dashibodi inabaki tupu. Kwa nini?

Karibu kila mara LANGFUSE_BASE_URL haijawekwa. Bila hiyo, SDK hutuma kila kitu kwenye wingu la Langfuse lenyewe, funguo zako za seva yako hazipo huko, na hakuna kinachofika kwenye seva yako. Weka anwani yako mwenyewe kwenye kigezo hicho.

Endpoint ya /api/public/traces inarudisha hitilafu. Je, usakinishaji umeharibika?

Hapana. Langfuse v4 inaendeshwa katika hali ya events-only, ambamo endpoint hiyo imezimwa. Soma data kupitia /api/public/v2/observations — ndio wito tuliotumia kuthibitisha kuwa span zetu za majaribio zilifika.

Ninazuiaje watu wasiojulikana kujisajili kwenye seva yangu?

Langfuse husoma AUTH_DISABLE_SIGNUP, lakini docker-compose.yml ya kawaida haipitishi kigezo hicho kwenye kontena la web, kwa hiyo kukiweka kwenye .env pekee hakusaidii. Ongeza mstari mmoja kwenye mazingira ya langfuse-web (amri iko hapa chini), uweke true baada ya kuunda akaunti yako, na usajili unaofuata utapata «Sign up is disabled».

Maoni

Bado hakuna maoni. Kuwa wa kwanza.

Acha maoni

Maoni yanakaguliwa kabla ya kuonekana.