<?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: confident_prep</title>
    <description>The latest articles on DEV Community by confident_prep (@confident_prep).</description>
    <link>https://dev.to/confident_prep</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%2F4012191%2F281ccd97-d952-44e6-bf08-ac37e33fc1b3.png</url>
      <title>DEV Community: confident_prep</title>
      <link>https://dev.to/confident_prep</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/confident_prep"/>
    <language>en</language>
    <item>
      <title>How training and inference work: build and test a model by hand</title>
      <dc:creator>confident_prep</dc:creator>
      <pubDate>Tue, 20 Oct 2026 02:23:51 +0000</pubDate>
      <link>https://dev.to/confident_prep/how-training-and-inference-work-build-and-test-a-model-by-hand-39hc</link>
      <guid>https://dev.to/confident_prep/how-training-and-inference-work-build-and-test-a-model-by-hand-39hc</guid>
      <description>&lt;p&gt;You want to train your first model, but "training" and "inference" still sound like the same fuzzy thing.&lt;/p&gt;

&lt;p&gt;This article argues that the fastest way to make those words concrete is to train and test a tiny model yourself, on paper, before you open any tool. You will run a learning procedure over six examples, get a model out of it, score it on examples it has never seen, and then break it on purpose so you can watch overfitting happen. Every no-code tool hides these steps behind buttons. If you have done them once by hand, you will know what each button is doing and what its scores mean.&lt;/p&gt;

&lt;h2&gt;
  
  
  You need a pen, a sheet of paper and nothing else
&lt;/h2&gt;

&lt;p&gt;There is nothing to install, no account to open and no code to write. The exercise costs nothing, and cleanup means putting the sheet in a drawer. The aim is not a useful model. The aim is to watch four separate things happen in order.&lt;/p&gt;

&lt;p&gt;Four words name those things, and the exercise depends on keeping them apart:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Algorithm&lt;/strong&gt;: the learning procedure, the recipe that turns example data into a model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Training&lt;/strong&gt;: the stage where the algorithm runs over the data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model&lt;/strong&gt;: the trained result, the thing that takes a new input and produces a prediction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inference&lt;/strong&gt;: the stage where the trained model is used on new input.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of it as a bakery. The recipe is the algorithm, baking is training, the loaf is the model, and serving a slice is inference. The recipe is not the loaf. The loaf is not being baked while someone eats it.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyw003vjd4f0rk2cg2n6a.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyw003vjd4f0rk2cg2n6a.png" alt="Training data feeds an algorithm that produces a model; the model turns new input into a prediction" width="798" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;An algorithm trained on data produces a model, and the model alone answers new input&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Write down labeled training data
&lt;/h2&gt;

&lt;p&gt;Draw a small table. Each row is a delivery, with its distance and whether it arrived late. The figures are invented for this exercise and describe no real company.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fes2sbrkw9ckt6kobrmis.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fes2sbrkw9ckt6kobrmis.png" alt="Six deliveries with distances 2, 4, 5, 7, 10 and 13 km and whether each one was late" width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Six labeled deliveries: the late column records the correct answer for each row&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Notice two things about this table. First, it is &lt;strong&gt;labeled data&lt;/strong&gt;: the correct answer, late or not, is recorded for every example. Because the answers are recorded, you can use &lt;strong&gt;supervised learning&lt;/strong&gt;, which means learning from examples paired with their correct outputs. If nobody had written down which deliveries were late, this route would be closed, however many rows you had.&lt;/p&gt;

&lt;p&gt;Second, it is &lt;strong&gt;structured data&lt;/strong&gt;: it follows a fixed schema of rows and columns. A pile of scanned delivery notes would hold the same facts as &lt;strong&gt;unstructured data&lt;/strong&gt;, with no set data model, and it would need far more preparation before any learning could start.&lt;/p&gt;

&lt;p&gt;Below the table, draw a line and write four more rows you will &lt;em&gt;not&lt;/em&gt; look at during training: 3 km, not late; 6 km, not late; 11 km, late; 14 km, late. This is your &lt;strong&gt;test data&lt;/strong&gt;. Covering it up is the most important move in the exercise. It is the only way to find out whether your model learned the pattern or just learned the six rows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Run the algorithm and get a model
&lt;/h2&gt;

&lt;p&gt;Here is your algorithm, written as plain instructions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Try a cut-off distance between each pair of neighbouring distances.&lt;/li&gt;
&lt;li&gt;For each cut-off, predict "late" for every delivery farther than it.&lt;/li&gt;
&lt;li&gt;Count how many of the six training rows that prediction gets wrong.&lt;/li&gt;
&lt;li&gt;Keep the cut-off with the fewest mistakes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now run it. A cut-off at 8.5 km predicts late for E and F only. It gets C wrong, because C was late at 5 km, and gets everything else right: one mistake. A cut-off at 4.5 km also makes exactly one mistake, on D. Neither does better, so choose 8.5 km as your tie-break and move on.&lt;/p&gt;

&lt;p&gt;What you are holding now is a &lt;strong&gt;model&lt;/strong&gt;: the single sentence "late if distance is over 8.5 km". It is not the four-step procedure. It is what the procedure produced. If you collect more deliveries next month and want a better cut-off, you run the algorithm again over the new data. That is &lt;strong&gt;retraining&lt;/strong&gt;, and it is the only way this model changes.&lt;/p&gt;

&lt;p&gt;Write the training score next to the model: 5 out of 6 correct.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Uncover the test rows and score the model
&lt;/h2&gt;

&lt;p&gt;Uncover the four test rows and apply your sentence to each one. At 3 km it predicts not late, which is correct. At 6 km it predicts not late, also correct. At 11 km and 14 km it predicts late, and both are correct. That gives 4 out of 4.&lt;/p&gt;

&lt;p&gt;You now have two numbers: one from the data the model learned on, one from data it never saw. Reading those two numbers together is the core skill in judging a model. A good score on training data alone tells you very little. The model has already seen those answers.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnwg41fxyhmnf8tq5vum3.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnwg41fxyhmnf8tq5vum3.png" alt="Data and algorithm meet once to make the model; afterwards new deliveries go to the model alone, many times" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Training happens once per build; inference repeats every time the model is used&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Use the model on a new delivery
&lt;/h2&gt;

&lt;p&gt;A new delivery comes in at 9 km. Look at your sentence, and nothing else: over 8.5 km, so predict late. That is &lt;strong&gt;inference&lt;/strong&gt;. You did not look at the training table. You did not rerun the four steps. The algorithm and the training data play no part at this stage. Only the model does.&lt;/p&gt;

&lt;p&gt;This is the distinction that tends to stay abstract until you do it by hand. Training is effortful and happens when the model is built or rebuilt. Inference is quick and happens every time the model is used. A common mistake runs straight across that line: proposing to "retrain" when the real problem is how answers are being delivered to the people who need them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Break it on purpose by memorizing
&lt;/h2&gt;

&lt;p&gt;Now build a second model with a lazier algorithm: "copy the training table exactly; for any distance not in the table, answer not late."&lt;/p&gt;

&lt;p&gt;Score it on training data and it gets 6 out of 6, a perfect result. Every answer it gives was copied straight from that table. Score it on the test rows and the picture changes. None of 3, 6, 11 or 14 km appears in its table, so it answers "not late" four times. That is right twice and wrong twice: 2 out of 4.&lt;/p&gt;

&lt;p&gt;This is &lt;strong&gt;overfitting&lt;/strong&gt;: a model that scores well on its training data and poorly on new data, because it learned the examples, quirks and all, rather than the pattern behind them. Think of a student who memorized last year's answer sheet and is lost on a new paper. Notice that the memorizer even reproduces delivery C, the odd late one at 5 km. Your cut-off model sensibly got C wrong, and that one training mistake is part of why it held up on new data.&lt;/p&gt;

&lt;p&gt;For completeness, try the opposite failure. Use a model that always says "not late". It gets 3 of 6 on training and 2 of 4 on test. That is low on both, which is &lt;strong&gt;underfitting&lt;/strong&gt;: a model too simple to find the pattern at all.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffh7fs784fn8m3wd2n8vd.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffh7fs784fn8m3wd2n8vd.png" alt="The cut-off scores well on both sets, the memorizer scores high then low, the constant guess scores low on both" width="800" height="216"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The gap between training and test scores tells overfitting from underfitting&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The rule to keep is a number test. High on training and low on new data means overfitting. Low on both means underfitting. Good on both means a good fit. The fix for overfitting is to make the model generalize better, for example by making it less flexible. &lt;strong&gt;Regularization&lt;/strong&gt; is one name for techniques that do this. Your one-sentence cut-off is about as inflexible as a model can be, which is exactly why it beat the memorizer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Decide how the model would answer people
&lt;/h2&gt;

&lt;p&gt;Your model works. The next practical question is how it would be put to use. There are four common ways to serve a trained model, and the deciding question is about the people asking, not about the model.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real-time&lt;/strong&gt;: someone is waiting for the answer right now, such as a dispatcher on the phone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Serverless&lt;/strong&gt;: requests come in bursts with idle gaps between them, and a slower first answer after a quiet spell is acceptable, because capacity scales down to nothing when idle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Asynchronous&lt;/strong&gt;: each request is large or slow, so it is queued, and the result is collected later from a storage location.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Batch&lt;/strong&gt;: a whole dataset is scored in one job, such as every delivery on tomorrow's schedule, and nothing needs to stay running between jobs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of it as a post office: a counter for people who are waiting, a sack of mail sorted overnight, and a large parcel left to be picked up later.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foao7ixcrs5uh52o78rfs.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foao7ixcrs5uh52o78rfs.png" alt="Decision flow choosing real-time, batch, asynchronous or serverless serving from who waits and the shape of requests" width="800" height="1172"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Who is waiting decides first, then dataset shape, then request size, then traffic pattern&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The pairing that most often causes confusion is asynchronous against batch. A huge file that belongs to a dataset scored in one run is still batch. A huge file that arrives on its own and joins a queue is asynchronous. A second trap: data that arrives continuously is not the same as a person waiting for an answer. Continuous arrival on its own does not call for real-time serving.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the paper version transfers
&lt;/h2&gt;

&lt;p&gt;In our view, any no-code tool you use next will ask you these same questions, in different words. Which column holds the answer you want predicted? How should the data be split for testing? What do the two scores look like? How will predictions be requested? If you know that the column you pick is the label, that "build" means training, and that "predict" means inference, then the tool's screens become easier to read.&lt;/p&gt;

&lt;p&gt;The exercise also builds a habit worth keeping. Ask whether the outcome was recorded before you ask anything else. Asking "is it labeled?" closes off or opens up supervised learning. Asking "how much data is there?" settles nothing on its own. Then compare two scores before trusting either. Then decide serving from who is waiting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The algorithm is the procedure, the model is its output. Training builds the model, and inference only uses it, many times over.&lt;/li&gt;
&lt;li&gt;Supervised learning needs labeled data. Whether the correct answer was recorded matters more than how many rows you have.&lt;/li&gt;
&lt;li&gt;Always hold back test data. A model is judged by comparing its training score with its score on examples it never saw.&lt;/li&gt;
&lt;li&gt;High-then-low means overfitting, low-on-both means underfitting. A model that memorizes its examples can look perfect and still fail on new cases.&lt;/li&gt;
&lt;li&gt;Choose a serving mode from who is waiting, whether a whole dataset is scored at once, how large each request is, and how bursty the traffic is.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This article settles the concepts behind training and testing a first model, worked through by hand. It does not walk through the screens, settings or charges of any particular no-code tool. Those vary by product, and checking them against the tool's own current documentation is the honest next step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Full article: &lt;a href="https://confidentprep.com/blog/how-training-and-inference-work-build-and-test-a-model-by-hand/" rel="noopener noreferrer"&gt;https://confidentprep.com/blog/how-training-and-inference-work-build-and-test-a-model-by-hand/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Full chapter: &lt;a href="https://confidentprep.com/certifications/aws-ai-practitioner/chapter-1/" rel="noopener noreferrer"&gt;https://confidentprep.com/certifications/aws-ai-practitioner/chapter-1/&lt;/a&gt;
&amp;lt;!-- cf-origin:end --&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>ai</category>
      <category>career</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How would you make sure an AI system is responsible?</title>
      <dc:creator>confident_prep</dc:creator>
      <pubDate>Mon, 19 Oct 2026 07:06:58 +0000</pubDate>
      <link>https://dev.to/confident_prep/how-would-you-make-sure-an-ai-system-is-responsible-3m1f</link>
      <guid>https://dev.to/confident_prep/how-would-you-make-sure-an-ai-system-is-responsible-3m1f</guid>
      <description>&lt;p&gt;An interviewer asks how you would make sure an AI system is responsible. Most candidates answer with values, but the credit goes to answers built on properties.&lt;/p&gt;

&lt;p&gt;This article argues that responsible AI, as a widely used AI practitioner exam guide frames it, is a short list of things you can check. It names six features, and each one fails in a way you can see. A guardrail service can show evidence for two of them. Model selection has its own responsible practices. Five legal risks describe what the business pays when the features are missing. Learn the features and the risks as one list read from two ends, and you can answer both the interview question and the follow-ups. Those follow-ups are written to catch anyone who answers from good intentions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The strong answer names properties, not good intentions
&lt;/h2&gt;

&lt;p&gt;A weak answer says the system was built responsibly and points to a policy document. A strong answer runs in five beats, in this order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Name the properties you claim:&lt;/strong&gt; bias, fairness, inclusivity, robustness, safety and veracity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Say what you would observe&lt;/strong&gt; if each one failed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Name how you enforce them&lt;/strong&gt; and say plainly what that tooling cannot see.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bring responsibility into model selection&lt;/strong&gt;, not only into operation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State the exposure in business terms&lt;/strong&gt;, so a decision-maker can act on it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The second beat separates a designed answer from a sincere one. A property you cannot detect is a value, not a control. Think of it as the difference between a smoke alarm and a fire-safety poster. Both say they care about fire, but only one tells you when there is a fire.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxlsiw9rqs0efa8no5uq1.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxlsiw9rqs0efa8no5uq1.png" alt="A failure scenario branches to six features, each tied to the observation that reveals it" width="800" height="1035"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Each responsible AI feature is identified by the failure you would observe&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Every option in a question on this topic describes something undesirable. That is why common sense fails here. Credit goes to the option that names the property the guide uses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow-up: bias is the measurement, fairness is the standard
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"Aren't bias and fairness the same thing?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Model answer:&lt;/em&gt; No. Bias is the measurable skew: outcomes differ across groups in a way the individual records do not explain. You can compute it. Fairness is the standard you use to decide whether that skew is acceptable. You cannot compute fairness. You have to decide it. So a system can be biased before anyone has agreed it is unfair. A system can also be judged unfair over a small skew.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The weak candidate's mistake:&lt;/em&gt; treating the two words as synonyms, so that either one seems to fit. Use a simple test. A scenario that says "outcomes differ by group" describes bias. A scenario that asks "is this difference acceptable?" is asking about fairness.&lt;/p&gt;

&lt;p&gt;For example, picture a lending assistant that gives more cautious eligibility guidance to customers who write in one language than to customers who write in another. The gap in outcomes is the bias. Whether the organisation accepts that gap is the fairness question.&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow-up: safety, veracity and robustness fail in different ways
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"The model gave a wrong answer. Is that a safety problem?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Model answer:&lt;/em&gt; Not necessarily. Each of the three properties asks a different question:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Safety&lt;/strong&gt; is about harm. The output is abusive, dangerous, or in a category the application should refuse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Veracity&lt;/strong&gt; is about truth. The output is wrong.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Robustness&lt;/strong&gt; is about stability. The system behaves well on clean input and erratically on misspellings, mixed languages, odd formatting or deliberate attack.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Take a model that confidently states a drug interaction that does not exist. That is a veracity failure. If a user acts on it and is harmed, the harm is a separate consequence, and the guide gives it its own name: &lt;em&gt;end user risk&lt;/em&gt;, which is one of the legal risks covered below.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The weak candidate's mistake:&lt;/em&gt; reasoning "it was wrong, so it was unsafe," or calling erratic output on messy input an accuracy failure. Instability under unexpected input is robustness, even when the answers are also wrong.&lt;/p&gt;

&lt;p&gt;Inclusivity completes the six. It asks whether everyone the system is meant for can actually use it. A model that works well in only one language, or that assumes literacy or connectivity its users lack, has an inclusivity problem. That is true even if it is perfectly accurate for the users it does serve.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl9ov2e3fefl3clj5chrz.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl9ov2e3fefl3clj5chrz.png" alt="Table contrasting safety, veracity and robustness by their question and their observable failure" width="800" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Three bad-output properties, separated by the question each one asks&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow-up: guardrails check two points and show evidence for only two features
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"Which tool would you use to show these properties?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Model answer:&lt;/em&gt; The guide's named example is Amazon Bedrock Guardrails. It evaluates what goes into a model and what comes out against policies you configure, and blocks or filters anything a policy prohibits. It acts at &lt;strong&gt;two&lt;/strong&gt; points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;On input&lt;/strong&gt;, before the model is called. A prohibited request can be stopped before it ever reaches the model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On output&lt;/strong&gt;, before the user sees it. A response can be blocked or masked.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It has five policy types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Content filters&lt;/strong&gt; cover hate, insults, sexual content, violence and misconduct, at a strength you set.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Denied topics&lt;/strong&gt; define subjects the application will not discuss at all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Word filters&lt;/strong&gt; block specific words and phrases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sensitive information filters&lt;/strong&gt; detect personally identifiable information and mask or block it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The contextual grounding check&lt;/strong&gt; confirms that a response is supported by the source material provided and is relevant to the query.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first four provide evidence for safety, and the sensitive information filters also cover privacy. The grounding check is the only policy that addresses truth rather than harm, which makes it the veracity policy.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fck527824vc8x1xvrtv56.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fck527824vc8x1xvrtv56.png" alt="Input is checked before the model is called and output is checked before reaching the user" width="800" height="732"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Guardrails evaluate input before the model runs and output before the user sees it&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The weak candidate's mistake:&lt;/em&gt; claiming more than the tool does. Guardrails do not measure bias across demographic groups, because no policy computes differences in outcomes between groups. They do not assess inclusivity or robustness. They do not retrain the model. They sit around the model and evaluate its traffic, and the model's weights are untouched. They do not document the model either. Recording intended uses and limitations is the job of a model card, a separate document.&lt;/p&gt;

&lt;p&gt;Saying these limits without being asked is the third beat of the strong answer. It is also what makes the rest of the answer believable. One more point is worth adding. Retrieval-augmented generation supplies source material to the model, which makes a grounded answer possible. The grounding check is what verifies that the model actually used that material.&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow-up: sustainability counts when you choose a model
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"How does responsibility affect which model you pick?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Model answer:&lt;/em&gt; The guide names environmental considerations and sustainability as responsible practices in model selection. In practice there are four:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prefer the smaller model when it is sufficient.&lt;/strong&gt; Energy and compute grow with model size, so a larger model that does the same job spends more for no gain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adapt an existing model rather than train a new one.&lt;/strong&gt; Training is the largest energy cost in a model's life.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consider the provider's position&lt;/strong&gt;, because infrastructure efficiency and energy sourcing differ.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write down the rationale.&lt;/strong&gt; A choice you cannot explain is not a responsible practice, whatever you chose.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The order matters. The responsible screen runs &lt;em&gt;after&lt;/em&gt; capability and cost, and it chooses only among models that already meet the requirement. Efficiency never rescues a model that cannot do the job.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fba9xgw7p29tj9zrf4mjt.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fba9xgw7p29tj9zrf4mjt.png" alt="Capability and cost come first, then size, adaptation and provider, ending in a documented choice" width="800" height="89"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The responsible screen chooses among models that already meet capability and cost&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The weak candidate's mistake:&lt;/em&gt; dismissing sustainability as a soft, non-technical concern, or defending the bigger model as "headroom for the future." When a smaller model is enough, the larger one is the less responsible choice. One way to remember this: the usual ordering of customisation options, from prompting through retrieval and fine-tuning up to full pre-training, is ordered by cost, and it is ordered by energy too. "Don't fine-tune when prompting would do" is also the sustainable answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow-up: the legal risks are business exposures with three routes in
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"What legal risks does generative AI create?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Model answer:&lt;/em&gt; The guide names five: intellectual property infringement claims, biased model outputs, hallucinations, end user risk, and loss of customer trust. The way to frame them matters more than the list. These are exposures for the &lt;em&gt;organisation&lt;/em&gt;, not bugs in the model.&lt;/p&gt;

&lt;p&gt;It helps to sort them by where the exposure enters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What went in.&lt;/strong&gt; Infringement claims arise when training data or generated output reproduces protected work. One example is an assistant that copies sentences word for word from a competitor's brochure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What came out.&lt;/strong&gt; Biased outputs disadvantage a group. Hallucinations are confident, fluent and untrue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What someone did with it.&lt;/strong&gt; End user risk arises when a user relies on output in a setting where being wrong has consequences, such as medical, legal, financial or safety-critical decisions. Loss of customer trust is where all of these accumulate.&lt;/li&gt;
&lt;/ul&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7ddk9g0pqrhwswdgmqc8.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7ddk9g0pqrhwswdgmqc8.png" alt="Table grouping five legal risks into inputs, outputs and user actions, with a signal for each" width="799" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The five legal risks sorted by where the exposure enters&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The weak candidate's mistake:&lt;/em&gt; offering a technical fault such as "overfitting" or "a robustness failure" as a legal risk. A second mistake is waving hallucination away as an evaluation issue. Hallucination is on the list on purpose. The technical event is a wrong answer. The legal event is that someone relied on it. That is why hallucinations and end user risk so often appear together: they are the two ends of a single incident.&lt;/p&gt;

&lt;p&gt;Loss of customer trust differs from the other four. It is not a separate kind of incident. It is the consequence that outlasts the incident. You can fix a single hallucination, but fixing it does not repair the belief that the product cannot be trusted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow-up: features and risks are the same list read from two ends
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"How do the features relate to the risks?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Model answer:&lt;/em&gt; The features name the properties a system should have. The risks name what it costs when they are missing. A missing veracity property shows up as hallucinations, which can lead to end user risk. Gaps in fairness and bias show up as biased model outputs. A safety failure becomes end user risk when someone acts on harmful output, and so does a robustness failure on unexpected input. An inclusivity gap becomes lost trust among the users who cannot use the system. Every one of these ends in loss of customer trust.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft8jjzd8a2jnzl96hueti.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft8jjzd8a2jnzl96hueti.png" alt="Missing features map to hallucinations, biased outputs and end user risk, all reaching lost trust" width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Each missing feature becomes a named legal risk, and all of them end in lost trust&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The weak candidate's mistake:&lt;/em&gt; treating the features and the risks as two topics to memorise separately. Once you learn the mapping, a question that describes a harm and asks for the feature, and a question that describes a gap and asks for the risk, become the same question. In our view, this mapping is the single most useful thing to take into either an exam room or an interview.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Responsible AI here means six observable features: bias, fairness, inclusivity, robustness, safety and veracity. Learn each one by the failure that reveals it.&lt;/li&gt;
&lt;li&gt;Bias is the measurement and fairness is the standard. Harm is safety, truth is veracity, and stability under unexpected input is robustness.&lt;/li&gt;
&lt;li&gt;Guardrails check input and output, and show evidence only for safety and veracity. The contextual grounding check is the veracity policy. Guardrails do not measure bias or change the model.&lt;/li&gt;
&lt;li&gt;Sustainability is a real criterion for model selection. Apply it after capability and cost, and write down the rationale.&lt;/li&gt;
&lt;li&gt;The five legal risks are business exposures. Hallucination and end user risk are two ends of one incident, and loss of customer trust is where all the risks accumulate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This article settles how to &lt;em&gt;name&lt;/em&gt; what is wrong with a system. It does not settle how to &lt;em&gt;prove&lt;/em&gt; it. Showing that bias exists takes measurement, such as dataset analysis, subgroup comparisons and human audits, and none of that is covered here.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Full article: &lt;a href="https://confidentprep.com/blog/how-would-you-make-sure-an-ai-system-is-responsible/" rel="noopener noreferrer"&gt;https://confidentprep.com/blog/how-would-you-make-sure-an-ai-system-is-responsible/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Full chapter: &lt;a href="https://confidentprep.com/certifications/aws-ai-practitioner/chapter-13/" rel="noopener noreferrer"&gt;https://confidentprep.com/certifications/aws-ai-practitioner/chapter-13/&lt;/a&gt;
&amp;lt;!-- cf-origin:end --&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>ai</category>
      <category>career</category>
      <category>beginners</category>
    </item>
    <item>
      <title>What is an agentic AI system actually made of?</title>
      <dc:creator>confident_prep</dc:creator>
      <pubDate>Fri, 16 Oct 2026 09:39:42 +0000</pubDate>
      <link>https://dev.to/confident_prep/what-is-an-agentic-ai-system-actually-made-of-2dn1</link>
      <guid>https://dev.to/confident_prep/what-is-an-agentic-ai-system-actually-made-of-2dn1</guid>
      <description>&lt;p&gt;The interviewer leans back and asks, "So what is an agent?" Most candidates say "an LLM that can use tools," and the interviewer nods without writing anything down. The same thing happens on foundational AI certification exams. A question offers four options that each sound plausible, and the wrong ones are built from that half-right answer.&lt;/p&gt;

&lt;p&gt;This article claims that a strong answer to "what is an agentic AI system made of?" covers five parts in a fixed order: the loop, tools, connection, memory and coordination. It also ends by saying when &lt;em&gt;not&lt;/em&gt; to add more agents. Each part has one confusion that examiners and interviewers probe on purpose. Most of those confusions come from not asking what sits on each end of a connection. If you can explain the five parts and their boundaries, you can handle the follow-up questions that come after the first one.&lt;/p&gt;

&lt;h2&gt;
  
  
  A strong answer names the loop before any technology
&lt;/h2&gt;

&lt;p&gt;Here is the opening answer a strong candidate gives.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"An agent is a system that uses a foundation model to decide which actions to take toward a goal. It takes those actions, reads what came back, and decides again. It does not produce one answer in one pass. The defining property is that loop. If nothing can come back and change its mind, it is a single model call, however good the output is."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A foundation model is a large model trained on broad data that many applications build on. The loop is the important part of that answer. You could replace every technology in a system and it would still be an agent if the loop remained.&lt;/p&gt;

&lt;p&gt;Think of it as the difference between a researcher with a library card and someone answering from memory. The researcher looks things up, and what they find changes their next question. Someone answering from memory can never be surprised.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fspti5i670phrr9sq8ues.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fspti5i670phrr9sq8ues.png" alt="A goal enters the model, the runtime runs a tool, the result returns, and the model loops or answers" width="797" height="105"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;An agent decides, acts, observes the result, then decides again or answers&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The branch after the result is the agent: act again, or answer. The model itself gains no new ability. The new capability is that results come back in as context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow-up 1: the model requests, the runtime executes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"When an agent uses a tool, what does the model actually do?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Model answer:&lt;/em&gt; Tool usage means giving a model access to external functions, APIs or data sources. The model decides that a tool is needed and which arguments to pass. The runtime is the software around the model, and it makes the actual call and returns the result into context. The model then interprets that result and decides what happens next.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The weak-candidate mistake:&lt;/em&gt; saying "the model queries the database" or "the model books the slot." Any answer in which the model executes something has the mechanism backwards. To an interviewer, it signals that you have never watched one run.&lt;/p&gt;

&lt;p&gt;Think of it as a doctor ordering a blood test. The doctor does not run the lab. They order the test, the lab runs it, the result comes back, and the diagnosis may change.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft2qky0mt1580hq90u2s8.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft2qky0mt1580hq90u2s8.png" alt="Table assigning tool-call decisions to the model and execution to the runtime" width="800" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The model decides and interprets; the runtime executes and returns the result&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Tools are worth this machinery because they let an agent be correct about things that changed after training. Suppose a user asks for the stock level of a part. Without a tool, the model generates a plausible number. With a tool, the runtime queries the real one. In both cases the model sounds equally confident, and that is exactly why the difference matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow-up 2: MCP connects an agent to external systems
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"What is the Model Context Protocol, and what problem does it remove?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Model answer:&lt;/em&gt; The Model Context Protocol (MCP) is an open protocol. It standardises how an AI application connects a model to external tools and data sources, so there is one common interface instead of a custom integration for every system. The problem it removes is multiplicative. Three applications that each connect to four systems need twelve separate integrations. With a shared protocol, each side is implemented once, which makes seven. Adding a fifth system then costs one implementation instead of three.&lt;/p&gt;

&lt;p&gt;Think of it as USB-C. Every device used to need its own cable. With one connector standard, any device can meet any peripheral, and neither side has to know about the other in advance.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flc3a3ptbj4bug2wg7xv2.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flc3a3ptbj4bug2wg7xv2.png" alt="Bespoke integration needs 12 integrations; a shared protocol needs 7 implementations" width="798" height="145"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Bespoke integration grows with every pair; a shared protocol needs one implementation per side&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The weak-candidate mistakes&lt;/em&gt;, in order of how often they appear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;"MCP lets agents talk to each other."&lt;/strong&gt; It does not. It connects an agent to external systems. Agent-to-agent exchange is a separate concept called communication patterns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"MCP is a product or managed service."&lt;/strong&gt; It is an open protocol. Cloud services can speak it, which is a different claim. It never belongs in a list of services to select.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"You need MCP to use tools."&lt;/strong&gt; Tool usage existed before MCP and works without it. With two or three connections, custom integration is tolerable. The case for a shared protocol grows as the number of pairs grows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One question settles most of these: &lt;em&gt;what is on each end of the connection?&lt;/em&gt; If it is an agent and an external system, that is MCP. If it is an agent and another agent, that is a communication pattern.&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow-up 3: memory is a decision about what survives
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"How does an agent remember things?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Model answer:&lt;/em&gt; The model is stateless between calls. Earlier turns are re-sent each time, so memory is never automatic and never free. Memory management means deciding what the agent carries forward, for how long, and what it discards. Working memory holds the current task, such as recent turns and the last tool result, and is discarded when the task ends. Persistent memory holds durable facts, such as a customer's preferences or prior outcomes. It is stored outside the model and retrieved selectively.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The weak-candidate mistake:&lt;/em&gt; "Just give it the whole conversation history." Everything carried forward is re-supplied and counted again on every call. Cost and latency grow, and what matters gets diluted. Retention is also a risk: a one-off verification code kept in durable storage is a liability, not a feature.&lt;/p&gt;

&lt;p&gt;Think of it as a hospital shift handover. Not everything from the shift is passed on. What matters carries over, and the handover is a summary, not a transcript.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmjxwv4fmx6rvy6otms2l.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmjxwv4fmx6rvy6otms2l.png" alt="A question about survival routes facts to persistent or working memory" width="800" height="926"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Durable facts go to persistent memory; task-local material stays working and is discarded&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So the useful question is not "how do we remember more?" It is "what must survive, and what must not?"&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow-up 4: arrangement and message flow are separate questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"Name some multi-agent patterns."&lt;/strong&gt; Weak candidates answer this with one list. Strong candidates ask which kind of pattern is meant.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Model answer:&lt;/em&gt; A multi-agent system uses several specialised agents where one general agent would be stretched too thin. Two independent questions apply to it.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;system pattern&lt;/strong&gt; is how the agents are structured:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Supervisor:&lt;/strong&gt; a lead agent decomposes the task, delegates to specialists and assembles the result.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sequential:&lt;/strong&gt; each agent's output is the next agent's input.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parallel:&lt;/strong&gt; independent agents work at the same time and their results are merged.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hierarchical:&lt;/strong&gt; supervisors of supervisors.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;strong&gt;communication pattern&lt;/strong&gt; is how the agents exchange information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Direct (point-to-point):&lt;/strong&gt; one agent calls another and waits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Broadcast:&lt;/strong&gt; one agent informs many at once.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shared state:&lt;/strong&gt; agents read and write a common store.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Message queue:&lt;/strong&gt; messages are passed asynchronously.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;The weak-candidate mistake:&lt;/em&gt; answering "supervisor" when asked how agents &lt;em&gt;exchange information&lt;/em&gt;. That answers a different question.&lt;/p&gt;

&lt;p&gt;Think of it as an organisation. The system pattern is the org chart. The communication pattern is how the memos move. A supervisor system can pass messages point-to-point or through shared state, and choosing one does not determine the other.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fquvzegzsf04oxqj2srch.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fquvzegzsf04oxqj2srch.png" alt="Card contrasting four system patterns with four communication patterns" width="799" height="253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;System patterns describe arrangement; communication patterns describe how information moves&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow-up 5: orchestration owns the plan, including when to stop
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"What is workflow orchestration, and who should own it?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Model answer:&lt;/em&gt; Workflow orchestration is coordinating the steps of an agentic application. It covers sequencing, routing, handling failures and retries, and deciding when the task is finished. That last duty is easy to forget. The plan can be owned in one of two ways. In &lt;strong&gt;deterministic&lt;/strong&gt; orchestration, the developer defines the workflow. It is predictable, testable and auditable, but it cannot adapt to the unforeseen. In &lt;strong&gt;model-driven&lt;/strong&gt; orchestration, the model chooses each next step. It adapts to new situations, but its path varies between runs.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The weak-candidate mistake:&lt;/em&gt; treating model-driven orchestration as the sophisticated default. In a regulated or audited process, "the path varies between runs" is a defect.&lt;/p&gt;

&lt;p&gt;Think of it as an air traffic controller. Each pilot flies their own aircraft, and the controller decides who moves, in what order, and when the sequence is complete.&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow-up 6: one agent with good tools is the default
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"When would you use several agents instead of one?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Model answer:&lt;/em&gt; Use several agents only when a task spans genuinely distinct specialisms, and be able to name the reason. A task that is long but stays within one specialism is still one agent doing more steps. Every added agent multiplies four things: model calls, which each carry a cost; latency, from steps that wait on each other; failure modes, since any agent can stall or pass on a bad result; and debugging effort, because "which agent decided that?" becomes a real question.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The weak-candidate mistake:&lt;/em&gt; reaching for multiple agents because the scenario used the word "complex."&lt;/p&gt;

&lt;p&gt;Here is an illustrative case. A shipment assistant answers "where is my parcel?" by reading a tracking database. It must remember each customer's preferred notification channel. When a shipment is disrupted, its recommendation needs pricing, customs and capacity expertise. The considered design has two paths. The plain lookup goes to one agent with tools. Only the disruption case goes to a supervisor that coordinates three specialists. Sending the simple query down the multi-agent path adds cost and latency and gains nothing.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fahkx87rsys616sh98q7x.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fahkx87rsys616sh98q7x.png" alt="A decision flow sending bounded tasks to one agent and multi-specialism tasks to supervisor or parallel" width="800" height="1014"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Bounded single-specialism work stays with one agent; distinct specialisms justify several&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;An agent is defined by its loop.&lt;/strong&gt; If no result can come back and change the decision, it is a single model call.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The model requests; the runtime executes.&lt;/strong&gt; Reject any answer in which the model itself queries, calls or books something.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask what is on each end of the connection.&lt;/strong&gt; Agent to external system is MCP. Agent to agent is a communication pattern. MCP is a protocol, not a product, and tools work without it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory is a choice about what survives.&lt;/strong&gt; Separate working memory from persistent memory. "Keep everything" is a cost, not a safe default.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structure and message flow are separate questions&lt;/strong&gt;, and orchestration owns the plan, including knowing when to stop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One agent with good tools is the default.&lt;/strong&gt; Escalate only for distinct specialisms.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This article covers what the parts of an agentic system are. It does not settle what agents are &lt;em&gt;for&lt;/em&gt; in business terms. It also does not cover how to choose between the specific managed services that implement these parts, or what each costs at scale. Those are separate questions, and exams typically test them under separate objectives.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Full article: &lt;a href="https://confidentprep.com/blog/what-is-an-agentic-ai-system-actually-made-of/" rel="noopener noreferrer"&gt;https://confidentprep.com/blog/what-is-an-agentic-ai-system-actually-made-of/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Full chapter: &lt;a href="https://confidentprep.com/certifications/aws-ai-practitioner/chapter-6/" rel="noopener noreferrer"&gt;https://confidentprep.com/certifications/aws-ai-practitioner/chapter-6/&lt;/a&gt;
&amp;lt;!-- cf-origin:end --&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>ai</category>
      <category>career</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🌡️ What Do Temperature and Top-p Really Do? Test Them on Amazon Bedrock From the CLI (Hands-on)</title>
      <dc:creator>confident_prep</dc:creator>
      <pubDate>Sun, 11 Oct 2026 05:10:10 +0000</pubDate>
      <link>https://dev.to/confident_prep/what-do-temperature-and-top-p-really-do-test-them-on-amazon-bedrock-from-the-cli-hands-on-jcn</link>
      <guid>https://dev.to/confident_prep/what-do-temperature-and-top-p-really-do-test-them-on-amazon-bedrock-from-the-cli-hands-on-jcn</guid>
      <description>&lt;h2&gt;
  
  
  🎤 The interview question
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"What do temperature and top-p actually do, and when would you change them?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's an AIF-C01 favourite, and most answers stop at "temperature controls creativity". A stronger answer: &lt;strong&gt;you've seen the difference yourself.&lt;/strong&gt; Let's send the same prompt to Amazon Bedrock at different settings from the AWS CLI. About 10 minutes, under one cent. 👇&lt;/p&gt;

&lt;p&gt;👉 Flow: &lt;strong&gt;Low temperature → High temperature → Low vs high top-p → Hit the output ceiling&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🧰 Before you start
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;💻 &lt;strong&gt;A current AWS CLI v2.&lt;/strong&gt; Old builds have no &lt;code&gt;bedrock-runtime converse&lt;/code&gt;; update with &lt;code&gt;curl -fsSL https://awscli.amazonaws.com/v2/install.sh | bash&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;👤 &lt;strong&gt;Signed in&lt;/strong&gt; (&lt;code&gt;aws sts get-caller-identity&lt;/code&gt; works) as a user or role allowed &lt;code&gt;bedrock:InvokeModel&lt;/code&gt; on the &lt;code&gt;us.amazon.nova-micro-v1:0&lt;/code&gt; inference profile and the &lt;code&gt;amazon.nova-micro-v1:0&lt;/code&gt; foundation model.&lt;/li&gt;
&lt;li&gt;🌍 &lt;strong&gt;Region:&lt;/strong&gt; &lt;code&gt;us-east-1&lt;/code&gt;. Amazon models like Nova are enabled by default, so there is no model-access form.&lt;/li&gt;
&lt;li&gt;💵 &lt;strong&gt;Cost:&lt;/strong&gt; Nova Micro on-demand is &lt;strong&gt;$0.000035 per 1K input tokens and $0.00014 per 1K output tokens&lt;/strong&gt; (AWS price list, us-east-1). The ~15 calls below cost well under a cent. On the Free plan this comes out of your credits.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Set two variables once, so every command below pastes as-is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;M&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;us.amazon.nova-micro-v1:0
&lt;span class="nv"&gt;P&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'[{"role":"user","content":[{"text":"Suggest one name for a new coffee shop. Reply with the name only."}]}]'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🧊 Step 1: Low temperature, three runs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Why:&lt;/strong&gt; temperature controls how widely the model samples from its next-word probabilities. Low means it picks the most likely wording almost every time. That's what you want for extraction and classification.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in &lt;/span&gt;1 2 3&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;aws bedrock-runtime converse &lt;span class="nt"&gt;--region&lt;/span&gt; us-east-1 &lt;span class="nt"&gt;--model-id&lt;/span&gt; &lt;span class="nv"&gt;$M&lt;/span&gt; &lt;span class="nt"&gt;--messages&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$P&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--inference-config&lt;/span&gt; &lt;span class="s1"&gt;'{"temperature":0.1,"maxTokens":20}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'output.message.content[0].text'&lt;/span&gt; &lt;span class="nt"&gt;--output&lt;/span&gt; text
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ Expected: the &lt;strong&gt;same name&lt;/strong&gt; (or nearly) three times. AWS promises "more deterministic", not identical.&lt;/p&gt;

&lt;p&gt;⚠️ &lt;strong&gt;If you see&lt;/strong&gt; &lt;code&gt;AccessDeniedException&lt;/code&gt; → your identity lacks &lt;code&gt;bedrock:InvokeModel&lt;/code&gt; on both ARNs above. Run &lt;code&gt;aws sts get-caller-identity&lt;/code&gt; to check who you are, then fix that identity's policy.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔥 Step 2: High temperature, same prompt
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Why:&lt;/strong&gt; high temperature lets less likely words through. Use it when variety is the point, such as subject lines or brainstorming.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in &lt;/span&gt;1 2 3&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;aws bedrock-runtime converse &lt;span class="nt"&gt;--region&lt;/span&gt; us-east-1 &lt;span class="nt"&gt;--model-id&lt;/span&gt; &lt;span class="nv"&gt;$M&lt;/span&gt; &lt;span class="nt"&gt;--messages&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$P&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--inference-config&lt;/span&gt; &lt;span class="s1"&gt;'{"temperature":1,"maxTokens":20}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'output.message.content[0].text'&lt;/span&gt; &lt;span class="nt"&gt;--output&lt;/span&gt; text
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ Expected: usually &lt;strong&gt;three different names&lt;/strong&gt;. Sampling is random, so run it again if two match.&lt;/p&gt;

&lt;p&gt;💡 Interviewers listen for this: low temperature makes output &lt;strong&gt;consistent, not correct&lt;/strong&gt;. A wrong answer at low temperature is wrong the same way every time. 📚 The &lt;a href="https://confidentprep.com/certifications/aws-ai-practitioner/chapter-8/" rel="noopener noreferrer"&gt;full chapter explains why that matters for the exam&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Step 3: Top-p, low vs high
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Why:&lt;/strong&gt; top-p limits the candidate words to the smallest set whose probabilities add up to &lt;em&gt;p&lt;/em&gt;. With 0.1 only the very top words are allowed; with 1.0 every word stays in. AWS's Nova guide says to change &lt;strong&gt;temperature or top-p, not both&lt;/strong&gt;, so temperature stays at Nova's default here.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;p &lt;span class="k"&gt;in &lt;/span&gt;0.1 1.0&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"topP=&lt;/span&gt;&lt;span class="nv"&gt;$p&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in &lt;/span&gt;1 2 3&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
    &lt;/span&gt;aws bedrock-runtime converse &lt;span class="nt"&gt;--region&lt;/span&gt; us-east-1 &lt;span class="nt"&gt;--model-id&lt;/span&gt; &lt;span class="nv"&gt;$M&lt;/span&gt; &lt;span class="nt"&gt;--messages&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$P&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;--inference-config&lt;/span&gt; &lt;span class="s2"&gt;"{&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;topP&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="nv"&gt;$p&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;maxTokens&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;:20}"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'output.message.content[0].text'&lt;/span&gt; &lt;span class="nt"&gt;--output&lt;/span&gt; text
  &lt;span class="k"&gt;done
done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ Expected: under &lt;code&gt;topP=0.1&lt;/code&gt;, repeats or near-repeats; under &lt;code&gt;topP=1.0&lt;/code&gt;, more variety.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧨 Break it on purpose
&lt;/h2&gt;

&lt;p&gt;Set the output ceiling far too low and ask for a long answer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws bedrock-runtime converse &lt;span class="nt"&gt;--region&lt;/span&gt; us-east-1 &lt;span class="nt"&gt;--model-id&lt;/span&gt; &lt;span class="nv"&gt;$M&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--messages&lt;/span&gt; &lt;span class="s1"&gt;'[{"role":"user","content":[{"text":"Explain what temperature does in a language model."}]}]'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--inference-config&lt;/span&gt; &lt;span class="s1"&gt;'{"maxTokens":5}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'{text: output.message.content[0].text, stop: stopReason, out: usage.outputTokens}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ Expected: a sentence &lt;strong&gt;cut off mid-way&lt;/strong&gt;, &lt;code&gt;"stop": "max_tokens"&lt;/code&gt; and &lt;code&gt;"out": 5&lt;/code&gt;. &lt;code&gt;maxTokens&lt;/code&gt; is a hard stop, not a request to be brief. If you want a short answer, ask for it in the prompt.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧹 Cost and cleanup
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;💵 Under one cent in total, and every call above is capped at 20 output tokens or fewer&lt;/li&gt;
&lt;li&gt;🧹 Nothing to delete: Converse calls create no resources.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💬 Say it in the interview
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;"Temperature and top-p both control how the model samples its next word. Low settings give consistent output, which suits extraction; high settings give variety, which suits brainstorming. I change one of them, not both, and I remember that low temperature makes a model consistent, not correct."&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 What you can now say (and the exam)
&lt;/h2&gt;

&lt;p&gt;✅ "Low temperature = consistent, not correct"&lt;br&gt;
✅ "High temperature or high top-p = more variety"&lt;br&gt;
✅ "Change temperature &lt;strong&gt;or&lt;/strong&gt; top-p, not both"&lt;br&gt;
✅ "&lt;code&gt;maxTokens&lt;/code&gt; truncates; &lt;code&gt;stopReason: max_tokens&lt;/code&gt; is the tell"&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 Go deeper
&lt;/h2&gt;

&lt;p&gt;This is the hands-on cut of &lt;strong&gt;Chapter 8&lt;/strong&gt; of our free &lt;em&gt;AWS AI Practitioner (AIF-C01)&lt;/em&gt; course: choosing a foundation model, inference parameters and agents, with practice questions.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://confidentprep.com/certifications/aws-ai-practitioner/chapter-8/" rel="noopener noreferrer"&gt;Read the full chapter on Confident Prep&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>ai</category>
      <category>machinelearning</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>💸 What Does One Amazon Bedrock Prompt Cost? Find Out From the CLI (Hands-on)</title>
      <dc:creator>confident_prep</dc:creator>
      <pubDate>Sun, 11 Oct 2026 04:32:34 +0000</pubDate>
      <link>https://dev.to/confident_prep/what-does-one-amazon-bedrock-prompt-cost-find-out-from-the-cli-hands-on-2m9p</link>
      <guid>https://dev.to/confident_prep/what-does-one-amazon-bedrock-prompt-cost-find-out-from-the-cli-hands-on-2m9p</guid>
      <description>&lt;h2&gt;
  
  
  🎤 The interview question
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"Your team wants to add an Amazon Bedrock chatbot. How would you work out what one prompt costs?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It shows up in AIF-C01 prep and in real interviews. The strong answer: &lt;strong&gt;Bedrock charges per token, and every response tells you how many tokens it used.&lt;/strong&gt; Let's prove that from the AWS CLI in 5 minutes. 👇&lt;/p&gt;

&lt;p&gt;👉 Flow: &lt;strong&gt;Send one prompt → Read &lt;code&gt;usage&lt;/code&gt; → Multiply by the price → Compare two prompts&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🔧 Step 1: Set up
&lt;/h2&gt;

&lt;p&gt;✅ AWS CLI v2, signed in (&lt;code&gt;aws sts get-caller-identity&lt;/code&gt; works)&lt;br&gt;
✅ Region &lt;code&gt;us-east-1&lt;/code&gt;&lt;br&gt;
✅ Model access for &lt;strong&gt;Amazon Nova Micro&lt;/strong&gt; (Bedrock console → &lt;em&gt;Model access&lt;/em&gt;)&lt;/p&gt;


&lt;h2&gt;
  
  
  💬 Step 2: Send one prompt with the Converse API
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws bedrock-runtime converse &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--region&lt;/span&gt; us-east-1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--model-id&lt;/span&gt; us.amazon.nova-micro-v1:0 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--messages&lt;/span&gt; &lt;span class="s1"&gt;'[{"role":"user","content":[{"text":"Explain overfitting in one sentence."}]}]'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s1"&gt;'{answer: output.message.content[0].text, usage: usage}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;✅ Expected (your numbers will differ):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"answer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Overfitting is when a model learns the training data so closely ..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"usage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"inputTokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"outputTokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"totalTokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👀 That &lt;code&gt;usage&lt;/code&gt; block is your bill, in tokens.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧮 Step 3: Turn tokens into money
&lt;/h2&gt;

&lt;p&gt;Open &lt;a href="https://aws.amazon.com/bedrock/pricing/" rel="noopener noreferrer"&gt;Amazon Bedrock pricing&lt;/a&gt;, find &lt;strong&gt;Nova Micro&lt;/strong&gt;, and copy its price per &lt;strong&gt;1,000 input tokens&lt;/strong&gt; and per &lt;strong&gt;1,000 output tokens&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;IN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;8&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;OUT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;24                      &lt;span class="c"&gt;# from usage&lt;/span&gt;
&lt;span class="nv"&gt;P_IN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;price per 1K input tokens&amp;gt;  &lt;span class="c"&gt;# from the pricing page&lt;/span&gt;
&lt;span class="nv"&gt;P_OUT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;price per 1K output tokens&amp;gt;
&lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$IN&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="nv"&gt;o&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$OUT&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="nv"&gt;pi&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$P_IN&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="nv"&gt;po&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$P_OUT&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s1"&gt;'BEGIN { printf "USD %.8f per prompt\n", i/1000*pi + o/1000*po }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;💡 Multiply by prompts per day to get a daily cost. That's the number your manager wants.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧨 Break it on purpose
&lt;/h2&gt;

&lt;p&gt;Ask for a &lt;strong&gt;long&lt;/strong&gt; answer instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;--messages&lt;/span&gt; &lt;span class="s1"&gt;'[{"role":"user","content":[{"text":"Explain overfitting in 500 words."}]}]'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📈 &lt;code&gt;outputTokens&lt;/code&gt; jumps, and output tokens cost more than input tokens. Then add &lt;code&gt;--inference-config '{"maxTokens":50}'&lt;/code&gt; and watch the cost come back down.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧹 Cost and cleanup
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;💵 A few prompts on Nova Micro cost a fraction of a cent&lt;/li&gt;
&lt;li&gt;🧹 Nothing to delete: Converse calls create no resources&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🎯 What you can now say in the interview (and the exam)
&lt;/h2&gt;

&lt;p&gt;✅ "Bedrock on-demand pricing is per input and output token"&lt;br&gt;
✅ "Every Converse response returns &lt;code&gt;inputTokens&lt;/code&gt; and &lt;code&gt;outputTokens&lt;/code&gt;"&lt;br&gt;
✅ "Output tokens usually cost more, so I cap them with &lt;code&gt;maxTokens&lt;/code&gt;"&lt;br&gt;
✅ "Cost per prompt × prompts per day = the daily bill"&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 Go deeper
&lt;/h2&gt;

&lt;p&gt;This is the hands-on cut of &lt;strong&gt;Chapter 5&lt;/strong&gt; of our free &lt;em&gt;AWS AI Practitioner (AIF-C01)&lt;/em&gt; course: the full chapter explains tokens, why they drive cost, and how the exam asks about them.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://confidentprep.com/certifications/aws-ai-practitioner/chapter-5/" rel="noopener noreferrer"&gt;Read the full chapter on Confident Prep&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>ai</category>
      <category>machinelearning</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>When is machine learning the wrong answer to a business problem?</title>
      <dc:creator>confident_prep</dc:creator>
      <pubDate>Sun, 11 Oct 2026 03:16:45 +0000</pubDate>
      <link>https://dev.to/confident_prep/when-is-machine-learning-the-wrong-answer-to-a-business-problem-34f</link>
      <guid>https://dev.to/confident_prep/when-is-machine-learning-the-wrong-answer-to-a-business-problem-34f</guid>
      <description>&lt;p&gt;A manager asks for "an AI solution" to calculate shipping fees. The fees already come from a published rate table: weight band, destination zone, a fixed surcharge. Training a model would mean spending effort to produce an approximate version of a rule the business has already written down. The AWS Certified AI Practitioner exam (AIF-C01, Exam Guide version 1.1) checks whether you can spot this situation. One of the abilities it validates is to "identify the appropriate use of AI/ML and GenAI technologies to solve business problems".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The claim of this article:&lt;/strong&gt; machine learning is the wrong answer in five situations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the rule is already known;&lt;/li&gt;
&lt;li&gt;the output must be exactly predictable;&lt;/li&gt;
&lt;li&gt;the data is missing, poor or biased;&lt;/li&gt;
&lt;li&gt;the business value cannot be measured;&lt;/li&gt;
&lt;li&gt;a simpler, ready-made or narrower technique would do the job.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each follows from how machine learning works. It infers a relationship it does not know in advance from examples, and its output is probabilistic rather than certain. The answer is written the way a strong candidate would give it in an interview, followed by five follow-up questions. Each follow-up has a short model answer and the mistake weaker candidates tend to make.&lt;/p&gt;

&lt;h2&gt;
  
  
  The strong answer: machine learning earns its place only when the rule is unknown and the data can teach it
&lt;/h2&gt;

&lt;p&gt;Asked "When is AI or machine learning the wrong answer?", a strong candidate starts from the mechanism, not a list of slogans.&lt;/p&gt;

&lt;p&gt;Machine learning starts from the idea that some mathematical relationship links inputs to outputs. The model does not know this relationship in advance. It can estimate it if it sees enough examples. The standard illustration is simple. Give an algorithm the pairs (2,10), (5,19) and (9,31), and it works out that the output is three times the input plus four. Asked about an input of 7, it predicts 25.&lt;/p&gt;

&lt;p&gt;That example contains the whole argument. If you already knew "times three, plus four", you would write that line of code and skip the training. Machine learning helps when nobody can write the rule down but examples of it exist.&lt;/p&gt;

&lt;p&gt;The strong answer therefore names the conditions that remove the case for machine learning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a known rule;&lt;/li&gt;
&lt;li&gt;a need for guaranteed, repeatable output;&lt;/li&gt;
&lt;li&gt;too little data, or data of poor quality;&lt;/li&gt;
&lt;li&gt;no measurable business goal;&lt;/li&gt;
&lt;li&gt;a problem a simpler or ready-made technique already solves.&lt;/li&gt;
&lt;/ul&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhre4p3bev2r6s0x2m4m9.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhre4p3bev2r6s0x2m4m9.png" alt="A decision flow: known rule or exact output leads to ordinary code; missing data or unmeasurable value stops ML" width="800" height="1380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Machine learning is justified only after the cheaper questions are answered&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow-up 1: a known rule beats a learned guess when output must be predictable
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Interviewer: "Why not use machine learning anyway? It would learn the rule eventually."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model answer:&lt;/strong&gt; Because the two kinds of system make different promises. Most software responds predictably, so you can say "if the user does this, he gets that". Machine learning learns from observation, so it is probabilistic. The statement becomes "if the user does this, there is an X% chance of that happening".&lt;/p&gt;

&lt;p&gt;Tax calculations, fee schedules, eligibility checks against fixed thresholds and access permissions all need the first kind of promise. Replacing an exact rule with a probability adds error and buys nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The mistake weak candidates make:&lt;/strong&gt; treating "learns automatically" as an advantage in every case. In practice, the giveaway is an answer that never mentions that a learned model can be wrong on inputs where the written rule would always be right.&lt;/p&gt;

&lt;p&gt;Think of it as the difference between a printed timetable and a commuter's guess about when the bus usually arrives. The guess is useful only when no timetable exists.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsgd6jx7mc1emv5oq7klb.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsgd6jx7mc1emv5oq7klb.png" alt="Comparison table showing deterministic software gives fixed outcomes while machine learning gives probabilities" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Rule-based software promises an outcome; machine learning promises a likelihood&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow-up 2: without enough clean, representative data there is no model worth building
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Interviewer: "The rule is unknown, but we only have a few hundred messy records. Is machine learning still the answer?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model answer:&lt;/strong&gt; Probably not yet. A model's performance depends on the quality of the data it was trained on. Missing values, inconsistent entries and noise can significantly degrade accuracy. A dataset that is not large enough can stop the model from learning effectively.&lt;/p&gt;

&lt;p&gt;Data that looks plentiful can still be skewed. When some classes appear far more often than others, a model can do well on the majority class and fail on the minority class. For example, a hiring model trained on history that favoured one demographic may keep favouring it. Training an unbiased system needs large volumes of data and good data-quality processes behind them.&lt;/p&gt;

&lt;p&gt;Supervised learning is the style trained on labelled examples, where each input is tagged with its correct output. Labelling at the scale it needs is itself a challenge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The mistake weak candidates make:&lt;/strong&gt; assuming the model will "clean up" the data, or that more training fixes bad inputs. A sensible default is to treat data readiness as a gate. If the data cannot be fixed, the project is not ready for machine learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow-up 3: a project with no measurable business goal cannot be justified
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Interviewer: "Leadership wants AI on the roadmap. Where do you start?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model answer:&lt;/strong&gt; With the problem, not the technology. Guidance on adopting machine learning puts "business goal" first in the lifecycle:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Identify the problem to solve and the value machine learning would add.&lt;/li&gt;
&lt;li&gt;Check whether that value can be measured against specific success criteria.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Next comes problem framing. You decide what is observed and what should be predicted, and which performance and error metrics matter. Only after that do data processing, model development, deployment and monitoring follow.&lt;/p&gt;

&lt;p&gt;If you cannot say what the model predicts, or how anyone would know it is working, the honest answer is that machine learning is premature.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqdeujbj5k6hy0kzhqv8d.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqdeujbj5k6hy0kzhqv8d.png" alt="Lifecycle from business goal to monitoring, with a stop when the business goal has no measurable value" width="800" height="114"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The business goal and problem framing come before any data or model work&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The mistake weak candidates make:&lt;/strong&gt; answering with a service or a model type before naming a measurable outcome. On a scenario question, any option that skips "define the goal and success criteria" deserves suspicion.&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow-up 4: when a decision must be explained, an opaque model carries a real cost
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Interviewer: "A lender wants a model to approve loans. Any concerns?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model answer:&lt;/strong&gt; Two concerns: explainability and bias.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explainability.&lt;/strong&gt; As models become more complex, and deep learning models especially, their decisions become harder to interpret. This affects usability, trust and the ethics of deploying them. Deep learning is the family of methods that passes data through many layers of artificial neurons.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bias.&lt;/strong&gt; Imbalanced historical data can lead a model to keep reproducing the patterns in that data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Governance.&lt;/strong&gt; Deploying AI means managing data quality, privacy and security, within regulatory restrictions and privacy laws. The organisation stays accountable for customer data. Responsible AI is the practice of attending to fairness, transparency and accountability in how AI is built and used.&lt;/p&gt;

&lt;p&gt;None of this rules machine learning out automatically. It does mean that a decision that must be justified to the person affected is a weaker fit for a model whose reasoning is hard to read. The choice is between a more interpretable approach and accepting the cost of bias checks and oversight.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The mistake weak candidates make:&lt;/strong&gt; treating responsible AI as a separate topic from "is this the right tool". In practice, the two often turn out to be the same question.&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%2Fgist.githubusercontent.com%2Fconfidentprep14-web%2F39415b34c33437ca955ed45b4193323c%2Fraw%2F852a5ffafc0139205683efd564f71a88647b9f1e%2Fvisual-04.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%2Fgist.githubusercontent.com%2Fconfidentprep14-web%2F39415b34c33437ca955ed45b4193323c%2Fraw%2F852a5ffafc0139205683efd564f71a88647b9f1e%2Fvisual-04.png" alt="Icons for known rule, poor data, no measurable goal and a decision that must be explained" width="800" height="121"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Four warning signs that machine learning may be the wrong answer&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow-up 5: choosing the wrong type of AI is also a wrong answer
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Interviewer: "Fine, AI fits here. Should we just use the biggest generative model available?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model answer:&lt;/strong&gt; Not by default. Foundation models are large deep learning models trained on broad, unlabelled data that can perform many different tasks from a prompt. They are not automatically the best choice. Many organisations still use conventional machine learning models for many tasks, and those models can outperform foundation models for many use cases.&lt;/p&gt;

&lt;p&gt;The same care applies within machine learning, because each learning style has a known limit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unsupervised learning&lt;/strong&gt;, which finds structure in unlabelled data, cannot give precise predictions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reinforcement learning&lt;/strong&gt;, which learns by collecting rewards, struggles because real-world environments change often and with little warning.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pretrained AI services offer ready-made intelligence for common use cases. When one fits, it can remove the need to train anything.&lt;/p&gt;

&lt;p&gt;Cost is the last factor. Training large models demands significant computing resources and can be time-consuming and costly. Processing power can be expensive and limit how far a system scales.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The mistake weak candidates make:&lt;/strong&gt; equating "most capable" with "most appropriate". A sensible rule is to choose the narrowest technique that meets the success criteria. Choose a conventional classifier when the task is a fixed set of categories with labelled history. Choose a generative model when the output itself is new text or images.&lt;/p&gt;

&lt;h2&gt;
  
  
  How AIF-C01 turns this judgment into scored questions
&lt;/h2&gt;

&lt;p&gt;The exam guide lists four things the exam validates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;describing AI, machine learning and generative AI concepts;&lt;/li&gt;
&lt;li&gt;identifying the appropriate use of these technologies for business problems;&lt;/li&gt;
&lt;li&gt;determining the correct types of technology for specific use cases;&lt;/li&gt;
&lt;li&gt;using them responsibly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The second and third map directly onto the follow-ups above.&lt;/p&gt;

&lt;p&gt;The target candidate uses AI/ML solutions on AWS but does not necessarily build them. Coding models, feature engineering, hyperparameter tuning and statistical analysis of models are explicitly out of scope. The exam therefore asks you to judge fit, not to build the fix.&lt;/p&gt;

&lt;p&gt;The question formats suit judgment. Multiple choice has one correct answer and three distractors. Multiple response needs every correct option selected. Matching pairs responses with three to seven prompts. Ordering asks you to place three to five responses in sequence.&lt;/p&gt;

&lt;p&gt;In practice, a lifecycle ordering question or a use-case matching question is a natural home for "business goal first" and "right type for the task". That is an interpretation of the format, not a published statement of which questions appear.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv19220b5gqqhx0a8yhwp.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv19220b5gqqhx0a8yhwp.png" alt="Table of the five exam domains and their shares of scored content" width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Scored content is spread across five domains; judging fit draws on several of them&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weighting&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Domain&lt;/th&gt;
&lt;th&gt;Share of scored content&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Fundamentals of AI and ML&lt;/td&gt;
&lt;td&gt;20%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fundamentals of GenAI&lt;/td&gt;
&lt;td&gt;24%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Applications of Foundation Models&lt;/td&gt;
&lt;td&gt;28%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Guidelines for Responsible AI&lt;/td&gt;
&lt;td&gt;14%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security, Compliance, and Governance for AI Solutions&lt;/td&gt;
&lt;td&gt;14%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Scoring&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;50 questions count toward the score; 15 more are unscored and not identified.&lt;/li&gt;
&lt;li&gt;Results are reported on a scale of 100 to 1,000, and 700 is the passing score.&lt;/li&gt;
&lt;li&gt;Scoring is compensatory, so you need to pass only the overall exam, not each section.&lt;/li&gt;
&lt;li&gt;Unanswered questions count as incorrect, and there is no penalty for guessing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Machine learning infers an unknown relationship from examples. If the rule is already known, ordinary code is the better answer.&lt;/li&gt;
&lt;li&gt;Machine learning output is probabilistic. Where the outcome must be guaranteed and repeatable, a learned model adds error.&lt;/li&gt;
&lt;li&gt;Poor, scarce or imbalanced data, or a goal with no measurable success criteria, means the project is not ready for machine learning.&lt;/li&gt;
&lt;li&gt;Explainability, bias and governance are part of judging fit, not an afterthought.&lt;/li&gt;
&lt;li&gt;"Most capable" is not "most appropriate". Conventional models and ready-made services often fit better than a large generative model.&lt;/li&gt;
&lt;li&gt;AIF-C01 tests this as judgment, not building: identifying appropriate use and choosing the right type of technology for a use case.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The honest limit:&lt;/strong&gt; this article draws on the exam guide's overview and two general explainers. It does not reproduce the detailed task statements inside each domain, so it cannot say exactly how many questions address inappropriate uses of AI or how they are worded.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Full article: &lt;a href="https://confidentprep.com/blog/when-is-machine-learning-the-wrong-answer-to-a-business-problem/" rel="noopener noreferrer"&gt;https://confidentprep.com/blog/when-is-machine-learning-the-wrong-answer-to-a-business-problem/&lt;/a&gt;
&amp;lt;!-- cf-origin:end --&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>aws</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Fine-tuning versus continued pre-training for Amazon Nova 2</title>
      <dc:creator>confident_prep</dc:creator>
      <pubDate>Sun, 11 Oct 2026 03:16:20 +0000</pubDate>
      <link>https://dev.to/confident_prep/fine-tuning-versus-continued-pre-training-for-amazon-nova-2-397l</link>
      <guid>https://dev.to/confident_prep/fine-tuning-versus-continued-pre-training-for-amazon-nova-2-397l</guid>
      <description>&lt;p&gt;Imagine an interviewer asks how to adapt Amazon Nova 2 Lite for a specialist domain: should you feed it a vast library of raw documents, or show it carefully prepared examples of the answers you want? Those choices correspond to continued pre-training and supervised fine-tuning, and they solve different problems. Continued pre-training develops deeper familiarity with a domain from large volumes of unlabeled text, while supervised fine-tuning teaches tasks and behaviors from labeled prompt-response examples; choosing correctly depends on whether the gap is primarily missing domain fluency or unclear behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  The strongest answer separates knowledge acquisition from behavior shaping
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Interview question: What is the difference between fine-tuning and continued pre-training a foundation model on AWS, and what data does each need?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model answer:&lt;/strong&gt; Continued pre-training, or CPT, extends a foundation model’s pre-training by exposing it to additional raw, unlabeled text from a particular domain or collection. Its purpose is to help the model acquire deeper domain knowledge, terminology, writing patterns, and familiarity with particular content types.&lt;/p&gt;

&lt;p&gt;Supervised fine-tuning, or SFT, instead trains the model on labeled input-output pairs. Each pair demonstrates a prompt and the response that the model should learn to produce, allowing the model to align with a specific task, instruction, workflow, format, tone, or style.&lt;/p&gt;

&lt;p&gt;The simplest distinction is therefore &lt;strong&gt;knowledge acquisition versus behavior shaping&lt;/strong&gt;. CPT answers, “What body of language and subject matter should the model become more fluent in?” SFT answers, “Given an input, what should the model do?”&lt;/p&gt;

&lt;p&gt;The data requirements follow directly from that distinction. CPT needs large volumes of domain-specific raw documents, potentially tens of billions of tokens. SFT needs high-quality labeled examples in which each input is paired with the desired output. CPT generally needs subsequent instruction-tuning stages so that the model can use its newly acquired knowledge to complete useful tasks.&lt;/p&gt;

&lt;p&gt;Think of it as preparing a specialist for work. CPT resembles giving the specialist an extensive professional library to absorb, while SFT resembles showing the specialist worked examples of how to respond to particular assignments. The analogy distinguishes broad exposure from explicit demonstrations; it does not imply that either method automatically guarantees correct answers.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr18o83bwx6pgbbut0go9.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr18o83bwx6pgbbut0go9.png" alt="Raw documents support domain fluency, while labeled pairs support task and behavior alignment" width="798" height="207"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Continued pre-training builds domain fluency, while fine-tuning demonstrates desired behavior&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The mistake weak candidates make:&lt;/strong&gt; In practical interview terms, a weak answer often treats both methods as interchangeable ways to “add company data.” That misses the decisive difference between learning from unlabeled documents and learning from labeled demonstrations.&lt;/p&gt;

&lt;h2&gt;
  
  
  The right choice begins with the gap you need to close
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Follow-up question 1: When should you choose supervised fine-tuning?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model answer:&lt;/strong&gt; Choose SFT when you can express the desired behavior through high-quality input-output examples. It is suited to teaching a specific response format, tone, or style, as well as domain-specific instructions and workflows. It can also adapt the model for multimodal tasks involving text, images, video, or tool calling.&lt;/p&gt;

&lt;p&gt;For example, suppose the model already understands the vocabulary in technical service records but does not consistently transform a record into the required structured response. A training set could pair representative records with correctly formatted outputs. That example illustrates SFT because every input is accompanied by a target response that demonstrates the expected task.&lt;/p&gt;

&lt;p&gt;SFT is also the clearer choice when success can be shown directly: “For an input like this, produce an output like that.” This selection rule is a practical judgment, but it follows the structure of the required training 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff48yy8m8v5r13s0xw0p2.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff48yy8m8v5r13s0xw0p2.png" alt="A prompt and desired response form a labeled example for teaching a specific behavior" width="800" height="49"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Supervised fine-tuning starts with examples that show the required response&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The mistake weak candidates make:&lt;/strong&gt; A weak answer may say that SFT merely gives the model more subject matter. In fact, its defining input is a set of labeled prompt-response demonstrations, and its stated purpose is alignment with tasks, instructions, or desired behaviors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Raw domain corpora point toward continued pre-training
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Follow-up question 2: When should you choose continued pre-training?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model answer:&lt;/strong&gt; Choose CPT when you have a very large volume of domain-specific text and want the model to develop deeper knowledge and more native fluency in that domain. Suitable material can include legal documents, medical literature, technical documentation, or proprietary business content. The documents do not need prompt-response labels because CPT trains on raw text.&lt;/p&gt;

&lt;p&gt;CPT is particularly valuable at a scale of tens of billions of tokens. It can help the model learn specialized terminology, characteristic writing patterns, new subject matter, and particular content types. That makes CPT a different commitment from assembling a comparatively targeted collection of demonstrations: its stated use case assumes a large corpus rather than a list of correct answers.&lt;/p&gt;

&lt;p&gt;For example, a collection of specialist manuals may contain the language and concepts the model should absorb without specifying a task for each passage. That is CPT-shaped data. By contrast, pairs such as “manual excerpt plus question” and “approved answer” are SFT-shaped data because they demonstrate how the model should respond.&lt;/p&gt;

&lt;p&gt;Think of CPT as immersion in a domain’s literature. Immersion can build familiarity with the domain, but it does not by itself specify the useful task the model should perform with that familiarity.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx2zxwi4cx9u2rgh8uuxy.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx2zxwi4cx9u2rgh8uuxy.png" alt="Continued pre-training uses raw corpora, while supervised fine-tuning uses labeled examples" width="799" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The presence or absence of target responses determines the training-data shape&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The mistake weak candidates make:&lt;/strong&gt; A weak answer may recommend CPT simply because some proprietary documents exist. The stronger answer checks whether there is enough domain text for the documented large-volume use case and whether the real gap is domain fluency rather than response behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Continued pre-training may be only the first adaptation stage
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Follow-up question 3: Does continued pre-training make the model ready for a specific task?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model answer:&lt;/strong&gt; Not necessarily. After CPT, the model generally needs additional instruction-tuning stages so that it can use the newly acquired knowledge and complete useful tasks. CPT can deepen knowledge of a domain, but its raw documents do not directly provide the labeled demonstrations that define a desired response.&lt;/p&gt;

&lt;p&gt;A sensible design is to treat CPT and SFT as potentially complementary rather than mutually exclusive. CPT can first expose the model to a large specialist corpus, after which instruction tuning can demonstrate how that knowledge should be applied. The first stage develops domain familiarity; the later stage shapes task performance.&lt;/p&gt;

&lt;p&gt;For example, raw technical documentation could support CPT so the model encounters specialized terms and writing patterns. Labeled examples could then show how to answer a diagnostic question, follow a domain-specific workflow, or return a required response format. The example demonstrates why “knowing the material” and “performing the task” are separate adaptation goals.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F20r3phasu6wsbhdr9wx2.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F20r3phasu6wsbhdr9wx2.png" alt="Raw documents support continued pre-training before instruction tuning teaches useful tasks" width="800" height="216"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Domain adaptation can continue from raw-text training into instruction-focused training&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The mistake weak candidates make:&lt;/strong&gt; In interview terms, weak candidates often imply that pouring raw documents into CPT automatically teaches question answering, formatting, or workflow compliance. The source makes the limitation explicit: additional instruction tuning is generally needed after CPT.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data quality and data shape are different requirements
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Follow-up question 4: What exactly should the training dataset look like for each method?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model answer:&lt;/strong&gt; A CPT dataset should be a large corpus of relevant, unlabeled domain text. Its useful signal lies in the documents themselves: their subject matter, terminology, writing patterns, and content types. The documented examples include legal, medical, technical, and proprietary business text.&lt;/p&gt;

&lt;p&gt;An SFT dataset should contain labeled input-output pairs that demonstrate the correct behavior. Inputs are prompts or task examples, while outputs are the responses the model is meant to learn from. Those pairs can demonstrate a format, tone, style, instruction, workflow, or multimodal task.&lt;/p&gt;

&lt;p&gt;“Unlabeled” does not mean “unrelated,” and “labeled” does not mean “automatically useful.” In practical terms, CPT material should represent the domain the model needs to absorb, while SFT examples should clearly represent the behavior it needs to reproduce. That is a judgment about dataset design rather than a separate sourced requirement.&lt;/p&gt;

&lt;p&gt;For example, a folder of domain documents does not become an SFT dataset merely because the documents have filenames or categories. SFT requires the stronger relationship of an input paired with its intended output. Conversely, converting every raw passage into a demonstration is unnecessary for CPT because CPT is specifically designed to train on raw documents.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fter5ejxkyqw5wju6qjma.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fter5ejxkyqw5wju6qjma.png" alt="Data without desired responses fits continued pre-training; paired responses fit fine-tuning" width="800" height="938"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Choose the method by asking whether the dataset contains desired answers&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The mistake weak candidates make:&lt;/strong&gt; A weak answer discusses only the amount of data. Volume matters to CPT’s documented use case, while SFT is defined by high-quality labeled pairs; the structure and purpose of the data are therefore as important as its quantity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nova 2 Lite supports both paths, but model selection remains a tradeoff
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Follow-up question 5: How does this distinction apply to Amazon Nova 2?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model answer:&lt;/strong&gt; Amazon Nova 2 is the current model generation in the question, and Nova 2 Lite supports both CPT and SFT. The documentation also lists Nova 1.0 Micro, Lite, and Pro for both techniques, but that is the older model generation.&lt;/p&gt;

&lt;p&gt;Nova 2.0 is the documented choice when the use case needs enhanced reasoning with an explicit reasoning mode, broader multilingual performance, improved performance on complex work such as coding and tool use, or more accurate and stable handling of extended context. Nova 1.0 remains an option when standard language understanding is sufficient, lower training and inference costs are a priority, the focus is domain-specific knowledge and behavior rather than complex reasoning, or its performance has already been validated for the use case.&lt;/p&gt;

&lt;p&gt;Model generation and adaptation method answer separate questions. Selecting Nova 2 Lite identifies the base model, while selecting CPT or SFT identifies how that model will learn from the available data. A sensible interview answer keeps those choices distinct and evaluates accuracy, speed, cost, and business requirements rather than assuming that a larger model is always preferable.&lt;/p&gt;

&lt;p&gt;For example, choosing Nova 2 Lite because a task needs stronger reasoning does not establish whether CPT or SFT is appropriate. The data and adaptation goal still decide between raw-text domain learning and labeled behavior learning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The mistake weak candidates make:&lt;/strong&gt; A weak answer treats “use Nova 2” as a complete adaptation strategy. The model choice does not remove the need to determine whether the problem calls for domain knowledge from raw text, task behavior from demonstrations, or a sequence involving both.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;CPT extends pre-training with raw, unlabeled domain documents so the model can acquire deeper knowledge, terminology, writing patterns, and domain fluency.&lt;/li&gt;
&lt;li&gt;SFT trains on labeled prompt-response pairs so the model can learn specific tasks, instructions, workflows, formats, tones, styles, or multimodal behaviors.&lt;/li&gt;
&lt;li&gt;CPT is particularly relevant when the available corpus contains tens of billions of domain-specific tokens, while SFT depends on high-quality examples of the desired behavior.&lt;/li&gt;
&lt;li&gt;CPT generally needs later instruction tuning before the adapted model can apply its new knowledge to useful tasks.&lt;/li&gt;
&lt;li&gt;Nova 2 Lite supports both CPT and SFT, while the documentation also lists the older Nova 1.0 Micro, Lite, and Pro models.&lt;/li&gt;
&lt;li&gt;The practical decision rule is to choose CPT for a domain-fluency gap, SFT for a demonstrated-behavior gap, and consider both in sequence when both gaps exist.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This distinction settles what each technique is meant to teach and what form of data it requires. It does not settle which method will meet a particular quality target, how much labeled SFT data is sufficient, or whether the cost-performance tradeoff favors adaptation over another design for a specific workload.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Full article: &lt;a href="https://confidentprep.com/blog/fine-tuning-versus-continued-pre-training-for-amazon-nova-2/" rel="noopener noreferrer"&gt;https://confidentprep.com/blog/fine-tuning-versus-continued-pre-training-for-amazon-nova-2/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Full chapter: &lt;a href="https://confidentprep.com/certifications/aws-ai-practitioner/chapter-11/" rel="noopener noreferrer"&gt;https://confidentprep.com/certifications/aws-ai-practitioner/chapter-11/&lt;/a&gt;
&amp;lt;!-- cf-origin:end --&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>aws</category>
      <category>llm</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>AWS AIF-C01: Bias, Variance &amp; the AWS Tools That Detect Them</title>
      <dc:creator>confident_prep</dc:creator>
      <pubDate>Thu, 01 Oct 2026 12:13:20 +0000</pubDate>
      <link>https://dev.to/confident_prep/aws-aif-c01-bias-variance-the-aws-tools-that-detect-them-4a6h</link>
      <guid>https://dev.to/confident_prep/aws-aif-c01-bias-variance-the-aws-tools-that-detect-them-4a6h</guid>
      <description>&lt;p&gt;A model can perform well overall and still fail badly for a particular group. That is the central idea behind bias and variance questions on the AWS Certified AI Practitioner exam: training-versus-unseen performance reveals underfitting or overfitting, while differences between demographic groups reveal societal bias. To choose the right detection method, first identify which problem the evidence describes, then match the tool to when the check occurs—point-in-time, continuously after deployment, or on an individual prediction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bias has two meanings, and the scenario tells you which one applies
&lt;/h2&gt;

&lt;p&gt;On the exam, “bias” can refer to either statistical bias or societal bias. These are separate problems, even though both can cause inaccurate predictions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Statistical bias&lt;/strong&gt; means a model is too simple to capture the underlying pattern. It performs poorly on the data used to train it and on data it has never seen. This failure is called &lt;strong&gt;underfitting&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Societal bias&lt;/strong&gt; means outcomes differ systematically across demographic groups. A model might perform well in aggregate while producing much worse results for one group. This is a fairness failure, not necessarily a fitting failure.&lt;/p&gt;

&lt;p&gt;The surrounding language tells you which meaning the question intends:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;References to training accuracy, unseen-data accuracy, overfitting, or underfitting point to statistical bias.&lt;/li&gt;
&lt;li&gt;References to fairness, demographic groups, or unequal outcomes point to societal bias.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Consider an illustrative example. A model scores poorly on both its training set and its test set. That is high statistical bias: the model never captured the pattern. Now suppose another model scores well on both sets overall but performs much worse for rural applicants. That is societal bias. The second model may generalize well in aggregate and still be unfair.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7zu3c8p2blzq503kl2u1.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7zu3c8p2blzq503kl2u1.png" alt="Training and unseen accuracy indicate statistical bias; group outcomes indicate societal bias." width="800" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The same word points to different problems depending on the evidence in the scenario.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This distinction prevents a common exam mistake: calling every group disparity “overfitting.” Overfitting describes sensitivity to the training set. It does not mean that a model performs differently across groups.&lt;/p&gt;

&lt;h2&gt;
  
  
  Variance appears as a gap between training and unseen performance
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Variance&lt;/strong&gt; is a model’s sensitivity to the particular data on which it was trained. High variance appears as &lt;strong&gt;overfitting&lt;/strong&gt;: the model performs extremely well on its training data but poorly on unseen data.&lt;/p&gt;

&lt;p&gt;The model has learned details specific to the training set instead of learning a pattern that generalizes. The decisive evidence is the gap between training and unseen-data performance.&lt;/p&gt;

&lt;p&gt;Underfitting has a different signature:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Condition&lt;/th&gt;
&lt;th&gt;Training performance&lt;/th&gt;
&lt;th&gt;Unseen-data performance&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Underfitting, or high statistical bias&lt;/td&gt;
&lt;td&gt;Poor&lt;/td&gt;
&lt;td&gt;Poor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Overfitting, or high variance&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;td&gt;Poor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Healthy aggregate fit&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For example, suppose a model answers nearly every training example correctly but makes frequent errors on new examples. The strong training result does not show that the model is healthy. Combined with poor unseen performance, it shows overfitting.&lt;/p&gt;

&lt;p&gt;Now change the example: the model performs well on both training and unseen data, but its unseen-data accuracy is much lower for one demographic group. Neither underfitting nor overfitting fully describes that result. The model can be well fitted in aggregate while remaining unfair.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffg3hbx3mh38tf7gv8c8x.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffg3hbx3mh38tf7gv8c8x.png" alt="Poor results on both sets mean underfitting; a large gap means overfitting; good results still require group checks." width="800" height="1336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Training and unseen performance separate underfitting from overfitting before fairness is assessed.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A useful exam rule follows: when a question gives two performance figures—one for training data and one for unseen data—it is usually testing fitting. When it gives an overall figure and mentions a demographic group, it is testing fairness.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dataset characteristics explain where disparities begin
&lt;/h2&gt;

&lt;p&gt;The exam separates four dataset characteristics because each answers a different question.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inclusivity&lt;/strong&gt; asks whether the groups the system will serve are present at all. If a group has no records, the model cannot learn from it, and there are no rows on which to calculate that group’s performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Diversity&lt;/strong&gt; asks whether the data represents the real range of cases, conditions, and contexts. A dataset may include every named group yet cover only typical cases, leaving the model unreliable at the edges.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Balance&lt;/strong&gt; asks whether represented groups appear in workable proportions. A group can be present but so heavily outnumbered that it has little effect on the training objective.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Curated sources&lt;/strong&gt; have known, selected, and documented origins. Curation makes the data’s provenance inspectable; it does not guarantee neutrality.&lt;/p&gt;

&lt;p&gt;Imagine a dataset containing 40,000 records from one group and 300 from another. The smaller group is present, so this is not an inclusivity failure. It is a balance failure: the group is represented but swamped.&lt;/p&gt;

&lt;p&gt;By contrast, if the second group has no records, “rebalance the dataset” is not yet a sufficient answer. There are no records to reweight. Data must first be collected from the missing group.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwc08syhhag5qsw2uknbm.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwc08syhhag5qsw2uknbm.png" alt="Inclusivity checks presence, diversity checks range, balance checks proportion, and curation checks provenance." width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Dataset checks move from whether groups exist to whether their representation can support reliable learning.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Curation is especially easy to misread. A carefully documented dataset collected entirely from one narrow population can be curated and skewed at the same time. Curation helps you identify what the dataset represents; it does not make the representation fair.&lt;/p&gt;

&lt;p&gt;Bias may also enter through collection, labelling, training, deployment, or feedback. For example, inconsistent reviewers may assign different labels to similar cases. Rebalancing the dataset would not repair those prejudiced or inconsistent targets. The labels themselves require analysis.&lt;/p&gt;

&lt;h2&gt;
  
  
  Aggregate accuracy cannot establish fairness
&lt;/h2&gt;

&lt;p&gt;An aggregate metric is an average. It can describe total performance without revealing how that performance is distributed.&lt;/p&gt;

&lt;p&gt;Suppose a model reports 94% accuracy overall. That figure may be arithmetically correct while concealing much lower accuracy for a minority group. Nothing about the headline number answers the fairness question “for whom does the model work?”&lt;/p&gt;

&lt;p&gt;The appropriate technique is &lt;strong&gt;subgroup analysis&lt;/strong&gt;: calculate the same metric separately for each relevant group. Subgroup analysis is not an AWS product. It is the measurement habit that makes disparities visible.&lt;/p&gt;

&lt;p&gt;This produces an important sequence for exam scenarios:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Refuse to treat overall accuracy as fairness evidence.&lt;/li&gt;
&lt;li&gt;Identify the groups that need comparison.&lt;/li&gt;
&lt;li&gt;Recalculate the relevant metric for each group.&lt;/li&gt;
&lt;li&gt;Trace the disparity back through collection, labelling, training, deployment, and feedback.&lt;/li&gt;
&lt;li&gt;Select a detection or monitoring tool based on timing.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Removing a demographic attribute is not a reliable fix. Other features may act as &lt;strong&gt;proxy variables&lt;/strong&gt;, meaning they carry information correlated with the removed attribute. Removing the attribute can also eliminate the field needed to calculate per-group metrics, making the disparity harder to detect without removing its cause.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fodhzz6o3n3mux13hcgpu.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fodhzz6o3n3mux13hcgpu.png" alt="A healthy overall metric must be split by group before a disparity can be detected and traced." width="800" height="164"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Subgroup analysis exposes disparities that remain invisible inside a healthy overall result.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Human judgment still matters because somebody must decide which groups to compare. A metric can only expose disparities it was configured to measure. &lt;strong&gt;Human audits&lt;/strong&gt; review model behavior directly and can identify concerns that were never encoded in an automated check.&lt;/p&gt;

&lt;h2&gt;
  
  
  Timing selects Clarify, Model Monitor, or A2I
&lt;/h2&gt;

&lt;p&gt;The AWS tools in these questions are not interchangeable. The simplest way to choose among them is to ask when the examination occurs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon SageMaker Clarify&lt;/strong&gt; performs point-in-time bias measurement. It can assess bias in data before training and in a trained model after training. It also produces feature attributions, but in a bias question its relevant role is calculating bias metrics.&lt;/p&gt;

&lt;p&gt;Choose Clarify when the scenario asks whether a training dataset or trained model is biased now, particularly before deployment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SageMaker Model Monitor&lt;/strong&gt; watches a deployed model continuously for changes in data, model quality, and bias relative to a baseline.&lt;/p&gt;

&lt;p&gt;Choose Model Monitor when the scenario says the model was acceptable at launch but may have changed after deployment. Phrases such as “since launch,” “drift,” and “continually monitor” distinguish it from Clarify.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon Augmented AI (Amazon A2I)&lt;/strong&gt; routes individual predictions to human reviewers at inference time, often when confidence is low.&lt;/p&gt;

&lt;p&gt;Choose A2I when a particular prediction or application needs human judgment. Do not choose it to calculate population-level disparity: A2I produces a human decision on a case, not a bias metric across groups.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fprtucwnsvektzs89jhh8.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fprtucwnsvektzs89jhh8.png" alt="Clarify measures bias at a point in time, Model Monitor watches deployment, and A2I reviews individual cases." width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The point in time determines whether the answer is Clarify, Model Monitor, or A2I.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Two other methods complete the exam’s detection set.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Analyzing label quality&lt;/strong&gt; checks whether labels are correct and consistently applied. Choose it when the evidence points to reviewers using inconsistent standards or when bias may be encoded in the training target.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Human audits&lt;/strong&gt; are appropriate when the concern requires judgment that no configured metric captures. They are not an inferior substitute for automation; they examine blind spots created by the choice of what to measure.&lt;/p&gt;

&lt;p&gt;A compact selection rule is:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario signal&lt;/th&gt;
&lt;th&gt;Best match&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Assess training data or a trained model now&lt;/td&gt;
&lt;td&gt;SageMaker Clarify&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Watch for change after deployment&lt;/td&gt;
&lt;td&gt;SageMaker Model Monitor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Send one prediction for human review&lt;/td&gt;
&lt;td&gt;Amazon A2I&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compare performance across groups&lt;/td&gt;
&lt;td&gt;Subgroup analysis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Check inconsistent or prejudiced targets&lt;/td&gt;
&lt;td&gt;Label quality analysis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Investigate concerns no metric encoded&lt;/td&gt;
&lt;td&gt;Human audit&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Common distractors fail because they answer the wrong question
&lt;/h2&gt;

&lt;p&gt;Several plausible answers recur in bias and variance scenarios.&lt;/p&gt;

&lt;p&gt;“Collect more data” does not fix missing coverage if the new records come from the same sources. More of the same population repeats the same skew. The corrective action must add relevant cases or groups.&lt;/p&gt;

&lt;p&gt;“Remove the demographic column” does not prevent discrimination when proxy variables remain. It may instead destroy the ability to measure the disparity.&lt;/p&gt;

&lt;p&gt;“Use Clarify for ongoing monitoring” ignores timing. Clarify measures at a point in time; Model Monitor handles continuous checks after deployment.&lt;/p&gt;

&lt;p&gt;“Use Model Monitor on the training dataset” places a deployment tool before deployment. There is no endpoint behavior to monitor yet.&lt;/p&gt;

&lt;p&gt;“Use A2I to measure bias” confuses case review with population analysis. A2I routes individual predictions to people; subgroup analysis or bias metrics reveal group-level disparity.&lt;/p&gt;

&lt;p&gt;“Call the group failure overfitting” confuses demographic performance with generalization. Overfitting requires strong training performance and poor unseen-data performance. A group disparity requires per-group evidence.&lt;/p&gt;

&lt;p&gt;Think of these distractors as category errors. Each proposed action may be useful somewhere, but it does not match the evidence, the level of analysis, or the point in the model lifecycle described by the question.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Statistical bias means underfitting: the model performs poorly on training and unseen data.&lt;/li&gt;
&lt;li&gt;High variance means overfitting: training performance is strong, but unseen performance is poor.&lt;/li&gt;
&lt;li&gt;Societal bias means outcomes differ systematically across groups and can coexist with good aggregate performance.&lt;/li&gt;
&lt;li&gt;Inclusivity is about presence; balance is about proportion; diversity is about range; curation is about documented provenance.&lt;/li&gt;
&lt;li&gt;Overall accuracy cannot establish fairness. Calculate metrics separately for relevant groups.&lt;/li&gt;
&lt;li&gt;SageMaker Clarify measures data or model bias at a point in time.&lt;/li&gt;
&lt;li&gt;SageMaker Model Monitor watches a deployed model for drift in quality and bias.&lt;/li&gt;
&lt;li&gt;Amazon A2I routes individual predictions to human reviewers; it is not a population bias metric.&lt;/li&gt;
&lt;li&gt;Label quality analysis examines biased or inconsistent targets, while human audits catch concerns no metric was configured to detect.&lt;/li&gt;
&lt;li&gt;Timing, not the general word “bias,” is the strongest clue when selecting an AWS tool.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These rules settle how to distinguish the concepts and select the exam’s named detection methods. They do not prove that a real model is fair: that still depends on which groups were examined, whether the labels and data reflect the deployment population, and whether human reviewers looked for harms the chosen metrics could not express.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>ai</category>
      <category>machinelearning</category>
      <category>certification</category>
    </item>
    <item>
      <title>Your LLM Prompt Costs More Than You Think — Build a Token &amp; Cost Calculator in Colab</title>
      <dc:creator>confident_prep</dc:creator>
      <pubDate>Thu, 01 Oct 2026 11:59:45 +0000</pubDate>
      <link>https://dev.to/confident_prep/your-llm-prompt-costs-more-than-you-think-build-a-token-cost-calculator-in-colab-23d8</link>
      <guid>https://dev.to/confident_prep/your-llm-prompt-costs-more-than-you-think-build-a-token-cost-calculator-in-colab-23d8</guid>
      <description>&lt;p&gt;You don't need an API key to find out your AI feature is quietly expensive.&lt;/p&gt;

&lt;p&gt;You don't need a production account.&lt;/p&gt;

&lt;p&gt;You don't need to wait for the first bill.&lt;/p&gt;

&lt;p&gt;You need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Colab&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pip install tiktoken&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;About 10 minutes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The last article in this series, "Give Your Chatbot a Memory in Google Colab Before Your Next AI Interview," was about managing a conversation once it gets long. &lt;em&gt;(Link it to that post's live Dev.to URL when you paste this in — it isn't in this repo.)&lt;/em&gt; This one rewinds further — before memory, before RAG, before agents — to the mechanism everything else in an LLM system is built on top of: tokens, and what they actually cost you. If you can't answer "how many tokens is this, and what does that mean in dollars," the rest of the stack doesn't matter yet.&lt;/p&gt;

&lt;p&gt;Let's measure it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are We Building?
&lt;/h2&gt;

&lt;p&gt;Every LLM call is billed and bounded by tokens, not words or characters. We'll build three small tools:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A real tokenizer that counts tokens the way a production model actually would&lt;/li&gt;
&lt;li&gt;A cost calculator that turns a token count into a daily and yearly dollar figure&lt;/li&gt;
&lt;li&gt;A tiny simulation of what "temperature" actually does to next-token sampling&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No fine print, no mocked numbers — every count below came from running the code, not estimating it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Count Tokens for Real
&lt;/h2&gt;

&lt;p&gt;Skip guessing "about 4 characters per token." Use the same tokenizer family production APIs use.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;tiktoken&lt;/span&gt;

&lt;span class="n"&gt;enc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tiktoken&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_encoding&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cl100k_base&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;text_a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;The meeting is scheduled for Thursday at 3pm. Please bring your notes from the last session and any open questions you want to discuss with the team.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;text_b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;The rate-limiting factor in transformer inference is memory bandwidth during KV-cache reads, not FLOPs. Prefill is compute-bound; autoregressive decode is memory-bandwidth-bound.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;text_c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Here is the function signature: async def fetch_user(user_id: UUID, db: AsyncSession) -&amp;gt; Optional[UserModel]:. It should return None if the user does not exist, not raise an exception.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;A - plain English&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text_a&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;B - technical jargon&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text_b&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;C - mixed code&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text_c&lt;/span&gt;&lt;span class="p"&gt;)]:&lt;/span&gt;
    &lt;span class="n"&gt;toks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;enc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;toks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; tokens, &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; words -&amp;gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;toks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; tokens/word&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output, run just now:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A - plain English: 31 tokens, 27 words -&amp;gt; 1.15 tokens/word
B - technical jargon: 37 tokens, 21 words -&amp;gt; 1.76 tokens/word
C - mixed code: 43 tokens, 27 words -&amp;gt; 1.59 tokens/word
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same rough word count across all three (21–27 words), but Text B costs &lt;strong&gt;53% more tokens per word&lt;/strong&gt; than Text A. Compound terms like "rate-limiting" get chopped into multiple sub-word pieces; UUIDs and type annotations in Text C do the same. Plain English is the cheapest register you can write in — technical prompts are a variable tax, not a fixed multiplier.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Turn Tokens Into Dollars
&lt;/h2&gt;

&lt;p&gt;A token count is abstract until it's attached to a query volume and a price sheet.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;PRICING&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-sonnet&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;input&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;3.00&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;output&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;15.00&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;   &lt;span class="c1"&gt;# $ per 1M tokens
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-haiku&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;input&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;output&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;4.00&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;estimate_cost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;queries_per_day&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;days&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;365&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;tokens&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;enc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="n"&gt;daily_tokens&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tokens&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;queries_per_day&lt;/span&gt;
    &lt;span class="n"&gt;daily_cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;daily_tokens&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PRICING&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;input&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1_000_000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;daily_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;daily_cost&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;daily_cost&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;days&lt;/span&gt;

&lt;span class="n"&gt;system_prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You are a support assistant for Acme Cloud. Always answer in a friendly, &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;professional tone. Never reveal internal pricing formulas. If the user asks &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;about billing, refer them to the billing dashboard at app.acme.com/billing. &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;If the user reports an outage, check the status page before responding, and &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;always include the current incident ID if one is open. Keep responses under &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;150 words unless the user explicitly asks for more detail.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-sonnet&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-haiku&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;daily_tok&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;daily_cost&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;yearly_cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;estimate_cost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;system_prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; tokens/call, &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;daily_tok&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; tokens/day, $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;daily_cost&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/day, $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;yearly_cost&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;,.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/year&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;claude-sonnet: 87 tokens/call, 87,000 tokens/day, $0.26/day, $95/year
claude-haiku: 87 tokens/call, 87,000 tokens/day, $0.07/day, $25/year
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One system prompt, sent unchanged on every one of 1,000 daily queries. $95/year on Sonnet doesn't sound alarming — until this is one of six prompts in your app, or volume is 100,000/day instead of 1,000. The formula doesn't change; the multiplier does.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Cut the Bill Without Cutting the Feature
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;trimmed_prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You are Acme Cloud&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s support assistant. Friendly, professional tone. &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Never reveal pricing formulas. Billing questions -&amp;gt; app.acme.com/billing. &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Outage reports -&amp;gt; check status page, include open incident ID. Max 150 words.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;t2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;daily_cost2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;yearly_cost2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;estimate_cost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;trimmed_prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-sonnet&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Trimmed: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;t2&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; tokens/call (&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;t2&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;87&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;% shorter), $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;daily_cost2&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/day, $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;yearly_cost2&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;,.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/year&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Trimmed: 47 tokens/call (46% shorter), $0.14/day, $51/year
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Denser prose cut the prompt nearly in half and the yearly cost from $95 to $51 — same rules enforced, zero functionality lost.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: What Temperature Actually Does
&lt;/h2&gt;

&lt;p&gt;Temperature doesn't make a model smarter or dumber — it reshapes how sharply it commits to its top guess. Simulate it with a toy 5-word distribution over "The weather today is ___":&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;
&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;seed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;candidates&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sunny&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cloudy&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cold&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;unpredictable&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;magnificent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;logits&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;     &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mf"&gt;2.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;      &lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;      &lt;span class="mf"&gt;1.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;              &lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;softmax_with_temperature&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logits&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;scaled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1e-6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;logits&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scaled&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;exps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;exp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;scaled&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;exps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;exps&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;candidates&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;probs&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;cum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;zip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;candidates&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;probs&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;cum&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;cum&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;candidates&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;temp&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="n"&gt;probs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;softmax_with_temperature&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logits&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;temp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;picks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;candidates&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;probs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;temp=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;temp&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: probs=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;zip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;candidates&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;probs&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;  8 samples: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;picks&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;temp=0.2: probs={'sunny': 0.71, 'cloudy': 0.26, 'cold': 0.02, 'unpredictable': 0.0, 'magnificent': 0.0}
  8 samples: ['sunny', 'sunny', 'sunny', 'sunny', 'sunny', 'sunny', 'sunny', 'sunny']

temp=1.0: probs={'sunny': 0.36, 'cloudy': 0.3, 'cold': 0.18, 'unpredictable': 0.11, 'magnificent': 0.05}
  8 samples: ['sunny', 'cloudy', 'sunny', 'sunny', 'cloudy', 'cold', 'sunny', 'sunny']
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same logits both times. At &lt;code&gt;temp=0.2&lt;/code&gt; the distribution collapses onto "sunny" — 8 for 8. At &lt;code&gt;temp=1.0&lt;/code&gt; the same model "opinion" produces four different words across 8 draws. Nothing about the model's knowledge changed — only how willing it is to pick outside its top guess.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make It Reusable
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;tokenize_and_cost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;queries_per_day&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-sonnet&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;daily_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;daily_cost&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;yearly_cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;estimate_cost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;queries_per_day&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tokens_per_call&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;daily_cost_usd&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;daily_cost&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;yearly_cost_usd&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;yearly_cost&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One function, three inputs (text, volume, model), a real dollar figure out. Swap in your own system prompt before your next design review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Colab Experiments to Try
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Paste your own longest system prompt into Step 1 — is its tokens/word ratio closer to plain English or technical jargon?&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;estimate_cost&lt;/code&gt; at 10,000 queries/day. Watch the yearly figure move from "line item" to "budget conversation."&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;gpt-4o-mini&lt;/code&gt; (&lt;code&gt;$0.15&lt;/code&gt; input) to &lt;code&gt;PRICING&lt;/code&gt; and compare its yearly cost against &lt;code&gt;claude-haiku&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Change &lt;code&gt;logits&lt;/code&gt; so all 5 candidates are nearly equal, then re-run both temperatures — does low temperature still look deterministic?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Interview Questions Hidden Inside This Notebook
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Why does a technical or code-heavy prompt cost more than plain English at the same word count?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sub-word tokenization splits compound technical terms and punctuation-heavy syntax (UUIDs, type hints) into more pieces than common English words. Word count and token count are only loosely correlated — measure tokens directly, never estimate from word count.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What lever actually reduces LLM cost on a fixed feature set?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Prompt density. The Step 3 rewrite cut cost 46% by removing redundant phrasing, not functionality. Token count is a writing-quality problem before it's an infrastructure problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does temperature affect what the model "knows"?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. It reshapes sampling over an unchanged probability distribution — it doesn't touch the model's underlying weights. Low temperature for tasks needing the same answer every time; higher temperature only where variety is the actual goal.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Calculator Is the Easy Part
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;tokenize_and_cost()&lt;/code&gt; is maybe six lines. A real production cost model also has to account for output tokens (billed 3-5x the input rate, harder to bound), prompt caching (steep discounts on repeated system prompts this notebook doesn't model), and retries or tool-call round-trips that resend and re-bill context.&lt;/p&gt;

&lt;p&gt;Interviewers ask about token cost because a candidate who can name a real number, on the spot, has clearly built something — not just read about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Want to Go Deeper?
&lt;/h2&gt;

&lt;p&gt;This notebook covers the mechanics. The full session covers the "how does an LLM generate a response?" 5-beat answer end to end, including the hallucination root cause this notebook didn't touch:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://confidentprep.com/courses/ai-ml-for-interview/1-how-llms-actually-work/" rel="noopener noreferrer"&gt;https://confidentprep.com/courses/ai-ml-for-interview/1-how-llms-actually-work/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There's also a companion piece, &lt;em&gt;"How Does an LLM Actually Generate a Response?" — The Interview Question Everyone Gets 80% Right&lt;/em&gt;, with 8 interview questions pulled straight from this same session. &lt;em&gt;(Link it to that post's Dev.to URL once both are published.)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Measure your own prompt before your next standup. A real number beats a guess — in a cost review and in an interview.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>"How Does an LLM Actually Generate a Response?" — The Interview Question Everyone Gets 80% Right</title>
      <dc:creator>confident_prep</dc:creator>
      <pubDate>Thu, 01 Oct 2026 11:59:23 +0000</pubDate>
      <link>https://dev.to/confident_prep/how-does-an-llm-actually-generate-a-response-the-interview-question-everyone-gets-80-right-3eed</link>
      <guid>https://dev.to/confident_prep/how-does-an-llm-actually-generate-a-response-the-interview-question-everyone-gets-80-right-3eed</guid>
      <description>&lt;p&gt;If you're prepping for an AI engineering interview, this question is coming: &lt;strong&gt;"How does an LLM generate a response?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most candidates get the first two beats right — tokens, embeddings — then start hand-waving. The ones who land the offer name all five beats without prompting, including the one most people skip.&lt;/p&gt;

&lt;p&gt;There's a companion piece, &lt;em&gt;"Your LLM Prompt Costs More Than You Think"&lt;/em&gt;, that builds a token/cost calculator in Colab you can run in 10 minutes with zero API key. &lt;em&gt;(Link it here once both are published.)&lt;/em&gt; This one is the pure Q&amp;amp;A version — no code, just the questions and the answers that separate a senior response from a junior one.&lt;/p&gt;

&lt;h2&gt;
  
  
  The core question, and the 5 beats interviewers listen for
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"How does an LLM generate a response?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A strong 90-second answer hits all five:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tokens&lt;/strong&gt; — sub-word units; the model reads these, not words&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embeddings&lt;/strong&gt; — each token becomes a vector of numbers capturing meaning&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Attention&lt;/strong&gt; — scores relevance across every token in context, for each new token generated&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generation / sampling&lt;/strong&gt; — next-token prediction, one token at a time, until done&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hallucination root cause&lt;/strong&gt; — plausibility ≠ truth; there's no truth-check step in the loop&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Miss beat 5 and expect a direct follow-up. It's the most commonly skipped beat, and interviewers know it.&lt;/p&gt;

&lt;h2&gt;
  
  
  8 questions from this session, answered
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. What is a token, and why does it matter for your job?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A sub-word chunk — the model's basic reading unit. Not a word, not a character. "unbelievable" is 3 tokens. "ChatGPT" is 3 tokens. It matters because you pay per token, not per word, and the model has a hard limit on how many it can process per request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. What's the difference between "context" and the "context window"?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Context is everything the model can see in one conversation — your messages, documents, its own replies. The context window is the size limit on that everything: the maximum token count (input plus output) per request. It resets completely on every new call — not persistent memory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. What is an embedding, in plain terms?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A list of numbers representing a token's meaning and usage, not its spelling. Similar words land at nearby coordinates; unrelated words land far apart. The same word can carry different embeddings depending on the sentence it's in ("bank" the institution vs. "bank" the river).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. What does attention actually do?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For every token about to be generated, attention scores every other token in context for relevance. High-relevance tokens get more influence over what comes next. This is also why a cluttered, noisy prompt produces worse output — irrelevant tokens compete for attention against the instruction that actually matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Why does an LLM hallucinate — what's the real root cause?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The model predicts statistically plausible text. There is no truth-check step anywhere in generation. Confident, authoritative writing was abundant in training data, so the model learned confident tone as a default style — a style that shows up whether or not the underlying claim is true. Plausibility is not truth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. What does temperature control, and when do you use low vs. high?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;How peaked or flat the next-token probability distribution is. Low (0.0–0.3): the model almost always picks its top-probability token — use for fact extraction, structured output, anything that needs to be the same every call. High (0.7–1.0): more willing to pick lower-probability tokens — use for brainstorming or creative variation. Temperature never changes what the model knows, only how consistently it says it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. How does a chatbot "remember" earlier messages if the model resets every call?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It doesn't, on its own. The application layer replays prior turns back into the context window on every new request. The continuity a user experiences is maintained by the app, not the model. Strip out that replay logic and the model has never heard of the user before.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Why can't an LLM answer questions about your company's internal documents?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Training data is frozen at a cutoff date, and internal documents were never in it to begin with. Anything private or created after the cutoff has to be explicitly supplied in context — which is the entire premise behind retrieval-augmented generation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What separates a strong answer from a weak one
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Say:&lt;/strong&gt; "Tokens, not words." "Embeddings capture meaning as vectors." "Attention scores relevance across the full context." "Plausibility, not truth — there's no truth-check step." "Context window is a fixed buffer that resets."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Avoid:&lt;/strong&gt; "It's just autocomplete" (technically true, reads as surface-level). "It thinks like a human" (signals a real misconception). "It searches the internet" (only true with retrieval tools wired in). "It hallucinates because it lacks data" (names the wrong root cause — it hallucinates even &lt;em&gt;with&lt;/em&gt; the data, because nothing checks the output against it).&lt;/p&gt;

&lt;h2&gt;
  
  
  Want the full 5-beat model answer, word for word?
&lt;/h2&gt;

&lt;p&gt;The course session covers this question with a complete scored model answer, the do's/don'ts list interviewers are actually listening for, and the hands-on Colab notebook that makes tokens and cost tangible before you ever sit down for the interview:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://confidentprep.com/courses/ai-ml-for-interview/1-how-llms-actually-work/" rel="noopener noreferrer"&gt;https://confidentprep.com/courses/ai-ml-for-interview/1-how-llms-actually-work/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Say your answer out loud before your next interview. Reading it silently and being able to say it under pressure are two different skills.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>interview</category>
      <category>career</category>
    </item>
    <item>
      <title>Walk Me Through How You'd Design a Production Prompt — 9 Interview Questions, Answered</title>
      <dc:creator>confident_prep</dc:creator>
      <pubDate>Thu, 01 Oct 2026 11:57:35 +0000</pubDate>
      <link>https://dev.to/confident_prep/walk-me-through-how-youd-design-a-production-prompt-9-interview-questions-answered-2k9a</link>
      <guid>https://dev.to/confident_prep/walk-me-through-how-youd-design-a-production-prompt-9-interview-questions-answered-2k9a</guid>
      <description>&lt;p&gt;There's one question that opens almost every AI engineering interview's prompt-design section:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Walk me through how you'd design a production prompt for a structured extraction task."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It sounds open-ended. It isn't. Interviewers are listening for five specific beats, and the follow-up questions below are how they check for the ones you skip. This is the companion piece to &lt;a href="https://confidentprep.com/courses/ai-ml-for-interview/2-prompt-engineering-and-the-llm-api-surface/" rel="noopener noreferrer"&gt;the hands-on Colab notebook&lt;/a&gt; where we measured an 80%-to-0% format-drift swing from adding few-shot examples — if you want the receipts behind question 3 below, that's where they are.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. What's the difference between a system prompt and a user message?
&lt;/h2&gt;

&lt;p&gt;The system prompt is developer-controlled — role, rules, output format — and runs invisibly on every call. The user message is the runtime task or input, changing with each call. Miss this distinction and you'll bake per-request data into a prompt that should be static, or vice versa.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. What does RCTF stand for, and what happens if you skip one letter?
&lt;/h2&gt;

&lt;p&gt;Role, Context, Task, Format. Skip Format and the model chooses its own output shape — usually inconsistently. Skip Context and it fabricates facts it doesn't have (product names, plan tiers). Skip Role and tone drifts call to call. Skip Task and you get a summary when you wanted a classification. Interviewers who ask "what happens if you skip X" are testing whether you understand &lt;em&gt;why&lt;/em&gt; each field exists, not just that it exists.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. What temperature would you use for a support ticket classifier, and why?
&lt;/h2&gt;

&lt;p&gt;Zero, or close to it. Classification feeds a parser, and parsers need identical output for identical input. Temperature above zero introduces sampling randomness — and that randomness doesn't just reword the answer, it can surface as a genuinely different output shape. Say the number if you have it: a naive zero-shot classifier can drift to a different JSON schema over 80% of the time at moderate temperature. Anchoring the same call with a few worked examples took that to zero.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. When do you reach for few-shot instead of zero-shot?
&lt;/h2&gt;

&lt;p&gt;Always start zero-shot — it's cheaper and easier to maintain. Move to few-shot only when zero-shot's &lt;em&gt;content&lt;/em&gt; is right but the &lt;em&gt;format&lt;/em&gt; is wrong or inconsistent. Few-shot examples teach output shape, not new facts. If the content itself is wrong, more examples won't fix it — that's a Context problem, not a technique problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. What's the difference between few-shot prompting and fine-tuning?
&lt;/h2&gt;

&lt;p&gt;Few-shot: examples live in the prompt, inference-time only, weights unchanged, cheap to update. Fine-tuning: the model is retrained on your dataset, weights change permanently, requires thousands of examples and real infrastructure. Try few-shot first. Fine-tuning is for stable, high-volume, narrowly-defined tasks where prompting has genuinely been exhausted — not a first instinct.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. When does chain-of-thought help, and what does it cost you?
&lt;/h2&gt;

&lt;p&gt;CoT helps on multi-condition or multi-step tasks where jumping straight to an answer causes errors — escalation decisions, trade-off analysis. The instruction "think step by step" forces intermediate reasoning tokens that improve the final answer. The cost: more tokens, more latency. Don't reach for it on simple single-condition tasks — that's needless spend.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. What is prompt injection, and how do you actually prevent it?
&lt;/h2&gt;

&lt;p&gt;User-supplied text overwrites developer instructions because, to the model, both are just tokens — there's no privileged execution layer separating "your rules" from "their input." The fix that holds up: XML-delimit user input (&lt;code&gt;&amp;lt;user_input&amp;gt;...&amp;lt;/user_input&amp;gt;&lt;/code&gt;) and instruct the model to treat that block as data only. The fix that doesn't hold up: asking nicely in the system prompt and hoping. A system prompt is a request, not a boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Why does a model confidently answer with stale stock prices or outdated facts?
&lt;/h2&gt;

&lt;p&gt;Knowledge cutoff. The model has no internet access and no live retrieval — it generates the statistically most plausible continuation from training data, which may be months or years stale, with the same confident tone as a correct answer. There's no "I don't know current data" reflex unless you build one. The fix is injecting current data into context directly (RAG), never trusting model memory for anything time-sensitive.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. What does max_tokens actually control, and what breaks if you set it wrong?
&lt;/h2&gt;

&lt;p&gt;The length of the &lt;em&gt;response&lt;/em&gt;, not the input — that's the context window's job. Set too low, structured output truncates mid-JSON and your parser throws. Set too high, you're paying for and waiting on output nobody asked for. Rule of thumb: roughly 2x your expected output length, tighter (80-150) for constrained JSON classifiers.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The beat interviewers probe hardest:&lt;/strong&gt; failure modes. A candidate who nails RCTF and parameters but never mentions injection, knowledge cutoff, or format validation unprompted gets asked "what could go wrong?" — and that follow-up is where senior and junior answers actually separate.&lt;/p&gt;

&lt;p&gt;Want to see the 80%-to-0% drift number measured live, not just quoted? &lt;a href="https://confidentprep.com/courses/ai-ml-for-interview/2-prompt-engineering-and-the-llm-api-surface/" rel="noopener noreferrer"&gt;The hands-on notebook is here&lt;/a&gt; — zero API key required, about 12 minutes.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>interview</category>
      <category>career</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Are You Ready for Your Job? Try to Answer These Questions.</title>
      <dc:creator>confident_prep</dc:creator>
      <pubDate>Thu, 01 Oct 2026 11:55:44 +0000</pubDate>
      <link>https://dev.to/confident_prep/are-you-ready-for-your-job-try-to-answer-these-questions-2p79</link>
      <guid>https://dev.to/confident_prep/are-you-ready-for-your-job-try-to-answer-these-questions-2p79</guid>
      <description>&lt;p&gt;Not a quiz for fun. A gut check.&lt;/p&gt;

&lt;p&gt;These are three questions that show up in real AI engineering interviews — not "define RAG" trivia, but the scenario-style questions interviewers actually use to tell a candidate who's built things apart from one who's only read about them. Read each one, answer it out loud before you read the framework underneath, and be honest about how close you got.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🎯 &lt;strong&gt;TL;DR:&lt;/strong&gt; Three real interview questions, no trivia. Answer each one out loud before reading the framework. If you reach for a definition instead of a process, that's the exact gap other candidates are closing right now — not by reading more, but by building.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  🩹 1. "Your RAG chatbot just gave a customer a confident, completely wrong answer. Walk me through how you'd find out why — and stop it from happening again."
&lt;/h2&gt;

&lt;p&gt;This is a debugging question disguised as a RAG question. Interviewers ask it because "explain how RAG works" tells them you read an article, but this tells them whether you've actually operated one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to answer it:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Split the failure in two before you diagnose anything: was it a &lt;strong&gt;retrieval&lt;/strong&gt; problem (the right chunk never made it into context) or a &lt;strong&gt;generation&lt;/strong&gt; problem (the right chunk was there and the model ignored it anyway)? Say this split out loud first — it's the single biggest signal you know what you're doing.&lt;/li&gt;
&lt;li&gt;Describe how you'd check retrieval: log the retrieved chunks alongside the query, and eyeball whether the answer's source text was even in there.&lt;/li&gt;
&lt;li&gt;Describe how you'd check generation: if the source was there but the model still got it wrong, that's a prompt/grounding problem — talk about instructing the model to cite or refuse when the context doesn't support an answer.&lt;/li&gt;
&lt;li&gt;Close with prevention, not just the one-time fix: a small eval set of known-answer questions you can re-run after every prompt or retrieval change, so this doesn't quietly regress next sprint.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⚖️ 2. "We could fix this with a better prompt, or by fine-tuning the model. How do you decide which one?"
&lt;/h2&gt;

&lt;p&gt;This question is a trap for candidates who only know one hammer. It's testing judgment, not a definition.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to answer it:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lead with prompt engineering as the default: it's fast, cheap, needs no training data, and you can iterate on it in minutes.&lt;/li&gt;
&lt;li&gt;Name the specific conditions that push you toward fine-tuning instead: you have a large, stable, labeled dataset; you need consistent output formatting or tone at a scale prompting can't reliably hold; or your prompt is already maxed out on context budget and instructions are still being ignored.&lt;/li&gt;
&lt;li&gt;Mention the cost you're trading away: fine-tuning is slower to iterate and harder to reverse than a prompt change. Say that out loud — it shows you're weighing the decision, not just picking a technique.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚨 3. "The feature demos perfectly, but real users are breaking it in ways you never saw in testing. What's your process?"
&lt;/h2&gt;

&lt;p&gt;This is the question that separates "I built a demo" from "I've operated something in production."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to answer it:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start with the gap between demo inputs and real inputs: real users send empty strings, five-paragraph pastes, other languages, and adversarial prompts your test set never covered.&lt;/li&gt;
&lt;li&gt;Talk about what you need logged &lt;em&gt;before&lt;/em&gt; this happens, not after: full request/response pairs, retrieved context, any tool calls — without that, you're debugging blind.&lt;/li&gt;
&lt;li&gt;Mention a containment step: a feature flag or circuit breaker so you can turn the feature off or roll back the version for affected users while you dig in, instead of leaving it broken in front of customers while you investigate.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🪞 How did you do?
&lt;/h2&gt;

&lt;p&gt;If you answered all three with that level of specificity, unprompted — that's rare, and it means you've actually operated systems like this before.&lt;/p&gt;

&lt;p&gt;If you found yourself reaching for a textbook definition instead of a process, that's useful information. It means you understand the concepts but haven't yet built the judgment that only comes from shipping and breaking a few of these yourself. &lt;strong&gt;Other candidates in your interview pool are closing that exact gap right now — not by reading more, but by building.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That judgment isn't something an article can hand you — including this one. It comes from building the actual systems these questions are about.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The takeaway: knowing the definition doesn't get the offer. Having broken the thing once does.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://confidentprep.com/paths" rel="noopener noreferrer"&gt;See the paths that build that judgment →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>interview</category>
      <category>ai</category>
      <category>machinelearning</category>
      <category>career</category>
    </item>
  </channel>
</rss>
