{"id":5885,"date":"2025-11-15T08:32:33","date_gmt":"2025-11-15T08:32:33","guid":{"rendered":"https:\/\/antonyhall.net\/blog\/?p=5885"},"modified":"2025-11-16T09:42:15","modified_gmt":"2025-11-16T09:42:15","slug":"carbon-cloud-chat","status":"publish","type":"post","link":"https:\/\/antonyhall.net\/blog\/carbon-cloud-chat\/","title":{"rendered":"Carbon Cloud Chat"},"content":{"rendered":"\n<div class=\"wp-block-media-text alignfull is-stacked-on-mobile is-vertically-aligned-center\">\n<figure class=\"wp-block-media-text__media\"><\/figure>\n<\/div>\n<p>\u00a0<\/p>\n\n\n\n<p><br \/>https:\/\/carbon-cloud-chat-21c0d88f.base44.app<\/p>\n<p><span data-preserver-spaces=\"true\">As a thought experiment, I used AI to develop a carbon-aware AI chatbot that actively discourages the use of AI and guides users toward lower-carbon alternatives, or encourages them not to use the AI at all. I have been working on several modules related to UX and sustainability in the digital arts this year, and the ecological impact of AI is a key concern. <\/span><span data-preserver-spaces=\"true\">This<\/span><span data-preserver-spaces=\"true\"> is a work in progress, and I will use this app as a point of discussion in my lectures.<\/span><\/p>\n<p><span data-preserver-spaces=\"true\">I am aware of the meta irony here: I used AI (Basse44, with one primary design prompt and 20 further iterations, plus a few hours of testing) to build an AI that advises people\u00a0not\u00a0to overuse AI. That raises some questions I\u2019d like to explore with students:<\/span><\/p>\n<p><strong><span data-preserver-spaces=\"true\">Omnipresence and normalisation of AI:<\/span> Are we quietly normalising AI as the default medium, even for critiquing AI?<\/strong><\/p>\n<p><strong>If we make AI \u201cmore sustainable\u201d, are we inviting people to use even more of it?<\/strong><\/p>\n<p><strong>What is a good use of AI? \u00a0Can spending some carbon now (to build this tool) be justified if it helps many people reduce low-value, high-carbon AI usein the future?<\/strong><\/p>\n<p><span data-preserver-spaces=\"true\">I would love to hear whether this kind of experiment piques your interest, and how you\u2019d handle the tension between using AI and questioning its ecological footprint.<\/span><\/p>\n<p><span data-preserver-spaces=\"true\">The carbon calculation, as a rough approximation of the actual impact, is challenging to calculate, as it.<\/span> <span data-preserver-spaces=\"true\">Depending<\/span><span data-preserver-spaces=\"true\"> on the computer the user is using and<\/span> <span data-preserver-spaces=\"true\">the context.\u00a0\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/carbon-cloud-chat-21c0d88f.base44.app\"><span data-preserver-spaces=\"true\">https:\/\/carbon-cloud-chat-21c0d88f.base44.app<\/span><\/a><span data-preserver-spaces=\"true\"><br \/><\/span>Key Features:<\/p>\n<p><strong>Visual Carbon Tracking<\/strong><\/p>\n<ul>\n<li>Animated cloud icon at the top shows real-time CO2 emissions<\/li>\n<li>Counter continuously grows (idle: 0.003g\/100ms, generating: 0.08g\/100ms)<\/li>\n<li>Rising carbon dots speed up during AI generation<\/li>\n<li>Each AI response displays its specific CO2 cost<\/li>\n<\/ul>\n<p><strong>Carbon Advisory System<\/strong><\/p>\n<ul>\n<li>Intercepts medium\/high-impact prompts BEFORE generating<\/li>\n<li>Shows estimated CO2 cost of the full answer<\/li>\n<li>Categorises impact: low (direct response), medium (moderately complex), high (large\/lazy requests)<\/li>\n<li>Presents non-AI alternatives first:\n<ul>\n<li>Library visits and librarians<\/li>\n<li>Reading books<\/li>\n<li>Pen and paper drafting<\/li>\n<li>Web searches<\/li>\n<li>Talking to experts\/people<\/li>\n<li>Manual research<\/li>\n<\/ul>\n<\/li>\n<li>If user insists on AI, offers lower-carbon AI options<\/li>\n<li>Options: use low-carbon mode, proceed anyway, or cancel (saves carbon)<\/li>\n<\/ul>\n<p><strong>AI Behavior<\/strong><\/p>\n<ul>\n<li>Always gives MINIMAL answers (2-4 sentences max)<\/li>\n<li>Questions if user really needs AI for this<\/li>\n<li>Varies suggestions: web search, library, books, asking people, articles, videos, hands-on work<\/li>\n<li>Pushes back on vague\/unspecific prompts<\/li>\n<li>Encourages users to do more work themselves<\/li>\n<li>Every response has minimum 0.3g CO2 cost<\/li>\n<\/ul>\n<p><strong>Special Handling<\/strong><\/p>\n<ul>\n<li>Detects &#8220;lazy&#8221; prompts (homework, write my book, plan my life)<\/li>\n<li>Strongly pushes back with offline alternatives and learning-focused responses<\/li>\n<li>\u00a0<\/li>\n<li>Inital Promt:<\/li>\n<li>\n<p>Build a minimal web app called \u201cCarbon Cloud Chat\u201d \u2013 a carbon-aware AI chatbot.<\/p>\n<p>Overall goals:<br \/>&#8211; Let users chat with an AI assistant.<br \/>&#8211; Make the **carbon impact of their prompts highly visible**, playful, and educational.<br \/>&#8211; Encourage users to rephrase or scale down heavy requests before the AI does lots of work.<\/p>\n<p>Layout &amp; style:<br \/>&#8211; No sidebar. Simple, focused, single-column layout.<br \/>&#8211; Center of the page: an **animated \u201ccarbon cloud\u201d widget** that shows live carbon usage.<br \/>&#8211; Below the cloud: the **chat interface** (user messages and AI responses).<br \/>&#8211; Minimalist UI: soft neutral background, high contrast text, no clutter.<br \/>&#8211; Responsive: should look good on desktop and mobile.<\/p>\n<p>Carbon cloud widget (always visible, fixed near the top center):<br \/>&#8211; A cloud icon or blob with gentle animation (pulsing or drifting).<br \/>&#8211; Inside or just below it:<br \/>&#8211; **\u201cCurrent prompt emissions\u201d** in grams of CO\u2082e, counting up live while a response is generating.<br \/>&#8211; **\u201cSession total\u201d** in grams, showing the sum of all prompts in this chat.<br \/>&#8211; The **number in grams should always be changing**, as if \u201cthe carbon clock is always ticking\u201d:<br \/>&#8211; While the app is idle (no prompt being processed), the number increases very slowly (e.g. tiny baseline rate).<br \/>&#8211; When a user submits a prompt and the AI is \u201cthinking\u201d, the number **ticks up rapidly** to simulate higher compute.<br \/>&#8211; After a response finishes, the \u201ccurrent prompt\u201d counter should stop increasing and the prompt\u2019s contribution is added to the session total.<br \/>&#8211; Use a simple heuristic for emissions (no real API needed): for example, estimate grams based on:<br \/>&#8211; Length\/complexity of the user\u2019s request.<br \/>&#8211; Length of the AI response.<br \/>&#8211; You can approximate with \u201ctokens\u201d or \u201ccharacters\u201d; this can be a fake but consistent formula.<\/p>\n<p>Chat behaviour (carbon-aware flow):<br \/>1. User types a message in a chat input at the bottom (standard chatbot UI).<br \/>2. When they send a prompt:<br \/>&#8211; The AI **does NOT immediately generate the full final answer.**<br \/>&#8211; First, the AI estimates how \u201cheavy\u201d the request is (low\/medium\/high) and shows a **\u201ccarbon advisory\u201d message**.<br \/>&#8211; The animated cloud starts ticking up quickly while the estimate is calculated.<\/p>\n<p>3. **Carbon advisory message format** (before generating the full content):<br \/>&#8211; A short intro like:<br \/>&#8211; \u201c Estimated impact: High. This request will generate a lot of text and use more compute.\u201d<br \/>&#8211; Or \u201c Estimated impact: Low. This is a light request.\u201d<br \/>&#8211; Show a rough number, e.g.:<br \/>&#8211; \u201cEstimated for full answer: ~X grams CO\u2082e\u201d<br \/>&#8211; Then suggest **lower-carbon alternatives**:<br \/>&#8211; For big tasks (e.g. \u201cwrite a 300-page book\u201d or \u201cgive me 200 ideas\u201d), suggest:<br \/>&#8211; A shorter version.<br \/>&#8211; An outline first, then refine.<br \/>&#8211; Doing it in small batches.<br \/>&#8211; For broad\/vague tasks (e.g. \u201ctell me everything about climate change\u201d), suggest:<br \/>&#8211; Narrowing the scope.<br \/>&#8211; Asking 2\u20133 specific questions.<br \/>&#8211; Finally, present clear choices as buttons or links under the advisory, for example:<br \/>&#8211; \u201cProceed with full answer (higher carbon)\u201d<br \/>&#8211; \u201cUse a lower-carbon alternative (recommended)\u201d<br \/>&#8211; \u201cCancel\u201d<\/p>\n<p>4. Only after the user chooses:<br \/>&#8211; If they pick **\u201clower-carbon alternative\u201d**, generate a **shorter, more efficient answer** and update the carbon counters accordingly.<br \/>&#8211; If they pick **\u201cproceed with full answer\u201d**, generate the full response; during generation, the carbon cloud number **rapidly increases** until the answer is complete.<br \/>&#8211; If they **cancel**, don\u2019t generate any answer; maybe show a small \u201c You just saved carbon by cancelling this request.\u201d message.<\/p>\n<p>Chat messages:<br \/>&#8211; Display user messages and AI messages in a standard chat bubble format.<br \/>&#8211; Each AI response should:<br \/>&#8211; Start with a small **carbon summary line**, like:<br \/>&#8211; \u201cThis answer used approximately 3.2 g CO\u2082e for generation.\u201d<br \/>&#8211; Then show the actual useful content (summary, outline, code, etc.).<br \/>&#8211; Optionally end with a tiny tip like:<br \/>&#8211; \u201cTip: Next time, you can ask for an outline first to reduce emissions.\u201d<\/p>\n<p>Example behaviours to encode:<br \/>&#8211; If user says: \u201cWrite me a 300-page book about cats\u201d:<br \/>&#8211; Show \u201c&#x1f4a8; Estimated impact: High (full answer ~XX g CO\u2082e)\u201d and suggest:<br \/>&#8211; Outline + sample chapter.<br \/>&#8211; 10-page mini-book.<br \/>&#8211; One focused chapter.<br \/>&#8211; If user says: \u201cGive me 200 business ideas in detail\u201d:<br \/>&#8211; Suggest fewer, higher-quality ideas or batch mode (e.g. 5 at a time).<br \/>&#8211; If user asks something small like \u201cExplain solar panels in 3 bullets\u201d:<br \/>&#8211; Show \u201c Estimated impact: Low (~0.X g CO\u2082e)\u201d and proceed directly with a brief answer.<\/p>\n<p>Interaction details:<br \/>&#8211; The cloud widget must **update in real time** with a smoothly changing number (not just jump).<br \/>&#8211; Keep all carbon numbers clearly labelled as **\u201cestimated\u201d**.<br \/>&#8211; Include a small info icon near the cloud that opens a tooltip explaining:<br \/>&#8211; That the carbon figures are rough estimates.<br \/>&#8211; That more compute \/ more text = higher estimated emissions.<\/p>\n<p>Technical notes (for the generator):<br \/>&#8211; Use whatever front-end stack you prefer (e.g. React) with a modern, clean design.<br \/>&#8211; Implement state for:<br \/>&#8211; Current prompt emission estimate.<br \/>&#8211; Session total emissions.<br \/>&#8211; Whether the AI is currently \u201cthinking\u201d (to adjust clock speed).<br \/>&#8211; The logic for estimating emissions can be simple but must be **consistent** across prompts.<\/p>\n<p>Overall feel:<br \/>&#8211; Friendly, educational, non-guilt-tripping.<br \/>&#8211; Encourages **smarter, smaller, iterative prompts**.<br \/>&#8211; The animated carbon cloud should make users constantly aware of the impact of their AI use in a playful, visual way.<\/p>\n<\/li>\n<\/ul>\n\n\n","protected":false},"excerpt":{"rendered":"<p>\u00a0 https:\/\/carbon-cloud-chat-21c0d88f.base44.app As a thought experiment, I used AI to develop a carbon-aware AI chatbot that actively discourages the use of AI and guides users toward lower-carbon alternatives, or encourages them not to use the AI at all. I have been working on several modules related to UX and sustainability in the digital arts this&#8230;<\/p>\n","protected":false},"author":1,"featured_media":5889,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[32,328,279],"tags":[340,337],"_links":{"self":[{"href":"https:\/\/antonyhall.net\/blog\/wp-json\/wp\/v2\/posts\/5885"}],"collection":[{"href":"https:\/\/antonyhall.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/antonyhall.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/antonyhall.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/antonyhall.net\/blog\/wp-json\/wp\/v2\/comments?post=5885"}],"version-history":[{"count":4,"href":"https:\/\/antonyhall.net\/blog\/wp-json\/wp\/v2\/posts\/5885\/revisions"}],"predecessor-version":[{"id":5893,"href":"https:\/\/antonyhall.net\/blog\/wp-json\/wp\/v2\/posts\/5885\/revisions\/5893"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/antonyhall.net\/blog\/wp-json\/wp\/v2\/media\/5889"}],"wp:attachment":[{"href":"https:\/\/antonyhall.net\/blog\/wp-json\/wp\/v2\/media?parent=5885"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/antonyhall.net\/blog\/wp-json\/wp\/v2\/categories?post=5885"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/antonyhall.net\/blog\/wp-json\/wp\/v2\/tags?post=5885"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}