Hello. I am new to the community and am interested in dynamic user modeling for use cases like adaptive explanation, the custom-tailoring of unfolding explanatory dialogues for individual users.
I am wondering about best practices for dynamic user modeling using LangGraph. By “dynamic”, I mean that user models could be both updated and queried at runtime. I am envisioning nodes, edges, and invoked tools as being capable of updating and querying user models.
There are many different kinds of user models to consider, in these regards, including, but not limited to: string dictionaries, object graphs, knowledge graphs, finite-state machines, dynamic Bayesian networks, deep user models, cognitive architectures, personal online data storage (e.g., Solid pods), agents encapsulating user models, and combinations of these.
With respect to developing and building software using LangGraph that is capable of updating and querying user models, I have, thus far, considered five approaches.
Firstly, one could initialize, utilize, and finalize a global object for a user model of the current user and use this global object throughout their software project.
Secondly, dynamic user models could be attached to state. However, with the serialization and deserialization of state, this may be a wrong approach for more complex user models.
Thirdly, dynamic user models could be attached to configuration. Perhaps one could obtain and access user models from the configuration parameter available for nodes, edges, and invoked tools?
Fourthly, user models could be a topic for memory, short-term and long-term memory, intra-session and inter-session storage.
Fifthly, user models could be made available via their own new parameter available for nodes, edges, and invoked tools.
Is any one of these indicated approaches, or any other approach, the best practice for updating and querying dynamic user models in software projects using LangGraph? Are there any open-source examples or projects to explore with respect to these topics? Thank you.