
As a MERN Stack and chatbot developer skilled in TypeScript, Node.js, Azure DevOps, and a variety of databases, I specialize in leveraging OpenAI's models for advanced AI solutions. With over 3 years of extensive IT experience, I possess a diverse and comprehensive skill set with a strong focus on chatbot development and integration. My professional journey encompasses the entire lifecycle of chatbot creation, from conceptual design to deployment and maintenance. Utilizing advanced technologies such as Artificial Intelligence, Natural Language Processing (NLP), and cognitive machine learning frameworks, I deliver sophisticated virtual assistants tailored to meet complex requirements.
Senior Software Developer - GenAI Full Stack
Tech MahindraTechnical Lead - Full Stack Developer
VapprTechTeam Lead - GenAI Full Stack Developer
Celebal TechnologiesAssociate - Full Stack Developer
Celebal Technologies
TypeScript
Node.js

Azure DevOps

RabbitMQ

Redis

Microsoft Teams
So, thanks for this opportunity. As you know, Pushkar Jart, and I started my career in cellular technologies in January 2021, where I work as a back-end chatbot developer, where I started my career in back-end chatbot development, and I initiated working on Node JS, and Python, and also in front-end on React JS where I developed multiple different kinds of chatbots from dialogue flow, using Azure bot builder, where we use multiple Azure cloud services like CLU services for language understanding and queue, and also for cash and answer bank part. So, we created a conversational flow chatbot for Tata Motors for access banks and other organizations. Also, other than this, I worked on an AI chatbot platform where I worked as a senior developer for Capital Land Singapore, where I worked on a completely AI-powered chatbot from end to end, from front-end to processing, using prompting, and in Python. I also like the engine of that AI chatbot for Capital Land developed in Python, where the front-end is developed in React, so we handle the bot using Azure bot service, impacted, and in Python, and we created a microservice for AI-based answer generation. So, we connect multiple different kinds of databases. Like, there is portal data which is stored in embedding databases, and the fetching through semantic search. Other than this, we created the orchestrator using change master and agents, and tools, and guardrails also via using LinkedIn. We created guardrails for the AI question-answering generation part. And, we also did R&D on multi-intent handling, where, like, we can also identify the multi-intent from that query and then can generate the answer for each intent. And then, we can combine all the answers into a single answer and then send it to the front-end. So, in this problem, to reduce time, we created multiple master agents, which can evoke simultaneously and then generate the answer, combine that answer, then check through the guardrail that this answer is satisfied. The condition or not, and we submitted the answer to the front-end. So, this kind of work, I have developed in AI chatbots over the past 3 and a half years in my career.
So, when considering the implementation of a machine learning model to predict user intent in a chatbot conversation, in this scenario, before AI was introduced, we generally used cognitive language understanding. It's used to identify the intent and entities from the query using the Azure Cognitive Language Understanding model, which was previously known as the LUIS model. This is a machine learning model that identifies the intent. We provide a dataset of training and testing data to the model, and it uses that to identify the intent in the chatbot conversation.
So, when we're talking about maintaining consistent AI chatbot performance, right, if we're going to scale up the user base. When we're talking about this scaling, then the first thing that comes out is the limitation of AI models to provide input and output. There are also permanent limitations on multiple AI models. So, like, we create a load balance around multiple AI model services, and that's responsible for redirecting queries onto specific models, like GPT 3.5 turbo or embedding models. Generally, we use 3.5 Turbo, which is cost-effective and better responsive. For scalability, we require multiple resources and multiple instances of Jupyter models, and then we set up a load balancer or send it using the API management service, provided by Azure or AWS. We integrate this with the model, and then we can handle the scaling part on the Jupyter part. On the chatbot side, the best way to scale up is to dockerize and containerize the services. In this scenario, we replicate multiple images of the container and create multiple instances to handle a huge user base. In the backend, we can create multiple instances on different locations because of the token-per-minute limitation, which is currently being extended. If we go from 200 to 1000 users at a single time, we require multiple instances on different locations, and we distribute the requests to each response, and then we handle this scalability on the chatbot part.
So, the method for integrating a newly developed chatbot with an existing user authentication database to maintain security. Yeah. So, in a newly developed chatbot, when we are going to develop a new chatbot and we are talking about the user authentication database for security purposes. So, in this scenario, what we have to do on the back-end service is integrate the database on our back-end service and, according to the user authentication database, which stores their token or password, and the session token for expiration and expiry date, and everything. So whenever we are going to get any request from the chatbot, then we are checking first the authentication by fetching the data from the DB. And, also, we can set a caching mechanism to reduce the time from getting the data from databases. We can use the Redis cache or any built-in cache for the system according to the scalability and containerization in all those scenarios in mind for that part. So, then we are going to talk about the chatbot. So, there are two scenarios. The first one is if our chatbot is open to the public. So, when it's open to the public, then we also have to adjust the session token for best security. We can integrate. But when we are talking about the dead work, which is private, then in this scenario, there are multiple authentication services like single auth or Auth 2.0 or normal. Generally, we can use our token-based or social token-based authentication for the newly developed chatbot.
What is a viable method to introduce multilingual support in an AI chatbot using NLP techniques? Yeah. So, when we are talking about multilingual support in an AI chatbot using NLP techniques, the best way to create a multilingual chatbot is to develop our back-end system in a single language, like English. On top of that, when users provide input to our back-end service, we use an NLP service, which provides natural language processing, to translate input from any language into English. We then send the English input to our back-end service, which generates an answer. When the AI service returns the response, we convert the English syntax into the user's normal language, and then return the response to the user. So that's how we can achieve multilingual support in an AI.
So that analysis component of AI chatbot is optimized for performance when dealing with large datasets. When we interact with larger datasets, we can ensure our component is optimized for performance by implementing a feedback-based mechanism system for the database. In the case of a large dataset, we do a feedback-based mechanism system for the database that whenever a query generates a response using that specific database. The best way is to restore that database in an embedding form where we can do semantic search on the dataset. Alternatively, we can create a tool at the query system and provide a tool to fetch the dataset, and also create a feedback mechanism. So, the response will be corrected or the user will provide positive feedback, then we submit that feedback with the dataset. That's how we can do this thing. Then, the second thing is that we can add a caching mechanism for the dataset. Whenever we're going to fetch the same dataset again and again, we added a caching layer on top of the dataset. Whenever we're going to fetch the same thing again, we're fetching from the cache, and then we're restoring that data indication. When we come back the second time, we get the information from the cache and submit that information again for reusability in that part. We also add a mechanism for better optimization on that part. We add an expiration mechanism here also, so it helps us to make it more optimized when the cache is going to expire.
Data from PDF, what exception handling practice should be improved, and how would you update this method according to it? So PDF reader, equal to null, reader equal to new PDF file path, string test from dot get text from page reader comma 1. Print text from reader. And finally, if they're not null, reader dot close. So, in this error handling, there are only IO exception type of handling are currently in the catch block and that finally is used for closing. So, we can improve this by adding the validation. First, check that the file path is not null or empty. Then, we also handle the multiple type of cache errors. Like, it's only handling the exception, but maybe value not found. Some cases are undefined path, not defined or the PDF path is not exist. So such conditions and validations are not added in this code. We will add those conditions and exceptions, like the validations and proper cache handling of all those errors also in this post request.
Harry Smith. They're supposed to connect to a database and fetch some data from the chat port. Can you spot any potential problem with this code that can lead to exceptional connection issues? Yes. So, we can see there is a try, an exception ending connection equal to database dot connect, host 'localhost', user, password. So, cursor equal to connection dot cursor dot execute, select start from chatbot data, result equal to cursor dot fetch all. Exception as e, print database connection failed, and finally, close connection. So, right now, if you can see that there is host is 'localhost', so, generally, this code is fine and handling the connections properly. If we didn't get the user and password, then there's a chance that the connection can fail. The second thing is that we use 'localhost'. We have to make sure that whenever it's going to production or in the deployment part, then we have to remove this 'localhost' and provide the proper endpoint for that connection part. And, that's all. The other thing is that we are not assigning the execute query to the cursor variable and executing it, and then we are getting the result in the fetch all. So, that might be there. It can be raise an issue of the connections. And in finally, this connection is going to close. So, when we come the second time, then the connection will again database will be going to connect, and then it will again close the connection. So, we have to make sure that once the connection is set up and we have to again and again place the database from database, then connection should not be closed and it closed when the process is going to complete. Or we can also add a timer that after some time the DB is not using, then the connection is going to close.
If offered the opportunity, how could you employ visualization tools to represent? So, if I got an opportunity, then in the visualization tool, we can set that application insights, which can help us or any other tool that can store all the logs. So whatever the conversation is between the user and the chatbot, they store the user message response, and they send the intent identified from that query, the entities also from that query, and the specific details regarding that. So each request of that user, we are storing in our system, and then we are matching the payload of the multiple conversations of the user, and then we store the payload into an application inside or any service that can help us show data representation of the data into the dashboard. The other way is also we can store into our storage table or store databases. So from those databases, we can also show in our any dashboard for the representation between the user and chatbot, the communication between the user and chatbot, and the details regarding that query. Also, we have to store because we have to maintain the context for NDA chatbot. So we also have to store the context with that query so it can help us in the visualization part.
Beyond the core skill required, how will you live on knowledge of API design to improve check for functionality? So, if we're talking about API design to improve functionality, the best place to start, generally, is to identify multiple APIs. One is here to fetch the details of my profile. One is here to fetch about my knowledge base. One is here to fetch about my leave and attendance and policy regarding details. I can use those APIs by creating tools from each API. Then, I can integrate all those tools into my master agent. So whenever a specific detail is required, my GPT model will decide which tool is required to create details on that specific query. We can also leverage those APIs by converting them into tools and using multiple tools. We provide the tools to our master agent, and then our master agent, according to our prompt and the description of the tool, decides how to proceed and use that tool in our chatbot to generate a better response for that specific use case.