Blank white background with no objects or features visible.

تعلن TrueFoundry عن استحواذها على Seldon AI، موسعة بذلك لوحة التحكم الخاصة بها للذكاء الاصطناعي للمؤسسات. البيان الصحفي الكامل →

إسناد تكلفة نماذج اللغة الكبيرة (LLM) في الوقت الفعلي: من عدد الرموز إلى ميزانيات الفرق

By بويو وانغ

Published: July 4, 2026

فواتير نماذج اللغة الكبيرة متعددة المزودين سهلة الدفع ويصعب تخصيصها. تعرض وحدة تحكم Anthropic رقمًا واحدًا لكل مفتاح API؛ بينما تعرض OpenAI رقمًا واحدًا لكل مشروع. هذه الأرقام دقيقة. لكنها لا تجيب عن من أنفقها، على أي تطبيق، في أي ميزة، وضد ميزانية من. توضح هذه المقالة كيف تغلق طبقة الإسناد على مستوى البوابة هذه الفجوة — مخطط وسم البيانات الوصفية، وصيغة التكلفة لكل تتبع عبر المزودين، وخط أنابيب التجميع الذي يحول مليارات النطاقات إلى تجميع يومي للفرق، وتطبيق الميزانية المرن والصارم بنموذج تزامن حقيقي، وتقرير استرداد التكاليف الذي ينتج في النهاية.

Key Takeaways
  • Native provider billing aggregates by API key, not by team. Splitting one key per team buys attribution at the cost of cross-provider routing freedom. A gateway tags every request at the edge, before provider selection happens.
  • X-TFY-METADATA is a JSON object the application sets per-request. The gateway stores it on the trace and projects a curated subset to low-cardinality metric labels; high-cardinality fields stay on the trace only.
  • Per-trace cost is computed at span close from gen_ai.usage attributes and a versioned pricing table. Cache reads, cache writes, audio minutes, and image inputs each have separate price lines.
  • The aggregation pipeline is a streaming pre-aggregation: traces → minute counters → hourly rollups → daily team×app×model rows. ClickHouse or TimescaleDB will run this on a single VM at startup-to-mid-scale.
  • Budget enforcement runs at two layers — soft alerts at 80% via PagerDuty or Slack, and hard limits that return HTTP 429 with a budget_exhausted error. An atomic Redis counter resolves the obvious race between "check budget" and "spend against it."
  • Budget-aware routing closes the loop: above 90% utilization, route to a cheaper model. Graceful degradation, not outage.
  • TrueFoundry's AI Gateway ships the metadata header handling, the per-trace cost computation, the streaming aggregation, and the budget circuit breaker as default behavior. Chargeback exports run on a schedule or on demand.

بعد ظهر الأربعاء في نورثويند. سارة، نائبة رئيس المنصة، تتلقى رسالة على Slack: "أحتاج إلى تفصيل تكلفة الذكاء الاصطناعي حسب الفريق لاجتماع ميزانية الربع الثاني يوم الجمعة." تفتح وحدة تحكم Anthropic. صف واحد: 47,234.12 دولارًا أمريكيًا حتى تاريخه، تم فوترتها مقابل sk-ant-prod-northwind-shared. هذا المفتاح يدعم أكثر من خمسين مهندسًا عبر أربعة فرق واثني عشر تطبيقًا. الرقم دقيق. لكنه عديم الفائدة أيضًا للمحادثة التي تحتاج إلى إجرائها يوم الجمعة — أي فريق، أي تطبيق، أي ميزة، أي عميل تخصه الفاتورة.

خيارات سارة سيئة. يمكنها تقسيم المفتاح إلى أربعة أجزاء وتفقد توجيه البوابة عبر المزودين كخسارة جانبية. يمكنها أن تطلب من كل قائد فريق تقديرًا وتجري التسوية يدويًا — وهو رقم سيكون خاطئًا بنسبة ثلاثين بالمائة. أو يمكنها استخلاص الإجابة من حيث تم تسجيل العمل بالفعل: مخزن تتبع البوابة. توضح هذه المقالة كيف يعمل الخيار الثالث.

1. النقطة العمياء في الفوترة الأصلية

المشكلة الهيكلية في الفوترة الأصلية للمزودين هي أنها تجمع البيانات عند حدود بيانات الاعتماد، وليس عند حدود الفريق. تجمع Anthropic الإنفاق حسب مفتاح API والمنظمة؛ OpenAI حسب المشروع؛ Azure حسب النشر ومجموعة الموارد؛ AWS Bedrock حسب دور IAM والحساب. لا يتطابق أي من هذه مع الوحدة التشغيلية التي ترغب في تحميل التكلفة عليها فعليًا — الفريق، التطبيق، الميزة، العميل.

الحل البديل التقليدي — بيانات اعتماد واحدة لكل فريق — يعمل، لكنه يقضي على قيمة وجود بوابة من الأساس: منطق التوجيه الذي يختار Anthropic للطلبات المعقدة و Haiku للطلبات البسيطة، والذي يعود إلى Azure عندما يكون Anthropic محملاً بشكل زائد، والذي يوازن الحمل عبر عمليات النشر الإقليمية. كل هذا يتطلب من البوابة الاحتفاظ ببيانات اعتماد لكل مزود. المفاتيح الخاصة بكل فريق تفرض علاقات مزودين خاصة بكل فريق. أدوات طبقة التطبيق هي الطريق المسدود الآخر — فهي تعمل في قواعد الأكواد الجديدة (greenfield codebases) وليس للوكيل الذي يستدعي ثلاثة مزودين عبر إصدارين من SDK و LangChain متفرع. الإسناد ينتمي إلى البوابة، لأن هذا هو المكان الذي تمر من خلاله جميع استدعاءات المزودين على أي حال.

2. استراتيجية وسم البيانات الوصفية: رأس X-TFY-METADATA

النمط مباشر: يحمل كل طلب إلى البوابة كائن JSON يصف من هو المتصل، ومن يتصلون لأجله، وماذا يفعلون. تخزن البوابة هذا الكائن على التتبع جنبًا إلى جنب مع سمات gen_ai، وتعرض مجموعة فرعية منسقة من الحقول على تسميات المقاييس المستخدمة للتجميع.

HTTP — يضبط التطبيق رأس البيانات الوصفية في كل استدعاء للبوابة

POST /v1/chat/completions HTTP/1.1
Host: gateway.northwind.internal
Authorization: Bearer ...
Content-Type: application/json
X-TFY-METADATA: {
  "team": "platform-eng",
  "app": "code-review-agent",
  "feature": "pr-summary",
  "env": "production",
  "user_id": "u_12345",
  "repo": "northwind/cargo-copilot",
  "pipeline_id": "ci-run-98765"
}

{"model": "claude-sonnet-4-6", "messages": [...]}

الحقول متباينة عمدًا. الحقول ذات الكاردينالية المنخفضة — الفريق، التطبيق، الميزة، البيئة — تتناسب جيدًا مع تسميات المقاييس. الحقول ذات الكاردينالية العالية — user_id, pipeline_id — ستؤدي إلى تضخم تخزين المقاييس إذا تم عرضها، وتبقى على التتبع فقط. يجب أن تعرف البوابة الفرق: حقول الوسم للتجميع هي قائمة سماح صريحة (تكوين نموذجي: team, app, feature, env, model_class) تصبح جزءًا من مساحة مفاتيح التجميع اليومية؛ كل شيء آخر هو وسم للتدقيق، يتم تخزينه على التتبع للتحقيقات والاستعلامات المخصصة.

يضبط التطبيق البيانات الوصفية مرة واحدة، عند الاستدعاء الخارجي. تنشر البوابة هذه البيانات عبر شجرة النطاقات بأكملها — بما في ذلك عبر التراجع (التراجع إلى مزود مختلف يحافظ على نفس البيانات الوصفية) وعبر حلقات الوكيل متعددة الأدوار (يحمل كل استدعاء أداة نفس البيانات الوصفية للاستدعاء الأصلي). الوراثة تلقائية؛ لا يتعين على الفريق تمرير البيانات الوصفية عبر كل موقع استدعاء.

3. حساب التكلفة لكل تتبع

يتم حساب التكلفة عند إغلاق النطاق، وليس وقت الفاتورة. تحتفظ البوابة بجدول تسعير مُصَدَّر لكل زوج (مزود، نموذج) وتطبقه على رموز الاستخدام المبلغ عنها في جزء الاستجابة النهائي. يتم تخزين الناتج كـ gen_ai.usage.cost_usd على نطاق المزود ويتم تجميعه إلى الجذر.

بايثون — حساب التكلفة عند إغلاق نطاق المزود، صيغة كاملة متعددة البنود

# Pricing tables are versioned with the date in force when they were set.
PRICING = {
    "openai:gpt-4o-2024-08-06": {
        "input": 2.50, "cached_input": 1.25, "output": 10.00,
        "version_date": "2024-08-06",
    },
    "anthropic:claude-sonnet-4-6": {
        "input": 3.00, "cached_input": 0.30, "cache_write_5m": 3.75,
        "cache_write_1h": 6.00, "output": 15.00,
        "version_date": "2026-02-17",
    },
    "anthropic:claude-haiku-4-5": {
        "input": 1.00, "cached_input": 0.10, "cache_write_5m": 1.25,
        "output": 5.00, "version_date": "2025-10-22",
    },
    # ... one entry per (provider, model) pair the gateway routes to
}

def compute_span_cost_usd(span_attrs: dict) -> float:
    key = f"{span_attrs['gen_ai.provider.name']}:{span_attrs['gen_ai.response.model']}"
    p = PRICING[key]

    in_tok  = span_attrs.get("gen_ai.usage.input_tokens", 0)
    out_tok = span_attrs.get("gen_ai.usage.output_tokens", 0)
    c_read  = span_attrs.get("gen_ai.usage.cache_read.input_tokens", 0)
    c_write = span_attrs.get("gen_ai.usage.cache_creation.input_tokens", 0)

    # Per OTel spec, gen_ai.usage.input_tokens INCLUDES both cache lines.
    # Subtract both before applying the fresh-input rate.
    fresh = max(in_tok - c_read - c_write, 0)
    write_rate = p.get("cache_write_5m", p.get("cache_write", 0))

    cost = (
        fresh   * p["input"]        / 1_000_000 +
        c_read  * p["cached_input"] / 1_000_000 +
        c_write * write_rate        / 1_000_000 +
        out_tok * p["output"]       / 1_000_000
    )

    # Audio (per-minute) and image (per-image) add separately, not per token.
    audio_sec = span_attrs.get("gen_ai.usage.audio_seconds", 0)
    img_count = span_attrs.get("gen_ai.usage.image_count", 0)
    cost += (audio_sec / 60) * p.get("audio_per_min", 0)
    cost += img_count        * p.get("image_each", 0)

    return round(cost, 6)

هناك تفصيلان مهمان يسهل تفويتهما. أولاً، جدول التسعير مُصَدَّر بختم تاريخ لأن المزودين يغيرون الأسعار ويجب أن تتطابق الفاتورة مع ما كان ساريًا وقت الطلب — لا تعيد أبدًا حساب التتبعات التاريخية بأسعار اليوم. ثانيًا، يتم تسعير مدخلات الصوت والصورة بالدقيقة والصورة، وليس بالرمز؛ يجب إضافتها كبنود منفصلة وإلا ستتجاهلها الصيغة بصمت.

طرح رموز التخزين المؤقت (fresh = input_tokens − cache_read − cache_write) هو نفس الدقة التي تشير إليها مواصفات OpenTelemetry GenAI: يتم تعريف gen_ai.usage.input_tokens على أنه الإجمالي الذي يشمل كلا خطي التخزين المؤقت، لذا فإن الطرح مرة واحدة لـ cache_read ولكن ليس لـ cache_write — وهو خطأ شائع — يحسب جزء cache-write مرتين بمعدل الإدخال الجديد ومعدل كتابة التخزين المؤقت.

4. خط أنابيب التجميع: من التتبعات الأولية إلى التجميعات اليومية للفرق

منظمة تضم 50 مهندسًا تشغل وكيلًا على كل طلب سحب (PR) تصدر بسهولة مليون نطاق مزود يوميًا. الاستعلام عن هذا الحجم الخام للإجابة على "ماذا أنفق فريق المنصة بالأمس" ممكن تقنيًا ولكنه سيء من الناحية التشغيلية — عمليات الفحص الكاملة على مخزن التتبع تكلف لكل استعلام بقدر ما تكلفه الاستدلالات الأساسية. الحل هو التجميع المسبق، ويتم على ثلاث طبقات.

مسار التجميع — عدادات كل دقيقة ← تجميعات كل ساعة ← عرض مادي يومي

# Layer 1 — Streaming counter (per-minute, in memory at the gateway worker)
key   = (team, app, feature, env, model, provider)
delta = (tokens_in, tokens_out, cache_read, cache_write, cost_usd, 1)
counters[key] += delta
# Flush every 60s to Layer 2.

# Layer 2 — Hourly rollup table (ClickHouse / TimescaleDB)
CREATE TABLE llm_spend_hourly (
    hour_ts          DateTime,
    team             LowCardinality(String),
    app              LowCardinality(String),
    feature          LowCardinality(String),
    env              LowCardinality(String),
    model            LowCardinality(String),
    provider         LowCardinality(String),
    input_tokens     UInt64,
    output_tokens    UInt64,
    cache_read_tok   UInt64,
    cache_write_tok  UInt64,
    cost_usd         Float64,
    request_count    UInt32,
    error_count      UInt32
) ENGINE = SummingMergeTree
  PARTITION BY toYYYYMM(hour_ts)
  ORDER BY (team, app, hour_ts);

# Layer 3 — Daily materialized view (chargeback source of truth)
# Same schema, day-grained. Refreshed at 00:15 UTC.
# Indexed on (team, app, day_ts) for sub-second UI queries.

الانضباط في التكلفة الذي يجعل هذا ميسور التكلفة: لا تقم بالتجميع أبدًا عن طريق الاستعلام من مخزن التتبع. مخزن التتبع مخصص للتحليل الدقيق. التجميعات تأتي من جداول التجميع. على نطاق Northwind (مليون نطاق يوميًا)، تبقى التجميعات في نطاق الجيجابايت مع زمن استجابة للاستعلام أقل من ثانية. اختيار المحرك يعتمد غالبًا على التفضيل — ClickHouse أسرع في التجميعات الكبيرة ولديه تحكم أفضل في الكاردينالية؛ TimescaleDB أكثر ملاءمة للفرق التي تستخدم Postgres بالفعل. كلاهما يشغل هذا الحمل العملي على جهاز افتراضي واحد في المراحل الأولية والمتوسطة. بعد حوالي مليار نطاق يوميًا، يتفوق ClickHouse.

5. تطبيق الميزانية: حدود مرنة، حدود صارمة، وحالة السباق

بمجرد أن تتمكن من حساب إنفاق الفريق في الوقت شبه الفعلي، تتبعها الميزانيات. النمط ذو مستويين.

حد مرن (80% من الميزانية). يتم إرسال إشعار إلى مالك الفريق عبر PagerDuty أو Slack. لا يتم حظر أي طلب. الهدف هو إظهار الاتجاه قبل أن يصبح مشكلة. تحدد بعض الفرق حدودًا مرنة ثلاثية الخطوات بنسبة 60% / 80% / 95%.

حد صارم (100% من الميزانية). تعيد البوابة HTTP 429 مع نص خطأ يحدد السبب، وترفض استدعاء المزود:

HTTP 429 — شكل استجابة استنفاد الميزانية

HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 86400

{
  "error": {
    "type": "budget_exhausted",
    "code": "team_monthly_limit",
    "message": "Team 'platform-eng' has exhausted its $25,000.00 May budget. Contact your budget owner or request an increase.",
    "team": "platform-eng",
    "limit_usd": 25000.00,
    "spent_usd": 25032.18,
    "period_end": "2026-05-31T23:59:59Z"
  }
}

مشكلة التزامن حقيقية. إذا كان الفريق X قد أنفق 24,997 دولارًا من ميزانية قدرها 25,000 دولار ووصلت عشرة طلبات متزامنة، فإن منطق القراءة ثم الكتابة الساذج يجعل كل عامل يرى "ضمن الميزانية" ويتم إرسال جميع الطلبات العشرة. الحل هو عداد ذري. Redis INCRBYFLOAT هو الأداة الرئيسية: يقوم كل عامل بزيادة التكلفة المتوقعة للطلب قبل الإرسال (المقدرة من سعة عدد الرموز وأرخص نموذج معقول مسموح به للفريق)، ويتحقق من القيمة بعد الزيادة مقابل الحد، ويلغي العملية إذا تجاوزته. تتم مطابقة التكلفة الفعلية مع التوقع عند إغلاق النطاق؛ ويتم تسوية التعديلات الصغيرة في التجميع اليومي.

هذا النمط يبالغ قليلاً في العد للطلبات الملغاة ولكنه لا يقلل العد أبدًا. بالنسبة لقاطع دائرة الميزانية، هذا هو عدم التماثل الصحيح: بضعة سنتات من العد الزائد أفضل من تجاوز الإنفاق بألف دولار.

6. تكامل التوجيه: تبديل النماذج مع اقتراب الميزانية من الحد

الجزء الأكثر هشاشة في نظام الميزانية هو الهاوية عند 100%. الانتقال من الجودة الكاملة إلى 429 في خطوة واحدة هو تجربة سيئة. نمط أفضل هو التدهور التدريجي: مع ارتفاع الاستخدام، قم بالتوجيه إلى نماذج أرخص.

التكامل مع طبقة توجيه البوابة هو سياسة واعية بالميزانية تتجاوز اختيار النموذج الافتراضي. شكل شائع:

YAML — جزء من سياسة التوجيه مع تجاوزات واعية بالميزانية

- team: platform-eng
  default_model: claude-sonnet-4-6
  budget_routing:
    - when: utilization < 0.80
      use: claude-sonnet-4-6
    - when: utilization >= 0.80 and utilization < 0.95
      use: claude-haiku-4-5
      notify: slack://platform-eng-budget
    - when: utilization >= 0.95
      use: claude-haiku-4-5
      max_output_tokens: 500
      notify: pagerduty://platform-eng-oncall

عند 80%، يتم نقل الفريق من Sonnet إلى Haiku — تخفيض في التكلفة بمقدار 3 أضعاف مع انخفاض في الجودة تتحمله معظم المهام غير الحرجة. عند 95%، يضيق سقف الإخراج أيضًا، مما يحد من أسوأ حالة لتكلفة كل طلب. يتم إخطار مالك الفريق عند كل انتقال. لا يتوقف مسار العمل.

يجب اتخاذ المقايضة بوعي لكل حمل عمل. مراجعة الكود وفرز التذاكر يتراجعان بسلاسة؛ تلخيص السجلات الطبية ربما لا ينبغي أن يتراجع بسلاسة. تعيش سياسة التوجيه بجانب إعدادات الإنتاج الأخرى للتطبيق.

7. مخطط تقرير استرداد التكاليف

المخرجات التي تكمل الدورة هي تقرير شهري لاسترداد التكاليف يتم تصديره إلى من يقوم بعمل تخصيص التكاليف — عادةً فريق FinOps أو شريك مالي. المخطط هو نسخة من التجميع اليومي، يتم تصفيتها حسب الشهر وتجميعها في صف واحد لكل (فريق، تطبيق، نموذج، مزود).

Column Type Source
period_start, period_end Date Report parameters
team, app, feature, env String X-TFY-METADATA header
model, provider String gen_ai.response.model,
gen_ai.provider.name (post-routing)
request_count Integer SUM(1) over rollup rows
input_tokens, output_tokens Integer gen_ai.usage.*
cache_read_tokens,
cache_write_tokens
Integer gen_ai.usage.cache_*
cost_usd Decimal(10,4) SUM(gen_ai.usage.cost_usd)
avg_cost_per_request Decimal(10,6) cost_usd / request_count
cache_savings_usd Decimal(10,4) Derived — see below
error_rate Decimal(5,4) error_count / request_count

عمود cache_savings_usd هو الذي يبرر معظم الاستثمار في المنصة. يتم حسابه كـ (cache_read_tokens × fresh_input_rate − cache_read_tokens × cached_rate) / 1e6 — وهو الفارق بين تكلفة هذه الرموز بالسعر المخزن مؤقتًا وما كانت ستكلفه لو كانت جديدة. بالنسبة للوكلاء الذين لديهم موجه نظام مستقر عبر آلاف الطلبات، غالبًا ما يمثل هذا الرقم ثلث إلى ثلثي إجمالي الإنفاق.

يتم إنشاء التقرير بصيغة CSV لإدخاله في أدوات FinOps الحالية للمؤسسة، وكلوحة معلومات معروضة لأصحاب الفرق أنفسهم. يوضح النموذج أدناه كيف يبدو عرض نهاية الشهر.

نموذج عرض احتساب التكاليف في نهاية الشهر، تم تجميعه من التجميع اليومي. تأتي أعمدة الفريق والتطبيق من X-TFY-METADATA؛ ويتم حساب التكلفة وتوفيرات ذاكرة التخزين المؤقت عند إغلاق النطاق من سمات gen_ai.usage مقابل جدول التسعير المعتمد.

8. سيناريو واقعي: 50 مهندسًا، وكيل مراجعة الكود، 790 دولارًا شهريًا

أرقام ملموسة، باستخدام تسعير Claude Sonnet 4.6 اعتبارًا من مايو 2026: 3 دولارات للإدخال، 15 دولارًا للإخراج، 0.30 دولار لقراءة ذاكرة التخزين المؤقت، 3.75 دولار لكتابة ذاكرة التخزين المؤقت لكل مليون رمز.

يعمل وكيل مراجعة الكود الخاص بـ Northwind على كل طلب سحب. شكل كل طلب سحب: موجه نظام مكون من 12,000 رمز (دليل الأسلوب، اتفاقيات المستودع، قائمة التحقق، أمثلة قليلة)؛ فرق مكون من 1,500 رمز؛ حوالي 800 رمز من مخرجات المراجعة المضمنة. 50 مهندسًا × 10 طلبات سحب/يوم = 500 طلب سحب/يوم.

بدون التخزين المؤقت. لكل طلب سحب: (12,000 + 1,500) × 3 دولارات/1 مليون + 800 × 15 دولارًا/1 مليون = 0.0405 دولار + 0.012 دولار = 0.0525 دولار. يوميًا: 26.25 دولارًا. شهريًا: 787 دولارًا.

مع التخزين المؤقت للموجه لمدة 5 دقائق على موجه النظام ذي الـ 12 ألف رمز — عدم وجود في ذاكرة التخزين المؤقت على المسار البارد، قراءة من ذاكرة التخزين المؤقت على المسار الدافئ، معدل نجاح دافئ يبلغ حوالي 85% على مستودع مشغول:

  • دافئ: 12,000 × 0.30 دولار/1 مليون + 1,500 × 3 دولارات/1 مليون + 800 × 15 دولارًا/1 مليون = 0.0201 دولار
  • بارد (كتابة في ذاكرة التخزين المؤقت): 12,000 × 3.75 دولار/1 مليون + 1,500 × 3 دولارات/1 مليون + 800 × 15 دولارًا/1 مليون = 0.0615 دولار
  • مدمج (0.85 × دافئ + 0.15 × بارد) = 0.0263 دولار ← يوميًا 13.15 دولارًا ← شهريًا 394 دولارًا، تخفيض بنسبة 50%.

في مؤسسة تضم 500 مهندس، يتصاعد نفس الحساب خطيًا إلى 7,870 دولارًا شهريًا بدون تخزين مؤقت و 3,940 دولارًا شهريًا مع التخزين المؤقت. بدون إسناد لكل تتبع، يكون هذا الفارق غير مرئي — جزء من إجمالي مفتاح مشترك غير مميز. مع الإسناد، يظهر صف استرداد التكاليف كالتالي: platform-eng / code-review-agent / claude-sonnet-4-6 / anthropic — تم إنفاق 394 دولارًا، و393 دولارًا توفيرًا من التخزين المؤقت، و15,500 طلب، ومعدل خطأ 0.1%. لم يعد حديث يوم الجمعة يدور حول 47,234 دولارًا على مفتاح مشترك.

9. الأسئلة الشائعة

لماذا لا نستخدم مفتاح API واحدًا لكل فريق وننظر إلى لوحة تحكم المزود؟

يمكنك ذلك. لكن هذا يكلفك قيمة البوابة: التوجيه عبر المزودين، والعودة التلقائية، وموازنة التحميل، وحدود المعدل الموحدة، وتدوير المفاتيح المركزي. معظم الفرق التي تبدأ بهذه الطريقة تنتقل إلى الإسناد على مستوى البوابة في غضون ربع عام بمجرد اكتشافها أن تقسيم المفاتيح يجبرها أيضًا على تقسيم سياسات حركة المرور. يوفر لك نهج علامات البيانات الوصفية الإسناد دون هذه المقايضة.

كيف نحافظ على تحديث بيانات التكلفة؟ التجميع اليومي بطيء جدًا للوحات المعلومات في الوقت الفعلي.

توجد البنية ثلاثية المستويات خصيصًا لتوفير كليهما. التجميع بالساعة يكون محدثًا في غضون دقائق (يتم تحديث العدادات الدقيقة باستمرار إليه)، والتجميع اليومي هو مصدر الحقيقة لاسترداد التكاليف. للوحات المعلومات في الوقت الفعلي، استعلم عن التجميع بالساعة. لاسترداد التكاليف، استعلم عن التجميع اليومي.

ماذا عن التكاليف غير المتعلقة بنماذج اللغة الكبيرة (LLM) — مثل التضمينات، ومخزن المتجهات، والضبط الدقيق؟

تتمتع التضمينات بنفس شكل الاستخدام مثل الاستدلال وتقوم البوابة بإسنادها بنفس البيانات الوصفية. يتم عادةً فوترة مخزن المتجهات والضبط الدقيق خارج البوابة؛ ويمكن لتقرير استرداد التكاليف دمج هذه البنود الخارجية إذا كانت خطة FinOps الخاصة بك تستوعبها.

كيف يعمل هذا مع الاستجابات المتدفقة حيث لا تُعرف التكلفة النهائية إلا بعد إغلاق التدفق؟

يبقى نطاق المزود مفتوحًا للتدفق الكامل ويتم حساب التكلفة عند إغلاق النطاق، عندما تصل كتلة الاستخدام النهائية في الجزء اللاحق. يستخدم التخصيص المسبق للميزانية عند بدء الطلب حدًا أعلى متوقعًا؛ وتتم التسوية عند إغلاق النطاق.

ماذا عن تطبيق الميزانية في حالة انقطاع Redis أو تقسيم الشبكة؟

العداد الذري هو مصدر الحقيقة لتطبيق الحدود الصارمة. إذا كان Redis غير قابل للوصول، فإن البوابة لديها وضعان قابلان للتكوين: الفشل المفتوح (السماح بالطلبات، وقبول مخاطر الإنفاق الزائد) أو الفشل المغلق (رفض الطلبات، وقبول تأثير التوفر). يعتمد القرار الصحيح على عبء العمل، وتكشف البوابة عنه كإعداد لكل فريق. إشعارات الحد المرن هي أفضل جهد ممكن.

ما هو دور TrueFoundry؟

رأس X-TFY-METADATA، وصيانة جدول التسعير، وخط أنابيب التجميع المتدفق، وقاطع دائرة الميزانية كلها جزء من TrueFoundry AI Gateway افتراضيًا. يتم تشغيل عمليات تصدير استرداد التكاليف (chargeback) كملفات CSV/JSON/webhook مجدولة أو كلوحة تحكم تفاعلية لأصحاب الميزانيات. تتتبع جداول التسعير بطاقات أسعار المزودين، وتستمر السجلات التاريخية في استخدام السعر الساري وقت الطلب، لذا فإن إعادة تشغيل استرداد التكاليف للشهر الماضي ينتج نفس الرقم الذي أنتجته الشهر الماضي.

إذا كانت أعباء عمل نماذج اللغة الكبيرة (LLM) الخاصة بك تُحاسب اليوم مقابل مفتاح API مشترك، فإن الخطوة الأولى الأكثر فعالية هي إضافة رأس البيانات الوصفية (metadata header) في كل موقع استدعاء، حتى قبل نشر مسار الإسناد الكامل. الرأس متوافق مع الإصدارات المستقبلية: تبدأ البيانات في التراكم على التتبعات لحظة تعيينها، ويصبح تقرير استرداد التكاليف مفيدًا في اليوم الذي تبدأ فيه جداول التجميع بالعمل.

المراجع

إن Northwind وسارة والأرقام الدولارية المحددة هنا هي لأغراض توضيحية فقط؛ نموذج البيانات، وتصميم رأس X-TFY-METADATA، وهندسة المسار هي الكيفية التي تقوم بها بوابة ذكاء اصطناعي إنتاجية مثل TrueFoundry بإسناد الإنفاق فعليًا. تسعير المزود المذكور سارٍ اعتبارًا من مايو 2026 وفقًا لبطاقات الأسعار العامة للمزودين.

The fastest way to build, govern and scale your AI

Sign Up
Table of Contents

One Gateway for Every LLM, Agent and MCP Server

Book a 30-min with our AI expert

Book a Demo

The fastest way to build, govern and scale your AI

Book Demo
Summarize with
ChatGPT logo by OpenAI
Perplexity AI logo
Blurry red snowflake on white background, symmetrical frosty design with soft edges and abstract shape.

Discover More

No items found.
July 4, 2026
|
5 min read

تكاملات منصة التعلم الآلي #1: Weights & Biases

Use Cases
Engineering and Product
July 4, 2026
|
5 min read

تكامل Pillar Security مع TrueFoundry

No items found.
July 4, 2026
|
5 min read

التخزين المؤقت الدلالي لنماذج اللغة الكبيرة (LLMs): تقليل التكلفة وزمن الاستجابة بما يتجاوز التخزين المؤقت للبادئات

No items found.
July 4, 2026
|
5 min read

تكاملات أدوات التعلم الآلي #2 DVC لإدارة إصدارات بياناتك

Engineering and Product
Use Cases
No items found.

Recent Blogs

Black left pointing arrow symbol on white background, directional indicator.
Black left pointing arrow symbol on white background, directional indicator.
Take a quick product tour
Start Product Tour
Product Tour