{"record":{"id":"bd181bb97f7c6e50","repo":"conductor-oss/conductor","slug":"not-supported-bd181b","errorCode":null,"errorMessage":"Not supported","messagePattern":"Not supported","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"ai/src/main/java/org/conductoross/conductor/ai/providers/perplexity/PerplexityAI.java","lineNumber":55,"sourceCode":"        this(config, AIHttpClients.defaultClient());\n    }\n\n    public PerplexityAI(PerplexityAIConfiguration config, OkHttpClient httpClient) {\n        this.config = config;\n        OpenAIChatCompletionsApi api =\n                new OpenAIChatCompletionsApi(\n                        httpClient, config.getApiKey(), config.getBaseURL(), \"/chat/completions\");\n        this.chatModel = new OpenAICompatChatModel(api);\n    }\n\n    @Override\n    public String getModelProvider() {\n        return NAME;\n    }\n\n    @Override\n    public List<Float> generateEmbeddings(EmbeddingGenRequest embeddingGenRequest) {\n        throw new UnsupportedOperationException(\"Not supported\");\n    }\n\n    @Override\n    public ChatOptions getChatOptions(ChatCompletion input) {\n        return ToolCallingChatOptions.builder()\n                .model(input.getModel())\n                .maxTokens(input.getMaxTokens())\n                .topP(input.getTopP())\n                .temperature(input.getTemperature())\n                .toolCallbacks(getToolCallback(input))\n                .internalToolExecutionEnabled(false)\n                .frequencyPenalty(input.getFrequencyPenalty())\n                .topK(input.getTopK())\n                .presencePenalty(input.getPresencePenalty())\n                .build();\n    }\n\n    @Override","sourceCodeStart":37,"sourceCodeEnd":73,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/ai/src/main/java/org/conductoross/conductor/ai/providers/perplexity/PerplexityAI.java#L37-L73","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\nAIModel model = provider.getModel(req); // resolves to perplexity\nList<Float> emb = model.generateEmbeddings(embReq); // UnsupportedOperationException\n\n// after\nif (!\"perplexity\".equals(model.getModelProvider())) {\n    List<Float> emb = model.generateEmbeddings(embReq);\n}","handlingStrategy":"validation","validationCode":"if (\"perplexity\".equals(model.getModelProvider())) {\n    throw new IllegalArgumentException(\n        \"Perplexity does not support embeddings; use an OpenAI provider\");\n}\nList<Float> emb = model.generateEmbeddings(req);","typeGuard":"boolean supportsEmbeddings(AIModel m) {\n    return !\"perplexity\".equals(m.getModelProvider())\n        && !\"stabilityai\".equals(m.getModelProvider());\n}","tryCatchPattern":"try {\n    List<Float> emb = model.generateEmbeddings(req);\n} catch (UnsupportedOperationException e) {\n    // provider lacks embeddings; switch provider or skip\n}","preventionTips":["Check getModelProvider() before calling generateEmbeddings.","Keep a known-capabilities map per provider name.","Route embedding tasks to OpenAI explicitly."],"tags":["perplexity","embeddings","unsupported-operation","provider-capabilities"],"backgroundTag":null,"analyzedSha":"cf7c3e4a8adfb158be778ab1ec525323c363cd3a","analyzedAt":"2026-08-14T03:33:19.897Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}