Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 0 additions & 9 deletions experimental/ai/impl/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,10 @@
<artifactId>serverlessworkflow-experimental-ai-impl</artifactId>
<name>ServelessWorkflow:: Experimental:: AI:: Impl</name>
<dependencies>
<dependency>
<groupId>io.serverlessworkflow</groupId>
<artifactId>serverlessworkflow-experimental-types</artifactId>
</dependency>
<dependency>
<groupId>io.serverlessworkflow</groupId>
<artifactId>serverlessworkflow-impl-core</artifactId>
</dependency>
<dependency>
<groupId>io.serverlessworkflow</groupId>
<artifactId>serverlessworkflow-experimental-types</artifactId>
</dependency>
<dependency>
<groupId>io.serverlessworkflow</groupId>
<artifactId>serverlessworkflow-experimental-ai-types</artifactId>
Expand All @@ -31,7 +23,6 @@
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>1.1.0</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@

package io.serverlessworkflow.impl.executors.ai;

import io.serverlessworkflow.ai.api.types.CallAILangChainChatModel;
import io.serverlessworkflow.api.types.TaskBase;
import io.serverlessworkflow.api.types.ai.AbstractCallAIChatModelTask;
import io.serverlessworkflow.api.types.ai.CallAIChatModel;
import io.serverlessworkflow.api.types.ai.CallAILangChainChatModel;
import io.serverlessworkflow.impl.TaskContext;
import io.serverlessworkflow.impl.WorkflowApplication;
import io.serverlessworkflow.impl.WorkflowContext;
Expand All @@ -31,27 +31,24 @@

public class AIChatModelCallExecutor implements CallableTask<AbstractCallAIChatModelTask> {

private AIChatModelExecutor executor;

@Override
public void init(
AbstractCallAIChatModelTask task, WorkflowApplication application, ResourceLoader loader) {}
AbstractCallAIChatModelTask task, WorkflowApplication application, ResourceLoader loader) {
if (task instanceof CallAILangChainChatModel model) {
executor = new CallAILangChainChatModelExecutor(model);
} else if (task instanceof CallAIChatModel model) {
executor = new CallAIChatModelExecutor(model);
}
}

@Override
public CompletableFuture<WorkflowModel> apply(
WorkflowContext workflowContext, TaskContext taskContext, WorkflowModel input) {
WorkflowModelFactory modelFactory = workflowContext.definition().application().modelFactory();
if (taskContext.task() instanceof CallAILangChainChatModel callAILangChainChatModel) {
return CompletableFuture.completedFuture(
modelFactory.fromAny(
new CallAILangChainChatModelExecutor()
.apply(callAILangChainChatModel, input.asJavaObject())));
} else if (taskContext.task() instanceof CallAIChatModel callAIChatModel) {
return CompletableFuture.completedFuture(
modelFactory.fromAny(
new CallAIChatModelExecutor().apply(callAIChatModel, input.asJavaObject())));
}
throw new IllegalArgumentException(
"AIChatModelCallExecutor can only process CallAIChatModel tasks, but received: "
+ taskContext.task().getClass().getName());
return CompletableFuture.completedFuture(
modelFactory.fromAny(executor.apply(input.asJavaObject())));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

package io.serverlessworkflow.impl.executors.ai;

public abstract class AbstractCallAIChatModelExecutor<T> {
import java.util.function.UnaryOperator;

public abstract Object apply(T callAIChatModel, Object javaObject);
}
public interface AIChatModelExecutor extends UnaryOperator<Object> {}
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,18 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CallAIChatModelExecutor extends AbstractCallAIChatModelExecutor<CallAIChatModel> {
public class CallAIChatModelExecutor implements AIChatModelExecutor {

private static final Pattern VARIABLE_PATTERN = Pattern.compile("\\{\\{\\s*(.+?)\\s*\\}\\}");

private final CallAIChatModel callAIChatModel;

public CallAIChatModelExecutor(CallAIChatModel callAIChatModel) {
this.callAIChatModel = callAIChatModel;
}

@Override
public Object apply(CallAIChatModel callAIChatModel, Object javaObject) {
public Object apply(Object javaObject) {
validate(callAIChatModel, javaObject);

ChatModel chatModel = createChatModel(callAIChatModel);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,23 @@
import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.service.AiServices;
import dev.langchain4j.service.V;
import io.serverlessworkflow.ai.api.types.CallAILangChainChatModel;
import io.serverlessworkflow.api.types.ai.CallAILangChainChatModel;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class CallAILangChainChatModelExecutor
extends AbstractCallAIChatModelExecutor<CallAILangChainChatModel> {
public class CallAILangChainChatModelExecutor implements AIChatModelExecutor {

private final CallAILangChainChatModel callAIChatModel;

public CallAILangChainChatModelExecutor(CallAILangChainChatModel callAIChatModel) {
this.callAIChatModel = callAIChatModel;
}

@Override
public Object apply(CallAILangChainChatModel callAIChatModel, Object javaObject) {
public Object apply(Object javaObject) {
ChatModel chatModel = callAIChatModel.getChatModel();
Class<?> chatModelRequest = callAIChatModel.getChatModelRequest();
Map<String, Object> substitutions = (Map<String, Object>) javaObject;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,5 @@
import io.serverlessworkflow.api.types.ai.CallAIChatModel;

public interface ChatModelService {

ChatModel getChatModel(CallAIChatModel.ChatModelPreferences chatModelPreferences);
}

This file was deleted.

5 changes: 0 additions & 5 deletions experimental/ai/types/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,10 @@
<groupId>io.serverlessworkflow</groupId>
<artifactId>serverlessworkflow-experimental-types</artifactId>
</dependency>
<dependency>
<groupId>io.serverlessworkflow</groupId>
<artifactId>serverlessworkflow-impl-core</artifactId>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>1.1.0</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,9 @@
* limitations under the License.
*/

package io.serverlessworkflow.ai.api.types;
package io.serverlessworkflow.api.types.ai;

import dev.langchain4j.model.chat.ChatModel;
import io.serverlessworkflow.api.types.ai.AbstractCallAIChatModelTask;

public class CallAILangChainChatModel extends AbstractCallAIChatModelTask {

Expand Down