d-cogs¶
Utilizing LangChain to build custom conversational bots.
Info
Learnings¶
- Tool integration patterns
- Separating multiple agents (conversation, classifier, mermaid)
- Using Ollama as an LLM provider
- Conversation/Agent context management
Plugin relationship¶
graph TD
subgraph CogManager
LangCore
ProviderCog
StorageCog
ChainHubCogs
end
%% Core framework
subgraph LangCore[langcore: Cog]
ChainHubManager[ChainHubManager]
ConversationManager
ClassifierManager
ChainStore[ChainStore Abstraction]
ChainProvider[ChainProvider Abstraction]
MessageHandler[MessageHandler Abstraction]
end
subgraph ConversationManager[ConversationManager: main agent]
langchainModule[PyPI: langchain]
conversation[conversation.py]
CPCInstance[langcore.get_provider]
end
subgraph ClassifierManager[ClassifierManager: background agent]
langchainModule3[PyPI: langchain]
classifier[classifier.py]
CPClInstance[langcore.get_provider]
end
%% ChainHub cogs
subgraph ChainHubCogs[ExtensionCogs for tools/functions]
subgraph SpoilarrCogSub[SpoilarrCog: spoilarr]
SpoilarrAgent[SpoilarrManager: sub agent]
Spoilarr[spoilarr]
CPSpInstance[langcore.get_provider]
end
subgraph EmbedCogSub[EmbedCog: embed]
Embed[embed]
CPEmInstance[langcore.get_provider]
end
subgraph MemoryCogSub[MemoryCog: memory]
Memory[memory]
CPMInstance[langcore.get_provider]
CSMInstance[langcore.get_store]
end
subgraph MermaidCogSub[MermaidCog: mermaid]
MermaidAgent[MermaidManager: sub agent]
Mermaid[mermaid]
MermaidMessageHandler[MessageHandler: send image as sub agent]
CPMeInstance[langcore.get_provider]
CSMeInstance[langcore.get_store]
end
subgraph AiDefenderCogSub[AiDefenderCog: aidefender]
AiDefenderAgent[AiDefenderManager: background agent]
AIDefender[aidefender]
CPAIInstance[langcore.get_provider]
CSAIInstance[langcore.get_store]
end
end
%% Provider cog
subgraph ProviderCog[ollama: Cog]
Ollama[ollama]
backendOllama[localhost:11434]
ollamaModule[PyPI: langchain-ollama]
end
%% Storage cog
subgraph StorageCog[qdrant: Cog]
QDrant[qdrant]
backendQdrant[localhost:6333]
qdrantModule[PyPI: langchain-qdrant]
ragPipeline[RAG pipeline, formerely inside ragutils cog]
end
%% Connections
LangCore -->|implements abstraction| ChainStore
LangCore -->|implements abstraction| ChainProvider
LangCore -->|implements abstraction| MessageHandler
ChainProvider -->|1:n implemented by| ProviderCog
ChainStore -->|0:1 implemented by| StorageCog
subgraph ChainHubManager
hub.py
langchainModule2[PyPI: langchain]
end
ChainHubManager -->|for each langcore-compatible cog registers functions| ChainHubCogs
ChainHubManager <-->|langchain linked| ConversationManager
ConversationManager <-->|When enabled Classifier Agent controls Conversation Agent engagement| ClassifierManager
%% Define styles
classDef PyPI fill:#FFE08A,stroke:#B45309,stroke-width:2px,color:#1F2937;
classDef chainStore fill:#B7F7D8,stroke:#047857,stroke-width:2.5px,color:#064E3B;
classDef chainProvider fill:#C7D2FE,stroke:#3730A3,stroke-width:2.5px,color:#1E1B4B;
classDef agent fill:#FED7AA,stroke:#C2410C,stroke-width:4px,color:#431407;
classDef messageHandler fill:#FEE2E2,stroke:#F87171,stroke-width:2px,color:#7F1D1D;
%% Apply styles
class langchainModule,langchainModule2,langchainModule3,ollamaModule,qdrantModule PyPI;
class ChainStore,CSMInstance,CSAIInstance,CSMeInstance chainStore;
class ChainProvider,CPMeInstance,CPCInstance,CPEmInstance,CPClInstance,CPAIInstance,CPSpInstance chainProvider;
class ConversationManager,ClassifierManager,MermaidAgent,AiDefenderAgent,SpoilarrAgent agent;
class MessageHandler,MermaidMessageHandler messageHandler;
High level overview¶
graph TD
%% Function / Tool Registration Lifecycle
subgraph AppRuntime[Application Runtime]
CHM[ChainHubManager]
CM[ConversationManager]
end
subgraph LangChainCore[PyPI: langchain]
ToolReg[Tool / Runnable Registry]
ChainExec[Chain Execution Engine]
ToolSchema[Tool Schemas & Signatures]
end
subgraph OllamaPkg[PyPI: langchain-ollama]
OllamaLLM[LLM + Tool Calling Support]
end
subgraph QdrantPkg[PyPI: langchain-qdrant]
QdrantVS[VectorStore Tools]
end
subgraph ExtensionCogs[LangCore-compatible Cogs]
RagCog[RagCog]
MemoryCog[MemoryCog]
MermaidCog[MermaidCog]
end
%% Registration flow
CHM -->|discovers & loads| ExtensionCogs
ExtensionCogs -->|expose callable functions| CHM
CHM -->|registers tools| ToolReg
ToolReg -->|stores schema| ToolSchema
%% Provider & model side
OllamaLLM -->|requests tool schemas| ToolSchema
CM -->|binds tools to model| OllamaLLM
%% Runtime execution
ChainExec -->|LLM selects tool| ToolReg
ToolReg -->|dispatches call| ExtensionCogs
ExtensionCogs -->|returns result| ChainExec
%% Unregistration flow
CHM -.->|unload / disable cog| ExtensionCogs
CHM -.->|unregister tools| ToolReg
ToolReg -.->|remove schemas| ToolSchema
%% Styling
classDef pypi fill:#ffedb3,stroke:#c88a12,stroke-width:2px,color:#000;
class LangChainCore,OllamaPkg,QdrantPkg pypi;
Example Conversation: Conversation Agent + Mermaid Sub Agent
