HydraLLM: ออร์เคสเตรเตอร์อัจฉริยะ

HydraLLM คือเกตเวย์ที่รับรู้บริบทซึ่งออกแบบมาเพื่อใช้ทรัพยากร LLM หลายตัวได้อย่างมีประสิทธิภาพ โดยทำการกำหนดเส้นทางคำขอครอบคลุม Gemini / Groq / Cerebras พร้อมทั้งมีเซอร์กิตเบรกเกอร์แยกตามผู้ให้บริการ, การหมุนเวียนคีย์แบบสุ่ม (รวมคูลดาวน์ที่รับรู้โควตา), ความสามารถในการเสริมข้อมูลจากเว็บแบบเรียลไทม์ และจัดวาง OpenAI-compatible API บน Clean Architecture ที่เคร่งครัด (Domain ตามด้วย Services ตามด้วย Adapters ตามด้วย API)

  • เวอร์ชัน: 1.3.0 (pyproject.toml)
  • Python: 3.10+
  • จุดเริ่มรัน: python main.py
  • UI แบบรวมศูนย์: http://localhost:8000/ui
  • เอ็นด์พอยต์ที่เข้ากันได้กับ OpenAI: POST /v1/chat/completions

เอกสารสเปกทางเทคนิคของ HydraLLM (SPEC)

1. ภาพรวม

HydraLLM คือเกตเวย์ LLM ที่มีความพร้อมใช้งานสูงและยึดตาม Clean Architecture โดยให้ความสามารถด้านการกำหนดเส้นทางอัจฉริยะระหว่างผู้ให้บริการหลายราย, การแยกปัญหาขัดข้องด้วยเซอร์กิตเบรกเกอร์, และการเสริมข้อมูลจากเว็บแบบเรียลไทม์ พร้อมรองรับสเปก OpenAI API อย่างสมบูรณ์

2. สเปกคอมโพเนนต์หลัก

2.1 Gateway (src/services/gateway.py)

  • การออร์เคสเตรต: ประสานลำดับงานตั้งแต่โหลดเซสชัน -> วิเคราะห์บริบท -> เสริมข้อมูลจากเว็บ -> รันแบบทนทานต่อความขัดข้อง -> จัดเก็บแบบถาวร
  • เหตุผลในการกำหนดเส้นทางเชิงเทคนิค: ใส่เหตุผลของการตัดสินใจไว้ในทุกคำตอบด้วยค่าคงที่ที่ชัดเจน
    • USER_HINT: ผู้ใช้ระบุอย่างชัดเจน
    • TOKEN_OPTIMIZED: ปรับให้เหมาะตามจำนวนโทเค็น
    • WEB_INTENT_SEARCH: ผลการวิเคราะห์เจตนาการค้นหาเว็บ
    • MULTIMODAL_ANALYSIS: ตรวจพบความจำเป็นในการประมวลผลภาพ
    • KEY_AVAILABILITY: สถานะคีย์และผลการเฟลโอเวอร์

2.2 Context Analyzer (src/services/analyzer.py)

  • อัลกอริทึมการกำหนดเส้นทาง: วิเคราะห์ความยาวโทเค็น, การเป็นมัลติโหมดัล, และเจตนาการค้นหาเว็บ เพื่อสร้าง RoutingDecision ที่เหมาะสมที่สุด
  • การกรองความพร้อมใช้งานแบบไดนามิก: สะท้อนสถานะแบบเรียลไทม์ของ KeyManager เพื่อยกเว้นโมเดลของผู้ให้บริการที่ไม่มีคีย์ใช้งานอยู่จากตัวเลือก

2.3 Key Manager (src/services/key_manager.py)

  • การหมุนเวียนคีย์: สุ่มเลือกภายในพูลคีย์ที่ใช้งานอยู่และติดตามการใช้งาน
  • การจัดการความขัดข้อง: ใช้คูลดาวน์ที่แตกต่างกันตามประเภทข้อผิดพลาด
    • 403 Forbidden: 24 ชั่วโมง (รองรับความขัดข้องถาวรระดับคีย์)
    • 429 Rate Limit / Quota: 1 ชั่วโมง
    • ข้อผิดพลาดการสื่อสารอื่น ๆ: 5 นาที

2.4 Web Context Service (src/services/web_context_service.py)

  • การเสริมข้อมูล: รวบรวมข้อมูลแบบเรียลไทม์ด้วย Playwright/Scrapling และฉีดเข้าไปในพรอมป์ต์
  • การติดตามประสิทธิภาพ: บันทึกอัตราความสำเร็จ, จำนวนอักขระที่เก็บรวบรวม, และเวลาแฝง ผ่านตาราง scraping_metrics

3. รูปแบบความทนทานและการกู้คืน (Troubleshooting Insights)

  • Concurrency Guard: ใช้ asyncio.Lock และ threading.Lock กับงานเขียนของ KeyManager และ SessionManager เพื่อรับประกันความถูกต้องของข้อมูลในสภาวะโหลดสูง
  • Self-Healing Scraper: ทำงานด้วยกลไกรีสตาร์ตอัตโนมัติเมื่อตรวจพบว่าบราว์เซอร์อินสแตนซ์ล่ม
  • Unpacking Guard: ยึดตามชนิดคืนค่าที่เข้มงวด (tuple[list, str | None]) และการ์ดป้องกัน เพื่อหลีกเลี่ยงข้อผิดพลาด NoneType ที่อาจเกิดขึ้นระหว่างประมวลผลข้อมูลเสริม

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น