Honcho is a user context management system for AI-powered applications. The storage concepts are inspired by, but not a 1:1 mapping of, the OpenAI Assistants API. The insights concepts are inspired by cognitive science, philosophy, and machine learning. Honcho is open source. We believe trust and transparency are vital for developing AI technology. We’re also focused on using and supporting existing tools rather than developing from scratch. We focus on flexible, user-centric storage primitives to promote community exploration of novel memory frameworks and the usage of the Dialectic API to support them. Language models are highly capable of modeling human psychology. By building a data management framework that is user-centric, we aim to address not only practical application development issues (like scaling, statefulness, etc.) but also kickstart exploration of the design space of what’s possible given access to rich user models. You can read more about Honcho’s origin, inspiration and philosophy on our blog.Documentation Index
Fetch the complete documentation index at: https://honcho.dev/docs/llms.txt
Use this file to discover all available pages before exploring further.
Core Primitives
Using Honcho has the following flow:- Initialize your
Honchoinstance andApp - Create a
User - Create a
Sessionfor aUser. - Create a
Collectionfor aUser - Add
Messages to aUser’sSession. - Add
Metamessages to aUser(optional links toSession,Message) - Add
Documents to aUser’sCollection
Apps
AnApp is the highest-level primitive in Honcho. It is the scope that all of your Users are bound to.
Users
TheUser object is the main interface for managing a User’s context. With it
you can interface with the User’s Sessions and Collectionss directly.
Sessions
TheSession object is useful for organizing your interactions with Users.
Different Users can have different sessions enabling you to neatly segment user
context. It also accepts a location_id parameter which can specifically
denote where users’ sessions are taking place.
Messages
Sessions are made up ofMessage objects. You can append them to sessions.
This is pretty straightforward.
Metamessages
Success in LLM applications is dependent on elegant context management, so we provide aMetamessage object for flexible context storage and construction. Each
Metamessage is tied to a User object via the required user_id argument. Keeping
this separate from the core user-assistant message history ensures the
insights service running ambiently is doing so on authentic ground truth
We’ve found this particularly useful for storing intermediate inferences,
constructing very specific chat histories, and more. Metamessages can optionally be
attached to sessions and/or messages, so constructing historical context for inference is
as easy as possible.
Collections
Collections are used to organize information about the User. These can be
thought of as stores for more global data about the User that spans sessions
while Metamessages are local to a session and the message they are linked to.
Documents
Documents are the individual facts that are stored in the Collection. They
are stored as vector embeddings to allow for a RAG like interface. Using honcho
a developer can query a collection of documents using methods like cosine
similarity search