Raja AI
Your newest team member for your software engineering project - fast, reliable and cost-efficient.
Inspiration
With the advancement of LLMs in recent years, developers have been reaping benefits through their use in code generation. Tools like GitHub Copilot and StarCoder have already demonstrated efficiency and productivity boosts in day-to-day coding tasks. In this light, we identified an unmet need to extend these AI capabilities beyond mere code predictions. We were driven to explore how these code-generating LLMs could be transformed into individual contributors within development teams, especially when they are now more powerful and nuanced in understanding context, ensuring that the time is ripe for such an innovation.
What it does
Raja AI serves as a sophisticated code assistant that utilizes deep understanding of your entire codebase. It interprets engineering tickets, encompassing detailed elements such as reproduction steps, acceptance criteria, error descriptions, or feature outlines. Leveraging this information, Raja AI generates relevant code and proactively submits a pull request, ready for human review and approval.
How we built it
Our tech stack uses Tailwind CSS and Next.JS on the front-end, with Flask, Langchain, Pinecone, OpenAI, Convex, and Clerk on the back-end, all deployed through Netlify. We store vector embeddings of the codebase in Pinecone, which lets us accurately identify code changes needed based on ticket details using a self-query retriever. For meaningful code changes, we use Langchain and chain of thought prompting techniques, leveraging the OpenAI GPT-3.5 Turbo Model with a 16k Context Window to preserve the context of file contents. We've built a custom API with Flask to call the Raja agent. Clerk manages user authentication and Convex stores the global state, tracking user-specific information such as tickets and repositories.
Challenges we ran into
We faced several challenges, including pinpointing the most relevant files from ticket descriptions, for which we designed a self-query retriever to acquire document metadata. Balancing in-context learning posed a problem, as integrating file contents into the prompt often exceeded the 16k Context Window. Our solution involved focusing the model on the most pertinent files. Current limitations also persist, such as the GPT model's inability to access latest tech documentation like Langchain and Pinecone API. To address this, we plan on fine-tuning these models with StackOverFlow datasets in the future.
Accomplishments that we're proud of
We're proud of creating an advanced AI assistant capable of comprehending an entire codebase and contributing meaningful code changes. The successful integration of various cutting-edge technologies - including OpenAI, Pinecone, Langchain, Convex, Clerk and Netlify - into a unified, functional system is a notable achievement. We are also pleased with our development of the self-query retriever, which has significantly improved our ability to pinpoint necessary code changes based on ticket descriptions.
What we learned
In essence, we've constructed an advanced ETL pipeline utilizing sophisticated prompting techniques. These methods ensured the output from the Raja agent was of high-quality, suitable, and amenable for submission as a pull request. Through this process, we developed a deeper understanding of how to optimize large language models, such as the GPT-3.5 Turbo Model, to perform complex tasks. We learned to handle the challenges of data management, particularly in optimizing the 16k Context Window for effective in-context learning.
What's next for Raja AI
To address current limitations, our immediate goal is to fine-tune the models with the latest tech documentation from StackOverFlow datasets. We are also planning to optimize Raja AI's decision-making process for selecting relevant files, thereby ensuring more efficient code generation. Looking ahead, we envision expanding the application of Raja AI to broader contexts and enhancing its adaptability to different project environments, evolving it from a coding assistant to an indispensable team member.

Log in or sign up for Devpost to join the conversation.