feat: add OpenAI-compatible gateway
- GET /v1/health, GET /v1/models, POST /v1/chat/completions (streaming + non-streaming) - OpenAI SDK, LangChain ChatOpenAI, and SSE streaming integration tests - Tracker-backed GET /v1/models endpoint - OpenAI-format errors for unavailable model (503) and pipeline failures - Malformed JSON body handled with 400 instead of crash - Test deps (openai, langchain-openai) declared in root pyproject dev extras Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -151,10 +151,21 @@ class _TrackerHandler(http.server.BaseHTTPRequestHandler):
|
||||
self._handle_route(parsed)
|
||||
elif parsed.path == "/v1/nodes/assign":
|
||||
self._handle_assign(parsed)
|
||||
elif parsed.path == "/v1/models":
|
||||
self._handle_models()
|
||||
else:
|
||||
self.send_response(404)
|
||||
self.end_headers()
|
||||
|
||||
def _handle_models(self):
|
||||
server: _TrackerHTTPServer = self.server # type: ignore[assignment]
|
||||
created = int(time.time())
|
||||
data = [
|
||||
{"id": name, "object": "model", "created": created, "owned_by": "meshnet"}
|
||||
for name in server.model_presets
|
||||
]
|
||||
self._send_json(200, {"object": "list", "data": data})
|
||||
|
||||
def _handle_register(self):
|
||||
server: _TrackerHTTPServer = self.server # type: ignore[assignment]
|
||||
body = self._read_json_body()
|
||||
|
||||
Reference in New Issue
Block a user