Our bot was timing out until we set reasoning to minimal. Thanks!
Tbh I’m finding GPT-5 generally too slow with higher reasoning kevels and not obviously worth the additional lead time in responses.
How have you found it for your support bot? Does a minimal reasoning GPT-5 perform better than say 4o or 4.1?
I’ve tried gpt-5 using Chat GPT, that is really much different thing than via API, and it needs that long reasoning time to give slightly better answers what 4o would give, or o1. When it has to answer fast, it is not any better than 4.1.
I’m quite sure the situation is same`ish, or worse because of lack of tools and prompting, when using API. But I don’t know for sure, because gpt-5 is painfully slow and in forum environment it must answer close to speed of light.
In terms of content performance, anecdotally, it seems like gpt-5 is giving noticeably better technical answers that gpt-4o. I’m not sure how to quantify that but it really impressed me.
I’m getting varying results in how long it takes to respond. It does seem, from experimenting this morning, like gpt-5 is slower on average but not by too much, and there were some cases where the response came faster with gpt-5. I’m measuring anywhere from 5 seconds to 35 seconds for a reply.
We’re using RAG and I can’t tell what portion of the latency is from the RAG search vs the chat completion. It could be that sometimes it chooses not to RAG search, the search happens faster, or something is cached (in the search or the completion).
We would typically choose better answers over a faster response because giving customers bad technical advice is costly. Up to a point though, if it times out then that’s a very bad user experience.
GPT-5 recommends primarily gpt-5-mini for our use case, and escalate to gpt-5 in some circumstances. Sounds neat but complicated. Have you considered switching between models dynamically? Why doesn’t OpenAI just do that automatically? ChatGPT - Compare GPT models performance
We had to switch back to gpt-4o because apparently gpt-5-mini thinks it can do things it can’t do. It confidently offered to set up a customer’s alarm monitoring service for them and connect it to their home alarm equipment. It asked them for equipment ID numbers and hallucinated like it was a concierge setting everything up for them. Our website can do that but the chatbot can’t. It doesn’t seem to be respecting the guardrails in the system prompt like gpt-4o did. We’ll need to tighten it up before we can let people use it.
Update: It turns out that gpt-5 is much better at following instructions and respecting rules in the prompt than gpt-5-mini. If you’re going to let a bot represent your brand, I recommend gpt-5 even though it’s slower and 5x more expensive. There’s too much risk that gpt-5-mini will go off the rails.
I have had really good luck with GTP-5-mini in agentic flows via tool calling, code writing and structured data. I generally find structured data is easier for AI apps than unstructured ! .. not what I expected ! but guardrails are easier .. (code-in-loop, human-in-loop, llm-as-judge, etc)
please watch this for blow by blow walkthru of high performance , low cost gpt-5-mini and gpt-4o …
If anyone out there is interested in working structured data capabilities into Discourse as a plugin, etc. Please reach out.
An NLP extension for sql/stats/datascience to Data Explorer is an example.. But could also possibly have a tool / plugin / feature that allows natural language queries of read-only sqlLite or duckdb etc olap files loaded into the container ? just a thought.. ![]()
Btw, I added GPT 5.1 to the plugin along with some fixes:
@tom_eric you asked about the ability to play games with other forum members on another Topic.
I tried this prompt with Chatbot and it seems to work with GPT 5.1, try it out:
@Chatbot facilitate a 9x9 game of Go with @Other_Player and I using a markdown table to render the board - let me go first and only accept plays from myself and @Other_Player and only when it is our turn - render the board and ask me to kick off …
Oh, thank you. That’s a really creative idea.Oh, thank you. That’s a really creative idea.
np let me know how that works out ![]()
A slightly customized dev setup let me experiment with Chatbot playing Zork using this plugin and Discourse Frotz ![]()
(here with GPT 5.1 on lower reasoning)
A little time later:
Racking up quite a score! And:
![]()
(Apologies, setup is a little too complex to simply share here).
Wow! I had no idea that was possible. Guess pretty much anything is possible with good prompts ![]()
Chatbot model dropdowns now have gpt 5.2 and 5.2 pro - and for 5.2 there is now an xhigh reasoning level if you love burning tokens and devastating the environment ![]()
You may also notice that users of the Maths Plugin can now easily get Chatbot to discuss maths with nicely rendered maths equations without adding anything to the system prompt …
I’ve moved the launch button to a much neater location in the bottom right (except for iOS PWA/app) - let me know if that’s not working as intended.
This was always intended to simplify the css whilst accommodating those annoying control bars on iOS, but I couldn’t live with it any longer, it was offending my eyes
![]()
@ThisSource this was the first AI chatbot for Discourse and is still running :).
Delighted to announce my first ongoing business sponsor of Chatbot, Surety, who now occupy the new Project Sponsor section of the README.
Surety is on a mission to provide professional-grade security alarm monitoring and home automation to DIYers in the most transparent and efficient way possible, bucking the trend in the home security industry.
Thank you Surety!
If you’d like to become a sponsor of one of my projects, take a look at: Sponsor @merefield on GitHub Sponsors · GitHub ![]()
Recent PR summary — 1–3 August 2026
Several related PRs were merged across Discourse Chatbot and its extension plugins.
Highlights
- Introduced advanced local reasoning strategies, including verify-and-revise, best-of-two, and uncertainty-guided reasoning.
- Added current OpenAI models and the new max reasoning effort.
- Added a semantic blocked-question gate using embedding similarity.
- significant savings as uses embeddings to block subjects you don’t wish the bot to handle without costing you LLM tokens.
- Consolidated the basic and RAG implementations into a single DiscourseChatbot::Bot.
- Replaced bot-mode settings with trust-level built-in tool selectors.
- Renamed the extension API from “Function” to “Tool”.
- Replaced the SafeRuby based calculator tool with the constrained Dentaku expression evaluator - this is a big improvement in security, as despite its name, there are vulnerabilities in SafeRuby.
- Adopted Zeitwerk loading across Chatbot and its extension plugins.
- Moved location-specific tools into the Locations Early Access plugin (sponsor me to regain access)
- Improved calculator error recovery and support for common π/e notation.
- Refreshed the README
- Advanced the main plugin from version 1.8.0 to 2.4.1.
Discourse Chatbot
-
#162 — FIX: Preserve Responses API reasoning state (FIX: Preserve Responses API reasoning state - Pull Request #162 - merefield/discourse-chatbot - GitHub)
Made Responses API reasoning and tool continuations reliable, introduced configurable iteration and token limits,
improved URL provenance validation, preserved useful partial responses, and prevented blank or malformed responses
from being accepted. -
#163 — FEATURE: Add advanced local reasoning strategies (FEATURE: Add advanced local reasoning strategies - Pull Request #163 - merefield/discourse-chatbot - GitHub)
Added simple, verify-and-revise, best-of-two, and uncertainty-guided reasoning strategies for Chat Completions, with
bounded auxiliary requests and staff-visible audit records. -
#164 — FEATURE: Add current OpenAI models (FEATURE: Add current OpenAI models - Pull Request #164 - merefield/discourse-chatbot - GitHub)
Updated the model selectors with newer GPT-5.x and Pro variants, routed appropriate models through the Responses
API, and added max reasoning effort. -
#165 — FIX: Improve calculator retry guidance (FIX: Improve calculator retry guidance - Pull Request #165 - merefield/discourse-chatbot - GitHub)
Gave models clearer calculator syntax and recovery guidance so correctable failures are retried appropriately. -
#166 — FEATURE: Add semantic blocked-question gate (FEATURE: Add semantic blocked-question gate - Pull Request #166 - merefield/discourse-chatbot - GitHub)
Added an optional embedding-based gate that can identify administratively defined blocked subjects and return canned responses before invoking the main model. It includes caching, staff auditing, fail-open behaviour, and custom embedding model support. -
#167 — DEV: Replace SafeRuby and adopt Zeitwerk loading (DEV: Replace SafeRuby and adopt Zeitwerk loading - Pull Request #167 - merefield/discourse-chatbot - GitHub)
Replaced the vendored SafeRuby evaluator with Dentaku, aligned namespaces and filenames with Zeitwerk, and modernised the plugin’s loading and lint configuration. Turned out there were vulnerabilities in SafeRuby, hence the migration. -
#168 — DEV: Extract Locations functions from Chatbot (DEV: Extract Locations functions from Chatbot - Pull Request #168 - merefield/discourse-chatbot - GitHub)
Removed location-specific tools and settings from the main plugin, allowing them to be supplied independently by discourse-locations. -
#169 — FEATURE: Replace bot modes with trust-level tool selection
(FEATURE: Replace bot modes with trust-level tool selection - Pull Request #169 - merefield/discourse-chatbot - GitHub)
This was the main architectural rationalisation:- Replaced the separate basic and RAG bots with DiscourseChatbot::Bot.
- Added built-in tool selectors for each trust level.
- Made an empty selector equivalent to a simple, tool-free bot.
- Folded Vision and painting into the tool-selection system.
- Left externally supplied plugin tools outside the built-in selectors.
- Renamed Function terminology, settings and classes to Tool.
- Reordered, collocated and conditionally hid settings.
- Added migration handling for existing configurations.
- Made quota deductions concurrency-safe.
- Corrected response character limits, logging selection and binary PDF reading.
-
#170 — FIX: Improve calculator tool recovery (FIX: Improve calculator tool recovery - Pull Request #170 - merefield/discourse-chatbot - GitHub)
Normalised familiar expressions such as Math::PI, Math.PI, Math::E, Math.E, and π into Dentaku-compatible syntax.
Repeated unchanged invalid calls are now rejected with actionable guidance. -
#171 — DEV: Refresh chatbot documentation (DEV: Refresh chatbot documentation - Pull Request #171 - merefield/discourse-chatbot - GitHub)
Updated the README for the unified bot and tool architecture, reasoning strategies, blocked questions, calculator behaviour, limits, quotas, custom endpoints, image/PDF support, and current settings. Vision support is no longer described as experimental.
Companion plugins
-
discourse-locations #4 — FIX: Update Chatbot location extensions for tool API (https://github.com/merefield/discourse-locations-early-access/pull/4)
Migrated the extracted location integrations to DiscourseChatbot::Tool, placed them under Locations::Chatbot::Tools, and updated them for the unified bot. -
Function extension example #1 — FIX: Update example extension for Chatbot tool API (FIX: Update example extension for Chatbot tool API - Pull Request #1 - merefield/discourse-chatbot-function-extension-example - GitHub)
Updated the example plugin to demonstrate DiscourseChatbot::Tool, Zeitwerk loading, tool-oriented settings and
translations, and focused behaviour testing without legacy compatibility code.




