You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by xt...@apache.org on 2025/09/17 01:43:19 UTC

(flink-agents) 01/03: [api] Add correspond annotation after sperate chat model abstraction.

This is an automated email from the ASF dual-hosted git repository.

xtsong pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/flink-agents.git

commit 36df0b4b25f67724d284eb6be4a65c0faea9a2ec
Author: WenjinXie <we...@gmail.com>
AuthorDate: Mon Sep 15 16:11:26 2025 +0800

    [api] Add correspond annotation after sperate chat model abstraction.
---
 .../{ChatModel.java => ChatModelConnection.java}   |  8 ++-----
 .../{ChatModel.java => ChatModelSetup.java}        |  6 +-----
 .../flink/agents/examples/AgentWithResource.java   |  4 ++--
 .../org/apache/flink/agents/plan/AgentPlan.java    | 25 +++++++++++++---------
 .../agents/plan/AgentPlanDeclareChatModelTest.java |  4 ++--
 .../apache/flink/agents/plan/AgentPlanTest.java    |  4 ++--
 6 files changed, 24 insertions(+), 27 deletions(-)

diff --git a/api/src/main/java/org/apache/flink/agents/api/annotation/ChatModel.java b/api/src/main/java/org/apache/flink/agents/api/annotation/ChatModelConnection.java
similarity index 85%
copy from api/src/main/java/org/apache/flink/agents/api/annotation/ChatModel.java
copy to api/src/main/java/org/apache/flink/agents/api/annotation/ChatModelConnection.java
index e74d2ef..4331f85 100644
--- a/api/src/main/java/org/apache/flink/agents/api/annotation/ChatModel.java
+++ b/api/src/main/java/org/apache/flink/agents/api/annotation/ChatModelConnection.java
@@ -29,10 +29,6 @@ import java.lang.annotation.Target;
  * <p>Fields annotated with @ChatModel will be scanned during agent plan creation and corresponding
  * resource providers will be created to manage the chat model instances.
  */
-@Target({ElementType.FIELD, ElementType.METHOD})
+@Target({ElementType.METHOD})
 @Retention(RetentionPolicy.RUNTIME)
-public @interface ChatModel {
-    String CHAT_MODEL_CLASS_NAME = "clazz";
-    String CHAT_MODEL_ARGUMENTS = "arguments";
-    String CHAT_MODEL_ARGUMENTS_TYPES = "types";
-}
+public @interface ChatModelConnection {}
diff --git a/api/src/main/java/org/apache/flink/agents/api/annotation/ChatModel.java b/api/src/main/java/org/apache/flink/agents/api/annotation/ChatModelSetup.java
similarity index 88%
rename from api/src/main/java/org/apache/flink/agents/api/annotation/ChatModel.java
rename to api/src/main/java/org/apache/flink/agents/api/annotation/ChatModelSetup.java
index e74d2ef..e4f4085 100644
--- a/api/src/main/java/org/apache/flink/agents/api/annotation/ChatModel.java
+++ b/api/src/main/java/org/apache/flink/agents/api/annotation/ChatModelSetup.java
@@ -31,8 +31,4 @@ import java.lang.annotation.Target;
  */
 @Target({ElementType.FIELD, ElementType.METHOD})
 @Retention(RetentionPolicy.RUNTIME)
-public @interface ChatModel {
-    String CHAT_MODEL_CLASS_NAME = "clazz";
-    String CHAT_MODEL_ARGUMENTS = "arguments";
-    String CHAT_MODEL_ARGUMENTS_TYPES = "types";
-}
+public @interface ChatModelSetup {}
diff --git a/examples/src/main/java/org/apache/flink/agents/examples/AgentWithResource.java b/examples/src/main/java/org/apache/flink/agents/examples/AgentWithResource.java
index 1821095..f6d5d97 100644
--- a/examples/src/main/java/org/apache/flink/agents/examples/AgentWithResource.java
+++ b/examples/src/main/java/org/apache/flink/agents/examples/AgentWithResource.java
@@ -22,7 +22,7 @@ import org.apache.flink.agents.api.Agent;
 import org.apache.flink.agents.api.InputEvent;
 import org.apache.flink.agents.api.OutputEvent;
 import org.apache.flink.agents.api.annotation.Action;
-import org.apache.flink.agents.api.annotation.ChatModel;
+import org.apache.flink.agents.api.annotation.ChatModelSetup;
 import org.apache.flink.agents.api.annotation.Tool;
 import org.apache.flink.agents.api.annotation.ToolParam;
 import org.apache.flink.agents.api.chat.messages.ChatMessage;
@@ -95,7 +95,7 @@ public class AgentWithResource extends Agent {
         return new Prompt("This is a test prompt");
     }
 
-    @ChatModel
+    @ChatModelSetup
     public static ResourceDescriptor myChatModel() {
         return ResourceDescriptor.Builder.newBuilder(MockChatModel.class.getName())
                 .addInitialArgument("endpoint", "127.0.0.1")
diff --git a/plan/src/main/java/org/apache/flink/agents/plan/AgentPlan.java b/plan/src/main/java/org/apache/flink/agents/plan/AgentPlan.java
index f46f32e..ffd820c 100644
--- a/plan/src/main/java/org/apache/flink/agents/plan/AgentPlan.java
+++ b/plan/src/main/java/org/apache/flink/agents/plan/AgentPlan.java
@@ -20,7 +20,8 @@ package org.apache.flink.agents.plan;
 
 import org.apache.flink.agents.api.Agent;
 import org.apache.flink.agents.api.Event;
-import org.apache.flink.agents.api.annotation.ChatModel;
+import org.apache.flink.agents.api.annotation.ChatModelConnection;
+import org.apache.flink.agents.api.annotation.ChatModelSetup;
 import org.apache.flink.agents.api.annotation.Prompt;
 import org.apache.flink.agents.api.annotation.Tool;
 import org.apache.flink.agents.api.resource.Resource;
@@ -237,6 +238,13 @@ public class AgentPlan implements Serializable {
         }
     }
 
+    private void extractResource(ResourceType type, Method method) throws Exception {
+        String name = method.getName();
+        ResourceDescriptor descriptor = (ResourceDescriptor) method.invoke(null);
+        JavaResourceProvider provider = new JavaResourceProvider(name, type, descriptor);
+        addResourceProvider(provider);
+    }
+
     private void extractResourceProvidersFromAgent(Agent agent) throws Exception {
         Class<?> agentClass = agent.getClass();
 
@@ -269,8 +277,8 @@ public class AgentPlan implements Serializable {
             }
 
             // Check for @ChatModel annotation
-            if (field.isAnnotationPresent(ChatModel.class)) {
-                ChatModel chatModelAnnotation = field.getAnnotation(ChatModel.class);
+            if (field.isAnnotationPresent(ChatModelSetup.class)) {
+                ChatModelSetup chatModelAnnotation = field.getAnnotation(ChatModelSetup.class);
                 String resourceName = field.getName();
 
                 try {
@@ -320,13 +328,10 @@ public class AgentPlan implements Serializable {
                                 promptName, ResourceType.PROMPT, prompt);
 
                 addResourceProvider(provider);
-            } else if (method.isAnnotationPresent(ChatModel.class)) {
-                String chatModelName = method.getName();
-                ResourceDescriptor descriptor = (ResourceDescriptor) method.invoke(null);
-                JavaResourceProvider provider =
-                        new JavaResourceProvider(
-                                chatModelName, ResourceType.CHAT_MODEL, descriptor);
-                addResourceProvider(provider);
+            } else if (method.isAnnotationPresent(ChatModelSetup.class)) {
+                extractResource(ResourceType.CHAT_MODEL, method);
+            } else if (method.isAnnotationPresent(ChatModelConnection.class)) {
+                extractResource(ResourceType.CHAT_MODEL_CONNECTION, method);
             }
         }
     }
diff --git a/plan/src/test/java/org/apache/flink/agents/plan/AgentPlanDeclareChatModelTest.java b/plan/src/test/java/org/apache/flink/agents/plan/AgentPlanDeclareChatModelTest.java
index 994f6be..4ed0b24 100644
--- a/plan/src/test/java/org/apache/flink/agents/plan/AgentPlanDeclareChatModelTest.java
+++ b/plan/src/test/java/org/apache/flink/agents/plan/AgentPlanDeclareChatModelTest.java
@@ -24,7 +24,7 @@ import org.apache.flink.agents.api.Agent;
 import org.apache.flink.agents.api.Event;
 import org.apache.flink.agents.api.InputEvent;
 import org.apache.flink.agents.api.annotation.Action;
-import org.apache.flink.agents.api.annotation.ChatModel;
+import org.apache.flink.agents.api.annotation.ChatModelSetup;
 import org.apache.flink.agents.api.chat.messages.ChatMessage;
 import org.apache.flink.agents.api.chat.messages.MessageRole;
 import org.apache.flink.agents.api.chat.model.BaseChatModelSetup;
@@ -70,7 +70,7 @@ class AgentPlanDeclareChatModelTest {
     }
 
     static class ChatAgent extends Agent {
-        @ChatModel
+        @ChatModelSetup
         public static ResourceDescriptor testChatModel() {
             return ResourceDescriptor.Builder.newBuilder(MockChatModel.class.getName())
                     .addInitialArgument("endpoint", "127.0.0.1")
diff --git a/plan/src/test/java/org/apache/flink/agents/plan/AgentPlanTest.java b/plan/src/test/java/org/apache/flink/agents/plan/AgentPlanTest.java
index 0837f0f..f783b4e 100644
--- a/plan/src/test/java/org/apache/flink/agents/plan/AgentPlanTest.java
+++ b/plan/src/test/java/org/apache/flink/agents/plan/AgentPlanTest.java
@@ -22,7 +22,7 @@ import org.apache.flink.agents.api.Agent;
 import org.apache.flink.agents.api.Event;
 import org.apache.flink.agents.api.InputEvent;
 import org.apache.flink.agents.api.OutputEvent;
-import org.apache.flink.agents.api.annotation.ChatModel;
+import org.apache.flink.agents.api.annotation.ChatModelSetup;
 import org.apache.flink.agents.api.annotation.Tool;
 import org.apache.flink.agents.api.context.RunnerContext;
 import org.apache.flink.agents.api.resource.Resource;
@@ -114,7 +114,7 @@ public class AgentPlanTest {
 
         @Tool private TestTool myTool = new TestTool("myTool");
 
-        @ChatModel
+        @ChatModelSetup
         private TestSerializableChatModel chatModel =
                 new TestSerializableChatModel("defaultChatModel");