From e302b418acb63779fcf0d24c4603a748a3069d4e Mon Sep 17 00:00:00 2001 From: Victor Elias Date: Thu, 30 Oct 2025 17:56:02 -0300 Subject: [PATCH 1/3] api/generate: Fix LLM tests to use JSON --- packages/api/src/controllers/generate.test.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/api/src/controllers/generate.test.ts b/packages/api/src/controllers/generate.test.ts index c953fccdf..de5f4c755 100644 --- a/packages/api/src/controllers/generate.test.ts +++ b/packages/api/src/controllers/generate.test.ts @@ -244,15 +244,14 @@ describe("controllers/generate", () => { expect(aiGatewayCalls).toEqual({ "segment-anything-2": 1 }); }); - it("should call the AI Gateway for generate API /llm", async () => { - const res = await client.fetch("/beta/generate/llm", { - method: "POST", - body: buildForm({ prompt: "foo" }), + it(`should call the AI Gateway for ${basePath}/llm`, async () => { + const res = await client.post(`${basePath}/llm`, { + messages: [{ role: "user", content: "foo" }], }); expect(res.status).toBe(200); expect(await res.json()).toEqual({ message: "success", - reqContentType: expect.stringMatching("^multipart/form-data"), + reqContentType: "application/json", }); expect(aiGatewayCalls).toEqual({ llm: 1 }); }); From 1de0329c867d3ee23e8a337d6cf4d51a5fb1a8a1 Mon Sep 17 00:00:00 2001 From: Victor Elias Date: Thu, 30 Oct 2025 18:03:07 -0300 Subject: [PATCH 2/3] Use named docker volume for postgres --- packages/api/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/api/package.json b/packages/api/package.json index ee86940c3..45560dbb8 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -13,7 +13,7 @@ "cloud-dev": "npm run docker && kubectl delete pod -l app.kubernetes.io/name=livepeer-api-server --wait && sleep 1 && kubectl logs -f --pod-running-timeout=30s $(kubectl get pods -o name -l app.kubernetes.io/name=livepeer-api-server)", "cloud-dev:server": "nodemon -w src -x node src/cli.js --port 3040 --kubeBroadcasterService broadcaster --kubeOrchestratorService orchestrator --kubeNamespace default --kubeBroadcasterTemplate 'https://{{nodeName}}.livepeer-staging.live' --kubeOrchestratorTemplate 'https://{{nodeName}}.livepeer-staging.live:8935'", "docker:build": "docker build $(printf ' -t livepeerci/api:%s' ${DOCKER_TAGS:-master}) --build-arg GITHUB_SHA --build-arg VERSION -f Dockerfile ../..", - "postgres:start": "docker run --rm -d --name postgres -e POSTGRES_HOST_AUTH_METHOD=trust -p 5432:5432 -v \"$(pwd)/data/postgres:/var/lib/postgresql/data\" postgres:14-alpine", + "postgres:start": "docker run --rm -d --name postgres -e POSTGRES_HOST_AUTH_METHOD=trust -p 5432:5432 -v livepeer-studio-postgres-data:/var/lib/postgresql/data postgres:14-alpine", "postgres:stop": "docker rm -f postgres", "rabbitmq:start": "docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_VHOST=livepeer rabbitmq@sha256:f0be9e47ec42081a36593dfc6604274a623caed074fc043e0a927fbd1533dc20", "rabbitmq:stop": "docker rm -f rabbitmq", From c2217af4d0a7982cf058c4c37bf630fa3d22191a Mon Sep 17 00:00:00 2001 From: Victor Elias Date: Thu, 30 Oct 2025 18:18:42 -0300 Subject: [PATCH 3/3] api/generate: Add tests for new apis --- packages/api/src/controllers/generate.test.ts | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/packages/api/src/controllers/generate.test.ts b/packages/api/src/controllers/generate.test.ts index de5f4c755..1fd769787 100644 --- a/packages/api/src/controllers/generate.test.ts +++ b/packages/api/src/controllers/generate.test.ts @@ -98,9 +98,11 @@ describe("controllers/generate", () => { "audio-to-text", "text-to-image", "image-to-image", + "image-to-text", "image-to-video", "upscale", "segment-anything-2", + "text-to-speech", "llm", ]; for (const api of apis) { @@ -255,6 +257,33 @@ describe("controllers/generate", () => { }); expect(aiGatewayCalls).toEqual({ llm: 1 }); }); + + it(`should call the AI Gateway for ${basePath}/image-to-text`, async () => { + const res = await client.fetch(`${basePath}/image-to-text`, { + method: "POST", + body: buildMultipartBody({ + model_id: "Salesforce/blip-image-captioning-large", + }), + }); + expect(res.status).toBe(200); + expect(await res.json()).toEqual({ + message: "success", + reqContentType: expect.stringMatching("^multipart/form-data"), + }); + expect(aiGatewayCalls).toEqual({ "image-to-text": 1 }); + }); + + it(`should call the AI Gateway for ${basePath}/text-to-speech`, async () => { + const res = await client.post(`${basePath}/text-to-speech`, { + model_id: "parler-tts/parler-tts-mini-v1", + }); + expect(res.status).toBe(200); + expect(await res.json()).toEqual({ + message: "success", + reqContentType: "application/json", + }); + expect(aiGatewayCalls).toEqual({ "text-to-speech": 1 }); + }); }); describe("validates multipart schema", () => {