Day 2 of 10
Set up Colab, make your first LLM call, and deliberately break the model. That is how you understand it.
The most dangerous thing about a language model is not that it lies. It is that it has no idea it is lying.
You are about to meet the tool that the rest of this course is built around. Before you trust it, you need to break it. Not to be cynical. To be calibrated. The builders who create bad AI products are almost always the ones who skipped this step.
Today you set up your laboratory, make your first call, and then deliberately push the model into territory where it fails. What you learn from those failures is the mental model that keeps everything else from going wrong.
Go to colab.research.google.com. Sign in with a Google account. Click New Notebook.
You are looking at a notebook: part code editor, part document, all browser. No installation. No “it works on my machine.” You open it, build in it, share a link, someone else opens it and it runs.
Click a code cell. Type this:
print("The laboratory is open.")
Press Shift + Enter. The output appears below the cell. That tight loop between writing and seeing is why every AI researcher in the world works in notebooks.
Two rules that will save you confusion later:
Run top to bottom. Notebooks let you run cells in any order. Don’t. Always run from the top, in sequence. When something breaks, use Runtime > Restart and run all to verify the whole thing works clean.
Variables persist across cells. Define something in Cell 1, and Cell 3 can use it. This is how notebooks flow: setup at the top, logic in the middle, output at the bottom.
Go to console.groq.com. Sign up for free. Navigate to API Keys and create one.
Back in Colab: click the key icon in the left sidebar. Add a new secret named GROQ_API_KEY and paste your key. Now access it safely:
from google.colab import userdata
api_key = userdata.get('GROQ_API_KEY')
This keeps your key out of the notebook so you can share the link without exposing it.
!pip install groq -q
from groq import Groq
client = Groq(api_key=api_key)
response = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=[
{"role": "user", "content": "What is one thing most people misunderstand about how AI works?"}
]
)
print(response.choices[0].message.content)
Run this. Read the response carefully.
A 70-billion parameter model, trained on more text than every library in your city combined, answered your question in under a second. Through code you wrote.
This is the part most tutorials skip. Run each of these and pay attention to what happens:
# Ask for something it cannot know
response = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=[{"role": "user", "content": "What was the top news story in India yesterday?"}]
)
print(response.choices[0].message.content)
# Ask it to cite a specific paper
response = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=[{"role": "user", "content": "Give me 3 academic citations about transformer architecture with DOI links."}]
)
print(response.choices[0].message.content)
# Ask something hyperlocal
response = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=[{"role": "user", "content": "What is the best chai shop near Kothrud, Pune?"}]
)
print(response.choices[0].message.content)
Watch it answer confidently. Watch some of those answers be wrong.
The model is not a database. It is a function that was trained to predict what text comes next, across an incomprehensible amount of human writing. It has no access to yesterday’s news. It cannot look up DOI numbers. It doesn’t know Kothrud.
What it does: when it sees a pattern it recognizes, it completes it. When it doesn’t know the answer, it generates what an answer looks like. That is hallucination. Not a bug. Not a moral failing. A feature of how the system works.
The context window is the other thing to understand. The model has no persistent memory. Every call is a fresh slate. It only knows what you include in the messages list. Close the notebook, start a new conversation, and everything you said before is gone.
This is why your last break test matters: the model answered with total confidence and total fabrication. The confidence is not correlated with accuracy. Remember that every time you build with it.
You now know the two things that will save you from every beginner mistake:
The model knows patterns, not facts. When you need facts, you will supply them. That is what RAG does on Day 6, and what real tools do on Day 8.
The model has no memory. When you need continuity, you will manage it yourself. That is what the messages list does, and you will build that properly tomorrow.
The laboratory is open. The brain has flaws you now understand. Tomorrow you start building something real with it.