diff --git a/extended/src/main/java/apoc/ml/OpenAIRequestHandler.java b/extended/src/main/java/apoc/ml/OpenAIRequestHandler.java index cca7bcd54d..f19cf8ae99 100644 --- a/extended/src/main/java/apoc/ml/OpenAIRequestHandler.java +++ b/extended/src/main/java/apoc/ml/OpenAIRequestHandler.java @@ -40,7 +40,8 @@ public String getEndpoint(Map procConfig, ApocConfig apocConfig) public String getFullUrl(String method, Map procConfig, ApocConfig apocConfig) { return Stream.of(getEndpoint(procConfig, apocConfig), method, getApiVersion(procConfig, apocConfig)) .filter(StringUtils::isNotBlank) - .collect(Collectors.joining("/")); + .collect(Collectors.joining("/")) + .replaceAll("/\\?", "?"); // Remove terminating endpoint } enum Type { diff --git a/extended/src/test/java/apoc/ml/OpenAIAzureIT.java b/extended/src/test/java/apoc/ml/OpenAIAzureIT.java index fc6dcd2a85..5a1d99efa5 100644 --- a/extended/src/test/java/apoc/ml/OpenAIAzureIT.java +++ b/extended/src/test/java/apoc/ml/OpenAIAzureIT.java @@ -12,6 +12,7 @@ import java.util.stream.Stream; import static apoc.ml.OpenAI.API_TYPE_CONF_KEY; +import static apoc.ml.OpenAI.PATH_CONF_KEY; import static apoc.ml.MLUtil.*; import static apoc.ml.OpenAITestResultUtils.CHAT_COMPLETION_QUERY; import static apoc.ml.OpenAITestResultUtils.COMPLETION_QUERY; @@ -63,6 +64,19 @@ public void embedding() { OpenAITestResultUtils::assertEmbeddings); } + @Test + public void embeddingFixPath() { + Map params = Map.of("apiKey", OPENAI_KEY, + "conf", Map.of(ENDPOINT_CONF_KEY, OPENAI_EMBEDDING_URL, + API_TYPE_CONF_KEY, OpenAIRequestHandler.Type.AZURE.name(), + API_VERSION_CONF_KEY, OPENAI_AZURE_API_VERSION, + PATH_CONF_KEY, "openai/deployments/text-embedding-ada-002/embeddings" + )); + testCall(db, EMBEDDING_QUERY, + params, + OpenAITestResultUtils::assertEmbeddings); + } + @Test @Ignore("It returns wrong answers sometimes")