conductor-oss/conductor · error · NonRetryableException
No input text provided to generate embeddings
Error message
No input text provided to generate embeddings
What it means
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.
Source
Thrown at ai/src/main/java/org/conductoross/conductor/ai/tasks/worker/LLMWorkers.java:134
List<ChatMessage> messages = new ArrayList<>();
messages.add(
new ChatMessage(
ChatMessage.Role.user,
"use the instructions given to generate the response."));
chatCompletion.setMessages(messages);
return llm.chatComplete(TaskContext.get().getTask(), chatCompletion);
}
@SneakyThrows
@WorkerTask("LLM_CHAT_COMPLETE")
public LLMResponse chatCompletion(ChatCompletion chatCompletion) {
return llm.chatComplete(TaskContext.get().getTask(), chatCompletion);
}
@WorkerTask("LLM_GENERATE_EMBEDDINGS")
public @OutputParam("result") List<Float> generateEmbeddings(EmbeddingGenRequest input) {
if (isBlank(input.getText())) {
throw new NonRetryableException("No input text provided to generate embeddings");
}
String llmProvider = input.getLlmProvider();
return generateEmbeddings(
TaskContext.get().getTask(),
llmProvider,
input.getModel(),
input.getText(),
input.getDimensions());
}
private List<Float> generateEmbeddings(
Task task,
String embeddingModelProvider,
String embeddingModel,
String text,
Integer dimensions) {
EmbeddingGenRequest request =
EmbeddingGenRequest.builder()View on GitHub (pinned to cf7c3e4a8a)
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()).
Example fix
// before
EmbeddingGenRequest.builder().model("text-embedding-3-small").build(); // no text
// after
EmbeddingGenRequest.builder().model("text-embedding-3-small").text(chunk).build(); Defensive patterns
Strategy: validation
Validate before calling
// Validate text before invoking embeddings
if (StringUtils.isBlank(input.getText())) {
throw new IllegalArgumentException("text must be non-blank");
} Prevention
- Filter empty chunks before batching embeddings.
- Verify upstream text variables resolve to content.
- Use the 'text' key exactly.
When it happens
Trigger: Running LLM_GENERATE_EMBEDDINGS with a blank/null EmbeddingGenRequest.text; an upstream text-producing task that emitted empty content being wired into text.
Common situations: 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.
Related errors
- llmProvider not specified: {name}
- agentUrl must not be blank
- GET_AGENT_CARD requires 'agentUrl'
- AGENT requires one of: message, parts, text, or prompt
- Unsupported agentType '<agentType>' (only 'a2a' is supported
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/27ddda46ed5b6e29.
Report an issue: GitHub.