From 88bc458aa49026f0c5f27ae0dd02a8621637677c Mon Sep 17 00:00:00 2001 From: bsorrentino Date: Tue, 3 Dec 2024 10:10:39 +0100 Subject: [PATCH] docs: update documentation --- how-tos/llm-streaming.ipynb | 7 + how-tos/plantuml.ipynb | 7 + how-tos/src/site/markdown/adaptiverag.md | 66 ------- how-tos/src/site/markdown/agentexecutor.md | 82 -------- how-tos/src/site/markdown/index.md | 10 + how-tos/src/site/markdown/llm-streaming.md | 74 +------ how-tos/src/site/markdown/logging.md | 39 ---- how-tos/src/site/markdown/persistence.md | 64 ------ how-tos/src/site/markdown/plantuml.md | 14 +- how-tos/src/site/markdown/subgraph.md | 187 ++++++++++++++++++ .../markdown/subgraph_files/subgraph_9_0.png | Bin 0 -> 28872 bytes how-tos/src/site/markdown/time-travel.md | 69 ------- how-tos/src/site/markdown/wait-user-input.md | 75 ------- how-tos/src/site/site.xml | 2 + how-tos/subgraph.ipynb | 2 +- 15 files changed, 217 insertions(+), 481 deletions(-) create mode 100644 how-tos/src/site/markdown/subgraph.md create mode 100644 how-tos/src/site/markdown/subgraph_files/subgraph_9_0.png diff --git a/how-tos/llm-streaming.ipynb b/how-tos/llm-streaming.ipynb index 930d6e92..ed13f2c0 100644 --- a/how-tos/llm-streaming.ipynb +++ b/how-tos/llm-streaming.ipynb @@ -1,5 +1,12 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Langchain4j LLM streaming" + ] + }, { "cell_type": "code", "execution_count": 1, diff --git a/how-tos/plantuml.ipynb b/how-tos/plantuml.ipynb index 94b22459..c440029e 100644 --- a/how-tos/plantuml.ipynb +++ b/how-tos/plantuml.ipynb @@ -1,5 +1,12 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# PlantUML diagrams" + ] + }, { "cell_type": "code", "execution_count": 1, diff --git a/how-tos/src/site/markdown/adaptiverag.md b/how-tos/src/site/markdown/adaptiverag.md index 4e770805..a56f65bd 100644 --- a/how-tos/src/site/markdown/adaptiverag.md +++ b/how-tos/src/site/markdown/adaptiverag.md @@ -1,72 +1,6 @@ # Adaptive RAG -```java -String userHomeDir = System.getProperty("user.home"); -String localRespoUrl = "file://" + userHomeDir + "/.m2/repository/"; -String langchain4jVersion = "0.35.0" -``` - - -```java -%dependency /add-repo local \{localRespoUrl} release|never snapshot|always -%dependency /list-repos -``` - - Repository local url: file:///Users/bsorrentino/.m2/repository/ added. - Repositories count: 4 - name: central url: https://repo.maven.apache.org/maven2/ release:true update:never snapshot:false update:never - name: jboss url: https://repository.jboss.org/nexus/content/repositories/releases/ release:true update:never snapshot:false update:never - name: atlassian url: https://packages.atlassian.com/maven/public release:true update:never snapshot:false update:never - name: local url: file:///Users/bsorrentino/.m2/repository/ release:true update:never snapshot:true update:always -  - - -```java -%dependency /add org.slf4j:slf4j-jdk14:2.0.9 -%dependency /add org.bsc.langgraph4j:langgraph4j-core-jdk8:1.0-SNAPSHOT -%dependency /add org.bsc.langgraph4j:langgraph4j-langchain4j:1.0-SNAPSHOT -%dependency /add dev.langchain4j:langchain4j:\{langchain4jVersion} -%dependency /add dev.langchain4j:langchain4j-open-ai:\{langchain4jVersion} - -%dependency /resolve -``` - - Adding dependency org.slf4j:slf4j-jdk14:2.0.9 - Adding dependency org.bsc.langgraph4j:langgraph4j-core-jdk8:1.0-SNAPSHOT - Adding dependency org.bsc.langgraph4j:langgraph4j-langchain4j:1.0-SNAPSHOT - Adding dependency dev.langchain4j:langchain4j:0.35.0 - Adding dependency dev.langchain4j:langchain4j-open-ai:0.35.0 - Solving dependencies - Resolved artifacts count: 26 - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/slf4j/slf4j-jdk14/2.0.9/slf4j-jdk14-2.0.9.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/langgraph4j/langgraph4j-core-jdk8/1.0-SNAPSHOT/langgraph4j-core-jdk8-1.0-SNAPSHOT.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/async/async-generator-jdk8/2.2.0/async-generator-jdk8-2.2.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/langgraph4j/langgraph4j-langchain4j/1.0-SNAPSHOT/langgraph4j-langchain4j-1.0-SNAPSHOT.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/langchain4j/langchain4j/0.35.0/langchain4j-0.35.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/langchain4j/langchain4j-core/0.35.0/langchain4j-core-0.35.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/apache/opennlp/opennlp-tools/1.9.4/opennlp-tools-1.9.4.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/langchain4j/langchain4j-open-ai/0.35.0/langchain4j-open-ai-0.35.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/ai4j/openai4j/0.22.0/openai4j-0.22.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/retrofit2/retrofit/2.9.0/retrofit-2.9.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/retrofit2/converter-jackson/2.9.0/converter-jackson-2.9.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/fasterxml/jackson/core/jackson-databind/2.17.2/jackson-databind-2.17.2.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/fasterxml/jackson/core/jackson-annotations/2.17.2/jackson-annotations-2.17.2.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/fasterxml/jackson/core/jackson-core/2.17.2/jackson-core-2.17.2.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okhttp3/okhttp/4.12.0/okhttp-4.12.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okio/okio/3.6.0/okio-3.6.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okio/okio-jvm/3.6.0/okio-jvm-3.6.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okhttp3/okhttp-sse/4.12.0/okhttp-sse-4.12.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/annotations/13.0/annotations-13.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/knuddels/jtokkit/1.1.0/jtokkit-1.1.0.jar -  - ## Initialize Logger diff --git a/how-tos/src/site/markdown/agentexecutor.md b/how-tos/src/site/markdown/agentexecutor.md index 0d7c8004..833f0e37 100644 --- a/how-tos/src/site/markdown/agentexecutor.md +++ b/how-tos/src/site/markdown/agentexecutor.md @@ -1,88 +1,6 @@ # Agent Executor -```java -String userHomeDir = System.getProperty("user.home"); -String localRespoUrl = "file://" + userHomeDir + "/.m2/repository/"; -String langchain4jVersion = "0.35.0" -``` - -add local maven repository - - -```java -%dependency /add-repo local \{localRespoUrl} release|never snapshot|always -%dependency /list-repos - -``` - - Repository local url: file:///Users/bsorrentino/.m2/repository/ added. - Repositories count: 4 - name: central url: https://repo.maven.apache.org/maven2/ release:true update:never snapshot:false update:never - name: jboss url: https://repository.jboss.org/nexus/content/repositories/releases/ release:true update:never snapshot:false update:never - name: atlassian url: https://packages.atlassian.com/maven/public release:true update:never snapshot:false update:never - name: local url: file:///Users/bsorrentino/.m2/repository/ release:true update:never snapshot:true update:always -  - -Remove installed package from Jupiter cache - - -```bash -%%bash -rm -rf \{userHomeDir}/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/langgraph4j -``` - -Install required maven dependencies - - -```java -%dependency /add org.slf4j:slf4j-jdk14:2.0.9 -%dependency /add org.bsc.langgraph4j:langgraph4j-core-jdk8:1.0-SNAPSHOT -%dependency /add org.bsc.langgraph4j:langgraph4j-langchain4j:1.0-SNAPSHOT -%dependency /add org.bsc.langgraph4j:langgraph4j-agent-executor:1.0-SNAPSHOT -%dependency /add dev.langchain4j:langchain4j:\{langchain4jVersion} -%dependency /add dev.langchain4j:langchain4j-open-ai:\{langchain4jVersion} - -%dependency /resolve -``` - - Adding dependency org.slf4j:slf4j-jdk14:2.0.9 - Adding dependency org.bsc.langgraph4j:langgraph4j-core-jdk8:1.0-SNAPSHOT - Adding dependency org.bsc.langgraph4j:langgraph4j-langchain4j:1.0-SNAPSHOT - Adding dependency org.bsc.langgraph4j:langgraph4j-agent-executor:1.0-SNAPSHOT - Adding dependency dev.langchain4j:langchain4j:0.35.0 - Adding dependency dev.langchain4j:langchain4j-open-ai:0.35.0 - Solving dependencies - Resolved artifacts count: 27 - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/slf4j/slf4j-jdk14/2.0.9/slf4j-jdk14-2.0.9.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/langgraph4j/langgraph4j-core-jdk8/1.0-SNAPSHOT/langgraph4j-core-jdk8-1.0-SNAPSHOT.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/async/async-generator-jdk8/2.2.0/async-generator-jdk8-2.2.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/langgraph4j/langgraph4j-langchain4j/1.0-SNAPSHOT/langgraph4j-langchain4j-1.0-SNAPSHOT.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/langgraph4j/langgraph4j-agent-executor/1.0-SNAPSHOT/langgraph4j-agent-executor-1.0-SNAPSHOT.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/langchain4j/langchain4j/0.35.0/langchain4j-0.35.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/langchain4j/langchain4j-core/0.35.0/langchain4j-core-0.35.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/apache/opennlp/opennlp-tools/1.9.4/opennlp-tools-1.9.4.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/langchain4j/langchain4j-open-ai/0.35.0/langchain4j-open-ai-0.35.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/ai4j/openai4j/0.22.0/openai4j-0.22.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/retrofit2/retrofit/2.9.0/retrofit-2.9.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/retrofit2/converter-jackson/2.9.0/converter-jackson-2.9.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/fasterxml/jackson/core/jackson-databind/2.17.2/jackson-databind-2.17.2.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/fasterxml/jackson/core/jackson-annotations/2.17.2/jackson-annotations-2.17.2.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/fasterxml/jackson/core/jackson-core/2.17.2/jackson-core-2.17.2.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okhttp3/okhttp/4.12.0/okhttp-4.12.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okio/okio/3.6.0/okio-3.6.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okio/okio-jvm/3.6.0/okio-jvm-3.6.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okhttp3/okhttp-sse/4.12.0/okhttp-sse-4.12.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/annotations/13.0/annotations-13.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/knuddels/jtokkit/1.1.0/jtokkit-1.1.0.jar -  - Initialize Logger diff --git a/how-tos/src/site/markdown/index.md b/how-tos/src/site/markdown/index.md index 7e6018a8..a7350ee5 100644 --- a/how-tos/src/site/markdown/index.md +++ b/how-tos/src/site/markdown/index.md @@ -1,3 +1,13 @@ # 🦜🕸️ LangGraph4j How To(_s_) They are a collection of how-to(_s_) for LangGraph4j implemented using the [Java enabled Jupyter Notebook](https://github.com/padreati/rapaio-jupyter-kernel) + +## Samples + +* [Adaptive Rag](adaptiverag.md) +* [Agent Executor](agentexecutor.md) +* [How to add persistence to your graph](persistence.md) +* [How to view and update past graph state](time-travel.md) +* [Wait for user input](wait-user-input.md) +* [Langchain4j LLM Streaming](llm-streaming.md) +* [Subgraph](subgraph.md) diff --git a/how-tos/src/site/markdown/llm-streaming.md b/how-tos/src/site/markdown/llm-streaming.md index ff18390b..e96df822 100644 --- a/how-tos/src/site/markdown/llm-streaming.md +++ b/how-tos/src/site/markdown/llm-streaming.md @@ -1,76 +1,4 @@ -```java -String userHomeDir = System.getProperty("user.home"); -String localRespoUrl = "file://" + userHomeDir + "/.m2/repository/"; -String langchain4jVersion = "0.35.0" -``` - - -```java -%dependency /add-repo local \{localRespoUrl} release|never snapshot|always -%dependency /list-repos -``` - - Repository local url: file:///Users/bsorrentino/.m2/repository/ added. - Repositories count: 4 - name: central url: https://repo.maven.apache.org/maven2/ release:true update:never snapshot:false update:never - name: jboss url: https://repository.jboss.org/nexus/content/repositories/releases/ release:true update:never snapshot:false update:never - name: atlassian url: https://packages.atlassian.com/maven/public release:true update:never snapshot:false update:never - name: local url: file:///Users/bsorrentino/.m2/repository/ release:true update:never snapshot:true update:always -  - -Remove installed package from Jupiter cache - - -```bash -%%bash -rm -rf \{userHomeDir}/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/ -``` - - -```java -%dependency /add org.slf4j:slf4j-jdk14:2.0.9 -%dependency /add org.bsc.langgraph4j:langgraph4j-core-jdk8:1.0-SNAPSHOT -%dependency /add org.bsc.langgraph4j:langgraph4j-langchain4j:1.0-SNAPSHOT -%dependency /add dev.langchain4j:langchain4j:\{langchain4jVersion} -%dependency /add dev.langchain4j:langchain4j-open-ai:\{langchain4jVersion} - -%dependency /resolve -``` - - Adding dependency org.slf4j:slf4j-jdk14:2.0.9 - Adding dependency org.bsc.langgraph4j:langgraph4j-core-jdk8:1.0-SNAPSHOT - Adding dependency org.bsc.langgraph4j:langgraph4j-langchain4j:1.0-SNAPSHOT - Adding dependency dev.langchain4j:langchain4j:0.35.0 - Adding dependency dev.langchain4j:langchain4j-open-ai:0.35.0 - Solving dependencies - Resolved artifacts count: 26 - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/slf4j/slf4j-jdk14/2.0.9/slf4j-jdk14-2.0.9.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/langgraph4j/langgraph4j-core-jdk8/1.0-SNAPSHOT/langgraph4j-core-jdk8-1.0-SNAPSHOT.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/async/async-generator-jdk8/2.2.0/async-generator-jdk8-2.2.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/langgraph4j/langgraph4j-langchain4j/1.0-SNAPSHOT/langgraph4j-langchain4j-1.0-SNAPSHOT.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/langchain4j/langchain4j/0.35.0/langchain4j-0.35.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/langchain4j/langchain4j-core/0.35.0/langchain4j-core-0.35.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/apache/opennlp/opennlp-tools/1.9.4/opennlp-tools-1.9.4.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/langchain4j/langchain4j-open-ai/0.35.0/langchain4j-open-ai-0.35.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/ai4j/openai4j/0.22.0/openai4j-0.22.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/retrofit2/retrofit/2.9.0/retrofit-2.9.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/retrofit2/converter-jackson/2.9.0/converter-jackson-2.9.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/fasterxml/jackson/core/jackson-databind/2.17.2/jackson-databind-2.17.2.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/fasterxml/jackson/core/jackson-annotations/2.17.2/jackson-annotations-2.17.2.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/fasterxml/jackson/core/jackson-core/2.17.2/jackson-core-2.17.2.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okhttp3/okhttp/4.12.0/okhttp-4.12.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okio/okio/3.6.0/okio-3.6.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okio/okio-jvm/3.6.0/okio-jvm-3.6.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okhttp3/okhttp-sse/4.12.0/okhttp-sse-4.12.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/annotations/13.0/annotations-13.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/knuddels/jtokkit/1.1.0/jtokkit-1.1.0.jar -  +# Langchain4j LLM streaming ### Initialize Logger diff --git a/how-tos/src/site/markdown/logging.md b/how-tos/src/site/markdown/logging.md index 09c4d1b4..c3478071 100644 --- a/how-tos/src/site/markdown/logging.md +++ b/how-tos/src/site/markdown/logging.md @@ -1,44 +1,5 @@ -```java -String userHomeDir = System.getProperty("user.home"); -String localRespoUrl = "file://" + userHomeDir + "/.m2/repository/"; -String slf4jVersion = "2.0.9" -``` - - -```java -%dependency /add-repo local \{localRespoUrl} release|never snapshot|always -%dependency /list-repos -``` - - Repository local url: file:///Users/bsorrentino/.m2/repository/ added. - Repositories count: 4 - name: central url: https://repo.maven.apache.org/maven2/ release:true update:never snapshot:false update:never - name: jboss url: https://repository.jboss.org/nexus/content/repositories/releases/ release:true update:never snapshot:false update:never - name: atlassian url: https://packages.atlassian.com/maven/public release:true update:never snapshot:false update:never - name: local url: file:///Users/bsorrentino/.m2/repository/ release:true update:never snapshot:true update:always -  - - -```java -%dependency /add org.bsc.langgraph4j:langgraph4j-core-jdk8:1.0-SNAPSHOT -%dependency /add org.slf4j:slf4j-jdk14:\{slf4jVersion} - -%dependency /resolve -``` - - Adding dependency org.bsc.langgraph4j:langgraph4j-core-jdk8:1.0-SNAPSHOT - Adding dependency org.slf4j:slf4j-jdk14:2.0.9 - Solving dependencies - Resolved artifacts count: 4 - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/langgraph4j/langgraph4j-core-jdk8/1.0-SNAPSHOT/langgraph4j-core-jdk8-1.0-SNAPSHOT.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/async/async-generator-jdk8/2.2.0/async-generator-jdk8-2.2.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/slf4j/slf4j-jdk14/2.0.9/slf4j-jdk14-2.0.9.jar -  - ## Initialize Logger - ```java var lm = java.util.logging.LogManager.getLogManager(); lm.checkAccess(); diff --git a/how-tos/src/site/markdown/persistence.md b/how-tos/src/site/markdown/persistence.md index c876f061..0d017999 100644 --- a/how-tos/src/site/markdown/persistence.md +++ b/how-tos/src/site/markdown/persistence.md @@ -13,70 +13,6 @@ When creating any LangGraph workflow, you can set them up to persist their state [`Checkpointer`]: https://bsorrentino.github.io/langgraph4j/apidocs/org/bsc/langgraph4j/checkpoint/Checkpoint.html [`MemorySaver`]: https://bsorrentino.github.io/langgraph4j/apidocs/org/bsc/langgraph4j/checkpoint/MemorySaver.html - -```java -String userHomeDir = System.getProperty("user.home"); -String localRespoUrl = "file://" + userHomeDir + "/.m2/repository/"; -String langchain4jVersion = "0.35.0" -``` - - -```java -%dependency /add-repo local \{localRespoUrl} release|never snapshot|always -%dependency /list-repos -``` - - Repository local url: file:///Users/bsorrentino/.m2/repository/ added. - Repositories count: 4 - name: central url: https://repo.maven.apache.org/maven2/ release:true update:never snapshot:false update:never - name: jboss url: https://repository.jboss.org/nexus/content/repositories/releases/ release:true update:never snapshot:false update:never - name: atlassian url: https://packages.atlassian.com/maven/public release:true update:never snapshot:false update:never - name: local url: file:///Users/bsorrentino/.m2/repository/ release:true update:never snapshot:true update:always -  - - -```java -%dependency /add org.bsc.langgraph4j:langgraph4j-core-jdk8:1.0-SNAPSHOT -%dependency /add org.bsc.langgraph4j:langgraph4j-langchain4j:1.0-SNAPSHOT -%dependency /add dev.langchain4j:langchain4j:\{langchain4jVersion} -%dependency /add dev.langchain4j:langchain4j-open-ai:\{langchain4jVersion} - -%dependency /resolve -``` - - Adding dependency org.bsc.langgraph4j:langgraph4j-core-jdk8:1.0-SNAPSHOT - Adding dependency org.bsc.langgraph4j:langgraph4j-langchain4j:1.0-SNAPSHOT - Adding dependency dev.langchain4j:langchain4j:0.35.0 - Adding dependency dev.langchain4j:langchain4j-open-ai:0.35.0 - Solving dependencies - Resolved artifacts count: 25 - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/langgraph4j/langgraph4j-core-jdk8/1.0-SNAPSHOT/langgraph4j-core-jdk8-1.0-SNAPSHOT.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/async/async-generator-jdk8/2.2.0/async-generator-jdk8-2.2.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/langgraph4j/langgraph4j-langchain4j/1.0-SNAPSHOT/langgraph4j-langchain4j-1.0-SNAPSHOT.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/langchain4j/langchain4j/0.35.0/langchain4j-0.35.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/langchain4j/langchain4j-core/0.35.0/langchain4j-core-0.35.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/apache/opennlp/opennlp-tools/1.9.4/opennlp-tools-1.9.4.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/langchain4j/langchain4j-open-ai/0.35.0/langchain4j-open-ai-0.35.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/ai4j/openai4j/0.22.0/openai4j-0.22.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/retrofit2/retrofit/2.9.0/retrofit-2.9.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/retrofit2/converter-jackson/2.9.0/converter-jackson-2.9.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/fasterxml/jackson/core/jackson-databind/2.17.2/jackson-databind-2.17.2.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/fasterxml/jackson/core/jackson-annotations/2.17.2/jackson-annotations-2.17.2.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/fasterxml/jackson/core/jackson-core/2.17.2/jackson-core-2.17.2.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okhttp3/okhttp/4.12.0/okhttp-4.12.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okio/okio/3.6.0/okio-3.6.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okio/okio-jvm/3.6.0/okio-jvm-3.6.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okhttp3/okhttp-sse/4.12.0/okhttp-sse-4.12.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/annotations/13.0/annotations-13.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/knuddels/jtokkit/1.1.0/jtokkit-1.1.0.jar -  - ### Initialize Logger diff --git a/how-tos/src/site/markdown/plantuml.md b/how-tos/src/site/markdown/plantuml.md index 659f4ede..94e80d40 100644 --- a/how-tos/src/site/markdown/plantuml.md +++ b/how-tos/src/site/markdown/plantuml.md @@ -1,14 +1,4 @@ -```java -%dependency /add net.sourceforge.plantuml:plantuml-mit:1.2024.6 -%dependency /resolve -``` - - Adding dependency net.sourceforge.plantuml:plantuml-mit:1.2024.6 - Solving dependencies - Resolved artifacts count: 1 - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/net/sourceforge/plantuml/plantuml-mit/1.2024.6/plantuml-mit-1.2024.6.jar -  - +# PlantUML diagrams ```java import net.sourceforge.plantuml.SourceStringReader; @@ -54,6 +44,6 @@ display( plantUML2PNG( code ) ); - 4b9fd63a-6209-4d74-b74b-69356119c518 + 8ab3c38d-cf18-42ff-bf41-b97f3b48806f diff --git a/how-tos/src/site/markdown/subgraph.md b/how-tos/src/site/markdown/subgraph.md new file mode 100644 index 00000000..a42593df --- /dev/null +++ b/how-tos/src/site/markdown/subgraph.md @@ -0,0 +1,187 @@ +# Sub-graph sample + +```java +import org.bsc.langgraph4j.state.AgentState; +import org.bsc.langgraph4j.state.Channel; +import org.bsc.langgraph4j.state.AppenderChannel; + +public class State extends AgentState { + + static Map> SCHEMA = Map.of( + "messages", AppenderChannel.of(ArrayList::new) + ); + + public State(Map initData) { + super( initData ); + } + + List messages() { return this.>value("messages").get(); } + +} + +``` + + +```java +import org.bsc.langgraph4j.StateGraph; +import org.bsc.langgraph4j.action.AsyncNodeAction; +import static org.bsc.langgraph4j.action.AsyncNodeAction.node_async; +import static org.bsc.langgraph4j.StateGraph.END; +import static org.bsc.langgraph4j.StateGraph.START; + + +AsyncNodeAction childStep1 = node_async(state -> Map.of( "messages", "child:step1") ); + +AsyncNodeAction childStep2 = node_async(state -> Map.of( "messages", "child:step2") ); + +AsyncNodeAction childStep3 = node_async(state -> Map.of( "messages", "child:step3") ); + + +var workflowChild = new StateGraph<>(State.SCHEMA, State::new) + .addNode("child:step_1", childStep1) + .addNode("child:step_2", childStep2) + .addNode("child:step_3", childStep3) + .addEdge(START, "child:step_1") + .addEdge("child:step_1", "child:step_2") + .addEdge("child:step_2", "child:step_3") + .addEdge("child:step_3", END) + .compile(); + +for( var step : workflowChild.stream( Map.of() ) ) { + System.out.println( step ); +} +``` + + NodeOutput{node=__START__, state={messages=[]}} + NodeOutput{node=child:step_1, state={messages=[child:step1]}} + NodeOutput{node=child:step_2, state={messages=[child:step1, child:step2]}} + NodeOutput{node=child:step_3, state={messages=[child:step1, child:step2, child:step3]}} + NodeOutput{node=__END__, state={messages=[child:step1, child:step2, child:step3]}} + + + +```java + +AsyncNodeAction step1 = node_async(state -> Map.of( "messages", "step1") ); + +AsyncNodeAction step2 = node_async(state -> Map.of( "messages", "step2") ); + +AsyncNodeAction step3 = node_async(state -> Map.of( "messages", "step3") ); + + +var workflowParent = new StateGraph<>(State.SCHEMA, State::new) + .addNode("step_1", step1) + .addNode("step_2", step2) + .addNode("step_3", step3) + .addSubgraph( "subgraph", workflowChild ) + .addEdge(START, "step_1") + .addEdge("step_1", "step_2") + .addEdge("step_2", "subgraph") + .addEdge("subgraph", "step_3") + .addEdge("step_3", END) + .compile(); + +for( var step : workflowParent.stream( Map.of() )) { + System.out.println( step ); +} +``` + + NodeOutput{node=__START__, state={messages=[]}} + NodeOutput{node=step_1, state={messages=[step1]}} + NodeOutput{node=step_2, state={messages=[step1, step2]}} + NodeOutput{node=__START__, state={messages=[step1, step2]}} + NodeOutput{node=child:step_1, state={messages=[step1, step2, child:step1]}} + NodeOutput{node=child:step_2, state={messages=[step1, step2, child:step1, child:step2]}} + NodeOutput{node=child:step_3, state={messages=[step1, step2, child:step1, child:step2, child:step3]}} + NodeOutput{node=__END__, state={messages=[step1, step2, child:step1, child:step2, child:step3]}} + NodeOutput{node=subgraph, state={messages=[step1, step2]}} + NodeOutput{node=step_3, state={messages=[step1, step2, step3]}} + NodeOutput{node=__END__, state={messages=[step1, step2, step3]}} + + + +```java +import org.bsc.langgraph4j.GraphRepresentation; + +var representation = workflowParent.getGraph( GraphRepresentation.Type.PLANTUML, "sub graph",false ); + +representation.getContent() + +``` + + + + + @startuml sub_graph + skinparam usecaseFontSize 14 + skinparam usecaseStereotypeFontSize 12 + skinparam hexagonFontSize 14 + skinparam hexagonStereotypeFontSize 12 + title "sub graph" + footer + + powered by langgraph4j + end footer + circle start<> as __START__ + circle stop as __END__ + usecase "step_1"<> + usecase "step_2"<> + usecase "step_3"<> + rectangle subgraph [ {{ + title "subgraph" + circle " " as __START__ + circle exit as __END__ + usecase "child:step_1"<> + usecase "child:step_2"<> + usecase "child:step_3"<> + "__START__" -down-> "child:step_1" + "child:step_1" -down-> "child:step_2" + "child:step_2" -down-> "child:step_3" + "child:step_3" -down-> "__END__" + + }} ] + "__START__" -down-> "step_1" + "step_1" -down-> "step_2" + "step_2" -down-> "subgraph" + "subgraph" -down-> "step_3" + "step_3" -down-> "__END__" + @enduml + + + + + +```java +import net.sourceforge.plantuml.SourceStringReader; +import net.sourceforge.plantuml.FileFormatOption; +import net.sourceforge.plantuml.FileFormat; + +java.awt.Image plantUML2PNG( String code ) throws IOException { + var reader = new SourceStringReader(code); + + try(var imageOutStream = new java.io.ByteArrayOutputStream()) { + + var description = reader.outputImage( imageOutStream, 0, new FileFormatOption(FileFormat.PNG)); + + var imageInStream = new java.io.ByteArrayInputStream( imageOutStream.toByteArray() ); + + return javax.imageio.ImageIO.read( imageInStream ); + + } +} + +display( plantUML2PNG( representation.getContent() ) ) +``` + + + +![png](subgraph_files/subgraph_9_0.png) + + + + + + + 5b202d91-0c66-4287-8218-caa848f7b88c + + diff --git a/how-tos/src/site/markdown/subgraph_files/subgraph_9_0.png b/how-tos/src/site/markdown/subgraph_files/subgraph_9_0.png new file mode 100644 index 0000000000000000000000000000000000000000..aea20f51055bc78a33975d803c6ca98f13fb6892 GIT binary patch literal 28872 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 literal 0 HcmV?d00001 diff --git a/how-tos/src/site/markdown/time-travel.md b/how-tos/src/site/markdown/time-travel.md index 91c5cd52..d6667932 100644 --- a/how-tos/src/site/markdown/time-travel.md +++ b/how-tos/src/site/markdown/time-travel.md @@ -24,75 +24,6 @@ This works for [StateGraph](https://bsorrentino.github.io/langgraph4j/apidocs/or Below is an example. -```java -String userHomeDir = System.getProperty("user.home"); -String localRespoUrl = "file://" + userHomeDir + "/.m2/repository/"; -String langchain4jVersion = "0.35.0" -``` - - -```java -%dependency /add-repo local \{localRespoUrl} release|never snapshot|always -// %dependency /list-repos -``` - - Repository local url: file:///Users/bsorrentino/.m2/repository/ added. -  - -Remove installed package from Jupiter cache - - -```bash -%%bash -rm -rf \{userHomeDir}/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/langgraph4j -``` - - -```java -%dependency /add org.slf4j:slf4j-jdk14:2.0.9 -%dependency /add org.bsc.langgraph4j:langgraph4j-core-jdk8:1.0-SNAPSHOT -%dependency /add org.bsc.langgraph4j:langgraph4j-langchain4j:1.0-SNAPSHOT -%dependency /add dev.langchain4j:langchain4j:\{langchain4jVersion} -%dependency /add dev.langchain4j:langchain4j-open-ai:\{langchain4jVersion} - -%dependency /resolve -``` - - Adding dependency org.slf4j:slf4j-jdk14:2.0.9 - Adding dependency org.bsc.langgraph4j:langgraph4j-core-jdk8:1.0-SNAPSHOT - Adding dependency org.bsc.langgraph4j:langgraph4j-langchain4j:1.0-SNAPSHOT - Adding dependency dev.langchain4j:langchain4j:0.35.0 - Adding dependency dev.langchain4j:langchain4j-open-ai:0.35.0 - Solving dependencies - Resolved artifacts count: 26 - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/slf4j/slf4j-jdk14/2.0.9/slf4j-jdk14-2.0.9.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/langgraph4j/langgraph4j-core-jdk8/1.0-SNAPSHOT/langgraph4j-core-jdk8-1.0-SNAPSHOT.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/async/async-generator-jdk8/2.2.0/async-generator-jdk8-2.2.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/langgraph4j/langgraph4j-langchain4j/1.0-SNAPSHOT/langgraph4j-langchain4j-1.0-SNAPSHOT.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/langchain4j/langchain4j/0.35.0/langchain4j-0.35.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/langchain4j/langchain4j-core/0.35.0/langchain4j-core-0.35.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/apache/opennlp/opennlp-tools/1.9.4/opennlp-tools-1.9.4.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/langchain4j/langchain4j-open-ai/0.35.0/langchain4j-open-ai-0.35.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/ai4j/openai4j/0.22.0/openai4j-0.22.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/retrofit2/retrofit/2.9.0/retrofit-2.9.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/retrofit2/converter-jackson/2.9.0/converter-jackson-2.9.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/fasterxml/jackson/core/jackson-databind/2.17.2/jackson-databind-2.17.2.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/fasterxml/jackson/core/jackson-annotations/2.17.2/jackson-annotations-2.17.2.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/fasterxml/jackson/core/jackson-core/2.17.2/jackson-core-2.17.2.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okhttp3/okhttp/4.12.0/okhttp-4.12.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okio/okio/3.6.0/okio-3.6.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okio/okio-jvm/3.6.0/okio-jvm-3.6.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okhttp3/okhttp-sse/4.12.0/okhttp-sse-4.12.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/annotations/13.0/annotations-13.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/knuddels/jtokkit/1.1.0/jtokkit-1.1.0.jar -  - ### Initialize logger diff --git a/how-tos/src/site/markdown/wait-user-input.md b/how-tos/src/site/markdown/wait-user-input.md index 37c184e9..3fcdc0da 100644 --- a/how-tos/src/site/markdown/wait-user-input.md +++ b/how-tos/src/site/markdown/wait-user-input.md @@ -1,80 +1,5 @@ # Wait for User Input - -```java -String userHomeDir = System.getProperty("user.home"); -String localRespoUrl = "file://" + userHomeDir + "/.m2/repository/"; -String langchain4jVersion = "0.35.0" -``` - - -```java -%dependency /add-repo local \{localRespoUrl} release|never snapshot|always -%dependency /list-repos -``` - - Repository local url: file:///Users/bsorrentino/.m2/repository/ added. - Repositories count: 4 - name: central url: https://repo.maven.apache.org/maven2/ release:true update:never snapshot:false update:never - name: jboss url: https://repository.jboss.org/nexus/content/repositories/releases/ release:true update:never snapshot:false update:never - name: atlassian url: https://packages.atlassian.com/maven/public release:true update:never snapshot:false update:never - name: local url: file:///Users/bsorrentino/.m2/repository/ release:true update:never snapshot:true update:always -  - - -```java -%dependency /add org.bsc.langgraph4j:langgraph4j-core-jdk8:1.0-SNAPSHOT -%dependency /add org.bsc.langgraph4j:langgraph4j-langchain4j:1.0-SNAPSHOT -%dependency /add dev.langchain4j:langchain4j:\{langchain4jVersion} -%dependency /add dev.langchain4j:langchain4j-open-ai:\{langchain4jVersion} -%dependency /add net.sourceforge.plantuml:plantuml-mit:1.2024.6 -%dependency /list-dependencies -%dependency /resolve -``` - - Adding dependency org.bsc.langgraph4j:langgraph4j-core-jdk8:1.0-SNAPSHOT - Adding dependency org.bsc.langgraph4j:langgraph4j-langchain4j:1.0-SNAPSHOT - Adding dependency dev.langchain4j:langchain4j:0.35.0 - Adding dependency dev.langchain4j:langchain4j-open-ai:0.35.0 - Adding dependency net.sourceforge.plantuml:plantuml-mit:1.2024.6 - Proposed dependencies count: 5 -  - org.bsc.langgraph4j:langgraph4j-core-jdk8:jar:1.0-SNAPSHOT (runtime) -  - org.bsc.langgraph4j:langgraph4j-langchain4j:jar:1.0-SNAPSHOT (runtime) -  - dev.langchain4j:langchain4j:jar:0.35.0 (runtime) -  - dev.langchain4j:langchain4j-open-ai:jar:0.35.0 (runtime) -  - net.sourceforge.plantuml:plantuml-mit:jar:1.2024.6 (runtime) - Resolved dependencies count: 0 - Solving dependencies - Resolved artifacts count: 26 - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/langgraph4j/langgraph4j-core-jdk8/1.0-SNAPSHOT/langgraph4j-core-jdk8-1.0-SNAPSHOT.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/async/async-generator-jdk8/2.2.0/async-generator-jdk8-2.2.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/bsc/langgraph4j/langgraph4j-langchain4j/1.0-SNAPSHOT/langgraph4j-langchain4j-1.0-SNAPSHOT.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/langchain4j/langchain4j/0.35.0/langchain4j-0.35.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/langchain4j/langchain4j-core/0.35.0/langchain4j-core-0.35.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/apache/opennlp/opennlp-tools/1.9.4/opennlp-tools-1.9.4.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/langchain4j/langchain4j-open-ai/0.35.0/langchain4j-open-ai-0.35.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/dev/ai4j/openai4j/0.22.0/openai4j-0.22.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/retrofit2/retrofit/2.9.0/retrofit-2.9.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/retrofit2/converter-jackson/2.9.0/converter-jackson-2.9.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/fasterxml/jackson/core/jackson-databind/2.17.2/jackson-databind-2.17.2.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/fasterxml/jackson/core/jackson-annotations/2.17.2/jackson-annotations-2.17.2.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/fasterxml/jackson/core/jackson-core/2.17.2/jackson-core-2.17.2.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okhttp3/okhttp/4.12.0/okhttp-4.12.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okio/okio/3.6.0/okio-3.6.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okio/okio-jvm/3.6.0/okio-jvm-3.6.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/squareup/okhttp3/okhttp-sse/4.12.0/okhttp-sse-4.12.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.9.10/kotlin-stdlib-jdk8-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib/1.9.10/kotlin-stdlib-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib-common/1.9.10/kotlin-stdlib-common-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/annotations/13.0/annotations-13.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.9.10/kotlin-stdlib-jdk7-1.9.10.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/com/knuddels/jtokkit/1.1.0/jtokkit-1.1.0.jar - Add to classpath: /Users/bsorrentino/Library/Jupyter/kernels/rapaio-jupyter-kernel/mima_cache/net/sourceforge/plantuml/plantuml-mit/1.2024.6/plantuml-mit-1.2024.6.jar -  - - ```java import net.sourceforge.plantuml.SourceStringReader; import net.sourceforge.plantuml.FileFormatOption; diff --git a/how-tos/src/site/site.xml b/how-tos/src/site/site.xml index 6aeea919..9f769929 100644 --- a/how-tos/src/site/site.xml +++ b/how-tos/src/site/site.xml @@ -33,6 +33,8 @@ + + diff --git a/how-tos/subgraph.ipynb b/how-tos/subgraph.ipynb index 7ab86103..9b43f1e3 100644 --- a/how-tos/subgraph.ipynb +++ b/how-tos/subgraph.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Sub Graph Sample" + "# Sub-graph sample" ] }, {