Skip to content

Commit ae4669c

Browse files
authored
Merge pull request #357 from johnoliver/release-1.4.5-prep
Release 1.4.5 prep
2 parents 24e0639 + 021faab commit ae4669c

67 files changed

Lines changed: 581 additions & 349 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

agents/semantickernel-agents-core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>com.microsoft.semantic-kernel</groupId>
66
<artifactId>semantickernel-parent</artifactId>
7-
<version>1.4.4-RC3-SNAPSHOT</version>
7+
<version>1.4.5-SNAPSHOT</version>
88
<relativePath>../../pom.xml</relativePath>
99
</parent>
1010

aiservices/google/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>com.microsoft.semantic-kernel</groupId>
66
<artifactId>semantickernel-parent</artifactId>
7-
<version>1.4.4-RC3-SNAPSHOT</version>
7+
<version>1.4.5-SNAPSHOT</version>
88
<relativePath>../../pom.xml</relativePath>
99
</parent>
1010

@@ -17,7 +17,7 @@
1717
<dependency>
1818
<groupId>com.google.cloud</groupId>
1919
<artifactId>libraries-bom</artifactId>
20-
<version>26.49.0</version>
20+
<version>26.80.0</version>
2121
<type>pom</type>
2222
<scope>import</scope>
2323
</dependency>

aiservices/huggingface/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.microsoft.semantic-kernel</groupId>
88
<artifactId>semantickernel-parent</artifactId>
9-
<version>1.4.4-RC3-SNAPSHOT</version>
9+
<version>1.4.5-SNAPSHOT</version>
1010
<relativePath>../../pom.xml</relativePath>
1111
</parent>
1212

aiservices/huggingface/src/main/java/com/microsoft/semantickernel/aiservices/huggingface/services/HuggingFacePromptExecutionSettings.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ public HuggingFacePromptExecutionSettings(PromptExecutionSettings copy) {
4747
copy.getUser(),
4848
copy.getStopSequences(),
4949
copy.getTokenSelectionBiases(),
50-
copy.getResponseFormat() == null ? null : copy.getResponseFormat());
50+
copy.getResponseFormat() == null ? null : copy.getResponseFormat(),
51+
copy.getMaxCompletionTokens() == null ? null : copy.getMaxCompletionTokens().toString());
5152
this.topK = null;
5253
this.repetitionPenalty = null;
5354
this.maxTime = null;
@@ -101,10 +102,12 @@ public HuggingFacePromptExecutionSettings(
101102
@Nullable Boolean details,
102103
@Nullable Boolean logProbs,
103104
@Nullable Integer topLogProbs,
104-
@Nullable Long seed) {
105+
@Nullable Long seed,
106+
@Nullable Boolean maxCompletionTokensEnable) {
105107
super(
106108
serviceId, modelId, temperature, topP, presencePenalty, frequencyPenalty, maxTokens,
107-
resultsPerPrompt, bestOf, user, stopSequences, tokenSelectionBiases, responseFormat);
109+
resultsPerPrompt, bestOf, user, stopSequences, tokenSelectionBiases, responseFormat,
110+
Boolean.toString(Boolean.TRUE.equals(maxCompletionTokensEnable)));
108111

109112
this.topK = topK;
110113
this.repetitionPenalty = repetitionPenalty;
@@ -151,6 +154,7 @@ public static HuggingFacePromptExecutionSettings fromExecutionSettings(
151154
null,
152155
null,
153156
null,
157+
null,
154158
null);
155159
}
156160

aiservices/openai/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.microsoft.semantic-kernel</groupId>
88
<artifactId>semantickernel-parent</artifactId>
9-
<version>1.4.4-RC3-SNAPSHOT</version>
9+
<version>1.4.5-SNAPSHOT</version>
1010
<relativePath>../../pom.xml</relativePath>
1111
</parent>
1212

aiservices/openai/src/main/java/com/microsoft/semantickernel/aiservices/openai/chatcompletion/OpenAIChatCompletion.java

Lines changed: 37 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@
6565
import com.microsoft.semantickernel.orchestration.ToolCallBehavior;
6666
import com.microsoft.semantickernel.orchestration.responseformat.JsonResponseSchema;
6767
import com.microsoft.semantickernel.orchestration.responseformat.JsonSchemaResponseFormat;
68-
import com.microsoft.semantickernel.semanticfunctions.KernelFunction;
6968
import com.microsoft.semantickernel.semanticfunctions.KernelArguments;
69+
import com.microsoft.semantickernel.semanticfunctions.KernelFunction;
7070
import com.microsoft.semantickernel.services.chatcompletion.AuthorRole;
7171
import com.microsoft.semantickernel.services.chatcompletion.ChatCompletionService;
7272
import com.microsoft.semantickernel.services.chatcompletion.ChatHistory;
@@ -149,7 +149,7 @@ public Mono<List<ChatMessageContent<?>>> getChatMessageContentsAsync(
149149

150150
if (invocationContext != null
151151
&& invocationContext
152-
.returnMode() == InvocationReturnMode.LAST_MESSAGE_ONLY) {
152+
.returnMode() == InvocationReturnMode.LAST_MESSAGE_ONLY) {
153153
chatHistoryResult = new ChatHistory(
154154
Collections.singletonList(
155155
CollectionUtil.getLastOrNull(chatHistoryResult.getMessages())));
@@ -183,7 +183,7 @@ public Mono<List<ChatMessageContent<?>>> getChatMessageContentsAsync(
183183

184184
if (invocationContext != null
185185
&& invocationContext
186-
.returnMode() == InvocationReturnMode.LAST_MESSAGE_ONLY) {
186+
.returnMode() == InvocationReturnMode.LAST_MESSAGE_ONLY) {
187187
result = new ChatHistory(
188188
Collections.singletonList(
189189
CollectionUtil.getLastOrNull(result.getMessages())));
@@ -443,31 +443,31 @@ private Mono<ChatMessages> internalChatMessageContentsAsync(
443443
.getOptions();
444444

445445
return Mono.deferContextual(contextView -> {
446-
ChatCompletionSpan span = ChatCompletionSpan.startChatCompletionSpan(
447-
SemanticKernelTelemetry.getTelemetry(invocationContext),
448-
contextView,
449-
getModelId(),
450-
SemanticKernelTelemetry.OPEN_AI_PROVIDER,
451-
options.getMaxTokens(),
452-
options.getTemperature(),
453-
options.getTopP());
454-
455-
return getClient()
456-
.getChatCompletionsWithResponse(getDeploymentName(), options,
457-
OpenAIRequestSettings.getRequestOptions())
458-
.contextWrite(span.getReactorContextModifier())
459-
.flatMap(completionsResult -> {
460-
if (completionsResult.getStatusCode() >= 400) {
461-
return Mono.error(new AIException(ErrorCodes.SERVICE_ERROR,
462-
"Request failed: " + completionsResult.getStatusCode()));
463-
}
446+
ChatCompletionSpan span = ChatCompletionSpan.startChatCompletionSpan(
447+
SemanticKernelTelemetry.getTelemetry(invocationContext),
448+
contextView,
449+
getModelId(),
450+
SemanticKernelTelemetry.OPEN_AI_PROVIDER,
451+
options.getMaxTokens(),
452+
options.getTemperature(),
453+
options.getTopP());
454+
455+
return getClient()
456+
.getChatCompletionsWithResponse(getDeploymentName(), options,
457+
OpenAIRequestSettings.getRequestOptions())
458+
.contextWrite(span.getReactorContextModifier())
459+
.flatMap(completionsResult -> {
460+
if (completionsResult.getStatusCode() >= 400) {
461+
return Mono.error(new AIException(ErrorCodes.SERVICE_ERROR,
462+
"Request failed: " + completionsResult.getStatusCode()));
463+
}
464464

465-
return Mono.just(completionsResult.getValue());
466-
})
467-
.doOnError(span::endSpanWithError)
468-
.doOnSuccess(span::endSpanWithUsage)
469-
.doOnTerminate(span::close);
470-
})
465+
return Mono.just(completionsResult.getValue());
466+
})
467+
.doOnError(span::endSpanWithError)
468+
.doOnSuccess(span::endSpanWithUsage)
469+
.doOnTerminate(span::close);
470+
})
471471
.flatMap(completions -> {
472472
List<ChatResponseMessage> responseMessages = completions
473473
.getChoices()
@@ -920,7 +920,8 @@ private static ChatCompletionsOptions getCompletionsOptions(
920920
}
921921

922922
Map<String, Integer> logit = null;
923-
if (promptExecutionSettings.getTokenSelectionBiases() != null) {
923+
if (promptExecutionSettings.getTokenSelectionBiases() != null
924+
&& !promptExecutionSettings.getTokenSelectionBiases().isEmpty()) {
924925
logit = promptExecutionSettings
925926
.getTokenSelectionBiases()
926927
.entrySet()
@@ -937,12 +938,13 @@ private static ChatCompletionsOptions getCompletionsOptions(
937938
.setFrequencyPenalty(promptExecutionSettings.getFrequencyPenalty())
938939
.setPresencePenalty(promptExecutionSettings.getPresencePenalty())
939940
.setMaxTokens(promptExecutionSettings.getMaxTokens())
941+
.setMaxCompletionTokens(promptExecutionSettings.getMaxCompletionTokens())
940942
.setN(promptExecutionSettings.getResultsPerPrompt())
941943
// Azure OpenAI WithData API does not allow to send empty array of stop sequences
942944
// Gives back "Validation error at #/stop/str: Input should be a valid string\nValidation error at #/stop/list[str]: List should have at least 1 item after validation, not 0"
943945
.setStop(promptExecutionSettings.getStopSequences() == null
944946
|| promptExecutionSettings.getStopSequences().isEmpty() ? null
945-
: promptExecutionSettings.getStopSequences())
947+
: promptExecutionSettings.getStopSequences())
946948
.setUser(promptExecutionSettings.getUser())
947949
.setLogitBias(logit);
948950

@@ -1147,7 +1149,7 @@ private static OpenAIToolCallConfig getToolCallBehaviorConfig(
11471149
toolChoice,
11481150
toolCallBehavior.isAutoInvokeAllowed()
11491151
&& requestIndex < Math.min(MAXIMUM_INFLIGHT_AUTO_INVOKES,
1150-
toolCallBehavior.getMaximumAutoInvokeAttempts()),
1152+
toolCallBehavior.getMaximumAutoInvokeAttempts()),
11511153
null);
11521154
}
11531155

@@ -1262,11 +1264,11 @@ private static ChatRequestAssistantMessage formAssistantMessage(
12621264

12631265
String args = arguments != null && !arguments.isEmpty()
12641266
? arguments.entrySet().stream()
1265-
.map(entry -> String.format("\"%s\": \"%s\"",
1266-
StringEscapeUtils.escapeJson(entry.getKey()),
1267-
StringEscapeUtils.escapeJson(
1268-
entry.getValue().toPromptString())))
1269-
.collect(Collectors.joining(",", "{", "}"))
1267+
.map(entry -> String.format("\"%s\": \"%s\"",
1268+
StringEscapeUtils.escapeJson(entry.getKey()),
1269+
StringEscapeUtils.escapeJson(
1270+
entry.getValue().toPromptString())))
1271+
.collect(Collectors.joining(",", "{", "}"))
12701272
: "{}";
12711273

12721274
String prefix = "";

aiservices/openai/src/main/java/com/microsoft/semantickernel/aiservices/openai/chatcompletion/OpenAIFunction.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,20 @@
77
import com.fasterxml.jackson.core.JsonProcessingException;
88
import com.fasterxml.jackson.databind.JsonNode;
99
import com.fasterxml.jackson.databind.ObjectMapper;
10-
import com.microsoft.semantickernel.exceptions.SKException;
1110
import com.microsoft.semantickernel.orchestration.responseformat.ResponseSchemaGenerator;
11+
import com.microsoft.semantickernel.plugin.KernelPluginFactory;
1212
import com.microsoft.semantickernel.semanticfunctions.InputVariable;
1313
import com.microsoft.semantickernel.semanticfunctions.KernelFunctionMetadata;
14-
import org.apache.commons.lang3.StringUtils;
1514
import java.util.ArrayList;
1615
import java.util.Collections;
1716
import java.util.HashMap;
1817
import java.util.List;
1918
import java.util.Locale;
2019
import java.util.Map;
21-
import java.util.Objects;
22-
import java.util.concurrent.ConcurrentHashMap;
2320
import java.util.stream.Collectors;
2421
import javax.annotation.Nonnull;
2522
import javax.annotation.Nullable;
23+
import org.apache.commons.lang3.StringUtils;
2624

2725
class OpenAIFunction {
2826

@@ -229,14 +227,9 @@ private static String getJavaTypeToOpenAiFunctionType(String javaType) {
229227
}
230228

231229
private static String getObjectSchema(String type, String description) {
232-
String schema = "{ \"type\" : \"object\" }";
233-
try {
234-
Class<?> clazz = Class.forName(type);
235-
schema = ResponseSchemaGenerator.jacksonGenerator().generateSchema(clazz);
230+
Class<?> clazz = KernelPluginFactory.getTypeForName(type);
231+
String schema = ResponseSchemaGenerator.jacksonGenerator().generateSchema(clazz);
236232

237-
} catch (ClassNotFoundException | SKException ignored) {
238-
239-
}
240233
Map<String, Object> properties = BinaryData.fromString(schema).toObject(Map.class);
241234
if (StringUtils.isNotBlank(description)) {
242235
properties.put("description", description);

api-test/integration-tests/pom.xml

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.microsoft.semantic-kernel</groupId>
88
<artifactId>api-test</artifactId>
9-
<version>1.4.4-RC3-SNAPSHOT</version>
9+
<version>1.4.5-SNAPSHOT</version>
1010
<relativePath>../pom.xml</relativePath>
1111
</parent>
1212

@@ -90,18 +90,18 @@
9090
<dependency>
9191
<groupId>com.mysql</groupId>
9292
<artifactId>mysql-connector-j</artifactId>
93-
<version>9.0.0</version>
93+
<version>9.6.0</version>
9494
<scope>test</scope>
9595
</dependency>
9696
<dependency>
9797
<groupId>org.postgresql</groupId>
9898
<artifactId>postgresql</artifactId>
99-
<version>42.7.3</version> <!-- Use the latest version -->
99+
<version>42.7.10</version> <!-- Use the latest version -->
100100
</dependency>
101101
<dependency>
102102
<groupId>org.xerial</groupId>
103103
<artifactId>sqlite-jdbc</artifactId>
104-
<version>3.46.1.0</version>
104+
<version>3.53.0.0</version>
105105
</dependency>
106106

107107
<dependency>
@@ -122,7 +122,7 @@
122122
<dependency>
123123
<groupId>com.redis</groupId>
124124
<artifactId>testcontainers-redis</artifactId>
125-
<version>2.2.2</version>
125+
<version>2.2.4</version>
126126
<scope>test</scope>
127127
</dependency>
128128
<dependency>
@@ -147,7 +147,12 @@
147147
<dependency>
148148
<groupId>org.hsqldb</groupId>
149149
<artifactId>hsqldb</artifactId>
150-
<version>2.7.3</version>
150+
<version>2.7.4</version>
151+
<scope>test</scope>
152+
</dependency>
153+
<dependency>
154+
<groupId>com.microsoft.semantic-kernel</groupId>
155+
<artifactId>semantickernel-api-data</artifactId>
151156
<scope>test</scope>
152157
</dependency>
153158
</dependencies>
@@ -157,7 +162,7 @@
157162
<dependency>
158163
<groupId>org.testcontainers</groupId>
159164
<artifactId>testcontainers-bom</artifactId>
160-
<version>1.18.3</version>
165+
<version>2.0.4</version>
161166
<type>pom</type>
162167
<scope>import</scope>
163168
</dependency>

api-test/integration-tests/src/test/java/com/microsoft/semantickernel/tests/ImportingMultiplePluginsTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.microsoft.semantickernel.Kernel;
55
import com.microsoft.semantickernel.plugin.KernelPlugin;
66
import com.microsoft.semantickernel.plugin.KernelPluginFactory;
7-
import org.junit.Ignore;
87
import org.junit.jupiter.api.Assertions;
98
import org.junit.jupiter.api.Disabled;
109
import org.junit.jupiter.api.Test;

api-test/integration-tests/src/test/java/com/microsoft/semantickernel/tests/data/redis/Hotel.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ public class Hotel {
1818
@VectorStoreRecordData(isFilterable = true)
1919
private final String name;
2020

21-
@VectorStoreRecordData
21+
@VectorStoreRecordData(isFilterable = true)
2222
private final int code;
2323

2424
@JsonProperty("summary")
25-
@VectorStoreRecordData()
25+
@VectorStoreRecordData(isFilterable = true)
2626
private final String description;
2727

2828
@JsonProperty("summaryEmbedding1")

0 commit comments

Comments
 (0)