{"record":{"id":"27ddda46ed5b6e29","repo":"conductor-oss/conductor","slug":"no-input-text-provided-to-generate-embeddings","errorCode":null,"errorMessage":"No input text provided to generate embeddings","messagePattern":"No input text provided to generate embeddings","errorType":"validation","errorClass":"NonRetryableException","httpStatus":null,"severity":"error","filePath":"ai/src/main/java/org/conductoross/conductor/ai/tasks/worker/LLMWorkers.java","lineNumber":134,"sourceCode":"        List<ChatMessage> messages = new ArrayList<>();\n        messages.add(\n                new ChatMessage(\n                        ChatMessage.Role.user,\n                        \"use the instructions given to generate the response.\"));\n        chatCompletion.setMessages(messages);\n        return llm.chatComplete(TaskContext.get().getTask(), chatCompletion);\n    }\n\n    @SneakyThrows\n    @WorkerTask(\"LLM_CHAT_COMPLETE\")\n    public LLMResponse chatCompletion(ChatCompletion chatCompletion) {\n        return llm.chatComplete(TaskContext.get().getTask(), chatCompletion);\n    }\n\n    @WorkerTask(\"LLM_GENERATE_EMBEDDINGS\")\n    public @OutputParam(\"result\") List<Float> generateEmbeddings(EmbeddingGenRequest input) {\n        if (isBlank(input.getText())) {\n            throw new NonRetryableException(\"No input text provided to generate embeddings\");\n        }\n        String llmProvider = input.getLlmProvider();\n        return generateEmbeddings(\n                TaskContext.get().getTask(),\n                llmProvider,\n                input.getModel(),\n                input.getText(),\n                input.getDimensions());\n    }\n\n    private List<Float> generateEmbeddings(\n            Task task,\n            String embeddingModelProvider,\n            String embeddingModel,\n            String text,\n            Integer dimensions) {\n        EmbeddingGenRequest request =\n                EmbeddingGenRequest.builder()","sourceCodeStart":116,"sourceCodeEnd":152,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/ai/src/main/java/org/conductoross/conductor/ai/tasks/worker/LLMWorkers.java#L116-L152","documentation":"Thrown as NonRetryableException by the LLM_GENERATE_EMBEDDINGS worker when input.getText() is blank. Embedding generation requires source text; with no input there is nothing to vectorize, so the task fails terminally rather than retrying an empty request.","triggerScenarios":"Running LLM_GENERATE_EMBEDDINGS with a blank/null EmbeddingGenRequest.text; an upstream text-producing task that emitted empty content being wired into text.","commonSituations":"Upstream chunking/text task returned empty so the template resolved to blank; wrong output field mapped into text; document loader read an empty file; caller built EmbeddingGenRequest without setting text.","solutions":["Supply non-blank text in the LLM_GENERATE_EMBEDDINGS input 'text' field.","Verify the upstream variable feeding text actually produced content.","Filter out empty chunks before invoking the embeddings worker.","Confirm the input key is 'text' (the worker reads input.getText())."],"exampleFix":"// before\nEmbeddingGenRequest.builder().model(\"text-embedding-3-small\").build();  // no text\n// after\nEmbeddingGenRequest.builder().model(\"text-embedding-3-small\").text(chunk).build();","handlingStrategy":"validation","validationCode":"// Validate text before invoking embeddings\nif (StringUtils.isBlank(input.getText())) {\n    throw new IllegalArgumentException(\"text must be non-blank\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Filter empty chunks before batching embeddings.","Verify upstream text variables resolve to content.","Use the 'text' key exactly."],"tags":["llm","embeddings","input-validation","non-retryable"],"backgroundTag":null,"analyzedSha":"cf7c3e4a8adfb158be778ab1ec525323c363cd3a","analyzedAt":"2026-08-14T03:33:19.897Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}