لاگت
استعمال بڑھنے پر ماڈل لاگت قابل پیش گوئی رکھیں
ہر کام ایک OpenAI سے ہم آہنگ endpoint سے بھیجیں، اسے سب سے سستے قابل ماڈل پر روٹ کریں اور ہر جواب کے واپس کردہ ٹوکن استعمال کا لاگ رکھیں۔
پرامپٹ کاپی کریں
مربع بریکٹ کے فیلڈز بدلیں اور Claude Code، Codex یا ٹرمینل رسائی والے AI میں چسپاں کریں۔ یہ Felo اسکل نصب کرتا ہے، کریڈٹ سے پہلے پوچھتا ہے اور ورک فلو چلاتا ہے۔
ہماری ماڈل لاگت کا جائزہ لیں اور ان کاموں کے لیے روٹنگ منصوبہ تجویز کریں: [کاموں یا خصوصیات کی فہرست]۔ حدود: ماہانہ بجٹ [رقم]، تاخیر کا ہدف [ہدف]، معیار کی سطح [سطح]۔ کچھ تجویز کرنے سے پہلے لائیو ماڈل کیٹلاگ پڑھیں۔ تیار کریں: 1. کام -> تجویز کردہ ماڈل جدول۔ 2. کون سے کام ایک درجہ نیچے جا سکتے ہیں اور معیار کا خطرہ۔ 3. ہر کام اور خصوصیت کے لیے استعمال لاگ کا منصوبہ۔ 4. پروڈکشن بدلنے سے پہلے کیا ناپنا ہے۔ قواعد: - موجودہ ماڈل IDs اور قیمتیں لائیو کیٹلاگ سے پڑھیں؛ کبھی یادداشت سے نرخ نقل نہ کریں۔ - پروڈکشن کنفیگریشن نہ بدلیں اور حقیقی ٹریفک نہ بھیجیں۔ - آزمائشی کالز پر کریڈٹ خرچ کرنے سے پہلے پوچھیں۔ - رول بیک منصوبہ اور فی خصوصیت خرچ کی حد رکھیں۔ - منصوبہ ./routing-plan.md میں لکھیں اور چیٹ میں خلاصہ دیں۔
کاپی میں تنصیب کے مراحل اور حفاظتی اصول بھی شامل ہیں۔
آپ کو کیا ملتا ہے
ایک رن کی مثال آؤٹ پٹ۔ لائیو جنریشن نہیں۔
| کام | موجودہ | تجویز | خطرہ |
|---|---|---|---|
| ٹکٹ درجہ بندی | مضبوط ماڈل | تیز ماڈل | کم |
| جواب کا مسودہ | مضبوط ماڈل | مضبوط ماڈل | کوئی نہیں |
| چینج لاگ خلاصہ | مضبوط ماڈل | تیز ماڈل | درمیانہ |
کچھ بھی بدلنے سے پہلے: ایک ہفتہ فی کام استعمال لاگ کریں اور 50 نمونہ آؤٹ پٹ پر معیار کا موازنہ کریں۔
درست کالز
ڈویلپرز کے لیے: وہی ورک فلو کوڈ کے طور پر، چلانے کی ترتیب میں۔
اصل API کالز دکھائیں
تمام کام ایک endpoint سے
ایک OpenAI سے ہم آہنگ endpoint اور ایک کلید استعمال کریں، فی فراہم کنندہ SDK نہیں۔
routing.ts const BASE_URL = "https://openapi.felo.ai/api/v1"; const headers = { Authorization: `Bearer ${process.env.FELO_API_KEY}`, "Content-Type": "application/json", }; type Completion = { choices: { message: { content: string } }[]; usage: { prompt_tokens: number; completion_tokens: number; total_tokens: number }; }; async function chat(model: string, prompt: string): Promise<Completion> { const res = await fetch(`${BASE_URL}/chat/completions`, { method: "POST", headers, body: JSON.stringify({ model, messages: [{ role: "user", content: prompt }] }), }); if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`); return res.json() as Promise<Completion>; } const summary = await chat( "claude-haiku-5-5", "Summarize this changelog in three bullets: …", ); console.log(summary.choices[0].message.content);مثال آؤٹ پٹ
{ "choices": [{ "message": { "content": "• …" } }], "usage": { "prompt_tokens": 812, "completion_tokens": 96, "total_tokens": 908 } }کام کے مطابق ماڈل روٹ کریں
پیچیدگی کے مطابق تیز یا مضبوط ماڈل چنیں اور پہلے بیس لائن لکھیں۔
routing.ts type TaskKind = "classify" | "extract" | "summarize" | "draft" | "review"; const MODEL_ROUTES: Record<TaskKind, string> = { classify: "claude-haiku-5-5", extract: "claude-haiku-5-5", summarize: "claude-haiku-5-5", draft: "claude-sonnet-5-5", review: "claude-sonnet-5-5", }; export async function route(kind: TaskKind, prompt: string) { const model = MODEL_ROUTES[kind]; const result = await chat(model, prompt); return { model, text: result.choices[0].message.content, usage: result.usage, }; }مثال آؤٹ پٹ
{ "model": "claude-haiku-5-5", "text": "• …", "usage": { "prompt_tokens": 812, "completion_tokens": 96, "total_tokens": 908 } }استعمال پڑھیں اور لاگ کریں
ہر جواب کا usage پڑھیں اور فیچر کے مطابق ٹوکن اور تاخیر لاگ کریں۔
routing.ts type UsageRecord = { model: string; kind: TaskKind; promptTokens: number; completionTokens: number; totalTokens: number; }; const usageLog: UsageRecord[] = []; function logUsage(kind: TaskKind, model: string, usage: Completion["usage"]) { const entry: UsageRecord = { model, kind, promptTokens: usage.prompt_tokens, completionTokens: usage.completion_tokens, totalTokens: usage.total_tokens, }; usageLog.push(entry); console.log(JSON.stringify(entry)); // ship this line to your metrics store return entry; } export function tokensByModel() { return usageLog.reduce<Record<string, number>>((totals, entry) => { totals[entry.model] = (totals[entry.model] ?? 0) + entry.totalTokens; return totals; }, {}); } const result = await route("summarize", "Summarize this changelog in three bullets: …"); logUsage("summarize", result.model, result.usage); console.log(tokensByModel());مثال آؤٹ پٹ
{"model":"claude-haiku-5-5","kind":"summarize","promptTokens":812,"completionTokens":96,"totalTokens":908} { "claude-haiku-5-5": 18234, "claude-sonnet-5-5": 4201 }تمام فراہم کنندگان کے لیے ایک کلید
کیٹلاگ ماڈل اسی Felo کلید سے بلائیں اور فراہم کنندہ انتظام کم کریں۔
routing.ts async function chatOnChannel(model: string, prompt: string, channel?: string) { const res = await fetch(`${BASE_URL}/chat/completions`, { method: "POST", headers: { ...headers, ...(channel ? { "X-Felo-Channel": channel } : {}), }, body: JSON.stringify({ model, messages: [{ role: "user", content: prompt }] }), }); if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`); return res.json() as Promise<Completion>; } // Leave `channel` undefined for the default supplier. export function routePinned(kind: TaskKind, prompt: string, channel?: string) { return chatOnChannel(MODEL_ROUTES[kind], prompt, channel); }زندہ کیٹلاگ سے قیمتیں
نرخ مقرر نہ کریں؛ موجودہ قیمت کیٹلاگ اور قیمت صفحے سے پڑھیں۔
routing.ts type Catalog = { data: { id: string; owned_by: string; model_kind: string }[]; }; export async function chatModelIds() { const res = await fetch( `${BASE_URL}/models?exclude_video_and_decisions=true`, { headers }, ); if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`); const catalog = (await res.json()) as Catalog; return catalog.data .filter((model) => model.model_kind === "chat") .map((model) => model.id); } // Price `tokensByModel()` against https://openapi.felo.ai/pricing and // https://openapi.felo.ai/models. Keep the links, not the rates, in your code.مثال آؤٹ پٹ
["claude-haiku-5-5", "claude-sonnet-5-5"]
کیا شامل ہے
- ایک endpoint اور کلید
- کام کے مطابق تیز یا مضبوط ماڈل انتخاب
- ہر جواب کا ٹوکن لاگ
- قیمتیں زندہ کیٹلاگ سے، کوڈ میں مقرر نہیں
کیا نہیں کرتا
- کم بل کی ضمانت نہیں
- پروڈکشن ٹریفک خودکار نہیں بدلتا
- شناخت اور قیمتیں بدلتی ہیں؛ ہمیشہ زندہ کیٹلاگ پڑھیں
- معیار آپ کے لیے نہیں جانچتا؛ آپ کے نمونے درکار
- بلنگ یا observability کا متبادل نہیں
سوالات
کیا بل کم ہوگا؟
دکھاتا ہے کون سے کام ایک درجہ نیچے جا سکتے ہیں لیکن بچت نمونے موازنہ اور استعمال لاگ کے بعد ہی حقیقی ہے۔
کیا خودکار ماڈل بلاتا ہے؟
صرف جب آزمائشی کالز منظور کریں۔ ڈیفالٹ کیٹلاگ پڑھ کر سفارش لکھتا ہے، پروڈکشن نہیں چھوتا۔
کس ماڈل کی لاگت کم ہے کیسے پتہ چلے؟
زندہ ماڈل کیٹلاگ اور قیمت صفحہ پڑھیں؛ ورک فلو نرخ مقرر نہیں کرتا کیونکہ بدلتے ہیں۔
فراہم کنندہ پن ہو سکتا ہے؟
ہاں جب تاخیر قیمت سے اہم ہو۔ پن کرنا انتخاب ہے، retry حکمت عملی نہیں؛ اپنا fallback شامل کریں۔
کیا لاگ کریں؟
فی کال: کام، فیچر، ماڈل، prompt token، completion token، مجموعہ اور تاخیر۔ بجٹ سے پہلے فیچر کے مطابق جمع کریں۔
ایک جائزے کی لاگت کتنی ہے؟
کیٹلاگ پڑھنے سے ماڈل کال نہیں بنتی۔ آزمائشی کالز استعمال کے مطابق بل ہوتی ہیں؛ پرامپٹ پہلے منظوری مانگتا ہے۔
متعلقہ ورک فلو
اپنی دستاویزات سے سپورٹ سوالات کے جواب دیں
LiveDoc بنائیں، ہیلپ سینٹر اور اندرونی runbook لوڈ کریں، ٹکٹ کا جواب دینے والے اقتباسات نکالیں اور ماڈل کو صرف انہی ثبوتوں سے جواب دینے دیں۔
ورک فلو کھولیںریسرچایک سوال کو ذرائع والے ریسرچ بریف میں بدلیں
ویب سے پوچھیں، جواب کے پیچھے کے صفحات Markdown میں محفوظ کریں، X پر ماہرین کیا کہتے ہیں شامل کریں اور ثبوت ایسے LiveDoc میں رکھیں جسے بعد میں دوبارہ تلاش کیا جا سکے۔
ورک فلو کھولیںدفترتحقیقی صفحے کو پریزنٹیشن میں بدلیں
صفحہ نکالیں، LiveDoc سیاق کے طور پر رکھیں، PPT Task API سے ڈیک بنوائیں اور تیار لنک آنے تک پوچھیں۔
ورک فلو کھولیںاسے اپنا بنائیں
وہی ترکیب، آپ کے اصل انداز کے مطابق۔
پہلے صرف لاگ
پروڈکشن سے پہلے ایک ہفتے کا استعمال لاگ کریں پھر ڈاؤن گریڈ طے کریں۔
فی فیچر بجٹ
فی فیچر ماہانہ حد رکھیں اور عبور پر خبردار یا ڈاؤن گریڈ کریں۔
تاخیر کے لیے فراہم کنندہ پن
جب تاخیر قیمت سے اہم ہو فراہم کنندہ پن کریں اور fallback شامل کریں۔
آگے بڑھیں
اس ترکیب کے پیچھے کے ریفرنس صفحات اور اگلے مراحل۔