anthropic-files — طبقة Anthropic Files API المركزية (موفّر tokens)
الغرض
بدل إرسال نفس PDF/مستند base64 في كل استدعاء Anthropic (يُعاد احتساب توكناته كل مرة)،
نرفع الملف
مرة واحدة، نخزّن
file_id بمفتاح SHA256، ونعيد استخدامه عبر استدعاءات متعددة.
توفير حقيقي عند تحليل مستندات KCPC/مناقصات/PDF متكرّرة عبر Opus.
الأداة
python3 skills/anthropic-files/anthropic_files.py {selftest|upload <path>|ask <path> "<q>"|list|gc|delete <id>}الضمانات (خطة نقدية، صفر سلبيات)
1.
cache بـ SHA256 — نفس الملف لا يُرفع مرتين (
memory/anthropic_files_cache.json).
2.
تحقّق من البقاء remotely قبل إعادة الاستخدام (id عالق → إعادة رفع تلقائية).
3.
fail-safe / never-stop — أي خطأ API → يرجع base64 القديم، لا يوقف أي مهمة أبداً.
4.
TTL + gc — تنظيف تلقائي بعد TTL_DAYS=25 (حدود ملفات Anthropic).
5.
خصوصية — لا يرفع تلقائياً؛ المستدعي يقرّر (بيانات حسّاسة ← Ollama محلي بإذن صريح).
مُثبَت حيّاً (2026-08-20)
- Files API متاح على مفتاحنا (beta files-api-2025-04-14).
- selftest: upload=True · cache_reuse=True · mode=file_id · ask_ok=True (استخرج BRAVO-9 + 7,500,000 KWD).
- دورة كاملة رفع→file_id (بلا base64)→استخراج صحيح→حذف.
دالة التكامل المركزية (تخدم كل مكان فيه Claude/Anthropic)
python
import anthropic_files as af
block, mode = af.attach_document('/path/tender.pdf') # file_id أو base64 (fail-safe)
messages=[{'role':'user','content':[block, {'type':'text','text': question}]}]
مُدمج فعلياً (اختياري، بلا كسر أي مسار نصّي):
- غرفة العمليات (war_room):
python3 war_room.py --pdf <file.pdf> → المسار Anthropic يرفع المستند مرة (file_id) بدل حقن نصّه. مُختبَر حيّاً.
- المسار المنفصل opus5-executor:
call_opus5(content, doc_path='<file.pdf>') → يمرّر مستنداً نظيفاً عبر Files API. مُختبَر حيّاً (FOXTROT=350).
- مجلس النخبة (council) + coding router: نصّية بحتة حالياً؛ الدالة متاحة لها عند تمرير مستند مستقبلاً (لا إدماج قسري = صفر سلبيات).
متى أستخدمه
أي مسار يحلّل نفس المستند/PDF عبر Opus أكثر من مرة (تقارير KCPC، مناقصات، دراسات) — war_room يستدعي 3 ترسانات لنفس المستند = المرشّح الأقوى.
للاستدعاء الواحد لملف يُستخدم مرة فقط: base64 العادي يكفي (لا فائدة من الرفع).