File tree Expand file tree Collapse file tree 2 files changed +23
-0
lines changed
models/spring-ai-openai/src
main/java/org/springframework/ai/openai/aot
test/java/org/springframework/ai/openai/aot Expand file tree Collapse file tree 2 files changed +23
-0
lines changed Original file line number Diff line number Diff line change 1616
1717package org .springframework .ai .openai .aot ;
1818
19+ import java .util .Set ;
20+
21+ import org .springframework .ai .openai .api .OpenAiApi ;
22+ import org .springframework .ai .openai .api .OpenAiEmbeddingDeserializer ;
1923import org .springframework .aot .hint .MemberCategory ;
2024import org .springframework .aot .hint .RuntimeHints ;
2125import org .springframework .aot .hint .RuntimeHintsRegistrar ;
@@ -38,6 +42,11 @@ public class OpenAiRuntimeHints implements RuntimeHintsRegistrar {
3842 public void registerHints (@ NonNull RuntimeHints hints , @ Nullable ClassLoader classLoader ) {
3943 var mcs = MemberCategory .values ();
4044
45+ for (var c : Set .of (OpenAiApi .Embedding .class , OpenAiApi .EmbeddingList .class ,
46+ OpenAiEmbeddingDeserializer .class )) {
47+ hints .reflection ().registerType (c , MemberCategory .values ());
48+ }
49+
4150 for (var tr : findJsonAnnotatedClassesInPackage ("org.springframework.ai.openai" )) {
4251 hints .reflection ().registerType (tr , mcs );
4352 }
Original file line number Diff line number Diff line change 2525import org .springframework .ai .openai .OpenAiChatOptions ;
2626import org .springframework .ai .openai .api .OpenAiApi ;
2727import org .springframework .ai .openai .api .OpenAiAudioApi ;
28+ import org .springframework .ai .openai .api .OpenAiEmbeddingDeserializer ;
2829import org .springframework .ai .openai .api .OpenAiImageApi ;
2930import org .springframework .aot .hint .MemberCategory ;
3031import org .springframework .aot .hint .RuntimeHints ;
@@ -312,4 +313,17 @@ void verifyJsonAnnotatedClassesContainCriticalTypes() {
312313 assertThat (containsImageApi ).isTrue ();
313314 }
314315
316+ @ Test
317+ void verifyExplicitlyRegisteredEmbeddingClasses () {
318+ this .openAiRuntimeHints .registerHints (this .runtimeHints , null );
319+
320+ Set <TypeReference > registeredTypes = new HashSet <>();
321+ this .runtimeHints .reflection ().typeHints ().forEach (typeHint -> registeredTypes .add (typeHint .getType ()));
322+
323+ // Verify the three classes explicitly registered in OpenAiRuntimeHints
324+ assertThat (registeredTypes .contains (TypeReference .of (OpenAiApi .Embedding .class ))).isTrue ();
325+ assertThat (registeredTypes .contains (TypeReference .of (OpenAiApi .EmbeddingList .class ))).isTrue ();
326+ assertThat (registeredTypes .contains (TypeReference .of (OpenAiEmbeddingDeserializer .class ))).isTrue ();
327+ }
328+
315329}
You can’t perform that action at this time.
0 commit comments