Something went wrong. Try again.
Routing embedding stack for Qwen3-Embedding-0.6B on Apple Silicon: orchestrator + MLX + llama.cpp backends
Something went wrong. Try again.
1.5 kB · 42 lines
Swift
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243import Foundationimport Hummingbird
actor HealthState { private var ready = false func markReady() { ready = true } func isReady() -> Bool { ready }}
func buildRouter(service: EmbedService, health: HealthState) -> Router<BasicRequestContext> { let router = Router()
router.get("/healthz") { _, _ -> Response in let ready = await health.isReady() let status: HTTPResponse.Status = ready ? .ok : .serviceUnavailable let body = ready ? "ok" : "warming" var response = Response(status: status, body: .init(byteBuffer: .init(string: body))) response.headers[.contentType] = "text/plain" return response }
router.post("/embed") { request, context -> Response in let req = try await request.decode(as: EmbedRequest.self, context: context) if req.texts.isEmpty { throw HTTPError(.badRequest, message: "texts must be non-empty") } let size = req.size ?? .s06 let vectors = try await service.embed( texts: req.texts, kind: req.input_type, size: size) let dim = vectors.first?.count ?? 0 let resp = EmbedResponse(vectors: vectors, dim: dim, model: size.label) let data = try JSONEncoder().encode(resp) var response = Response( status: .ok, body: .init(byteBuffer: .init(bytes: data)) ) response.headers[.contentType] = "application/json" return response }
return router}