A modular conversational assistant that combines large language models with real-world API integration for intelligent, context-aware dialogue.
Built with LangChain, Gemini, and external APIs like Todoist and Weather (wttr.in), the system demonstrates how NLP techniques such as intent recognition, dialogue management, and conditional reasoning converge into a functional AI agent.
This project implements a multi-domain conversational system capable of open-ended dialogue and task-oriented reasoning.
It integrates a lightweight intent recognition mechanism with a modular action framework, enabling the agent to perform tasks such as managing to-do lists, checking weather, and handling conditional actions through natural language.
The architecture emphasizes the synergy between rule-based NLP and LLM-driven semantic understanding, showcasing practical applications of tokenization, embeddings, and context modeling in conversational AI.
- Modular Architecture – Decoupled design separating core intelligence from domain modules.
- Intent Recognition and Routing – Dynamic input classification directing queries to task, weather, or chat modules.
- Conditional Reasoning – Supports natural decision logic such as "Add jogging if it doesn't rain tomorrow."
- Memory Management – Persistent conversational history enabling context retention.
- Extensibility – Plug-and-play framework for new modules like news, dictionary, or calendar integrations.
main.py → core/agent.py → [modules/todoist_module | modules/weather_module]
↓
core/utils (Gemini LLM)
↓
core/memory (Context)
The assistant acts as a routing system where:
main.pyhandles user interaction,core/governs intent detection and decision-making,- and
modules/executes domain-specific actions.
- Intent Recognition: Regex-based detection for task and weather intents with LLM fallback for open conversation.
- Dialogue Management: Context persistence via structured JSON memory.
- LLM Integration: Gemini 2.0 through LangChain for reasoning and prompt management.
- External APIs: Todoist REST API for task operations; wttr.in for real-time weather without authentication.
- Python ≥ 3.8
- LangChain, LangChain Google GenAI, Requests, python-dotenv
pip install -r requirements.txtGEMINI_API_KEY=your_gemini_api_key
TODOIST_API_KEY=your_todoist_api_key
python main.pyai-assistant/
├── main.py # Entry point: conversational interface
├── core/ # Decision logic, LLM connection, memory
│ ├── agent.py
│ ├── utils.py
│ └── memory.py
├── modules/ # Domain-specific skills
│ ├── todoist_module.py
│ └── weather_module.py
├── assistant_memory.json # Stored dialogue context
└── .env # API credentials
This project illustrates the integration of theoretical NLP principles with practical AI agent development.
It bridges token-level processing, semantic embeddings, and prompt-based reasoning through LangChain's orchestration of Gemini's LLM.
By combining deterministic routing with probabilistic reasoning, the system exemplifies hybrid NLP design suited for multi-domain conversational agents.
- Dynamic plugin system for new domains (news, calendar, dictionary)
- Advanced semantic memory using vector embeddings
- Voice I/O pipeline for speech-based interaction
- Temporal expression parsing for natural date handling
- Automated evaluation for intent and response accuracy
Developed as part of the NLP Course Project under the Department of Computer Science,
Indian Institute of Information Technology Guwahati.
Built with open APIs from LangChain, Gemini, and Todoist.
Licensed under the MIT License for educational and research purposes.