An Ambitious Little Project
Generative AI.
This single technological wave has dominated the news in the past couple of years. While I’ve always found machine learning fascinating and even did some applied research in the field, I never quite saw it as my career path. The main culprit? A nagging self-doubt about my ability to truly excel in it.
But life has a funny way of pushing you into the deep end. At my current MDAP attachment, I found myself assigned to build an LLM-powered application for legal document navigation. This project required me to level up in three key areas:
- Getting comfortable with deep learning and generative AI fundamentals (at least enough for practical application)
- Learning modern toolchains like LangChain, HuggingFace, and Streamlit
- Conquering my fear of modifying third-party source code to meet project requirements
That last point? It turned out to be my Mount Everest.
Here’s the ironic part - I was already neck-deep in source code modifications for another Django project at MDAP. So what made this different? I think it’s all about perspective. With the Django project, I was working with a completed platform, so modifications felt less daunting. But LangChain? That’s a widely-used, successful tool. The thought of diving into its source code and documentation felt like trying to redesign a car while it was still running!
I initially tried to dance around the issue with two approaches:
- Creating workarounds that could play nice with the existing tools
- Bypassing abstraction layers entirely (like ditching LangChain’s Weaviate interface to work with Weaviate directly)
While the second approach promised better long-term results, it was a headache for prototyping. And those clever workarounds? They turned into time-consuming nightmares, spawning more bugs than solutions.
Finally, I took the plunge. Armed with documentation and a determination to understand the codebase, I started modifying the source code directly. To my surprise, implementing the features we needed for our prototypes wasn’t just doable - it was actually straightforward!
Looking back, while this might seem like a small victory, it represented a major mental breakthrough. Sometimes the most intimidating part of coding isn’t the complexity - it’s simply taking that first step. I’m grateful for this experience and the confidence it’s given me to dive deeper into code without fear.
– UTQ –