This is an automated email from the ASF dual-hosted git repository.
wenjin272 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/flink-agents.git
The following commit(s) were added to refs/heads/main by this push:
new 167d90aa [api][yaml] Add aliases for six unaliased resource
implementations (#962)
167d90aa is described below
commit 167d90aa9d9a12da2afa20b6c6e393dcbfea2add
Author: hulincup <[email protected]>
AuthorDate: Wed Aug 5 15:49:57 2026 +0800
[api][yaml] Add aliases for six unaliased resource implementations (#962)
---
.../org/apache/flink/agents/api/yaml/Aliases.java | 8 +++++
.../apache/flink/agents/api/yaml/AliasesTest.java | 30 +++++++++++++++++++
docs/content/docs/development/yaml.md | 15 ++++++----
python/flink_agents/api/yaml/aliases.py | 8 +++++
python/flink_agents/api/yaml/tests/test_aliases.py | 35 ++++++++++++++++++++++
5 files changed, 91 insertions(+), 5 deletions(-)
diff --git a/api/src/main/java/org/apache/flink/agents/api/yaml/Aliases.java
b/api/src/main/java/org/apache/flink/agents/api/yaml/Aliases.java
index 9a60b1ad..8043964c 100644
--- a/api/src/main/java/org/apache/flink/agents/api/yaml/Aliases.java
+++ b/api/src/main/java/org/apache/flink/agents/api/yaml/Aliases.java
@@ -86,6 +86,8 @@ public final class Aliases {
"openai_completions",
ResourceName.ChatModel.OPENAI_COMPLETIONS_CONNECTION);
chatConnJava.put("openai_responses",
ResourceName.ChatModel.OPENAI_RESPONSES_CONNECTION);
chatConnJava.put("anthropic",
ResourceName.ChatModel.ANTHROPIC_CONNECTION);
+ chatConnJava.put("gemini", ResourceName.ChatModel.GEMINI_CONNECTION);
+ chatConnJava.put("azure_openai",
ResourceName.ChatModel.AZURE_OPENAI_CONNECTION);
chatConnJava.put("azure", ResourceName.ChatModel.AZURE_CONNECTION);
chatConnJava.put("bedrock", ResourceName.ChatModel.BEDROCK_CONNECTION);
Map<String, String> chatConnPython = new HashMap<>();
@@ -102,6 +104,8 @@ public final class Aliases {
chatJava.put("openai_completions",
ResourceName.ChatModel.OPENAI_COMPLETIONS_SETUP);
chatJava.put("openai_responses",
ResourceName.ChatModel.OPENAI_RESPONSES_SETUP);
chatJava.put("anthropic", ResourceName.ChatModel.ANTHROPIC_SETUP);
+ chatJava.put("gemini", ResourceName.ChatModel.GEMINI_SETUP);
+ chatJava.put("azure_openai",
ResourceName.ChatModel.AZURE_OPENAI_SETUP);
chatJava.put("azure", ResourceName.ChatModel.AZURE_SETUP);
chatJava.put("bedrock", ResourceName.ChatModel.BEDROCK_SETUP);
Map<String, String> chatPython = new HashMap<>();
@@ -137,8 +141,12 @@ public final class Aliases {
// VECTOR_STORE
Map<String, String> vsJava = new HashMap<>();
vsJava.put("elasticsearch",
ResourceName.VectorStore.ELASTICSEARCH_VECTOR_STORE);
+ vsJava.put("opensearch",
ResourceName.VectorStore.OPENSEARCH_VECTOR_STORE);
+ vsJava.put("s3_vectors",
ResourceName.VectorStore.S3_VECTORS_VECTOR_STORE);
+ vsJava.put("milvus", ResourceName.VectorStore.MILVUS_VECTOR_STORE);
Map<String, String> vsPython = new HashMap<>();
vsPython.put("chroma",
ResourceName.VectorStore.Python.CHROMA_VECTOR_STORE);
+ vsPython.put("mem0",
ResourceName.VectorStore.Python.MEM0_VECTOR_STORE);
ca.put(ResourceType.VECTOR_STORE, buildLangBuckets(vsJava, vsPython));
CLAZZ_ALIASES = Collections.unmodifiableMap(ca);
diff --git
a/api/src/test/java/org/apache/flink/agents/api/yaml/AliasesTest.java
b/api/src/test/java/org/apache/flink/agents/api/yaml/AliasesTest.java
index 38211cb0..3f125ffb 100644
--- a/api/src/test/java/org/apache/flink/agents/api/yaml/AliasesTest.java
+++ b/api/src/test/java/org/apache/flink/agents/api/yaml/AliasesTest.java
@@ -59,6 +59,36 @@ class AliasesTest {
assertThat(fqn).isEqualTo(ResourceName.ChatModel.Python.OLLAMA_CONNECTION);
}
+ @Test
+ void clazzAliasCoversChatModelJavaGeminiAndAzureOpenAI() {
+ String geminiConn =
+ Aliases.resolveClazz("gemini",
ResourceType.CHAT_MODEL_CONNECTION, Language.JAVA);
+
assertThat(geminiConn).isEqualTo(ResourceName.ChatModel.GEMINI_CONNECTION);
+ String geminiSetup = Aliases.resolveClazz("gemini",
ResourceType.CHAT_MODEL, Language.JAVA);
+ assertThat(geminiSetup).isEqualTo(ResourceName.ChatModel.GEMINI_SETUP);
+ String azureOpenAIConn =
+ Aliases.resolveClazz(
+ "azure_openai", ResourceType.CHAT_MODEL_CONNECTION,
Language.JAVA);
+
assertThat(azureOpenAIConn).isEqualTo(ResourceName.ChatModel.AZURE_OPENAI_CONNECTION);
+ String azureOpenAISetup =
+ Aliases.resolveClazz("azure_openai", ResourceType.CHAT_MODEL,
Language.JAVA);
+
assertThat(azureOpenAISetup).isEqualTo(ResourceName.ChatModel.AZURE_OPENAI_SETUP);
+ }
+
+ @Test
+ void clazzAliasCoversVectorStoreJavaAndPython() {
+ String opensearch =
+ Aliases.resolveClazz("opensearch", ResourceType.VECTOR_STORE,
Language.JAVA);
+
assertThat(opensearch).isEqualTo(ResourceName.VectorStore.OPENSEARCH_VECTOR_STORE);
+ String s3Vectors =
+ Aliases.resolveClazz("s3_vectors", ResourceType.VECTOR_STORE,
Language.JAVA);
+
assertThat(s3Vectors).isEqualTo(ResourceName.VectorStore.S3_VECTORS_VECTOR_STORE);
+ String milvus = Aliases.resolveClazz("milvus",
ResourceType.VECTOR_STORE, Language.JAVA);
+
assertThat(milvus).isEqualTo(ResourceName.VectorStore.MILVUS_VECTOR_STORE);
+ String mem0 = Aliases.resolveClazz("mem0", ResourceType.VECTOR_STORE,
Language.PYTHON);
+
assertThat(mem0).isEqualTo(ResourceName.VectorStore.Python.MEM0_VECTOR_STORE);
+ }
+
@Test
void clazzAliasMissPassesThrough() {
String fqn =
diff --git a/docs/content/docs/development/yaml.md
b/docs/content/docs/development/yaml.md
index 15c2a5c5..fa53551e 100644
--- a/docs/content/docs/development/yaml.md
+++ b/docs/content/docs/development/yaml.md
@@ -528,7 +528,8 @@ Common chat-model aliases:
| `openai_completions` | — | OpenAI Completions
(Java) |
| `openai_responses` | — | OpenAI Responses (Java)
|
| `anthropic` | Anthropic | Anthropic
|
-| `azure_openai` | Azure OpenAI (Python) | —
|
+| `gemini` | — | Gemini (Java)
|
+| `azure_openai` | Azure OpenAI (Python) | Azure OpenAI (Java)
|
| `azure` | — | Azure AI (Java)
|
| `bedrock` | — | Bedrock (Java)
|
| `tongyi` | Tongyi (Python) | —
|
@@ -544,10 +545,14 @@ Embedding-model aliases (apply to both
`embedding_model_connections` and `embedd
Vector-store aliases:
-| Alias | `type: python` | `type: java` |
-| --------------- | -------------- | -------------- |
-| `chroma` | Chroma | — |
-| `elasticsearch` | — | Elasticsearch |
+| Alias | `type: python` | `type: java` |
+| --------------- | -------------- | --------------- |
+| `chroma` | Chroma | — |
+| `mem0` | Mem0 | — |
+| `elasticsearch` | — | Elasticsearch |
+| `opensearch` | — | OpenSearch |
+| `s3_vectors` | — | S3 Vectors |
+| `milvus` | — | Milvus |
The full alias tables live in `flink_agents.api.yaml.aliases` (Python) and
`org.apache.flink.agents.api.yaml.Aliases` (Java).
diff --git a/python/flink_agents/api/yaml/aliases.py
b/python/flink_agents/api/yaml/aliases.py
index cef9b59a..c5dda4bd 100644
--- a/python/flink_agents/api/yaml/aliases.py
+++ b/python/flink_agents/api/yaml/aliases.py
@@ -72,6 +72,8 @@ CLAZZ_ALIASES: Dict[ResourceType, Dict[str, Dict[str, str]]]
= {
"openai_completions":
ResourceName.ChatModel.Java.OPENAI_COMPLETIONS_CONNECTION,
"openai_responses":
ResourceName.ChatModel.Java.OPENAI_RESPONSES_CONNECTION,
"anthropic": ResourceName.ChatModel.Java.ANTHROPIC_CONNECTION,
+ "gemini": ResourceName.ChatModel.Java.GEMINI_CONNECTION,
+ "azure_openai":
ResourceName.ChatModel.Java.AZURE_OPENAI_CONNECTION,
"azure": ResourceName.ChatModel.Java.AZURE_CONNECTION,
"bedrock": ResourceName.ChatModel.Java.BEDROCK_CONNECTION,
},
@@ -89,6 +91,8 @@ CLAZZ_ALIASES: Dict[ResourceType, Dict[str, Dict[str, str]]]
= {
"openai_completions":
ResourceName.ChatModel.Java.OPENAI_COMPLETIONS_SETUP,
"openai_responses":
ResourceName.ChatModel.Java.OPENAI_RESPONSES_SETUP,
"anthropic": ResourceName.ChatModel.Java.ANTHROPIC_SETUP,
+ "gemini": ResourceName.ChatModel.Java.GEMINI_SETUP,
+ "azure_openai": ResourceName.ChatModel.Java.AZURE_OPENAI_SETUP,
"azure": ResourceName.ChatModel.Java.AZURE_SETUP,
"bedrock": ResourceName.ChatModel.Java.BEDROCK_SETUP,
},
@@ -118,9 +122,13 @@ CLAZZ_ALIASES: Dict[ResourceType, Dict[str, Dict[str,
str]]] = {
ResourceType.VECTOR_STORE: {
"python": {
"chroma": ResourceName.VectorStore.CHROMA_VECTOR_STORE,
+ "mem0": ResourceName.VectorStore.MEM0_VECTOR_STORE,
},
"java": {
"elasticsearch":
ResourceName.VectorStore.Java.ELASTICSEARCH_VECTOR_STORE,
+ "opensearch":
ResourceName.VectorStore.Java.OPENSEARCH_VECTOR_STORE,
+ "s3_vectors":
ResourceName.VectorStore.Java.S3_VECTORS_VECTOR_STORE,
+ "milvus": ResourceName.VectorStore.Java.MILVUS_VECTOR_STORE,
},
},
}
diff --git a/python/flink_agents/api/yaml/tests/test_aliases.py
b/python/flink_agents/api/yaml/tests/test_aliases.py
index b43db0d4..a6d728c6 100644
--- a/python/flink_agents/api/yaml/tests/test_aliases.py
+++ b/python/flink_agents/api/yaml/tests/test_aliases.py
@@ -127,6 +127,41 @@ def test_resolve_clazz_default_language_is_python() ->
None:
assert default == explicit
+def test_resolve_clazz_covers_chat_model_java_gemini_and_azure_openai() ->
None:
+ assert resolve_clazz("gemini", ResourceType.CHAT_MODEL_CONNECTION,
"java").endswith(
+ "GeminiChatModelConnection"
+ )
+ assert resolve_clazz("gemini", ResourceType.CHAT_MODEL, "java").endswith(
+ "GeminiChatModelSetup"
+ )
+ # `azure_openai` is the only alias whose Java/Python simple names collide
+ # (AzureOpenAIChatModelConnection); pin the package so a Java entry that
lost
+ # its `.Java` suffix and resolved to the Python class would fail here.
+ azure_conn = resolve_clazz(
+ "azure_openai", ResourceType.CHAT_MODEL_CONNECTION, "java"
+ )
+ assert azure_conn.startswith("org.apache.flink.agents")
+ assert azure_conn.endswith("AzureOpenAIChatModelConnection")
+ azure_setup = resolve_clazz("azure_openai", ResourceType.CHAT_MODEL,
"java")
+ assert azure_setup.startswith("org.apache.flink.agents")
+ assert azure_setup.endswith("AzureOpenAIChatModelSetup")
+
+
+def test_resolve_clazz_covers_vector_store_java_and_python() -> None:
+ assert resolve_clazz("opensearch", ResourceType.VECTOR_STORE,
"java").endswith(
+ "OpenSearchVectorStore"
+ )
+ assert resolve_clazz("s3_vectors", ResourceType.VECTOR_STORE,
"java").endswith(
+ "S3VectorsVectorStore"
+ )
+ assert resolve_clazz("milvus", ResourceType.VECTOR_STORE, "java").endswith(
+ "MilvusVectorStore"
+ )
+ assert resolve_clazz("mem0", ResourceType.VECTOR_STORE, "python").endswith(
+ "Mem0VectorStore"
+ )
+
+
def test_java_wrapper_clazz_table_covers_supported_types() -> None:
# The Python-side wrappers must exist for every cross-language type
expected = {