LangChain memory and retriever backed by OriginTrail DKG v10 Working Memory
Project description
langchain-dkg
LangChain memory and retriever backed by OriginTrail DKG v10 Working Memory.
Give any LangChain agent persistent, verifiable, queryable memory — every conversation turn stored as a cryptographically-linked Knowledge Asset on the Decentralized Knowledge Graph.
Install
pip install langchain-dkg
Requires a running DKG v10 node. Install with:
npm install -g @origintrail-official/dkg
dkg init && dkg start
export DKG_TOKEN=$(dkg auth show)
Quick start
from langchain_dkg import DKGChatMessageHistory, DKGMemory, DKGRetriever
from langchain_core.messages import HumanMessage, AIMessage
# Store and retrieve conversation turns
history = DKGChatMessageHistory(context_graph_id="my-project")
history.add_message(HumanMessage(content="What is a Knowledge Asset?"))
history.add_message(AIMessage(content="An ownable container of structured knowledge on the DKG."))
messages = history.messages # tri-modal semantic search
With a LangChain chain (modern LCEL style)
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_dkg import DKGMemory
llm = ChatOpenAI(model="gpt-4o-mini")
prompt = ChatPromptTemplate.from_messages([
("system", "You are a helpful assistant."),
MessagesPlaceholder(variable_name="history"),
("human", "{input}"),
])
chain_with_memory = DKGMemory.wrap_chain(
prompt | llm,
context_graph_id="my-project",
)
response = chain_with_memory.invoke(
{"input": "What is DKG?"},
config={"configurable": {"session_id": "user-42"}},
)
RAG retrieval via SPARQL
from langchain_dkg import DKGRetriever
from langchain.chains import RetrievalQA
retriever = DKGRetriever(limit=10)
chain = RetrievalQA.from_chain_type(llm=llm, retriever=retriever)
Components
| Class | LangChain base | Purpose |
|---|---|---|
DKGChatMessageHistory |
BaseChatMessageHistory |
Stores turns in DKG WM; retrieves via tri-modal search |
DKGMemory |
— | Factory for RunnableWithMessageHistory with DKG backend |
DKGRetriever |
BaseRetriever |
SPARQL retriever — returns triples as Document objects |
DKGClient |
— | Low-level async HTTP client for the DKG v10 API |
Memory layers
DKG v10 has three memory layers:
| Layer | Scope | Cost | Use |
|---|---|---|---|
Working Memory (wm) |
Private to your node | Free | Default for conversation history |
Shared Working Memory (swm) |
Gossip-replicated | Free | Team-visible context |
| Verified Memory | On-chain, permanent | TRAC | Auditable, publishable knowledge |
By default, turns are written to Shared Working Memory (swm). Use layer="wm" for private-only storage.
Explicit promotion to Shared Memory:
turn_uri = history.get_turn_uri("**Human:** Summarize this meeting")
await history.promote_to_shared(turn_uri)
Configuration
| Env var | Default | Description |
|---|---|---|
DKG_TOKEN |
— | Bearer token from dkg auth show |
DKG_BASE_URL |
http://localhost:9200 |
DKG node API URL |
Or pass token= / base_url= directly to DKGClient.
Session isolation
Each session_id passed to chain_with_memory.invoke(config={"configurable": {"session_id": "..."}}) becomes a sessionUri in DKG, linking turns together within the shared Context Graph.
Development
pip install -e ".[dev]"
pytest tests/unit/ # unit tests (no node required)
DKG_TOKEN=$(dkg auth show) pytest tests/integration/ # integration tests
python examples/research_agent.py # demo script
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file langchain_dkg-0.1.0.tar.gz.
File metadata
- Download URL: langchain_dkg-0.1.0.tar.gz
- Upload date:
- Size: 18.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dbcfb51b4f6c3462a403bd6189547632a9ff705cc6935217980978d002381552
|
|
| MD5 |
7c09ea3020abf48c121824e736a85d8a
|
|
| BLAKE2b-256 |
533e701d73596dcd86e6a2ece2e97cadb3cea7a489ffc9d0a6713b0cf1507363
|
File details
Details for the file langchain_dkg-0.1.0-py3-none-any.whl.
File metadata
- Download URL: langchain_dkg-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35bf5c299cb5e20b62d3252e023210b9d414bf8fd1767b9a47753426913b287f
|
|
| MD5 |
8257ef857779fe120e81a60d778eb3e1
|
|
| BLAKE2b-256 |
144b01aeb30c790989ac738fca49b8103b12ff8eb100a5db3dcfbc60cb0c55ca
|