Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
How we built an AI code reviewer with serverles...
Search
Yan Cui
February 12, 2025
Technology
190
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
How we built an AI code reviewer with serverless and Bedrock
Slides for my talk at the Serverless London meetup on 12-Feb-2025
Yan Cui
February 12, 2025
More Decks by Yan Cui
See All by Yan Cui
Money-saving tips for the frugal serverless developer (AWS Community Summit)
theburningmonk
1
240
Money-saving tips for the frugal serverless developer
theburningmonk
1
840
Why the fuzz about serverless (with CompassDigital)
theburningmonk
0
130
Money-saving tips for the frugal serverless developer
theburningmonk
0
190
Efficient patterns for serverless development (AWS Summit London)
theburningmonk
0
200
7 ways to solve Lambda cold starts
theburningmonk
0
110
Saving Money on Serverless: Common Mistakes and How to Avoid Them
theburningmonk
0
110
3 Ways to Improve Serverless Performance
theburningmonk
0
97
Smart and efficient ways to test serverless architectures
theburningmonk
1
330
Other Decks in Technology
See All in Technology
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.9k
【CEDEC2026】専門性の高いデフォルメチームが挑んだ人材育成戦略 〜Cygames Academiaの企画から実施まで〜
cygames
PRO
0
530
QAエンジニア起点で進める、SmartHRにおける信頼性向上について
kaomi_wombat
1
120
強化学習「理論」入門
enakai00
3
3.6k
認知負荷をGemini で溶かす — GKE 基盤「Orbit」における AI エージェントの実践
sansantech
PRO
1
270
PLATEAU で バーチャル花火大会
tatsuya1970
0
110
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
280
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
2.3k
Redmine 7.0 新機能・機能強化解説(OSC2026京都ダイジェスト版)
vividtone
1
200
初めてのGitHub Actions / GitHub Actions at First
tooppoo
0
150
【CEDEC2026】『GRANBLUE FANTASY: Relink - Endless Ragnarok』のバトル制作事例 ~最高のキャラゲーを目指して~
cygames
PRO
0
230
【CEDEC2026】ゲームシナリオライターを支援するAIツール開発の実践 ― 設計とプロンプトの工夫 ―
cygames
PRO
1
770
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
260
Paper Plane
katiecoart
PRO
2
52k
Un-Boring Meetings
codingconduct
0
380
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
280
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
690
We Have a Design System, Now What?
morganepeng
55
8.3k
Producing Creativity
orderedlist
PRO
348
40k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
The SEO Collaboration Effect
kristinabergwall1
1
520
Facilitating Awesome Meetings
lara
57
7.1k
Transcript
How we built an AI Code Reviewer with Serverless and
Bedrock
Yan Cui http://theburningmonk.com @theburningmonk AWS user since 2010
Yan Cui http://theburningmonk.com @theburningmonk running serverless in production since 2016
Developer Advocate @ Yan Cui http://theburningmonk.com @theburningmonk
Yan Cui http://theburningmonk.com @theburningmonk independent consultant
None
evolua.io Demo
Architecture
API Gateway EventBridge Webhook
API Gateway DynamoDB Bedrock EventBridge Webhook
API Gateway DynamoDB Bedrock EventBridge Webhook
API Gateway DynamoDB Bedrock EventBridge Webhook evolua.io
None
API Gateway DynamoDB Bedrock EventBridge Webhook AppSync evolua.io
API Gateway DynamoDB Bedrock EventBridge Webhook AppSync evolua.io
None
API Gateway DynamoDB Bedrock EventBridge Webhook AppSync evolua.io Authoriser
API Gateway DynamoDB Bedrock EventBridge Webhook AppSync evolua.io Authoriser
API Gateway DynamoDB Bedrock EventBridge Webhook AppSync evolua.io Authoriser
API Gateway DynamoDB Bedrock EventBridge Webhook AppSync evolua.io Authoriser
API Gateway DynamoDB Bedrock EventBridge Webhook AppSync evolua.io Authoriser
Challenges (for an AI code reviewer) Handling sensitive data for
customers
Challenges (for an AI code reviewer) Large fi les. Large
PRs with many fi les. Handling sensitive data for customers
Why Bedrock?
Security
Security Data is encrypted at rest.
www.wiz.io/blog/wiz-research-uncovers-exposed-deepseek-database-leak
aws.amazon.com/bedrock/faqs
Security Data is encrypted at rest. Inputs & Outputs are
not shared with model providers. Inputs & Outputs are not used to train other models.
API Gateway DynamoDB Bedrock EventBridge Webhook AppSync evolua.io Authoriser Fallback
Primary
privacy.anthropic.com/en/articles/7996885-how-do-you-use-personal-data-in-model-training
Serverless
Serverless Usage-based AND provisioned throughput pricing
None
None
1M Input Tokens 1M Output Tokens $0.14 v3 r1 $0.28
$0.55 $2.19 Sonnet $3.75 $15.0 Haiku $0.80 $4.00
Very cost ef fi cient!
Very cost ef fi cient! Data is stored in China.
Very cost ef fi cient! Data is stored in China.
Data might be used to train other models.
www.wiz.io/blog/wiz-research-uncovers-exposed-deepseek-database-leak
Very cost ef fi cient! Data is stored in China.
Data might be used to train other models. Operationally immature.
None
No token-based pricing yet
No token-based pricing yet “GPU-based instance type like ml.p5e.48xlarge is
recommended”
ml.p5e.48xlarge 💰💰💰💰💰💰💰💰💰💰 💰💰💰💰💰💰💰💰💰💰 💰💰💰💰💰💰💰💰💰💰 💰💰💰💰💰💰💰💰💰💰 💰💰💰💰💰💰💰💰
Other capabilities Guardrails Knowledge base (managed RAG) Agents Cross-region inference
Model evaluations
None
None
None
API Gateway DynamoDB Bedrock EventBridge Webhook AppSync evolua.io Authoriser Fallback
Primary
Lessons
Webhook
Webhook Analyse changes
Webhook Analyse changes Feedback
Condensed view…
None
Lambda timed out after 15 mins
Succeeded on automatic retry
Webhook Analyse changes Feedback LLM limits GitHub limits AWS limits
Lesson: AI is 10% of the problem
None
Reasoning ability
Context window Max response tokens API rate limit Reasoning ability
Context window Max response tokens API rate limit Reasoning ability
Cost Performance
Context window Max response tokens API rate limit Reasoning ability
Cost Performance Important selection criteria for LLMs
Doing cool AI stuff! Working around AI limits
Doing cool AI stuff! Working around AI limits Stop playing
with my bowl…
Context window Max response tokens API rate limit Reasoning ability
Cost Performance
Claude 3.5 Sonnet’s default throughput is 50 per minute
Claude 3.5 Sonnet’s default throughput is 50 per minute Can
be raised to 1,000 per minute
Claude 3.5 Sonnet’s default throughput is 50 per minute Can
be raised to 1,000 per minute Bedrock has cross- region inference
Mitigate API rate limit Raise account limits. Use Bedrock cross-region
inference.
Mitigate API rate limit Raise account limits. Use Bedrock cross-region
inference. Limit no. of parallel requests per PR.
Mitigate API rate limit Raise account limits. Use Bedrock cross-region
inference. Limit no. of parallel requests per PR. Fallback to Anthropic & less powerful models (Claude 3 Sonnet, Claude 3.5 Haiku)
Future work: incorporate other models (Nova, DeepSeek, etc.)
Future work: incorporate other models (Nova, DeepSeek, etc.) Also good
for cost control!
Lesson: LLMs are still quite expensive
None
Dif fi cult to build a sustainable and competitive business
Cost control Only analyse changed lines.
Cost control Only analyse changed lines. Good for cost control
Good for UX
Cost control Only analyse changed lines. Limit free users to
few PRs per month.
API Gateway DynamoDB Bedrock EventBridge Webhook
API Gateway DynamoDB Bedrock EventBridge Webhook Built-in retries & DLQ
Lambda timed out after 15 mins
Lambda timed out after 15 mins Reprocess fi les on
retry…
Lambda timed out after 15 mins Reprocess fi les on
retry… Duplicated side- effects (e.g. Github comments)
Cost control Only analyse changed lines. Limit free users to
few PRs per month. Use checkpoints to avoid re-processing fi les on retries
const issues = await executeIdempotently( `${event-id}-${filename}-analyze`, () => analyzeFile(file) );
... await executeIdempotently( `${event-id}-${filename}-add-gh-comment`, () => addReviewComment(filename, comment) );
Webhook Analyse changes Feedback Why not Step Functions?
Webhook Analyse changes Feedback Why not Step Functions? Checkpoints is
just easier 🤷
Lesson: Latency is a challenge
Models take 10s of seconds to analyse each fi le
Wasted CPU cycles in Lambda
Future work: try other models
Future work: make use of these CPU cycles
Lesson: Be ware of hallucinations
“Give me JSON in this format”
None
“Give me JSON in this format” “Nope!”
None
Non-existent codes, invalid URLs
Non-existent line numbers
Future works
Go to evolua.io to try it out. We’d love your
feedback!
Questions?