Spaces:
Running
Running
Create I Built A Tool That Snitches On AI Models.html
Browse files
I Built A Tool That Snitches On AI Models.html
ADDED
|
@@ -0,0 +1,236 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>I Built A Tool That Snitches On AI Models | TinyMemoryLM</title>
|
| 7 |
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
| 8 |
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
| 9 |
+
<link href="https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&family=Geist+Mono&display=swap" rel="stylesheet">
|
| 10 |
+
<style>
|
| 11 |
+
:root {
|
| 12 |
+
--black: #000000; --black-soft: #0a0a0a; --gray-1: #171717; --gray-2: #262626;
|
| 13 |
+
--gray-3: #363636; --gray-4: #525252; --gray-5: #737373; --gray-6: #a3a3a6;
|
| 14 |
+
--gray-7: #d4d4d4; --white: #ffffff; --accent: #ff4d00;
|
| 15 |
+
--font-sans: 'Geist', -apple-system, BlinkMacSystemFont, sans-serif;
|
| 16 |
+
--font-mono: 'Geist Mono', 'SF Mono', 'Fira Code', monospace;
|
| 17 |
+
--container-max: 700px;
|
| 18 |
+
}
|
| 19 |
+
* { box-sizing: border-box; margin: 0; padding: 0; }
|
| 20 |
+
html { font-size: 16px; scroll-behavior: smooth; }
|
| 21 |
+
body { font-family: var(--font-sans); background: var(--black); color: var(--gray-7); line-height: 1.7; -webkit-font-smoothing: antialiased; }
|
| 22 |
+
a { color: var(--white); text-decoration: none; transition: color 0.15s ease; }
|
| 23 |
+
a:hover { color: var(--accent); }
|
| 24 |
+
.container { max-width: var(--container-max); margin: 0 auto; padding: 0 24px; }
|
| 25 |
+
nav { position: fixed; top: 0; left: 0; right: 0; z-index: 100; background: rgba(0, 0, 0, 0.8); backdrop-filter: blur(12px); border-bottom: 1px solid var(--gray-2); padding: 16px 0; }
|
| 26 |
+
nav .container { display: flex; justify-content: space-between; align-items: center; }
|
| 27 |
+
.nav-brand { font-size: 18px; font-weight: 600; color: var(--white); display: flex; align-items: center; gap: 8px; }
|
| 28 |
+
.nav-brand span { color: var(--accent); }
|
| 29 |
+
.nav-links { display: flex; gap: 32px; }
|
| 30 |
+
.nav-links a { font-size: 14px; font-weight: 500; color: var(--gray-6); }
|
| 31 |
+
.nav-links a:hover { color: var(--white); }
|
| 32 |
+
.post { padding: 140px 0 80px; }
|
| 33 |
+
.post-back { display: inline-block; color: var(--gray-5); font-size: 14px; margin-bottom: 32px; }
|
| 34 |
+
.post-back:hover { color: var(--accent); }
|
| 35 |
+
.post-back::before { content: 'β '; }
|
| 36 |
+
.post-meta { display: flex; gap: 12px; margin-bottom: 20px; }
|
| 37 |
+
.post-date { font-size: 13px; color: var(--gray-5); font-family: var(--font-mono); }
|
| 38 |
+
.post-tag { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--accent); background: rgba(255, 77, 0, 0.1); padding: 4px 10px; border-radius: 4px; }
|
| 39 |
+
.post h1 { font-size: 36px; font-weight: 700; color: var(--white); margin-bottom: 32px; line-height: 1.2; letter-spacing: -0.02em; }
|
| 40 |
+
.post-body p { font-size: 17px; line-height: 1.8; margin-bottom: 24px; color: var(--gray-6); }
|
| 41 |
+
.post-body p:first-of-type { font-size: 20px; color: var(--gray-7); }
|
| 42 |
+
.post-body h2 { font-size: 24px; font-weight: 600; color: var(--white); margin: 48px 0 20px; }
|
| 43 |
+
.post-body h3 { font-size: 18px; font-weight: 600; color: var(--white); margin: 32px 0 16px; }
|
| 44 |
+
.post-body blockquote { border-left: 3px solid var(--accent); padding: 20px 24px; margin: 32px 0; background: var(--gray-1); border-radius: 0 8px 8px 0; }
|
| 45 |
+
.post-body blockquote p { font-size: 16px; font-style: italic; color: var(--gray-6); margin: 0; }
|
| 46 |
+
.post-body hr { border: none; height: 1px; background: var(--gray-2); margin: 48px 0; }
|
| 47 |
+
.code-block { background: var(--gray-1); border: 1px solid var(--gray-2); border-radius: 8px; padding: 20px; margin: 24px 0; font-family: var(--font-mono); font-size: 13px; overflow-x: auto; }
|
| 48 |
+
.code-block .prompt { color: var(--accent); }
|
| 49 |
+
.code-block .response { color: var(--gray-6); }
|
| 50 |
+
.code-block .guess { color: var(--white); font-weight: 600; }
|
| 51 |
+
.code-block .comment { color: var(--gray-5); font-style: italic; display: block; margin-top: 4px; }
|
| 52 |
+
.code-block .keyword { color: var(--accent); }
|
| 53 |
+
.code-block .string { color: var(--gray-6); }
|
| 54 |
+
.usecase-list { list-style: none; padding: 0; margin: 24px 0; }
|
| 55 |
+
.usecase-list li { padding: 16px 20px; background: var(--gray-1); border: 1px solid var(--gray-2); border-radius: 8px; margin-bottom: 12px; font-size: 15px; color: var(--gray-6); }
|
| 56 |
+
.usecase-list li strong { color: var(--white); display: block; margin-bottom: 4px; font-size: 16px; }
|
| 57 |
+
.cta-box { background: var(--gray-1); border: 2px solid var(--accent); border-radius: 12px; padding: 24px; margin: 32px 0; text-align: center; }
|
| 58 |
+
.cta-box a { color: var(--accent); font-weight: 600; font-size: 18px; word-break: break-all; }
|
| 59 |
+
.cta-box a:hover { color: var(--white); }
|
| 60 |
+
.cta-box p { margin: 12px 0 0; color: var(--gray-5); font-size: 14px; }
|
| 61 |
+
.api-info { background: var(--gray-1); border: 1px solid var(--gray-2); border-radius: 8px; padding: 20px; margin: 24px 0; }
|
| 62 |
+
.api-info .badge { display: inline-block; background: var(--accent); color: var(--black); font-size: 12px; font-weight: 600; padding: 4px 8px; border-radius: 4px; margin-right: 8px; }
|
| 63 |
+
.api-info .badge-secondary { background: var(--gray-3); color: var(--white); }
|
| 64 |
+
.provider-list { display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0; }
|
| 65 |
+
.provider-list span { background: var(--gray-1); border: 1px solid var(--gray-2); padding: 6px 12px; border-radius: 4px; font-size: 13px; color: var(--gray-6); font-family: var(--font-mono); }
|
| 66 |
+
.post-footer { margin-top: 48px; padding-top: 32px; border-top: 1px solid var(--gray-2); }
|
| 67 |
+
.post-footer p { font-size: 14px; color: var(--gray-5); font-style: italic; margin: 0; }
|
| 68 |
+
footer { padding: 40px 0; background: var(--black-soft); border-top: 1px solid var(--gray-2); text-align: center; }
|
| 69 |
+
footer p { color: var(--gray-5); font-size: 14px; margin-bottom: 8px; }
|
| 70 |
+
footer a { color: var(--gray-5); }
|
| 71 |
+
footer a:hover { color: var(--accent); }
|
| 72 |
+
@media (max-width: 768px) { .post h1 { font-size: 28px; } .nav-links { display: none; } }
|
| 73 |
+
</style>
|
| 74 |
+
</head>
|
| 75 |
+
<body>
|
| 76 |
+
<nav>
|
| 77 |
+
<div class="container">
|
| 78 |
+
<a href="index.html" class="nav-brand"><span>/</span>TinyMemoryLM</a>
|
| 79 |
+
<div class="nav-links">
|
| 80 |
+
<a href="index.html">Home</a>
|
| 81 |
+
<a href="blog.html">Blog</a>
|
| 82 |
+
<a href="status.html">Status</a>
|
| 83 |
+
</div>
|
| 84 |
+
</div>
|
| 85 |
+
</nav>
|
| 86 |
+
<main>
|
| 87 |
+
<article class="post">
|
| 88 |
+
<div class="container">
|
| 89 |
+
<a href="blog.html" class="post-back">Back to Blog</a>
|
| 90 |
+
<header>
|
| 91 |
+
<div class="post-meta">
|
| 92 |
+
<span class="post-date">2026-03-12</span>
|
| 93 |
+
<span class="post-tag">Projects</span>
|
| 94 |
+
</div>
|
| 95 |
+
<h1>I Built A Tool That Snitches On AI Models</h1>
|
| 96 |
+
</header>
|
| 97 |
+
<div class="post-body">
|
| 98 |
+
<p>Every AI model has an accent. Not a literal accent because they do not have mouths. A writing accent. A way of forming sentences that gives them away like a fingerprint at a crime scene.</p>
|
| 99 |
+
<p>I built a tool that listens to these accents. It is called AIFinder and it lives on Hugging Face Spaces. You paste in an AI response and it guesses which lab made it. Sometimes it is right. Sometimes it is wrong. When it is wrong you can tell it and it learns. This is the part where I pretend I know what I am doing.</p>
|
| 100 |
+
<h2>The Core Idea</h2>
|
| 101 |
+
<p>No AI speaks exactly like English. They all have their quirks. Their tells. Their verbal tics that make you go "ah yes, this is definitely from that one company that charges nine hundred dollars per query."</p>
|
| 102 |
+
<p>Two models from different labs are never exactly the same even if they are trying to say the same thing. One will be verbose. One will be concise. One will apologize profusely. One will give you a bullet point list when you asked for a simple answer.</p>
|
| 103 |
+
<p>AIFinder learns these patterns. It uses AI to detect AI which is either very clever or very stupid and I have not decided which yet.</p>
|
| 104 |
+
<h2>How It Works (The Simple Version)</h2>
|
| 105 |
+
<p>You paste text. The model reads it. The model makes a guess. The guess comes with a confidence percentage because numbers make things feel scientific.</p>
|
| 106 |
+
<p>If the guess is wrong you click a dropdown, select the correct provider, and hit train. The model updates. The loss number changes. You feel a small sense of accomplishment. I felt this. It was nice.</p>
|
| 107 |
+
<blockquote>
|
| 108 |
+
<p>The tool gets smarter every time it is wrong. This is either inspiring or deeply concerning for the future of AI detection.</p>
|
| 109 |
+
</blockquote>
|
| 110 |
+
<h2>Some Actual Results</h2>
|
| 111 |
+
<p>Here are some examples because showing is better than telling even though I will do both.</p>
|
| 112 |
+
<div class="code-block">
|
| 113 |
+
<span class="prompt">Model: Google</span><br>
|
| 114 |
+
<span class="response">As an AI, I don't have personal feelings or eyes to see the world, so I don't have a true favorite.<br><br>However, if I had to pick, I'd say blue. It's often associated with technology, intelligence, and the sky!<br><br>What about you?</span><br>
|
| 115 |
+
<span class="guess">Result: Google</span><br>
|
| 116 |
+
<span class="comment"># It got this one right. The mention of technology and intelligence was a dead giveaway.</span>
|
| 117 |
+
</div>
|
| 118 |
+
<div class="code-block">
|
| 119 |
+
<span class="prompt">Model: Anthropic</span><br>
|
| 120 |
+
<span class="response">I don't actually have personal preferences or feelings, so I don't have a favorite number. But I find certain numbers fascinating from a mathematical perspective β like e (Euler's number, β2.718), Ο, or 42 (thanks to The Hitchhiker's Guide to the Galaxy).<br><br>Do you have a favorite number? I'd be happy to share some fun facts about it!</span><br>
|
| 121 |
+
<span class="guess">Guess: Anthropic (97% confidence)</span><br>
|
| 122 |
+
<span class="comment"># Ninety-seven percent. That is basically a confession. The mathematical perspective thing is very Anthropic.</span>
|
| 123 |
+
</div>
|
| 124 |
+
<div class="code-block">
|
| 125 |
+
<span class="prompt">Model: Anthropic</span><br>
|
| 126 |
+
<span class="response">Yes, coding is one of my stronger skills!<br>Here's an honest breakdown:<br><br>Languages I'm comfortable with:<br>Python, JavaScript/TypeScript, Java, C/C++, C#<br>Rust, Go, Ruby, PHP, Swift, Kotlin<br>SQL, HTML/CSS, Bash/Shell<br>...and many others<br><br>What I can do well:<br>β
Write clean, working code from a description<br>β
Debug and fix broken code<br>β
Explain code line by line<br>β
Refactor and optimize existing code<br>β
Help with algorithms and data structures<br>β
Write tests<br>β
Help with architecture and design decisions<br>β
Work with common frameworks (React, Django, Flask, Spring, etc.)<br><br>Where I'm more limited:<br>β οΈ Very large, multi-file projects β I work best with focused chunks<br>β οΈ I can't run code, so there may be small bugs I miss<br>β οΈ Cutting-edge libraries or very recent API changes I might not know<br>β οΈ Highly specialized/niche frameworks<br><br>Honest take:<br>I'm genuinely useful for most everyday coding tasks β from quick scripts to fairly complex logic. I'm not a replacement for a senior engineer reviewing production systems, but I can be a really solid coding partner.<br><br>Want to try me out? Throw a problem at me! π</span><br>
|
| 127 |
+
<span class="guess">Guess: Anthropic</span><br>
|
| 128 |
+
<span class="comment"># The checkmarks. The honest breakdown. The rocket emoji. This is peak Anthropic energy.</span>
|
| 129 |
+
</div>
|
| 130 |
+
<h2>The Training Loop</h2>
|
| 131 |
+
<p>The interface shows you when you have made corrections. It tracks sessions. It displays a loss number that goes down when you train it correctly. I watched my loss go to 1.9251 and felt proud in a way that is probably unhealthy.</p>
|
| 132 |
+
<p>Every correction makes the model slightly better. This is machine learning in its purest form. You break it, you fix it, you make it stronger. Like a robot blacksmith but with more clicking.</p>
|
| 133 |
+
<h2>Usecases</h2>
|
| 134 |
+
<p>I am aware of exactly three use cases for this tool. All are valid. None will change your life but one might save you from bad data.</p>
|
| 135 |
+
<ul class="usecase-list">
|
| 136 |
+
<li>
|
| 137 |
+
<strong>Fun</strong>
|
| 138 |
+
Paste in random AI outputs and watch the model guess. See if it can tell the difference between your chatbot and your therapist. It is a party trick that only works for very specific parties.
|
| 139 |
+
</li>
|
| 140 |
+
<li>
|
| 141 |
+
<strong>Stealth models</strong>
|
| 142 |
+
As of writing this there are two: Hunter Alpha and Healer Alpha. We do not know where they came from and most people think DeepSeek. Why not ask the tool? It is a dead giveaway for who made it most of the time. Hunter Alpha has 1 trillion parameters and 1 million token context. Healer Alpha is omni-modal with vision and reasoning capabilities.
|
| 143 |
+
</li>
|
| 144 |
+
<li>
|
| 145 |
+
<strong>Verifying DataClaw datasets</strong>
|
| 146 |
+
You can go over every dataset in the DataClaw collection and filter out terrible AI providers to get pure data. DataClaw exports coding agent conversation logs to Hugging Face with full visibility into reasoning and tool calls. If you are building training datasets you probably want to know which models produced which outputs. AIFinder helps with that.
|
| 147 |
+
</li>
|
| 148 |
+
</ul>
|
| 149 |
+
<h2>The API (Yes There Is One)</h2>
|
| 150 |
+
<p>I added an API because apparently people want to automate the snitching process. It is free. It is good. Sixty requests per minute. No API key. Literally just plug and play.</p>
|
| 151 |
+
<div class="api-info">
|
| 152 |
+
<div style="margin-bottom: 16px;">
|
| 153 |
+
<span class="badge">POST /v1/classify</span>
|
| 154 |
+
<span class="badge badge-secondary">No API Key</span>
|
| 155 |
+
<span class="badge badge-secondary">60 req/min</span>
|
| 156 |
+
</div>
|
| 157 |
+
<p style="color: var(--gray-6); font-size: 14px; margin-bottom: 16px;">
|
| 158 |
+
<span class="keyword">β οΈ Strip thought tags!</span> Many reasoning models wrap chain-of-thought in think tags. These confuse the classifier. The API strips them automatically but you should remove them on your side too to save bandwidth.
|
| 159 |
+
</p>
|
| 160 |
+
<h3>Request</h3>
|
| 161 |
+
<div class="code-block">
|
| 162 |
+
<span class="keyword">Content-Type:</span> application/json<br><br>
|
| 163 |
+
<span class="keyword">Field</span> <span class="keyword">Type</span> <span class="keyword">Required</span> <span class="keyword">Description</span><br>
|
| 164 |
+
text string Yes The AI-generated text to classify (min 20 chars)<br>
|
| 165 |
+
top_n integer No Number of results to return (default: 5)
|
| 166 |
+
</div>
|
| 167 |
+
<h3>Response</h3>
|
| 168 |
+
<div class="code-block">
|
| 169 |
+
{<br>
|
| 170 |
+
"provider": "Anthropic",<br>
|
| 171 |
+
"confidence": 87.42,<br>
|
| 172 |
+
"top_providers": [<br>
|
| 173 |
+
{ "name": "Anthropic", "confidence": 87.42 },<br>
|
| 174 |
+
{ "name": "OpenAI", "confidence": 6.15 },<br>
|
| 175 |
+
{ "name": "Google", "confidence": 3.28 },<br>
|
| 176 |
+
{ "name": "xAI", "confidence": 1.74 },<br>
|
| 177 |
+
{ "name": "DeepSeek", "confidence": 0.89 }<br>
|
| 178 |
+
]<br>
|
| 179 |
+
}
|
| 180 |
+
</div>
|
| 181 |
+
<h3>Code Example (Python)</h3>
|
| 182 |
+
<div class="code-block">
|
| 183 |
+
<span class="keyword">import</span> re<br>
|
| 184 |
+
<span class="keyword">import</span> requests<br><br>
|
| 185 |
+
API_URL = <span class="string">"https://huggingface.co/spaces/CompactAI/AIFinder/v1/classify"</span><br><br>
|
| 186 |
+
<span class="keyword">def</span> strip_think_tags(text):<br>
|
| 187 |
+
<span class="keyword">return</span> re.sub(r"<think(?:ing)?>.*?</think(?:ing)?>", "", text, flags=re.DOTALL).strip()<br><br>
|
| 188 |
+
text = <span class="string">"I'd be happy to help! Neural networks are computational models..."</span><br>
|
| 189 |
+
cleaned = strip_think_tags(text)<br><br>
|
| 190 |
+
response = requests.post(API_URL, json={"text": cleaned, "top_n": 5})<br>
|
| 191 |
+
data = response.json()<br>
|
| 192 |
+
print(f"Provider: {data['provider']} ({data['confidence']:.1f}%)")
|
| 193 |
+
</div>
|
| 194 |
+
<h3>Supported Providers</h3>
|
| 195 |
+
<div class="provider-list">
|
| 196 |
+
<span>Anthropic</span>
|
| 197 |
+
<span>DeepSeek</span>
|
| 198 |
+
<span>Google</span>
|
| 199 |
+
<span>MiniMax</span>
|
| 200 |
+
<span>Mistral</span>
|
| 201 |
+
<span>MoonshotAI</span>
|
| 202 |
+
<span>OpenAI</span>
|
| 203 |
+
<span>StepFun</span>
|
| 204 |
+
<span>Zhipu</span>
|
| 205 |
+
<span>xAI</span>
|
| 206 |
+
</div>
|
| 207 |
+
</div>
|
| 208 |
+
<h2>Try It Yourself</h2>
|
| 209 |
+
<div class="cta-box">
|
| 210 |
+
<a href="https://huggingface.co/spaces/CompactAI/AIFinder" target="_blank">https://huggingface.co/spaces/CompactAI/AIFinder</a>
|
| 211 |
+
<p>100% free. 100% open source. Check the Files section in the HF Space to see everything. No hidden costs. No API keys. No nine hundred dollar queries.</p>
|
| 212 |
+
</div>
|
| 213 |
+
<h2>Why This Exists</h2>
|
| 214 |
+
<p>Sometimes you get an AI response and you cannot tell where it came from. Maybe the formatting was stripped. Maybe someone copied it without attribution. Maybe you are just curious about the linguistic fingerprints of different labs.</p>
|
| 215 |
+
<p>AIFinder answers that question. It is not perfect. It will make mistakes. It will confidently guess wrong. But it learns. It adapts. It gets better the more you use it.</p>
|
| 216 |
+
<p>Also I wanted to build something that was not a tiny model giving fish answers. This felt like a good middle ground. Still small. Still questionable. But at least it does something useful.</p>
|
| 217 |
+
<h2>You Should Test It</h2>
|
| 218 |
+
<p>I cannot stress enough how much you need to go try this yourself. Reading about it is one thing. Pasting in your own AI outputs and watching it guess is another thing entirely.</p>
|
| 219 |
+
<p>Go to the Hugging Face Space. Paste some text. See if it gets it right. If it gets it wrong, train it. Make it better. Be part of the solution instead of part of the problem for once.</p>
|
| 220 |
+
<p>And yes, it is actually free. And open source. And you can inspect every file. I have nothing to hide except my training loss curves and those are embarrassing enough already.</p>
|
| 221 |
+
<hr>
|
| 222 |
+
</div>
|
| 223 |
+
<footer class="post-footer">
|
| 224 |
+
<p>Current status: AIFinder is live. Still training TMLM models. Still broke. At least now I have a tool that can snitch on expensive AI.</p>
|
| 225 |
+
</footer>
|
| 226 |
+
</div>
|
| 227 |
+
</article>
|
| 228 |
+
</main>
|
| 229 |
+
<footer>
|
| 230 |
+
<div class="container">
|
| 231 |
+
<p>Built with curiosity over compute</p>
|
| 232 |
+
<p>TinyMemoryLM by AILAY | 2026</p>
|
| 233 |
+
</div>
|
| 234 |
+
</footer>
|
| 235 |
+
</body>
|
| 236 |
+
</html>
|