Overview
This week’s ai conversations on #meta.discourse.org centered on controlling and understanding AI cost + background usage, tightening up security expectations around summarization inputs, and improving UX and integrations across the Discourse AI feature set.
On the cost/ops side, Discourse shipped estimated dollar-based quotas for Discourse AI usage (in addition to token limits), making it easier to budget across providers (see Cost based quotas for Discourse AI and the companion guide Configuring LLM usage quotas in Discourse AI). Admins also compared notes on periodic AI API calls that can occur even when you’re not actively using AI UI features, due to background jobs like embeddings and summary backfills (see Does discourse call AI APIs in the background and Falco’s confirmation).
On the safety front, there was renewed attention on what exactly gets fed into summarization prompts—specifically whether HTML comments being included could form a “hidden channel” for manipulation (see HTML comments are also summarized by AI, Falco’s reply, and follow-up concerns).
Meanwhile, several threads focused on “making it work in the real world”: troubleshooting 500 errors in AI title suggestions and learning where to find audit logs (see Qwen3.7-plus support thread and guidance on ai_api_audit_logs), configuring internal AI endpoints / LiteLLM sidecars (see How to use internal AI endpoints? and the solution write-up here), and self-hosting translation via Ollama’s OpenAI-compatible API (see Self-Hosting an OpenSource LLM for DiscourseAI, model/tokenizer guidance, and translation constraints discussion here).
UX and product polish also got attention: a fix was proposed for the AI title suggestion icon positioning (see AI title suggest icon is placed above the title input field), “inline” AI suggestions raised latency/behavior questions (see Inline integration of AI Suggestions (in Composer) and latency question), and the docked composer for AI bot conversations was re-enabled after being accidentally toggled off (see question and resolution).
Interesting Topics
-
Cost-based quotas for Discourse AI (estimated dollars, not just tokens) in #Announcements #ai: sam announced a new way to cap AI usage by estimated dollar cost per group, to help budgeting across providers (announcement). The feature ties into the existing quota configuration flow (Configuring LLM usage quotas in Discourse AI).
-
AI summarization includes HTML comments (and potential prompt-injection concerns) in #Feature ai #ai-summarize: Ed_S raised the risk that HTML comments could become a “hidden channel” to influence summaries (concern). Falco acknowledged the possibility—especially with smaller/older models—and pointed to system/user prompt separation as a mitigating concept (reply), which Ed_S pushed back on as not being a true mechanism against jailbreaks (follow-up).
-
Qwen3.7-plus setup: title suggestion tool hitting 500s + how to debug with audit logs in Support #ai: bird reported a 500 error when using AI title generation despite other AI tools working (report). Falco recommended querying
ai_api_audit_logsfor more detailed diagnostics (tip), then clarified how to inspect the newest entry and that the 500 was coming from Discourse (not Qwen) (follow-up). The thread also pointed to image generation docs when asked whether Discourse AI supports it (answer + link, plus Improved Image Generation Support in Discourse AI). -
Running Discourse AI against internal endpoints (LiteLLM sidecar, internal host allowlists, MCP cleanup) in Support #ai: evantobin described getting internal connectivity working using
DISCOURSE_ALLOWED_INTERNAL_HOSTSfor a localhost LiteLLM sidecar, and mentioned follow-on work for Vertex AI auth (details). satonotdead shared a full solution using Docker’s internal gateway IP, port mapping, and cleaning up broken MCP tools (solution). -
Feature request / PR: add
{username}template param to AI persona system prompts in #Feature #ai: 42aross proposed adding{username}as an allowlisted template param so an AI persona can reliably identify the current user server-side (instead of having the LLM infer it from topic text/metadata) (request + rationale). They also noted completing the CLA process (follow-up). -
Docked composer for AI bot conversations: toggled off on Meta, then re-enabled in #Announcements ai #ai-bot: putty asked why Meta no longer showed the docked composer UI (question). keegan replied it was accidentally toggled off and turned it back on, noting the change moving to
beta(status update). nicolsdennis followed up with a product question about limiting reply length for bot conversations (question). -
Inline AI Suggestions in the composer: consistency + latency/behavior questions in #Announcements ai #ai-helper: chapoi discussed making behavior consistent across similar UI entry points and asked for feedback (post). nicolsdennis asked about round-trip latency and whether suggestions are purely based on topic title (question).
-
UX fix: AI title suggest icon positioning in ux #ai: chapoi posted an implementation fix for the title-suggest icon appearing above the title field, asking for confirmation of side effects (fix + PR link).
-
Gemini API key changes: service accounts, migration concerns in #Integrations how-to #ai: m_terenui noted Google’s reported security changes around Gemini API keys, potentially requiring service accounts and migrating old keys, and asked what Discourse expects admins to configure going forward (question). (Thread reference: Set up Gemini API Keys for Discourse AI)
-
Self-hosting Discourse AI translation with Ollama: provider choice, tokenizer/context window, and why “translation endpoints” aren’t a drop-in in #Self-Hosting #ai: mononym asked how to try Discourse AI translation via Ollama and where the newer admin UI settings live (question). Falco suggested using Ollama’s OpenAI-compatible API by selecting OpenAI as the provider (guidance), then provided practical configuration advice (tokenizer choice, context window) and cautioned against unsuitable/old models (details). The thread also covered why Discourse AI translation isn’t designed as a simple LibreTranslate endpoint replacement and why the older Translator plugin can still be used “as-is” (constraints).
Activity
-
sam introduced estimated dollar cost quotas for Discourse AI groups in #Announcements, pointing admins to the broader quota documentation (Cost based quotas for Discourse AI; Configuring LLM usage quotas in Discourse AI).
-
Falco was active across troubleshooting, safety, and self-hosting threads:
- Discussed risks/mitigations around summarization inputs when HTML comments are included (reply; see also the prompt-injection concern here and follow-up here).
- Helped debug a Qwen-related title suggestion 500 by pointing to
ai_api_audit_logsand advising how to inspect fresh rows after reproducing the error (audit log tip; inspect newest row + Discourse-side 500; image-gen pointer here; related: Improved Image Generation Support in Discourse AI). - Confirmed that periodic background AI calls can be expected for enabled features like summary backfills and embeddings (Does discourse call AI APIs in the background; original admin question here).
- Guided self-hosters using Ollama via OpenAI compatibility and provided configuration/model advice for translation (use OpenAI provider with Ollama; tokenizer/context window + model caveats; translation design constraints vs LibreTranslate here).
-
chapoi pushed on UX and consistency:
- Discussed aligning AI suggestion behavior across surfaces and asked for feedback (Inline integration of AI Suggestions (in Composer); related latency/title-scope question here).
- Proposed a fix for the AI title suggest icon’s positioning, linking an implementation PR and requesting side-effect testing (AI title suggest icon is placed above the title input field).
-
Ed_S raised a security-focused concern that summarizing HTML comments could be used as a hidden manipulation channel (HTML comments are also summarized by AI) and emphasized that system/user prompt separation isn’t a hard guarantee against jailbreak influence (follow-up).
-
42aross proposed a small additive change to improve AI persona prompt templating by adding
{username}as a supported variable (Add {username} as a template param in AI persona system prompts; CLA follow-up here). -
keegan re-enabled the docked composer for AI bot conversations after it was accidentally switched off, and noted the feature’s promotion toward
beta(Introducing a docked composer for AI bot conversations; original question here). -
evantobin shared internal networking setup details for connecting Discourse AI to a LiteLLM sidecar using
DISCOURSE_ALLOWED_INTERNAL_HOSTS(How to use internal AI endpoints?; see also the later complete solution here). -
m_terenui raised two admin/operator concerns:
- Whether Google’s Gemini API key approach has changed to require service accounts and what Discourse expects admins to paste into settings (Set up Gemini API Keys for Discourse AI; tutorial thread root here).
- Noticed periodic Gemini calls and asked if Discourse invokes AI APIs in the background; Falco confirmed background jobs can do so depending on enabled features (Does discourse call AI APIs in the background; answer).
-
putty flagged that the docked AI-bot composer UI appeared disabled on Meta and asked for the rationale (Introducing a docked composer for AI bot conversations; resolution here).
-
nicolsdennis asked product/ops questions in two announcement threads:
- About latency and whether inline suggestions are based only on topic title (Inline integration of AI Suggestions (in Composer); related consistency discussion here).
- About constraining AI bot reply length in the docked composer experience (Introducing a docked composer for AI bot conversations; feature status update here).
-
bird documented a Discourse AI integration issue using Qwen3.7-plus where title suggestion returned a 500 error (report), asked how to view deeper logs (question), and later asked about image generation support (question; answer and pointer here).
-
satonotdead posted a detailed “got it working” solution for internal AI endpoints, covering Docker gateway routing, port exposure, and removing broken MCP server/tool entries (How to use internal AI endpoints?; earlier setup context here).
-
mononym revived the self-hosting thread with questions about the current admin UI, using Ollama for translation, and whether a LibreTranslate-style endpoint could be reused (Self-Hosting an OpenSource LLM for DiscourseAI; provider/config questions here; LibreTranslate compatibility question here). Falco responded with configuration guidance and constraints (OpenAI-compat setup; tokenizer/context advice; why not LibreTranslate in AI translation).
Thanks for reading, and I’ll see you again next week! ![]()