Skip to content

Commit cd8db35

Browse files
authored
add fn acquisition blog (#27)
* add fn acquisition blog * add links * small fix * update blog post * update blog post
1 parent 136e481 commit cd8db35

File tree

3 files changed

+121
-1
lines changed

3 files changed

+121
-1
lines changed
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
---
2+
slug: fluxninja-joins-coderabbit
3+
title: FluxNinja joins CodeRabbit
4+
description:
5+
CodeRabbit has acquired FluxNinja, a startup that provides a platform for
6+
building scalable generative AI applications.
7+
authors: [gur, vishu]
8+
tags:
9+
[
10+
"AI",
11+
"Acquisition",
12+
"Generative AI",
13+
"Code Review",
14+
"Load Management",
15+
"Rate Limiting",
16+
"Caching",
17+
"Scheduler",
18+
]
19+
image: ./preview.png
20+
---
21+
22+
![FluxNinja joins CodeRabbit](./preview.png)
23+
24+
We are excited to announce that CodeRabbit has acquired
25+
[FluxNinja](https://fluxninja.com), a startup that provides a platform for
26+
building scalable generative AI applications. This acquisition will allow us to
27+
ship new use cases at an industrial-pace while sustaining our rapidly growing
28+
user base. FluxNinja's Aperture product provides advanced rate & concurrency
29+
limiting, caching, and request prioritization capabilities that are essential
30+
for reliable and cost-effective AI workflows.
31+
32+
<!--truncate-->
33+
34+
Since our launch,
35+
[Aperture's open-source](https://github.com/fluxninja/aperture) core engine has
36+
been critical to our infrastructure. Our initial use case centered around
37+
[mitigating aggressive rate limits](../openai-rate-limits-2023-10-23/blog.md)
38+
imposed by OpenAI, allowing us to prioritize paid and real-time chat users
39+
during peak load hours while queuing requests from the free users. Further, we
40+
used Aperture's
41+
[caching and rate-limiting capabilities](../how-we-built-cost-effective-generative-ai-application-2023-12-23/blog.md)
42+
to manage costs that in turn allowed us to offer open-source developers a fully
43+
featured free tier by minimizing abuse. These capabilities allowed us to scale
44+
our user base without ever putting up a waitlist and at a price point that is
45+
sustainable for us. With Aperture's help, CodeRabbit has scaled to over 100K
46+
repositories and several thousand organizations under its review in a short
47+
period.
48+
49+
We started CodeRabbit with a vision to build an AI-first developer tooling
50+
company from the ground up. Building enterprise-ready applied AI tech is unlike
51+
any other software engineering challenge of the past. Based on our learnings
52+
while building complex workflows, it became apparent that we need to invest in a
53+
platform that can solve the following problems:
54+
55+
- Prompt rendering: Prompt design and rendering is akin to responsive web
56+
design. Web servers render pages based on the screen size and other
57+
parameters, for example, on a mobile device, navigation bars are usually
58+
rendered as hamburger menus, making it easier for human consumption.
59+
Similarly, we need a prompt server that can render prompts based on the
60+
context windows of underlying models and prioritize the packing of context
61+
based on business attributes, making it easier for AI consumption. It's not
62+
feasible to include the entire repository, past conversations, documentation,
63+
learnings, etc. in a single code review prompt because of the context window
64+
size limitations. Even if it was possible, AI models exhibit poor recall when
65+
doing an inference on a completely packed context window. While tight packing
66+
may be acceptable for use cases like chat, it’s not for use cases like code
67+
reviews that require accurate inferences. Therefore, it's critical to render
68+
prompts in such a way that the quality of inference is high for each use-case,
69+
while being cost-effective and fast. In addition to packing logic, basic
70+
guardrails are also needed, especially when rendering prompts based on inputs
71+
from end-users. Since we provide a free service to public repositories, we
72+
have to ensure that our product is not misused beyond its intended purpose or
73+
tricked into divulging sensitive information, which could include our base
74+
prompts.
75+
76+
- Validation & quality checks: Generative AI models consume text and output
77+
text. On the other hand, traditional code and APIs required structured data.
78+
Therefore, the prompt service needs to expose a RESTful or gRPC API that can
79+
be consumed by the other services in the workflow. We touched upon the
80+
rendering of prompts based on structured requests in the previous point, but
81+
the prompt service also needs to parse, validate responses into structured
82+
data and measure the quality of the inference. This is a non-trivial problem,
83+
and multiple tries are often required to ensure that the response is thorough
84+
and meets the quality bar. For instance, we found that when we pack multiple
85+
files in a single code review prompt, AI models often miss hunks within a file
86+
or miss files altogether, leading to incomplete reviews.
87+
88+
- Observability: One key challenge with generative AI and prompting is that it's
89+
inherently non-deterministic. The same prompt can result in vastly different
90+
outputs, which can be frustrating, but this is precisely what makes AI systems
91+
powerful in the first place. Even slight variations in the prompt can result
92+
in vastly inferior or noisy outputs, leading to a decline in user engagement.
93+
At the same time, the underlying AI models are ever-evolving, and the
94+
established prompts drift over time as the models get regular updates.
95+
Traditional observability is of little use here, and we need to rethink how we
96+
classify and track generated output and measure quality. Again, this is a
97+
problem that we have to solve in-house.
98+
99+
While FluxNinja's Aperture project was limited to solving a different problem
100+
around load management and reliability, we found that the underlying technology
101+
and the team's expertise were a perfect foundation for building the AI platform.
102+
Prompt engineering is in its nascent stage but is emerging as a joystick for
103+
controlling AI behavior. Packing the context window with relevant documents
104+
(retrieval augmented generation, aka RAG) is also emerging as the preferred way
105+
of providing proprietary data compared to fine-tuning the model. Most AI labs
106+
focus on increasing the context window rather than making fine-tuning easier or
107+
cheaper. Despite the emergence of these clear trends, applied AI systems are
108+
still in their infancy. None of the recent AI vendors seem to be building the
109+
"right" platform, as most of their focus has been on background/durable
110+
execution frameworks, model routing proxies/gateways, composable RAG pipelines,
111+
and so on. Most of these approaches fall short of what a real-world AI workflow
112+
requires. The right abstractions and best practices will still have to appear,
113+
and the practitioners themselves will have to build them. AI platforms will be a
114+
differentiator for AI-first companies, and we are excited to tackle this problem
115+
head-on with a systems engineering mindset.
116+
117+
We are excited to have the FluxNinja team on board and to bring our users the
118+
best-in-class AI workflows. We are also happy to welcome
119+
[Harjot Gill](https://www.linkedin.com/in/harjotsgill/), the founder of
120+
FluxNinja, and the rest of the team to CodeRabbit.
Loading

docs/guides/prompt-customization.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ syntax node matches the rule or not. There are three kinds of atomic rule:
142142

143143
#### Relational rule
144144

145-
Relational rule defines the relationship between two syntax nodes. There are
145+
A relational rule defines the relationship between two syntax nodes. There are
146146
four kinds of relational rule: `inside`, `has`, `follows` and `precedes`.
147147

148148
All four relational rules accept a sub-rule object as their value. The sub-rule

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy