Skip to content

Commit aa7368b

Browse files
Upgrade to langchain-agentic:1.6.0-beta12 (#837)
* Improve compatibility with LC4J Signed-off-by: Ricardo Zanini <[email protected]> * Upgrade to langchain-agentic:1.6.0-beta12 Signed-off-by: Ricardo Zanini <[email protected]> * Add bipredicate to exitCondition Signed-off-by: Ricardo Zanini <[email protected]> --------- Signed-off-by: Ricardo Zanini <[email protected]>
1 parent f2439ce commit aa7368b

File tree

7 files changed

+87
-4
lines changed

7 files changed

+87
-4
lines changed

experimental/fluent/agentic-langchain4j/src/main/java/io/serverlessworkflow/fluent/agentic/langchain4j/ConditionalAgentServiceImpl.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,14 @@
1515
*/
1616
package io.serverlessworkflow.fluent.agentic.langchain4j;
1717

18+
import dev.langchain4j.agentic.agent.AgentRequest;
19+
import dev.langchain4j.agentic.agent.AgentResponse;
1820
import dev.langchain4j.agentic.internal.AgentExecutor;
1921
import dev.langchain4j.agentic.scope.AgenticScope;
2022
import dev.langchain4j.agentic.workflow.ConditionalAgentService;
2123
import java.util.Arrays;
2224
import java.util.List;
25+
import java.util.function.Consumer;
2326
import java.util.function.Predicate;
2427

2528
public class ConditionalAgentServiceImpl<T>
@@ -45,6 +48,18 @@ public ConditionalAgentService<T> subAgents(List<AgentExecutor> agentExecutors)
4548
return this.subAgents(agentExecutors.toArray());
4649
}
4750

51+
@Override
52+
public ConditionalAgentService<T> beforeAgentInvocation(Consumer<AgentRequest> consumer) {
53+
throw new UnsupportedOperationException(
54+
"Feature not implemented yet. See: https://github.com/serverlessworkflow/sdk-java/issues/836");
55+
}
56+
57+
@Override
58+
public ConditionalAgentService<T> afterAgentInvocation(Consumer<AgentResponse> consumer) {
59+
throw new UnsupportedOperationException(
60+
"Feature not implemented yet. See: https://github.com/serverlessworkflow/sdk-java/issues/836");
61+
}
62+
4863
@Override
4964
public ConditionalAgentService<T> subAgents(Predicate<AgenticScope> condition, Object... agents) {
5065
this.workflowBuilder.tasks(

experimental/fluent/agentic-langchain4j/src/main/java/io/serverlessworkflow/fluent/agentic/langchain4j/LoopAgentServiceImpl.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,15 @@
1515
*/
1616
package io.serverlessworkflow.fluent.agentic.langchain4j;
1717

18+
import dev.langchain4j.agentic.agent.AgentRequest;
19+
import dev.langchain4j.agentic.agent.AgentResponse;
1820
import dev.langchain4j.agentic.internal.AgentExecutor;
1921
import dev.langchain4j.agentic.scope.AgenticScope;
2022
import dev.langchain4j.agentic.workflow.LoopAgentService;
2123
import io.serverlessworkflow.fluent.agentic.LoopAgentsBuilder;
2224
import java.util.List;
25+
import java.util.function.BiPredicate;
26+
import java.util.function.Consumer;
2327
import java.util.function.Predicate;
2428

2529
public class LoopAgentServiceImpl<T> extends AbstractAgentService<T, LoopAgentService<T>>
@@ -47,6 +51,18 @@ public LoopAgentService<T> exitCondition(Predicate<AgenticScope> exitCondition)
4751
return this;
4852
}
4953

54+
@Override
55+
public LoopAgentService<T> exitCondition(BiPredicate<AgenticScope, Integer> biPredicate) {
56+
this.loopAgentsBuilder.exitCondition(biPredicate);
57+
return this;
58+
}
59+
60+
@Override
61+
public LoopAgentService<T> testExitAtLoopEnd(boolean b) {
62+
throw new UnsupportedOperationException(
63+
"Feature not implemented yet. See: https://github.com/serverlessworkflow/sdk-java/issues/836");
64+
}
65+
5066
@Override
5167
public LoopAgentService<T> subAgents(Object... agents) {
5268
this.loopAgentsBuilder.subAgents(agents);
@@ -60,4 +76,16 @@ public LoopAgentService<T> subAgents(List<AgentExecutor> agentExecutors) {
6076
this.workflowBuilder.tasks(t -> t.loop(this.loopAgentsBuilder));
6177
return this;
6278
}
79+
80+
@Override
81+
public LoopAgentService<T> beforeAgentInvocation(Consumer<AgentRequest> consumer) {
82+
throw new UnsupportedOperationException(
83+
"Feature not implemented yet. See: https://github.com/serverlessworkflow/sdk-java/issues/836");
84+
}
85+
86+
@Override
87+
public LoopAgentService<T> afterAgentInvocation(Consumer<AgentResponse> consumer) {
88+
throw new UnsupportedOperationException(
89+
"Feature not implemented yet. See: https://github.com/serverlessworkflow/sdk-java/issues/836");
90+
}
6391
}

experimental/fluent/agentic-langchain4j/src/main/java/io/serverlessworkflow/fluent/agentic/langchain4j/ParallelAgentServiceImpl.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,15 @@
1515
*/
1616
package io.serverlessworkflow.fluent.agentic.langchain4j;
1717

18+
import dev.langchain4j.agentic.agent.AgentRequest;
19+
import dev.langchain4j.agentic.agent.AgentResponse;
1820
import dev.langchain4j.agentic.internal.AgentExecutor;
1921
import dev.langchain4j.agentic.workflow.ParallelAgentService;
2022
import io.serverlessworkflow.impl.ExecutorServiceHolder;
2123
import java.util.List;
2224
import java.util.concurrent.Executor;
2325
import java.util.concurrent.ExecutorService;
26+
import java.util.function.Consumer;
2427

2528
public class ParallelAgentServiceImpl<T> extends AbstractAgentService<T, ParallelAgentService<T>>
2629
implements ParallelAgentService<T> {
@@ -44,6 +47,18 @@ public ParallelAgentService<T> subAgents(List<AgentExecutor> agentExecutors) {
4447
return this.subAgents(agentExecutors.toArray());
4548
}
4649

50+
@Override
51+
public ParallelAgentService<T> beforeAgentInvocation(Consumer<AgentRequest> consumer) {
52+
throw new UnsupportedOperationException(
53+
"Feature not implemented yet. See: https://github.com/serverlessworkflow/sdk-java/issues/836");
54+
}
55+
56+
@Override
57+
public ParallelAgentService<T> afterAgentInvocation(Consumer<AgentResponse> consumer) {
58+
throw new UnsupportedOperationException(
59+
"Feature not implemented yet. See: https://github.com/serverlessworkflow/sdk-java/issues/836");
60+
}
61+
4762
@Override
4863
public ParallelAgentService<T> executor(Executor executor) {
4964
if (!(executor instanceof ExecutorService)) {

experimental/fluent/agentic-langchain4j/src/main/java/io/serverlessworkflow/fluent/agentic/langchain4j/SequentialAgentServiceImpl.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,12 @@
1515
*/
1616
package io.serverlessworkflow.fluent.agentic.langchain4j;
1717

18+
import dev.langchain4j.agentic.agent.AgentRequest;
19+
import dev.langchain4j.agentic.agent.AgentResponse;
1820
import dev.langchain4j.agentic.internal.AgentExecutor;
1921
import dev.langchain4j.agentic.workflow.SequentialAgentService;
2022
import java.util.List;
23+
import java.util.function.Consumer;
2124

2225
public class SequentialAgentServiceImpl<T>
2326
extends AbstractAgentService<T, SequentialAgentService<T>>
@@ -42,4 +45,16 @@ public SequentialAgentService<T> subAgents(List<AgentExecutor> agentExecutors) {
4245
this.subAgents(agentExecutors.toArray());
4346
return this;
4447
}
48+
49+
@Override
50+
public SequentialAgentService<T> beforeAgentInvocation(Consumer<AgentRequest> consumer) {
51+
throw new UnsupportedOperationException(
52+
"Feature not implemented yet. See: https://github.com/serverlessworkflow/sdk-java/issues/836");
53+
}
54+
55+
@Override
56+
public SequentialAgentService<T> afterAgentInvocation(Consumer<AgentResponse> consumer) {
57+
throw new UnsupportedOperationException(
58+
"Feature not implemented yet. See: https://github.com/serverlessworkflow/sdk-java/issues/836");
59+
}
4560
}

experimental/fluent/agentic/src/main/java/io/serverlessworkflow/fluent/agentic/AgentAdapters.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,20 @@
1818
import static dev.langchain4j.agentic.internal.AgentUtil.agentsToExecutors;
1919

2020
import dev.langchain4j.agentic.internal.AgentExecutor;
21-
import dev.langchain4j.agentic.internal.AgentSpecification;
2221
import dev.langchain4j.agentic.scope.AgenticScope;
2322
import dev.langchain4j.agentic.scope.DefaultAgenticScope;
2423
import io.serverlessworkflow.api.types.func.LoopPredicateIndex;
2524
import java.util.List;
25+
import java.util.function.BiPredicate;
2626
import java.util.function.Function;
2727
import java.util.function.Predicate;
28-
import java.util.stream.Stream;
2928

3029
public final class AgentAdapters {
3130

3231
private AgentAdapters() {}
3332

3433
public static List<AgentExecutor> toExecutors(Object... agents) {
35-
return agentsToExecutors(Stream.of(agents).map(AgentSpecification.class::cast).toArray());
34+
return agentsToExecutors(agents);
3635
}
3736

3837
public static Function<DefaultAgenticScope, Object> toFunction(AgentExecutor exec) {
@@ -42,4 +41,9 @@ public static Function<DefaultAgenticScope, Object> toFunction(AgentExecutor exe
4241
public static LoopPredicateIndex<AgenticScope, Object> toWhile(Predicate<AgenticScope> exit) {
4342
return (model, item, idx) -> !exit.test(model);
4443
}
44+
45+
public static LoopPredicateIndex<AgenticScope, Object> toWhile(
46+
BiPredicate<AgenticScope, Integer> exit) {
47+
return (model, item, idx) -> !exit.test(model, idx);
48+
}
4549
}

experimental/fluent/agentic/src/main/java/io/serverlessworkflow/fluent/agentic/LoopAgentsBuilder.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import io.serverlessworkflow.fluent.func.FuncTaskItemListBuilder;
2323
import java.util.List;
2424
import java.util.UUID;
25+
import java.util.function.BiPredicate;
2526
import java.util.function.ObjIntConsumer;
2627
import java.util.function.Predicate;
2728
import java.util.stream.IntStream;
@@ -67,6 +68,11 @@ public LoopAgentsBuilder exitCondition(Predicate<AgenticScope> exitCondition) {
6768
return this;
6869
}
6970

71+
public LoopAgentsBuilder exitCondition(BiPredicate<AgenticScope, Integer> exitCondition) {
72+
this.forTask.withWhile(AgentAdapters.toWhile(exitCondition), AgenticScope.class);
73+
return this;
74+
}
75+
7076
public ForTaskFunction build() {
7177
this.forTask.setDo(this.funcDelegate.build());
7278
this.forTask.withCollection(ignored -> IntStream.range(0, maxIterations).boxed().toList());

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@
9494
<version.org.hibernate.validator>9.0.1.Final</version.org.hibernate.validator>
9595
<version.org.glassfish.expressly>6.0.0</version.org.glassfish.expressly>
9696
<!-- Experimental modules from langchain4j -->
97-
<version.dev.langchain4j.beta>1.5.0-beta11</version.dev.langchain4j.beta>
97+
<version.dev.langchain4j.beta>1.6.0-beta12</version.dev.langchain4j.beta>
9898
<!-- Base langchain4j version -->
9999
<version.dev.langchain4j>1.6.0</version.dev.langchain4j>
100100

0 commit comments

Comments
 (0)