← all conversations

Local inference setup

2025-08-045 turns7,068 charsgpt-4o
local-inferencecloudflare-deploymentchromadb-integration

Summary

The user explores deploying local LLM inference and agentic search with ChromDB on Cloudflare Pages for free.

Messages

import * as webllm from '@mlc-ai/web-llm'; const engine = await webllm.CreateServiceWorkerMLCEngine('Llama‑3.2‑1B', { useIndexedDB: true }); const res = await engine.chat.completions.create({ messages: [{ role: "user", content: "What's local first tech?" }], stream: true, }); for await (const chunk of res) console.log(chunk.choices[0].delta.content);
Your code snippet demonstrates how to run a fully **local** inference using the `@mlc-ai/web-llm` package in the browser with the model `Llama‑3.2‑1B` via a service worker. Here’s a **rundown** of what it’s doing, and **how to make sure it works** completely offline: --- ### ✅ Full Explanation of the Code ```ts import * as webllm from '@mlc-ai/web-llm'; ``` Imports the WebLLM library to interface with the MLC runtime that runs in-browser LLMs. ```ts const engine = await webllm.CreateServiceWorkerMLCEngine('Llama‑3.2‑1B', { useIndexedDB: true }); ``` - Initializes the engine for the `Llama‑3.2‑1B` model using a **service worker**. - `useIndexedDB: true` allows storing the model weights in the browser for persistent offline use. ```ts const res = await engine.chat.completions.create({ messages: [{ role: "user", content: "What's local first tech?" }], stream: true, }); ``` - Sends a prompt to the local LLM. - Uses **streaming** response. ```ts for await (const chunk of res) console.log(chunk.choices[0].delta.content); ``` - Prints each streamed token chunk as it's generated. --- ### 📦 To Use This Fully Offline: 1. **Initial Download (One Time Only):** - On first load, the model will be downloaded into **IndexedDB**. - This can be ~100MB+ depending on quantization. 2. **After That:** - The model is stored and runs **100% offline**, no network requests needed. --- ### 🧪 Tip: Use in a Minimal Web Project Here’s a minimal HTML + JS setup to test this: #### 📁 File Structure ``` my-webllm-test/ ├── index.html └── main.js ``` #### `index.html` ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>WebLLM Offline Demo</title> </head> <body> <h1>Running Llama 3.2B Locally</h1> <script type="module" src="main.js"></script> </body> </html> ``` #### `main.js` ```js import * as webllm from '@mlc-ai/web-llm'; async function runLLM() { const engine = await webllm.CreateServiceWorkerMLCEngine('Llama‑3.2‑1B', { useIndexedDB: true, }); const res = await engine.chat.completions.create({ messages: [{ role: "user", content: "What's local first tech?" }], stream: true, }); for await (const chunk of res) { console.log(chunk.choices[0].delta.content); } } runLLM(); ``` --- ### 🧠 What Is “Local-First Tech”? To answer your own question using the model: > Local-first tech refers to software that prioritizes **local computation and data ownership** by default, while offering **cloud sync as an optional enhancement**. This allows applications to be **offline-first**, **privacy-focused**, and **resilient to network outages**, while still enabling collaboration and sync when needed. --- ### 🛠️ Next Ideas - Add a simple textarea UI and button to send your own prompts. - Switch to `llama3-chat-8b-q4f32_1` for more complex reasoning. - Try running it in an Electron or Tauri wrapper for true local desktop app. --- If you want help bundling this as a PWA or offline desktop app, I can guide you through that too.
gpt-4o
what could you make which you could deploy for free on cloudflare pages from what we have been discussing today
Based on what we’ve discussed today—running **WebLLM** fully offline in the browser, using `@mlc-ai/web-llm`, and your broader experience with **Jekyll, Hugo, Netlify, and journaling apps**—here are **project ideas** you could deploy **for free** on **Cloudflare Pages**: --- ### 🔥 Project Ideas You Can Deploy for Free on Cloudflare Pages #### **1. Local-LLM Chatbot in the Browser** **Description:** A privacy-respecting chatbot that runs **entirely in the browser** using WebLLM (`@mlc-ai/web-llm`) and **does not require any backend**. - **Tech stack:** Vanilla JS / Vite + HTML/CSS or React + Tailwind - **Features:** - Prompt input box - Streamed output display - Local model selection (Llama3-2B, TinyLlama) - Dark mode toggle - **Bonus:** Add a dropdown to select prompt templates (e.g., journaling, therapy bot, programmer assistant) - **Offline:** Can work offline after model is cached via IndexedDB ✅ Works great on Cloudflare Pages because: - No server needed - Everything is static --- #### **2. Local Journaling Assistant** **Description:** A web-based journaling app that uses WebLLM locally to analyze your entries. - **Features:** - Markdown editor (use [SimpleMDE](https://github.com/sparksuite/simplemde-markdown-editor) or CodeMirror) - AI-generated summaries/emotional tone (via local LLM) - No server; entries stored in browser localStorage or IndexedDB - Optional export to `.md` or `.json` - **Why it's unique:** Zero cloud AI processing = max privacy --- #### **3. Offline Coding Tutor** **Description:** A coding tutorial app that lets you learn code and ask LLM-powered questions locally. - **Structure:** - Static tutorials (e.g., Python basics, regex, git) - Ask LLM locally questions about the lesson - All lessons in Markdown - **Enhancement:** Use LLM to convert pseudocode to real code --- #### **4. Persona Playground (LLM Prompt Tuner)** **Description:** A UI where you can load different “personas” and run your prompt through each to compare the results locally. - Loadable JSON personas (inspired by your previous projects) - Example: therapist vs. hacker vs. professor responses - Works offline, deployable as a static site - Great tool for writers, developers, or researchers --- #### **5. Local-First AI Blogging Engine** **Description:** A static blog (e.g., Hugo or Jekyll) with a prompt bar where readers can ask the local LLM to summarize, critique, or expand on your posts. - Posts are Markdown - JavaScript applet loads WebLLM - Prompt options like: - “Summarize this post” - “Write a counterpoint” - “Rewrite for kids” --- ### 💡 Starter Boilerplate (Free to Clone) If you want, I can scaffold out a basic Vite + Tailwind + WebLLM app ready to be pushed to Cloudflare Pages. Here’s what it might include: ``` webllm-chat/ ├── index.html ├── main.js ├── style.css ├── /assets └── /prompts ``` With one command: ```bash npx create-vite webllm-chat --template vanilla ``` Then you’d: ```bash npm install @mlc-ai/web-llm ``` --- ### ⚙️ Cloudflare Pages Setup You only need to: 1. Push it to a GitHub repo 2. Connect repo on [Cloudflare Pages](https://pages.cloudflare.com/) 3. Set build command: `npm run build` 4. Set output directory: `dist` (for Vite) Done. Free, fast, and globally distributed. --- Would you like me to generate the code for one of these now (e.g. the chatbot or journaling assistant)?
gpt-4o
what about using my newest application I am developing in vscode which takes .md files and ingests them into a chromadb to be used with agentic search functions