Inhoud

LangGraph Tests

🗂️ Terug naar start
⛓️ 🗂️ LangChain start
🦜 🗂️ LangGraph Start

💫 LangGraph Tests
♻️ LangGraph Basis principes

Ik heb op deze pagina hier eerst de nodige gegevens verzameld waarmee ik denk uit de voeten te kunnen om (gebruikmakend van die gegevens) verder te kunnen en een begin te kunnen maken met een applicatie die gebruik maakt van LangGraph. Het nut en in hoeverre de verzamelde gegevens inderdaad nuttig zouden kunnen zijn moet nog blijken😬

Wat wil ik bouwen:
Een applicatie voor therapeuten die een account op kwaliteitsteem.nl hebben die taken kan uitvoeren, gegevens op kan halen en aanpassen d.m.v. Natuurlijke Taal. Verder heeft de applicatie al een AI-Chatbot (CATja) waarmee de therapeut kan chatten. Mogelijk moet ook deze Chatbot in de CAT Agent worden geïntegreerd.

De applicaties die ik bouw zijn opgebouwd ut Classes
De applicaties zijn gemaakt met Streamlit GUI (gebruikersinterface)

Tests

Diverse tests die vanuit mijn adminzandbak.py worden gestart
Hier de code uit adminzandbak.py:

import streamlit as st
import adzandbak.test_1 as test


class Zandbak:
    def __init__(self):
        self.test_1 = test.Test_1()
        self.col1, self.col2 = st.columns([2, 2])

    def pageIni(self):
        with self.col1:
            st.subheader("1️⃣ Test 1")
            self.chat_container = st.container(border=True, height=50)
            if st.button("🔄 Run Test 1 Script *(Zie console print)*"):
                Result = self.test_1.run("Hallo, Ik ben A3.")
                with self.chat_container:
                    st.write(f"Resultaat: {Result}")


cat = Zandbak()
cat.pageIni()

1️⃣ Test 1

🧭 Test 1: Simpele LangGraph zoals hier beschreven

Code uit adzandbak > test_1.py:

import random
from typing import Literal, TypedDict
from langgraph.graph import StateGraph, START, END

class State(TypedDict):
    graph_state: str

class Test_1:
    def __init__(self):
        # Build graph
        self.builder = StateGraph(State)
        self.builder.add_node("node_1", self.node_1)
        self.builder.add_node("node_2", self.node_2)
        self.builder.add_node("node_3", self.node_3)

        # Logic
        self.builder.add_edge(START, "node_1")
        self.builder.add_conditional_edges("node_1", self.decide_mood)
        self.builder.add_edge("node_2", END)
        self.builder.add_edge("node_3", END)

        # Add
        self.graph = self.builder.compile()

    def run(self, user_query):
        state = {"graph_state": user_query}
        result_state = self.graph.invoke(state)
        print(result_state)
        print(result_state['graph_state'])
        return result_state['graph_state']

    def node_1(self, state):
        print("---Node 1---")
        return {"graph_state": state['graph_state'] +" I am"}

    def node_2(self, state):
        print("---Node 2---")
        return {"graph_state": state['graph_state'] +" happy!  "}

    def node_3(self, state):
        print("---Node 3---")
        return {"graph_state": state['graph_state'] +" sad!  "}

    def decide_mood(self, state) -> Literal["node_2", "node_3"]:        
        # Here, let's just do a 50 / 50 split between nodes 2, 3
        if random.random() < 0.5:

            return "node_2"
        
        return "node_3"

LangGraph Schema