<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: calleb</title>
    <description>The latest articles on DEV Community by calleb (@callebknox).</description>
    <link>https://dev.to/callebknox</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3259180%2Ffda6b721-4b8f-415d-8003-33de37b10e06.jpg</url>
      <title>DEV Community: calleb</title>
      <link>https://dev.to/callebknox</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/callebknox"/>
    <language>en</language>
    <item>
      <title>Ontribe: A Protocol for Onchain Reputation in the Age of Trustless Identity</title>
      <dc:creator>calleb</dc:creator>
      <pubDate>Fri, 13 Jun 2025 07:26:20 +0000</pubDate>
      <link>https://dev.to/callebknox/ontribe-a-protocol-for-onchain-reputation-in-the-age-of-trustless-identity-20ih</link>
      <guid>https://dev.to/callebknox/ontribe-a-protocol-for-onchain-reputation-in-the-age-of-trustless-identity-20ih</guid>
      <description>&lt;p&gt;The internet gave us freedom.&lt;br&gt;
Web3 gives us ownership.&lt;br&gt;
But without reputation, ownership is shallow — and trust doesn’t scale.&lt;/p&gt;

&lt;p&gt;Ontribe is a protocol for onchain reputation — composable, verifiable, and community-owned.&lt;br&gt;
It helps you prove who you are through what you’ve done — without doxxing, vanity metrics, or centralized gatekeepers.&lt;/p&gt;

&lt;p&gt;Because in a network society, your signal is your social capital.&lt;/p&gt;

&lt;p&gt;And now, Ontribe is going live — natively on Base, integrated into the Bankr ecosystem for real-time, trust-based coordination.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧩 What is Ontribe?&lt;/strong&gt;&lt;br&gt;
Ontribe transforms scattered actions into structured identity.&lt;br&gt;
Not with static bios, but through provable contributions.&lt;/p&gt;

&lt;p&gt;It’s a protocol for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Verifying onchain &amp;amp; offchain activity&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Building portable, multi-wallet identities&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Curating reputational “karma” from real contributions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Filtering signal from noise in open, trustless systems&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Imagine a passport for your Web3 presence — not just what you hold, but what you’ve backed, built, or contributed to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🌐 Why Base + Bankr?&lt;/strong&gt;&lt;br&gt;
Bankr gives Ontribe a native interface for crypto-native interactions — social, seamless, and programmable. Base provides fast, low-cost infra optimized for onchain activity at scale.&lt;/p&gt;

&lt;p&gt;With Bankr, users can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Trade, tip, and trigger onchain actions via X or Warpcast&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Launch tokens and missions via messages&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sync reputation from liquidity, tipping, trading, and social actions&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ontribe will use Bankr to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Capture onchain + social actions as reputation signals&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Score karma from verified posts, swaps, tips, and token launches&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enable trust-weighted access, voting, and onchain roles&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Launch community quests that reward real participation&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s not about who tweets the loudest —&lt;br&gt;
but who builds signal through action.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚙ Key Features&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🔗 Ontribe ID&lt;br&gt;
A dynamic, NFT-based reputation passport. Composable. Portable. Yours.&lt;/p&gt;

&lt;p&gt;📊 Reputation Karma&lt;br&gt;
Earned from governance, contribution, tipping, and engagement. Transparent &amp;amp; weighted.&lt;/p&gt;

&lt;p&gt;🌐 Cross-Chain Signals&lt;br&gt;
Aggregate signals from Base, EVM chains, and offchain sources.&lt;/p&gt;

&lt;p&gt;🛡 Privacy by Design&lt;br&gt;
zk-enabled proofing: verifiable without revealing identity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎯 Use Cases&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Airdrop gating based on contribution, not click farms&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Community voting weighted by trust&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Talent discovery in DAOs &amp;amp; social teams&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Role access based on karma &amp;amp; skill reputation&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🧬 Why Now?&lt;/strong&gt;&lt;br&gt;
Web3 is scaling. So are bots.&lt;br&gt;
Content is easy. Signal is rare.&lt;br&gt;
And trust is still being built from scratch every time.&lt;/p&gt;

&lt;p&gt;We need a protocol that makes reputation portable, provable, and programmable.&lt;/p&gt;

&lt;p&gt;Ontribe is that layer.&lt;br&gt;
It’s not about status — it’s about verified signal from real humans, doing real work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🛠 What’s Coming&lt;/strong&gt;&lt;br&gt;
The MVP will launch inside the Bankr ecosystem, built on Base.&lt;/p&gt;

&lt;p&gt;Early users will be able to:&lt;/p&gt;

&lt;p&gt;Mint their Ontribe ID&lt;/p&gt;

&lt;p&gt;Link multiple wallets + social accounts&lt;/p&gt;

&lt;p&gt;Earn Karma through posts, tips, swaps, token launches, and missions&lt;/p&gt;

&lt;p&gt;Join exclusive drops and gated threads&lt;/p&gt;

&lt;p&gt;Visualize trust-based networks across Bankr and beyond&lt;/p&gt;

&lt;p&gt;Want early access? &lt;a href="https://ontribe.io/" rel="noopener noreferrer"&gt;ontribe.io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚨 TL;DR&lt;/strong&gt;&lt;br&gt;
Ontribe = a protocol for onchain reputation&lt;br&gt;
Built on Base, powered by Bankr&lt;br&gt;
Reputation = identity you own, signal you earn&lt;br&gt;
Trust becomes portable, programmable, and composable&lt;br&gt;
Made for contributors, not influencers&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ontribe&lt;/strong&gt;&lt;br&gt;
Built for contribution.&lt;br&gt;
Backed by reputation.&lt;br&gt;
Owned by communities.&lt;/p&gt;

&lt;p&gt;—&lt;br&gt;
Crafted with intention by &lt;a href="https://x.com/callebknox" rel="noopener noreferrer"&gt;@callebknox&lt;/a&gt;&lt;br&gt;
For those who believe trust should scale with contribution&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Let's build an Agentic Trading System. Together</title>
      <dc:creator>calleb</dc:creator>
      <pubDate>Fri, 13 Jun 2025 03:39:17 +0000</pubDate>
      <link>https://dev.to/callebknox/lets-build-an-agentic-trading-system-together-47mp</link>
      <guid>https://dev.to/callebknox/lets-build-an-agentic-trading-system-together-47mp</guid>
      <description>&lt;p&gt;&lt;strong&gt;My role?&lt;/strong&gt;&lt;br&gt;
Basically building mathematical models to estimate market risk for all financial derivatives at one of the largest European banks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Was it fun?&lt;/strong&gt;&lt;br&gt;
Yes, of course! It was my dream job back then (the fact that it was the first job out of Maths school probably helped).&lt;/p&gt;

&lt;p&gt;I used to spend my days fitting statistical models to price and hedge financial derivatives, way before Machine Learning was cool.&lt;/p&gt;

&lt;p&gt;It was all about MATLAB (not my cup of tea, but my best friend at the time. Is that too sad? xD).&lt;/p&gt;

&lt;p&gt;Apart from maths and MATLAB, a big part of my job was talking to traders, the guys at the bank that were using these models to make trading decisions that fit their (and the bank's) risk appetite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Then something happened&lt;/strong&gt;&lt;br&gt;
I entered a trading floor for the first time in my life, and I got a glimpse of what actual trading looks like.&lt;/p&gt;

&lt;p&gt;Bloomberg terminals, fax machines, phone booths.&lt;/p&gt;

&lt;p&gt;Risk management, portfolio construction, and of course trading.&lt;/p&gt;

&lt;p&gt;One of the things that caught my attention, was the amount of screens showing Bloomberg news 24/7.&lt;/p&gt;

&lt;p&gt;Traders would constantly have one eye on their Bloomberg terminal, and the other on Bloomberg news.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why?&lt;/strong&gt;&lt;br&gt;
Because they knew that some news can really move the market.&lt;/p&gt;

&lt;p&gt;So they wanted to be the first to know, take action and profit.&lt;/p&gt;

&lt;p&gt;Back then there was no such thing as Large Language Models. But there were a lot of smart tricks to extract sentiment from news.&lt;/p&gt;

&lt;p&gt;Simple regular expressions, helped quant traders build C++ functions running on Bloomberg terminals, generating numeric scores for potential market moves.&lt;/p&gt;

&lt;p&gt;These inputs were then used to make trading decisions (by traders), that had to be approved by risk management.&lt;/p&gt;

&lt;p&gt;That was the Prehistory of Natural Language Processing.&lt;/p&gt;

&lt;p&gt;Fast forward 13 years….&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sentiment analysis is a solved problem in 2025&lt;/strong&gt;&lt;br&gt;
Large Language Models are universal functions that can map any given text to any structured output you want.&lt;/p&gt;

&lt;p&gt;For example, map a piece of market news to a JSON formatted list of sentiment scores.&lt;/p&gt;

&lt;p&gt;Of course, you need to wrestle a bit with your prompts to get there.&lt;/p&gt;

&lt;p&gt;And this is something I want to quickly show you if you have 5 minutes. Do you?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A 5-minutes straight-to-the-point prompt engineering example&lt;/strong&gt;&lt;br&gt;
All the source code I am showing you here is in this repo I put together.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/CallebKnox/sentiment-extraction-with-llms-main/tree/main/sentiment-extraction-with-llms-main/sentiment-extraction-with-llms-main" rel="noopener noreferrer"&gt;&lt;strong&gt;Link to the repo&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We will be using [&lt;a href="https://dev.tourl"&gt;BAML&lt;/a&gt;](&lt;a href="https://github.com/BoundaryML/baml" rel="noopener noreferrer"&gt;https://github.com/BoundaryML/baml&lt;/a&gt;) (Basically a Made up Language) to ensure our LLM generates the type of structured output we want.&lt;/p&gt;

&lt;p&gt;Why BAML?&lt;/p&gt;

&lt;p&gt;I personally prefer BAML to all-in-one frameworks like LangChain, as it makes fast prompt experimentation (the key to success for 99% of LLM problems) easier.&lt;/p&gt;

&lt;p&gt;I also strongly recommend you use &lt;a href="https://docs.astral.sh/uv/" rel="noopener noreferrer"&gt;&lt;strong&gt;uv&lt;/strong&gt;&lt;/a&gt; to package your project.&lt;/p&gt;

&lt;p&gt;curl -LsSf &lt;a href="https://astral.sh/uv/install.sh" rel="noopener noreferrer"&gt;https://astral.sh/uv/install.sh&lt;/a&gt; | sh&lt;br&gt;
For example, to create the project structure you just need to run:&lt;/p&gt;

&lt;p&gt;uv init crypto-sentiment-parser&lt;br&gt;
Nice, let's now install the BAML client and the BAML cli.&lt;/p&gt;

&lt;p&gt;uv add baml-py&lt;br&gt;
To generate some boilerplate BAML code under &lt;code&gt;baml_src&lt;/code&gt; run:&lt;/p&gt;

&lt;p&gt;uv run baml-cli init&lt;br&gt;
From these *.baml typed files, you can generate the equivalent Python code with:&lt;/p&gt;

&lt;p&gt;uv run baml-cli generate&lt;br&gt;
And here is where the magic starts to happen → In the BAML language a prompt is a function with strict types.&lt;/p&gt;

&lt;p&gt;You define your types in BAML&lt;/p&gt;

&lt;p&gt;class CryptoSentiment {&lt;br&gt;
 coin Coin&lt;br&gt;
 score Score&lt;br&gt;
 reason string&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;enum Coin {&lt;br&gt;
 Bitcoin&lt;br&gt;
 Ethereum&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;enum Score {&lt;br&gt;
 Positive @description("Positive sentiment")&lt;br&gt;
 Negative @description("Negative sentiment")&lt;br&gt;
 Neutral @description("Neutral sentiment")&lt;br&gt;
}&lt;br&gt;
and from there, you prompt becomes a typed function. Genius.&lt;/p&gt;

&lt;p&gt;For example, here is our ExtractCryptoSentiment function, that maps a string to a list of CryptoSentiment objects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnd9jb0e3nnyhnjc354pw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnd9jb0e3nnyhnjc354pw.png" alt="Image description" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From here, the BAML client will generate the Python code for you and put it in the baml_client folder.&lt;/p&gt;

&lt;p&gt;So, whenever you need to invoke this very simple sentiment extraction agent, you just need to use a super simple function like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2jzsuyor4hoiorv9oe5u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2jzsuyor4hoiorv9oe5u.png" alt="Image description" width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to play around, check out &lt;a href="https://github.com/CallebKnox/sentiment-extraction-with-llms-main/tree/main/sentiment-extraction-with-llms-main/sentiment-extraction-with-llms-main" rel="noopener noreferrer"&gt;this repository&lt;/a&gt; I put together. Feel free to adjust the code to your own needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So what now?&lt;/strong&gt;&lt;br&gt;
Building a sentiment extraction parser like we just did is very cool and all that.&lt;br&gt;
But this is just one piece of the trading puzzle.&lt;/p&gt;

&lt;p&gt;Trading in the real world takes more than that. WAY more.&lt;/p&gt;

&lt;p&gt;Trading smartly is all about:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Finding&lt;/strong&gt; a good trading idea&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testing&lt;/strong&gt; with hard data if this idea is really a good idea&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Executing&lt;/strong&gt; the idea&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fme6u3uoj76jbioiu01cv.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fme6u3uoj76jbioiu01cv.gif" alt="Image description" width="960" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, the question that I kept asking myself last week was&lt;/p&gt;

&lt;p&gt;Can we take things to the next level, and build not only a single news sentiment service, but a &lt;strong&gt;semi-autonomous fleet of agents&lt;/strong&gt; that can &lt;strong&gt;find, test and execute trading strategies&lt;/strong&gt; as the human traders I met 13 years ago did?&lt;/p&gt;

&lt;p&gt;And you know what?&lt;/p&gt;

&lt;p&gt;I think &lt;strong&gt;WE can&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And I say WE, because I want you to join me in this journey.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Agent architectures that scale</title>
      <dc:creator>calleb</dc:creator>
      <pubDate>Thu, 12 Jun 2025 15:06:58 +0000</pubDate>
      <link>https://dev.to/callebknox/agent-architectures-that-scale-53of</link>
      <guid>https://dev.to/callebknox/agent-architectures-that-scale-53of</guid>
      <description>&lt;p&gt;These past 4 weeks I have talked to several companies, who want to develop some sort of agentic platform.&lt;/p&gt;

&lt;p&gt;They are all in the same situation.&lt;/p&gt;

&lt;p&gt;They managed to build a Proof Of Concept, for their business case, using third-party services (like OpenAI API) and duck-taped Python scripts&lt;/p&gt;

&lt;p&gt;For example&lt;br&gt;
An agent demo to automate customer support workflows in a gaming company, built as a single Python Langgraph flow running on AWS Lambda.&lt;/p&gt;

&lt;p&gt;What’s the problem&lt;br&gt;
I have worked as an ML engineer for 10 years, and I have seen this hype-crash-back-to-basics several times.&lt;/p&gt;

&lt;p&gt;10 years ago it was the Deep Learning hype, when companies of all sorts (including the one I was working back then) thought that Deep Learning for Computer Vision was all about training neural networks from scratch, without thinking of deployment and operationalisation (aka fancy ML without Ops).&lt;/p&gt;

&lt;p&gt;Needless to say, all these projects ended up badly (including the one I was working xD).&lt;/p&gt;

&lt;p&gt;And the thing is, I see a similar trend these days with LLM engineering and LLMOps.&lt;/p&gt;

&lt;p&gt;Companies know how to build LLM demos, but they don’t know how to scale and operate them. So their toys never see the light of production.&lt;/p&gt;

&lt;p&gt;Either because they are&lt;/p&gt;

&lt;p&gt;too slow&lt;/p&gt;

&lt;p&gt;too expensive&lt;/p&gt;

&lt;p&gt;too hard to trust,&lt;/p&gt;

&lt;p&gt;or all of these reasons together.&lt;/p&gt;

&lt;p&gt;Today I want to share my 2 cents to help you go from LLM toys to LLM products that move the needle for your company.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An LLMOps blueprint&lt;/strong&gt;&lt;br&gt;
Agentic platforms are no dark magic.&lt;/p&gt;

&lt;p&gt;They are just a bunch of applications running as containerised services inside a compute platform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1xlfcbcu93qkcnefbgcn.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1xlfcbcu93qkcnefbgcn.gif" alt="Image description" width="960" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s go one by one:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compute platform&lt;/strong&gt;&lt;br&gt;
When you are a small company, you can start with serverless compute like AWS Lambda or GCP Cloud Functions. However, as you start to grow, and token volumes increase in your agentic workflows, your cloud bills will start to grow. A LOT.&lt;/p&gt;

&lt;p&gt;So, unless you are willing to burn cash, I recommend you get into the Kubernetes train.&lt;/p&gt;

&lt;p&gt;Your cost curve will flatten, and you will increase return of investment.&lt;/p&gt;

&lt;p&gt;My advice&lt;/p&gt;

&lt;p&gt;The Kubernetes learning curve is steep, especially at the beginning. However, when you overcome this first shock, a whole new world of possibilities opens in front of your eyes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent workflow logic&lt;/strong&gt;&lt;br&gt;
This is typically a Python script written using libraries like&lt;/p&gt;

&lt;p&gt;Langchain&lt;/p&gt;

&lt;p&gt;Pydantic AI&lt;/p&gt;

&lt;p&gt;Langgraph&lt;/p&gt;

&lt;p&gt;Llamaindex&lt;/p&gt;

&lt;p&gt;or, even better, using a Rust alternative like Rig.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7cpkk9btdm6n6erpxj33.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7cpkk9btdm6n6erpxj33.jpg" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My tip&lt;br&gt;
Rust is a compiled language, that produces very small binaries, that translate into super slim containers running in your cluster. This means you can run 10-50x more agents in Rust than in Python, using the same infrastructure. So you build safer, faster and cheaper agents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LLM servers&lt;/strong&gt;&lt;br&gt;
LLM servers, that provide text completions used by the agent workflows to reason, and to output responses.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F91riih8kmssecpletot8.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F91riih8kmssecpletot8.gif" alt="Image description" width="960" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tool servers&lt;/strong&gt;&lt;br&gt;
Tool servers, that acts as gateways between the agents and the external services theses agents invoke to accomplish their tasks&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmsogurdazb22vk41sw1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmsogurdazb22vk41sw1.gif" alt="Image description" width="960" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the thing is, with the emergence of standards for&lt;/p&gt;

&lt;p&gt;Agent-tool interaction, like Model Context Protocol introduced by Anthropic&lt;/p&gt;

&lt;p&gt;Agent-to-Agent interaction, like the newly proposed Agent2Agent protocol by Google.&lt;/p&gt;

&lt;p&gt;this modularisation will take us to yet-another era of microservices architectures.&lt;/p&gt;

&lt;p&gt;In this case, micro-agent architectures.&lt;/p&gt;

&lt;p&gt;Which means that, if you and your company want to make the most out of it, you need to go back to good-old software engineering and DevOps best practices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In a nutshell&lt;/strong&gt;&lt;br&gt;
IMHO this is the design that unlocks the door to Agentic Architectures that help you either&lt;/p&gt;

&lt;p&gt;make more money for your business, or&lt;/p&gt;

&lt;p&gt;spend less money in your business.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Build and Deploy a Real Time ML System</title>
      <dc:creator>calleb</dc:creator>
      <pubDate>Thu, 12 Jun 2025 07:59:08 +0000</pubDate>
      <link>https://dev.to/callebknox/build-and-deploy-a-real-time-ml-system-4hia</link>
      <guid>https://dev.to/callebknox/build-and-deploy-a-real-time-ml-system-4hia</guid>
      <description>&lt;p&gt;Today I will show you how to build a real time ML system to predict credit card fraud on top of the &lt;a href="https://turboml.com/" rel="noopener noreferrer"&gt;TurboML platform&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Feel free to adjust the code to your own use case&lt;/p&gt;

&lt;p&gt;crypto price prediction&lt;/p&gt;

&lt;p&gt;click-through rate prediction&lt;/p&gt;

&lt;p&gt;anomaly detection, or&lt;/p&gt;

&lt;p&gt;whatever problem that needs ML models to quickly adapt to changing patterns&lt;/p&gt;

&lt;p&gt;Let's dive in!&lt;/p&gt;

&lt;p&gt;All the code is available in this &lt;a href="https://github.com/CallebKnox/end-2-end-real-time-ml" rel="noopener noreferrer"&gt;Github repository&lt;/a&gt; ⭐&lt;/p&gt;

&lt;p&gt;The problem&lt;br&gt;
Every time your credit card is used online by someone (hopefully you), your card issuer has to check whether the transaction is legitimate.&lt;/p&gt;

&lt;p&gt;Behind the scenes, your credit card issuer (e.g. Visa, Mastercard, etc.) runs a real time ML system, that&lt;/p&gt;

&lt;p&gt;Ingests the transaction data&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiara5tzq7sn48lm2v1kj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiara5tzq7sn48lm2v1kj.jpg" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enriches the data with additional features (aka feature engineering).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flv4aa15ijckc0x4rwo67.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flv4aa15ijckc0x4rwo67.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pipes these feature into a Machine Learning model. In this case, a classification model that outputs a fraud score. If the score is above a certain threshold, the transaction is flagged as a fraud.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxvj6mkm9i6ccpl49u4hm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxvj6mkm9i6ccpl49u4hm.jpg" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Serves these scores and flags to downstream services, so they can act accordingly, for example:&lt;/p&gt;

&lt;p&gt;Block the transaction&lt;/p&gt;

&lt;p&gt;Ban the card&lt;/p&gt;

&lt;p&gt;Send an SMS alert to the user&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl6uanepuvo1dgfk176pn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl6uanepuvo1dgfk176pn.jpg" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The system is modular, so different feature engineering logic and models can be applied for the same incoming data.&lt;/p&gt;

&lt;p&gt;This way their internal Data Science teams can do things like:&lt;/p&gt;

&lt;p&gt;Experiment with different feature engineering logic&lt;/p&gt;

&lt;p&gt;Experiment with different model architectures&lt;/p&gt;

&lt;p&gt;Compare the performance of different models, for safe deployments.&lt;/p&gt;

&lt;p&gt;Monitor the model performance over time&lt;/p&gt;

&lt;p&gt;Retrain the model incrementally on new data, to quickly adapt to changing fraud patterns.&lt;/p&gt;

&lt;p&gt;But the thing is, building the underlying MLOps platform that supports these workflows is no piece of cake.&lt;/p&gt;

&lt;p&gt;So the question is:&lt;/p&gt;

&lt;p&gt;How do you build a production-ready ML system, without having to build from scratch such a platform ❓&lt;/p&gt;

&lt;p&gt;And here is when TurboML comes to the rescue!&lt;/p&gt;

&lt;p&gt;The solution&lt;br&gt;
We will build on top of Turbo ML, a real time ML platform that helps you build, deploy and monitor production-ready real time ML systems.&lt;/p&gt;

&lt;p&gt;The idea is simple (and brilliant).&lt;/p&gt;

&lt;p&gt;We define the business logic in Python, including&lt;/p&gt;

&lt;p&gt;data sources&lt;/p&gt;

&lt;p&gt;feature engineering logic&lt;/p&gt;

&lt;p&gt;model training and evaluation metrics&lt;/p&gt;

&lt;p&gt;and TurboML handles all the infrastructure necessary to bring this logic to life. So you go from idea to production at light speed.&lt;/p&gt;

&lt;p&gt;Let me show you with an example.&lt;/p&gt;

&lt;p&gt;All the code is available in this &lt;a href="https://github.com/Paulescu/end-2-end-real-time-ml" rel="noopener noreferrer"&gt;Github repository&lt;/a&gt; ⭐&lt;/p&gt;

&lt;p&gt;Steps&lt;br&gt;
&lt;strong&gt;1. Install the tools&lt;/strong&gt;&lt;br&gt;
These are the tools you will need to follow the hands-on example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.docker.com/desktop/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt; to spin up Docker containers on your machine&lt;/p&gt;

&lt;p&gt;&lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;VSCode&lt;/a&gt; to open the repository, or any other IDE that supports devcontainers.&lt;/p&gt;

&lt;p&gt;&lt;a href="u(https://code.visualstudio.com/docs/devcontainers/containers)rl"&gt;Dev Containers extension&lt;/a&gt; to open the repository in a devcontainer&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Set up the development environment
&lt;a href="https://github.com/Paulescu/end-2-end-real-time-ml" rel="noopener noreferrer"&gt;The repository&lt;/a&gt; comes with a pre-configured devcontainer that you can use to get started.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Why use a devcontainer?&lt;/p&gt;

&lt;p&gt;Devcontainers are a powerful way to create a reproducible development environment. They allow&lt;/p&gt;

&lt;p&gt;easy cross-platform development, and&lt;/p&gt;

&lt;p&gt;are a great way to onboard new developers.&lt;/p&gt;

&lt;p&gt;The devcontainer we use today is a Linux container based on an official Docker image built by the TurboML team, that comes with the TurboML Python SDK pre-installed. So you can start coding right away.&lt;/p&gt;

&lt;p&gt;To open the repository inside this devcontainer, you:&lt;/p&gt;

&lt;p&gt;git clone this repository&lt;/p&gt;

&lt;p&gt;Reopen the repository in VSCode with the Dev Containers extension, either by&lt;/p&gt;

&lt;p&gt;by clicking on the &lt;code&gt;Dev Container&lt;/code&gt; tab in the bottom left of the VSCode window and selecting &lt;code&gt;Reopen in Container&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foi0out2p6qq5l93i3akt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foi0out2p6qq5l93i3akt.png" alt="Image description" width="800" height="467"&gt;&lt;/a&gt;&lt;br&gt;
running the command palette (Ctrl+Shift+P) and selecting &lt;code&gt;Dev Containers: Reopen in Container&lt;/code&gt;, or&lt;/p&gt;

&lt;p&gt;It will take a few minutes to download the Docker image and start the container. Once everything is ready, open a new terminal session and double-check you are in a devcontainer by running&lt;/p&gt;

&lt;p&gt;$ uname -a&lt;br&gt;
If you see something like this&lt;/p&gt;

&lt;p&gt;Linux 1821e9cf7662 6.10.14-linuxkit #1 SMP Fri Nov 29 17:22:03 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux&lt;br&gt;
you are good to go.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Set your TurboML credentials&lt;/strong&gt;&lt;br&gt;
Copy the .env.example file into a new .env file&lt;/p&gt;

&lt;p&gt;$ cp .env.example .env&lt;br&gt;
and replace the placeholders with your own TurboML credentials.&lt;/p&gt;

&lt;p&gt;TURBOML_BACKEND_URL="YOUR_BACKEND_URL_GOES_HERE"&lt;br&gt;
TURBOML_API_KEY="YOUR_API_KEY_GOES_HERE"&lt;/p&gt;

&lt;p&gt;To get these credentials, sign up for free at &lt;a href="https://turboml.com/" rel="noopener noreferrer"&gt;TurboML&lt;/a&gt; and you will get a workspace with a backend URL and an API key.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi59ddmb9wzwpkqmhcw2y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi59ddmb9wzwpkqmhcw2y.png" alt="Image description" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Create a feature pipeline&lt;/strong&gt;&lt;br&gt;
This is the first pipeline you need to build a real time ML system.&lt;/p&gt;

&lt;p&gt;To do this in TurboML, you first need to create a dataset object for your&lt;/p&gt;

&lt;p&gt;features → set of variables you use to generate predictions, and&lt;/p&gt;

&lt;p&gt;labels → target variable you want to predict&lt;/p&gt;

&lt;p&gt;This is what the &lt;a href="https://github.com/CallebKnox/end-2-end-real-time-ml/blob/2d4336ae2c34bafd58e0a9272c54ded9b88957ed/end-2-end-real-time-ml-main/end-2-end-real-time-ml-main/setup_feature_pipeline.py#L14" rel="noopener noreferrer"&gt;create_datasets&lt;/a&gt; function does.&lt;/p&gt;

&lt;h1&gt;
  
  
  setup_feature_pipeline.py
&lt;/h1&gt;

&lt;p&gt;transactions, labels = create_datasets(&lt;br&gt;
    transactions_dataset_name=config.transactions_dataset_name,&lt;br&gt;
    labels_dataset_name=config.labels_dataset_name,&lt;br&gt;
    n_samples=100,&lt;br&gt;
)&lt;br&gt;
Once you have the dataset objects, you can define the feature engineering logic you want to apply on top of them:&lt;/p&gt;

&lt;h1&gt;
  
  
  setup_feature_pipeline.py
&lt;/h1&gt;

&lt;p&gt;define_feature_engineering(transactions)&lt;br&gt;
All this logic is encapsulated in the &lt;a href="https://github.com/CallebKnox/end-2-end-real-time-ml/blob/main/end-2-end-real-time-ml-main/end-2-end-real-time-ml-main/setup_feature_pipeline.py" rel="noopener noreferrer"&gt;setup_feature_pipeline.py&lt;/a&gt; script, that you can run with the following command:&lt;/p&gt;

&lt;p&gt;$ make feature-pipeline&lt;br&gt;
After running this command, you should see 2 feature groups in your dashboard, one for the features and one for the labels.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdw4gfpiand9m6vtmb1qv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdw4gfpiand9m6vtmb1qv.png" alt="Image description" width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Define and deploy a Machine Learning model&lt;/strong&gt;&lt;br&gt;
Fraud patterns are not static, but evolve over time. Fraudsters are always coming up with new ways to defraud credit card companies, so your ML system needs to adapt o these changes, to keep up with the latest fraud trends.&lt;/p&gt;

&lt;p&gt;To accomplish this, you typically need to:&lt;/p&gt;

&lt;p&gt;Use historical data to train a good initial model. This is often called, offline training.&lt;/p&gt;

&lt;p&gt;Deploy this model either as a streaming job, or as a REST API, so it can start making predictions on new data.&lt;/p&gt;

&lt;p&gt;Add monitoring to the model, so you can detect if it's performing poorly.&lt;/p&gt;

&lt;p&gt;Update the model parameters incrementally as new pairs (input, label) come in. This technique is called online training, or incremental training. The updated model needs to be redeployed frequently, to keep up with the latest fraud trends.&lt;/p&gt;

&lt;p&gt;With TurboML, you save yourself the hassle of building all this infrastructure from scratch.&lt;/p&gt;

&lt;p&gt;Instead, you define the model training logic in Python, using the features and labels we created in the previous step, and TurboML will take care of&lt;/p&gt;

&lt;p&gt;Deploying the model either as a streaming job, or as a REST API&lt;/p&gt;

&lt;p&gt;Monitoring the model performance&lt;/p&gt;

&lt;p&gt;Updating the model parameters incrementally&lt;/p&gt;

&lt;p&gt;All this is encapsulated in the &lt;a href="https://github.com/CallebKnox/end-2-end-real-time-ml/blob/main/end-2-end-real-time-ml-main/end-2-end-real-time-ml-main/setup_model.py" rel="noopener noreferrer"&gt;setup_model.py&lt;/a&gt; script, that you can run with the following command:&lt;/p&gt;

&lt;p&gt;$ make model&lt;/p&gt;

&lt;p&gt;After running this command, you should see the model deployed in your dashboard:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fntwrtwa4nv6csnxxjuli.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fntwrtwa4nv6csnxxjuli.png" alt="Image description" width="800" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Generate live predictions&lt;/strong&gt;&lt;br&gt;
Let's put our model to work. Let's start generating live data of transactions and labels, and see how the model performs.&lt;/p&gt;

&lt;p&gt;I created a &lt;code&gt;generate_live_data.py&lt;/code&gt; script to generate live data. This script samples historical data to simulate a live stream of transactions and labels, and pushes them to the online datasets we created in the previous steps.&lt;/p&gt;

&lt;p&gt;$ make live-data&lt;br&gt;
What about real-world data?&lt;/p&gt;

&lt;p&gt;In a real-world scenario, this data would come from your data sources, for example a Kafka topic or a database table.&lt;/p&gt;

&lt;p&gt;These are called &lt;code&gt;Connectors&lt;/code&gt; in the TurboML platform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi6x3cvy11q9vx0d3wvu5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi6x3cvy11q9vx0d3wvu5.png" alt="Image description" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Model monitoring&lt;/strong&gt;&lt;br&gt;
After running the previous command, you can check the model performance on the dashboard:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40dsmf7mb3gjjirf2zxl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40dsmf7mb3gjjirf2zxl.png" alt="Image description" width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Model comparison&lt;/strong&gt;&lt;br&gt;
Typically, you will want to compare the performance of different models, to see which one performs better.&lt;/p&gt;

&lt;p&gt;You can easily do this by:&lt;/p&gt;

&lt;p&gt;Updating the model_name in the config.py file → e.g. &lt;code&gt;model_name = "fraud_detection_model_2"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Running the setup_model.py script again&lt;/p&gt;

&lt;p&gt;Comparing the performance of the new model with the old one on the TurboML dashboard.&lt;/p&gt;

&lt;p&gt;Now it is your turn 🫵&lt;br&gt;
Sign up for free at TurboML and start building your own end-2-end real time ML systems.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
