Gateway

บริการโมเดลภายในเครื่อง

models.providers.<id>.localService ช่วยให้ OmeniaClaw เริ่มเซิร์ฟเวอร์โมเดลภายในที่ผู้ให้บริการเป็นเจ้าของได้ตามต้องการ นี่คือการกำหนดค่าระดับผู้ให้บริการ: เมื่อโมเดลที่เลือกเป็นของผู้ให้บริการนั้น OmeniaClaw จะตรวจสอบบริการ เริ่มกระบวนการหากปลายทางไม่ทำงาน รอจนพร้อม แล้วจึงส่งคำขอโมเดล

ใช้สำหรับเซิร์ฟเวอร์ภายในที่มีต้นทุนสูงหากต้องเปิดทำงานทั้งวัน หรือสำหรับการตั้งค่าด้วยตนเองที่การเลือกโมเดลควรเพียงพอสำหรับการเริ่มแบ็กเอนด์

วิธีทำงาน

  1. คำขอโมเดลถูกแปลงไปยังผู้ให้บริการที่กำหนดค่าไว้
  2. หากผู้ให้บริการนั้นมี localService OmeniaClaw จะตรวจสอบ healthUrl
  3. หากการตรวจสอบสำเร็จ OmeniaClaw จะใช้เซิร์ฟเวอร์ที่มีอยู่
  4. หากการตรวจสอบล้มเหลว OmeniaClaw จะเริ่ม command พร้อม args
  5. OmeniaClaw จะตรวจสอบความพร้อมซ้ำจนกว่า readyTimeoutMs จะหมดเวลา
  6. คำขอโมเดลจะถูกส่งผ่านทรานสปอร์ตปกติของผู้ให้บริการ
  7. หาก OmeniaClaw เริ่มกระบวนการและ idleStopMs เป็นค่าบวก กระบวนการจะถูก หยุดหลังจากคำขอที่กำลังทำงานล่าสุดไม่ได้ใช้งานนานถึงระยะเวลานั้น

OmeniaClaw ไม่ได้ติดตั้ง launchd, systemd, Docker หรือ daemon สำหรับสิ่งนี้ เซิร์ฟเวอร์เป็นกระบวนการลูกของกระบวนการ OmeniaClaw ที่ต้องใช้มันก่อน

รูปแบบการกำหนดค่า

json5
{  models: {    providers: {      local: {        baseUrl: "http://127.0.0.1:8000/v1",        apiKey: "local-model",        api: "openai-completions",        timeoutSeconds: 300,        localService: {          command: "/absolute/path/to/server",          args: ["--host", "127.0.0.1", "--port", "8000"],          cwd: "/absolute/path/to/working-dir",          env: { LOCAL_MODEL_CACHE: "/absolute/path/to/cache" },          healthUrl: "http://127.0.0.1:8000/v1/models",          readyTimeoutMs: 180000,          idleStopMs: 0,        },        models: [          {            id: "my-local-model",            name: "My Local Model",            reasoning: false,            input: ["text"],            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },            contextWindow: 131072,            maxTokens: 8192,          },        ],      },    },  },}

ฟิลด์

  • command: พาธสัมบูรณ์ของไฟล์ปฏิบัติการ ไม่มีการใช้การค้นหาของเชลล์
  • args: อาร์กิวเมนต์ของกระบวนการ ไม่มีการใช้การขยายของเชลล์ pipe, globbing หรือกฎการอ้างอิง
  • cwd: ไดเรกทอรีทำงานแบบไม่บังคับสำหรับกระบวนการ
  • env: ตัวแปรสภาพแวดล้อมแบบไม่บังคับที่รวมทับบนสภาพแวดล้อมของกระบวนการ OmeniaClaw
  • healthUrl: URL ความพร้อม หากละไว้ OmeniaClaw จะต่อท้าย /models ไปยัง baseUrl ดังนั้น http://127.0.0.1:8000/v1 จะกลายเป็น http://127.0.0.1:8000/v1/models
  • readyTimeoutMs: กำหนดเวลาความพร้อมตอนเริ่มต้น ค่าเริ่มต้น: 120000
  • idleStopMs: เวลาหน่วงก่อนปิดเมื่อไม่ได้ใช้งานสำหรับกระบวนการที่ OmeniaClaw เริ่ม 0 หรือ การละไว้จะคงกระบวนการไว้จนกว่า OmeniaClaw จะออก

ตัวอย่าง Inferrs

Inferrs เป็นแบ็กเอนด์ /v1 แบบกำหนดเองที่เข้ากันได้กับ OpenAI ดังนั้น API บริการภายในเดียวกัน จึงทำงานกับรายการผู้ให้บริการ inferrs ได้

json5
{  agents: {    defaults: {      model: { primary: "inferrs/google/gemma-4-E2B-it" },    },  },  models: {    mode: "merge",    providers: {      inferrs: {        baseUrl: "http://127.0.0.1:8080/v1",        apiKey: "inferrs-local",        api: "openai-completions",        timeoutSeconds: 300,        localService: {          command: "/opt/homebrew/bin/inferrs",          args: [            "serve",            "google/gemma-4-E2B-it",            "--host",            "127.0.0.1",            "--port",            "8080",            "--device",            "metal",          ],          healthUrl: "http://127.0.0.1:8080/v1/models",          readyTimeoutMs: 180000,          idleStopMs: 0,        },        models: [          {            id: "google/gemma-4-E2B-it",            name: "Gemma 4 E2B (inferrs)",            reasoning: false,            input: ["text"],            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },            contextWindow: 131072,            maxTokens: 4096,            compat: {              requiresStringContent: true,            },          },        ],      },    },  },}

แทนที่ command ด้วยผลลัพธ์ของ which inferrs บนเครื่องที่รัน OmeniaClaw

ตัวอย่าง ds4

json5
{  models: {    providers: {      ds4: {        baseUrl: "http://127.0.0.1:18000/v1",        apiKey: "ds4-local",        api: "openai-completions",        timeoutSeconds: 300,        localService: {          command: "/Users/you/Projects/oss/ds4/ds4-server",          args: [            "--model",            "/Users/you/Projects/oss/ds4/ds4flash.gguf",            "--host",            "127.0.0.1",            "--port",            "18000",            "--ctx",            "393216",          ],          cwd: "/Users/you/Projects/oss/ds4",          healthUrl: "http://127.0.0.1:18000/v1/models",          readyTimeoutMs: 300000,          idleStopMs: 0,        },        models: [],      },    },  },}

หมายเหตุด้านการปฏิบัติการ

  • กระบวนการ OmeniaClaw หนึ่งรายการจัดการกระบวนการลูกที่ตนเริ่ม กระบวนการ OmeniaClaw อีกรายการ ที่เห็น URL สุขภาพเดียวกันทำงานอยู่แล้วจะนำกลับมาใช้โดยไม่รับเป็นเจ้าของ
  • การเริ่มต้นจะถูกทำให้เป็นลำดับต่อชุดคำสั่งและอาร์กิวเมนต์ของผู้ให้บริการ ดังนั้นคำขอที่เกิดพร้อมกัน จะไม่สร้างเซิร์ฟเวอร์ซ้ำสำหรับการกำหนดค่าเดียวกัน
  • การตอบกลับแบบสตรีมที่ทำงานอยู่จะถือ lease ไว้ การปิดเมื่อไม่ได้ใช้งานจะรอจนกว่าการจัดการ เนื้อหาของการตอบกลับจะเสร็จสมบูรณ์
  • ใช้ timeoutSeconds กับผู้ให้บริการภายในที่ช้า เพื่อให้การเริ่มแบบเย็นและการสร้างผลลัพธ์ที่ยาว ไม่ชนกับเวลาหมดอายุเริ่มต้นของคำขอโมเดล
  • ใช้ healthUrl แบบชัดเจนหากเซิร์ฟเวอร์ของคุณเปิดเผยความพร้อมไว้ที่อื่น นอกเหนือจาก /v1/models

ที่เกี่ยวข้อง

Was this useful?
On this page

On this page