<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>NarmathaVaiyapuri</title><link href="https://narmathavaiyapuri.github.io/" rel="alternate"/><link href="https://narmathavaiyapuri.github.io/feeds/all.atom.xml" rel="self"/><id>https://narmathavaiyapuri.github.io/</id><updated>2026-04-15T00:00:00-03:00</updated><entry><title>Day 3 – Building an End-to-End AI Pipeline</title><link href="https://narmathavaiyapuri.github.io/day3-ai-pipeline-memory-system.html" rel="alternate"/><published>2026-04-15T00:00:00-03:00</published><updated>2026-04-15T00:00:00-03:00</updated><author><name>Narmatha Vaiyapuri</name></author><id>tag:narmathavaiyapuri.github.io,2026-04-15:/day3-ai-pipeline-memory-system.html</id><summary type="html">&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In real-world AI systems, models alone are not enough. They need memory, structured outputs, and backend logic to work effectively.&lt;/p&gt;
&lt;p&gt;To understand this, I built a simple end-to-end AI pipeline using a local model (llama.cpp) and MongoDB.&lt;/p&gt;
&lt;p&gt;In this session, I focused on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Running a local AI model …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In real-world AI systems, models alone are not enough. They need memory, structured outputs, and backend logic to work effectively.&lt;/p&gt;
&lt;p&gt;To understand this, I built a simple end-to-end AI pipeline using a local model (llama.cpp) and MongoDB.&lt;/p&gt;
&lt;p&gt;In this session, I focused on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Running a local AI model  &lt;/li&gt;
&lt;li&gt;Structuring AI responses  &lt;/li&gt;
&lt;li&gt;Storing and retrieving data  &lt;/li&gt;
&lt;li&gt;Building a stateful AI system  &lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;1. Understanding the AI Pipeline&lt;/h2&gt;
&lt;h3&gt;Flow&lt;/h3&gt;
&lt;p&gt;User → FastAPI → AI (llama.cpp) → Decision → MongoDB → Response&lt;/p&gt;
&lt;p&gt;&lt;img alt="AI Pipeline Diagram" src="./images/pipeline.png"&gt;&lt;/p&gt;
&lt;p&gt;This pipeline shows how AI systems process input, use memory, and return meaningful responses.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2. Running a Local AI Model&lt;/h2&gt;
&lt;p&gt;I used llama.cpp with a GGUF model to run the AI locally.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Temperature → controls creativity  &lt;/li&gt;
&lt;li&gt;Top-p → controls randomness  &lt;/li&gt;
&lt;li&gt;Max tokens → controls response length  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This allows better control, privacy, and offline capability.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3. Structuring AI Output&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;TOP&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;Response&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;

&lt;span class="n"&gt;BOTTOM_JSON&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;action&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;store&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;retrieve&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;none&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;data&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;...&amp;quot;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This helps the system understand and act on AI responses.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;4. MongoDB as a Memory System&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;text&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;User likes AI&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;date&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;2026-04-15&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;5. Building Stateful AI&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Store user inputs  &lt;/li&gt;
&lt;li&gt;Retrieve memory  &lt;/li&gt;
&lt;li&gt;Use it in responses  &lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;6. AI Decision Making&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;store → save data  &lt;/li&gt;
&lt;li&gt;retrieve → fetch data  &lt;/li&gt;
&lt;li&gt;none → normal response  &lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;7. Pipeline Execution Logic&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Receive user input through FastAPI  &lt;/li&gt;
&lt;li&gt;Retrieve memory from MongoDB  &lt;/li&gt;
&lt;li&gt;Send the prompt to the AI model  &lt;/li&gt;
&lt;li&gt;Generate a structured response  &lt;/li&gt;
&lt;li&gt;Parse the JSON output  &lt;/li&gt;
&lt;li&gt;Execute the required action  &lt;/li&gt;
&lt;li&gt;Return the final response  &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt="AI Workflow Diagram" src="./images/workflow.png"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;This project helped me understand how AI models, backend systems, and databases work together to build real-world applications.&lt;/p&gt;
&lt;p&gt;By combining llama.cpp, MongoDB, and structured outputs, I built a simple system that can respond, remember, and take actions.&lt;/p&gt;</content><category term="GenAI"/><category term="GenAI"/><category term="AI Pipeline"/><category term="llama.cpp"/><category term="MongoDB"/></entry><entry><title>Day 2 – Building APIs with FastAPI</title><link href="https://narmathavaiyapuri.github.io/day2-fastapi-get-post-api.html" rel="alternate"/><published>2026-04-14T00:00:00-03:00</published><updated>2026-04-14T00:00:00-03:00</updated><author><name>Narmatha Vaiyapuri</name></author><id>tag:narmathavaiyapuri.github.io,2026-04-14:/day2-fastapi-get-post-api.html</id><summary type="html">&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In Generative AI systems, models do not work in isolation. They rely on APIs to receive input, process data, and return responses.&lt;/p&gt;
&lt;p&gt;To understand how backend systems work in AI applications, I built my first API using FastAPI.&lt;/p&gt;
&lt;p&gt;In this session, I focused on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creating API endpoints  &lt;/li&gt;
&lt;li&gt;Handling data …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In Generative AI systems, models do not work in isolation. They rely on APIs to receive input, process data, and return responses.&lt;/p&gt;
&lt;p&gt;To understand how backend systems work in AI applications, I built my first API using FastAPI.&lt;/p&gt;
&lt;p&gt;In this session, I focused on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creating API endpoints  &lt;/li&gt;
&lt;li&gt;Handling data using GET and POST requests  &lt;/li&gt;
&lt;li&gt;Validating input using Pydantic  &lt;/li&gt;
&lt;li&gt;Testing APIs using Swagger UI  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These concepts form the foundation of backend development for AI systems.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1. Setting Up FastAPI&lt;/h2&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;p&gt;To begin, I installed the required packages:&lt;/p&gt;
&lt;h3&gt;Command&lt;/h3&gt;
&lt;p&gt;pip install fastapi uvicorn&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;FastAPI → framework to build APIs  &lt;/li&gt;
&lt;li&gt;Uvicorn → ASGI server to run the application  &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Role in GenAI&lt;/h3&gt;
&lt;p&gt;APIs act as the bridge between users and AI models. They handle incoming requests and send back model responses.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2. Creating the FastAPI Application&lt;/h2&gt;
&lt;h3&gt;Basic Setup&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;fastapi&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;FastAPI&lt;/span&gt;

&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FastAPI&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="nd"&gt;@app&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/&amp;quot;&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;read_root&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="s2"&gt;&amp;quot;message&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Hello, GenAI World!&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Explanation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;FastAPI() initializes the application  &lt;/li&gt;
&lt;li&gt;@app.get("/") defines a GET endpoint  &lt;/li&gt;
&lt;li&gt;The function returns a JSON response  &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Role in GenAI&lt;/h3&gt;
&lt;p&gt;This is similar to how AI services expose endpoints to interact with models.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3. GET Endpoint – Retrieving Data&lt;/h2&gt;
&lt;h3&gt;Example&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nd"&gt;@app&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/items&amp;quot;&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;get_items&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="s2"&gt;&amp;quot;items&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;AI Agent&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;id&amp;quot;&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="s2"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Chatbot&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;}&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;h3&gt;Purpose&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Retrieves data from the server  &lt;/li&gt;
&lt;li&gt;Returns structured JSON response  &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Role in GenAI&lt;/h3&gt;
&lt;p&gt;Used to fetch:
- stored responses&lt;br&gt;
- model outputs&lt;br&gt;
- system data  &lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;4. POST Endpoint – Sending Data&lt;/h2&gt;
&lt;h3&gt;Request Flow&lt;/h3&gt;
&lt;p&gt;Send → Validate → Process → Respond&lt;/p&gt;
&lt;h3&gt;Pydantic Model&lt;/h3&gt;
&lt;p&gt;from pydantic import BaseModel&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BaseModel&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;
    &lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;
    &lt;span class="n"&gt;is_available&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This model defines the structure of the incoming data.&lt;/p&gt;
&lt;h3&gt;POST Endpoint Example&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nd"&gt;@app&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/items&amp;quot;&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;create_item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Item&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="s2"&gt;&amp;quot;message&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Item received&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;&amp;quot;item&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Purpose&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Receives user input  &lt;/li&gt;
&lt;li&gt;Validates data  &lt;/li&gt;
&lt;li&gt;Processes request  &lt;/li&gt;
&lt;li&gt;Returns response  &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Role in GenAI&lt;/h3&gt;
&lt;p&gt;POST requests are used to:
- send prompts&lt;br&gt;
- submit user input&lt;br&gt;
- interact with AI models  &lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;5. Running the Server&lt;/h2&gt;
&lt;h3&gt;Command&lt;/h3&gt;
&lt;p&gt;uvicorn main:app --reload&lt;/p&gt;
&lt;h3&gt;Explanation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Runs the FastAPI application  &lt;/li&gt;
&lt;li&gt;Makes the API accessible in the browser  &lt;/li&gt;
&lt;li&gt;--reload enables auto-restart on changes  &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;ASGI Server&lt;/h3&gt;
&lt;p&gt;ASGI (Asynchronous Server Gateway Interface) allows handling multiple requests efficiently, making it suitable for modern applications.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;6. Testing APIs with Swagger&lt;/h2&gt;
&lt;h3&gt;What is Swagger?&lt;/h3&gt;
&lt;p&gt;Swagger is a tool that allows testing APIs directly from the browser without building a frontend.&lt;/p&gt;
&lt;h3&gt;Features&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;View all API endpoints  &lt;/li&gt;
&lt;li&gt;Test GET and POST requests  &lt;/li&gt;
&lt;li&gt;Send JSON input  &lt;/li&gt;
&lt;li&gt;View responses instantly  &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Swagger UI&lt;/h3&gt;
&lt;p&gt;Accessible at:&lt;/p&gt;
&lt;p&gt;http://127.0.0.1:8000/docs&lt;/p&gt;
&lt;h3&gt;Example Request&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="s2"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;AI Tool&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s2"&gt;&amp;quot;price&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s2"&gt;&amp;quot;is_available&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Types of Swagger&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Swagger UI → Interactive API testing interface  &lt;/li&gt;
&lt;li&gt;OpenAPI Specification → API structure in JSON format  &lt;/li&gt;
&lt;li&gt;ReDoc → Clean API documentation view  &lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;Building APIs is a key step in developing AI-powered applications.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GET endpoints → retrieve data  &lt;/li&gt;
&lt;li&gt;POST endpoints → send and process data  &lt;/li&gt;
&lt;li&gt;Pydantic → ensures data validation  &lt;/li&gt;
&lt;li&gt;Swagger → simplifies API testing  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These components form the backbone of how AI systems interact with users and external services.&lt;/p&gt;</content><category term="GenAI"/><category term="GenAI"/><category term="FastAPI"/><category term="APIs"/></entry><entry><title>Day 1 – Python Foundations for GenAI</title><link href="https://narmathavaiyapuri.github.io/day1-python-foundations-genai.html" rel="alternate"/><published>2026-04-13T00:00:00-03:00</published><updated>2026-04-13T00:00:00-03:00</updated><author><name>Narmatha Vaiyapuri</name></author><id>tag:narmathavaiyapuri.github.io,2026-04-13:/day1-python-foundations-genai.html</id><summary type="html">&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In Generative AI (GenAI), building models is only one part of the process. The real foundation lies in how we handle and structure data before it reaches the model.&lt;/p&gt;
&lt;p&gt;To get started, I focused on three essential Python concepts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Variables  &lt;/li&gt;
&lt;li&gt;Lists  &lt;/li&gt;
&lt;li&gt;Dictionaries  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These form the backbone of how data …&lt;/p&gt;</summary><content type="html">&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In Generative AI (GenAI), building models is only one part of the process. The real foundation lies in how we handle and structure data before it reaches the model.&lt;/p&gt;
&lt;p&gt;To get started, I focused on three essential Python concepts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Variables  &lt;/li&gt;
&lt;li&gt;Lists  &lt;/li&gt;
&lt;li&gt;Dictionaries  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These form the backbone of how data flows in AI systems.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1. Variables – Storing Data&lt;/h2&gt;
&lt;h3&gt;What are Variables?&lt;/h3&gt;
&lt;p&gt;Variables are used to store values that can be reused and modified throughout a program.&lt;/p&gt;
&lt;h3&gt;Common Data Types&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;int → whole numbers  &lt;/li&gt;
&lt;li&gt;float → decimal values  &lt;/li&gt;
&lt;li&gt;string → text data  &lt;/li&gt;
&lt;li&gt;boolean → True or False  &lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;
&lt;span class="n"&gt;price&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;99.99&lt;/span&gt;
&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Arun&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;is_active&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Role in GenAI&lt;/h3&gt;
&lt;p&gt;In AI applications, variables are used to store:
- user prompts&lt;br&gt;
- model settings&lt;br&gt;
- outputs and responses  &lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Explain Artificial Intelligence in simple terms&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;temperature&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.7&lt;/span&gt;

&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;print&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Variables help manage dynamic data in AI workflows.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2. Lists – Managing Collections&lt;/h2&gt;
&lt;h3&gt;What are Lists?&lt;/h3&gt;
&lt;p&gt;Lists are ordered collections that can hold multiple values.&lt;/p&gt;
&lt;h3&gt;Types of Lists&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Same type values:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;numbers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&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="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Mixed values:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;AI&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2026&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Nested lists:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;matrix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="mi"&gt;1&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="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Role in GenAI&lt;/h3&gt;
&lt;p&gt;Lists are useful for storing:
- multiple inputs&lt;br&gt;
- sequences of data&lt;br&gt;
- conversation history  &lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;prompts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="s2"&gt;&amp;quot;What is AI?&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s2"&gt;&amp;quot;Explain Machine Learning&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompts&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="n"&gt;prompts&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Explain Deep Learning&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompts&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;They help maintain order and manage multiple values efficiently.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3. Dictionaries – Structuring Information&lt;/h2&gt;
&lt;h3&gt;What are Dictionaries?&lt;/h3&gt;
&lt;p&gt;Dictionaries store data in key-value format, making it easy to organize and access information.&lt;/p&gt;
&lt;h3&gt;Examples&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Basic dictionary:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="s2"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Arun&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s2"&gt;&amp;quot;age&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Nested structure:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="s2"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Arun&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s2"&gt;&amp;quot;details&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="s2"&gt;&amp;quot;age&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;&amp;quot;city&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Chennai&amp;quot;&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;&lt;strong&gt;Dictionary with list (common in AI):&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="s2"&gt;&amp;quot;messages&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;role&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;user&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;content&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Hi&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;role&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;assistant&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;content&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Hello&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;}&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;h3&gt;Role in GenAI&lt;/h3&gt;
&lt;p&gt;Dictionaries are critical because AI models expect structured input.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="s2"&gt;&amp;quot;role&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;user&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s2"&gt;&amp;quot;content&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Write a short story&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;role&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;content&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;They define &lt;em&gt;who&lt;/em&gt; is speaking and &lt;em&gt;what&lt;/em&gt; is being communicated.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Combining Lists and Dictionaries&lt;/h2&gt;
&lt;p&gt;Real-world AI systems combine lists and dictionaries to represent conversations.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;chat_history&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;role&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;user&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;content&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Hello&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;role&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;assistant&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;content&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Hi! How can I help?&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;role&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;user&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;content&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Explain AI&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chat_history&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="s2"&gt;&amp;quot;content&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This structure is widely used in chat-based AI applications.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;Understanding how to store and structure data is the first step in building AI systems.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Variables → hold values  &lt;/li&gt;
&lt;li&gt;Lists → manage sequences  &lt;/li&gt;
&lt;li&gt;Dictionaries → organize structured data  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Together, they form the core data model behind modern GenAI applications.&lt;/p&gt;</content><category term="GenAI"/><category term="GenAI"/><category term="Python"/><category term="LLM"/></entry></feed>