conductor-oss/conductor · error · UnsupportedOperationException
Not supported
Error message
Not supported
What it means
Thrown by PerplexityAI.generateEmbeddings as UnsupportedOperationException. Perplexity (Sonar models) is a search-augmented chat provider and does not offer an embeddings endpoint, so the AIModel interface method is intentionally unimplemented.
Source
Thrown at ai/src/main/java/org/conductoross/conductor/ai/providers/perplexity/PerplexityAI.java:55
this(config, AIHttpClients.defaultClient());
}
public PerplexityAI(PerplexityAIConfiguration config, OkHttpClient httpClient) {
this.config = config;
OpenAIChatCompletionsApi api =
new OpenAIChatCompletionsApi(
httpClient, config.getApiKey(), config.getBaseURL(), "/chat/completions");
this.chatModel = new OpenAICompatChatModel(api);
}
@Override
public String getModelProvider() {
return NAME;
}
@Override
public List<Float> generateEmbeddings(EmbeddingGenRequest embeddingGenRequest) {
throw new UnsupportedOperationException("Not supported");
}
@Override
public ChatOptions getChatOptions(ChatCompletion input) {
return ToolCallingChatOptions.builder()
.model(input.getModel())
.maxTokens(input.getMaxTokens())
.topP(input.getTopP())
.temperature(input.getTemperature())
.toolCallbacks(getToolCallback(input))
.internalToolExecutionEnabled(false)
.frequencyPenalty(input.getFrequencyPenalty())
.topK(input.getTopK())
.presencePenalty(input.getPresencePenalty())
.build();
}
@OverrideView on GitHub (pinned to cf7c3e4a8a)
Solutions
- Use an embeddings-capable provider (OpenAI) for embedding tasks instead of perplexity.
- Check the AIModel capabilities or getModelProvider() before calling generateEmbeddings.
- Set the correct llmProvider on the embedding task input.
Example fix
// before
AIModel model = provider.getModel(req); // resolves to perplexity
List<Float> emb = model.generateEmbeddings(embReq); // UnsupportedOperationException
// after
if (!"perplexity".equals(model.getModelProvider())) {
List<Float> emb = model.generateEmbeddings(embReq);
} Defensive patterns
Strategy: validation
Validate before calling
if ("perplexity".equals(model.getModelProvider())) {
throw new IllegalArgumentException(
"Perplexity does not support embeddings; use an OpenAI provider");
}
List<Float> emb = model.generateEmbeddings(req); Type guard
boolean supportsEmbeddings(AIModel m) {
return !"perplexity".equals(m.getModelProvider())
&& !"stabilityai".equals(m.getModelProvider());
} Try / catch
try {
List<Float> emb = model.generateEmbeddings(req);
} catch (UnsupportedOperationException e) {
// provider lacks embeddings; switch provider or skip
} Prevention
- Check getModelProvider() before calling generateEmbeddings.
- Keep a known-capabilities map per provider name.
- Route embedding tasks to OpenAI explicitly.
When it happens
Trigger: A workflow or caller invokes generateEmbeddings on an AIModel resolved to the 'perplexity' provider, e.g. an embedding task whose llmProvider is misconfigured to perplexity.
Common situations: Copy-pasting a chat-oriented provider config into an embeddings task, or a generic AIModel consumer that does not check provider capabilities before calling generateEmbeddings.
Related errors
- Image generation not supported by the model yet
- Embeddings are not supported by the Stability AI provider
- Not supported
- Not supported
- Not supported
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/bd181bb97f7c6e50.
Report an issue: GitHub.