From 4e242a513a3f7ed4775a28f041522ad1f59b33a9 Mon Sep 17 00:00:00 2001 From: John Oliver <1615532+johnoliver@users.noreply.github.com> Date: Mon, 29 Jul 2024 17:09:02 +0100 Subject: [PATCH 1/2] Add opt-out for the semantic-kernel user-agent addition to openai requests --- .../implementation/OpenAIRequestSettings.java | 45 ++++++++++++++++--- .../memory/InMemory_DataStorage.java | 3 +- 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/aiservices/openai/src/main/java/com/microsoft/semantickernel/aiservices/openai/implementation/OpenAIRequestSettings.java b/aiservices/openai/src/main/java/com/microsoft/semantickernel/aiservices/openai/implementation/OpenAIRequestSettings.java index 8da85ed9..9b92e0f8 100644 --- a/aiservices/openai/src/main/java/com/microsoft/semantickernel/aiservices/openai/implementation/OpenAIRequestSettings.java +++ b/aiservices/openai/src/main/java/com/microsoft/semantickernel/aiservices/openai/implementation/OpenAIRequestSettings.java @@ -8,6 +8,7 @@ import java.io.IOException; import java.io.InputStream; import java.util.Properties; +import javax.annotation.Nullable; import org.slf4j.Logger; /** @@ -20,14 +21,36 @@ public final class OpenAIRequestSettings { private static final String SEMANTIC_KERNEL_VERSION_PROPERTY_NAME = "semantic-kernel.version"; private static final String SEMANTIC_KERNEL_VERSION_PROPERTIES_FILE = "semantic-kernel-version.properties"; + @Nullable private static final String useragent; + @Nullable private static final String header; + public static final String SEMANTIC_KERNEL_DISABLE_USERAGENT_PROPERTY = "semantic-kernel.useragent-disable"; + static { - String version = loadVersion(); - useragent = "semantic-kernel-java/" + version; - header = "java/" + version; + boolean disabled = isDisabled(); + + if (!disabled) { + String version = loadVersion(); + useragent = "semantic-kernel-java/" + version; + header = "java/" + version; + } else { + useragent = null; + header = null; + } + } + + private static boolean isDisabled() { + boolean disable = false; + try { + disable = Boolean.parseBoolean( + System.getProperty(SEMANTIC_KERNEL_DISABLE_USERAGENT_PROPERTY, "false")); + } catch (Exception e) { + LOGGER.error("Failed to parse system property 'semantic-kernel.disable-useragent'.", e); + } + return disable; } private static String loadVersion() { @@ -58,9 +81,19 @@ private static String loadVersion() { * @return The request options */ public static RequestOptions getRequestOptions() { - return new RequestOptions() - .setHeader(HttpHeaderName.fromString("Semantic-Kernel-Version"), header) - .setContext( + RequestOptions requestOptions = new RequestOptions(); + + if (header != null) { + requestOptions.setHeader( + HttpHeaderName.fromString("Semantic-Kernel-Version"), header); + } + + if (useragent != null) { + requestOptions.setContext( new Context(UserAgentPolicy.APPEND_USER_AGENT_CONTEXT_KEY, useragent)); + } + + return requestOptions; + } } diff --git a/samples/semantickernel-concepts/semantickernel-syntax-examples/src/main/java/com/microsoft/semantickernel/samples/syntaxexamples/memory/InMemory_DataStorage.java b/samples/semantickernel-concepts/semantickernel-syntax-examples/src/main/java/com/microsoft/semantickernel/samples/syntaxexamples/memory/InMemory_DataStorage.java index b189081b..d92c1e06 100644 --- a/samples/semantickernel-concepts/semantickernel-syntax-examples/src/main/java/com/microsoft/semantickernel/samples/syntaxexamples/memory/InMemory_DataStorage.java +++ b/samples/semantickernel-concepts/semantickernel-syntax-examples/src/main/java/com/microsoft/semantickernel/samples/syntaxexamples/memory/InMemory_DataStorage.java @@ -105,7 +105,8 @@ public static void main(String[] args) { inMemoryDataStorage(embeddingGeneration); } - public static void inMemoryDataStorage(OpenAITextEmbeddingGenerationService embeddingGeneration) { + public static void inMemoryDataStorage( + OpenAITextEmbeddingGenerationService embeddingGeneration) { // Create a new Volatile vector store var volatileVectorStore = new VolatileVectorStore(); From 7df0fd07990604acacf8f17411212148b46e7b24 Mon Sep 17 00:00:00 2001 From: John Oliver <1615532+johnoliver@users.noreply.github.com> Date: Tue, 30 Jul 2024 12:44:24 +0100 Subject: [PATCH 2/2] Fixes from review --- .../implementation/OpenAIRequestSettings.java | 46 ++++++------------- 1 file changed, 14 insertions(+), 32 deletions(-) diff --git a/aiservices/openai/src/main/java/com/microsoft/semantickernel/aiservices/openai/implementation/OpenAIRequestSettings.java b/aiservices/openai/src/main/java/com/microsoft/semantickernel/aiservices/openai/implementation/OpenAIRequestSettings.java index 9b92e0f8..35d0d3f3 100644 --- a/aiservices/openai/src/main/java/com/microsoft/semantickernel/aiservices/openai/implementation/OpenAIRequestSettings.java +++ b/aiservices/openai/src/main/java/com/microsoft/semantickernel/aiservices/openai/implementation/OpenAIRequestSettings.java @@ -8,7 +8,6 @@ import java.io.IOException; import java.io.InputStream; import java.util.Properties; -import javax.annotation.Nullable; import org.slf4j.Logger; /** @@ -21,36 +20,24 @@ public final class OpenAIRequestSettings { private static final String SEMANTIC_KERNEL_VERSION_PROPERTY_NAME = "semantic-kernel.version"; private static final String SEMANTIC_KERNEL_VERSION_PROPERTIES_FILE = "semantic-kernel-version.properties"; - @Nullable - private static final String useragent; - @Nullable + private static final String useragent; private static final String header; public static final String SEMANTIC_KERNEL_DISABLE_USERAGENT_PROPERTY = "semantic-kernel.useragent-disable"; + private static final boolean disabled; + static { - boolean disabled = isDisabled(); - - if (!disabled) { - String version = loadVersion(); - useragent = "semantic-kernel-java/" + version; - header = "java/" + version; - } else { - useragent = null; - header = null; - } + disabled = isDisabled(); + String version = loadVersion(); + useragent = "semantic-kernel-java/" + version; + header = "java/" + version; } private static boolean isDisabled() { - boolean disable = false; - try { - disable = Boolean.parseBoolean( - System.getProperty(SEMANTIC_KERNEL_DISABLE_USERAGENT_PROPERTY, "false")); - } catch (Exception e) { - LOGGER.error("Failed to parse system property 'semantic-kernel.disable-useragent'.", e); - } - return disable; + return Boolean.parseBoolean( + System.getProperty(SEMANTIC_KERNEL_DISABLE_USERAGENT_PROPERTY, "false")); } private static String loadVersion() { @@ -83,17 +70,12 @@ private static String loadVersion() { public static RequestOptions getRequestOptions() { RequestOptions requestOptions = new RequestOptions(); - if (header != null) { - requestOptions.setHeader( - HttpHeaderName.fromString("Semantic-Kernel-Version"), header); - } - - if (useragent != null) { - requestOptions.setContext( - new Context(UserAgentPolicy.APPEND_USER_AGENT_CONTEXT_KEY, useragent)); + if (disabled) { + return requestOptions; } - return requestOptions; - + return requestOptions + .setHeader(HttpHeaderName.fromString("Semantic-Kernel-Version"), header) + .setContext(new Context(UserAgentPolicy.APPEND_USER_AGENT_CONTEXT_KEY, useragent)); } }