# Setting a persona for AI Helper "explain" causes error

**URL:** https://meta.discourse.org/t/setting-a-persona-for-ai-helper-explain-causes-error/369562
**Category:** Bug
**Tags:** ai, ai-helper
**Created:** [June 10, 2025, 3:29pm UTC](https://meta.discourse.org/t/setting-a-persona-for-ai-helper-explain-causes-error/369562 "2025-06-10T15:29:19Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![MachineScholar](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/machinescholar/32/424719_2.png) [@MachineScholar](https://meta.discourse.org/u/MachineScholar)
#### Post date: [June 10, 2025, 3:29pm UTC](https://meta.discourse.org/t/setting-a-persona-for-ai-helper-explain-causes-error/369562/1 "2025-06-10T15:29:19Z")

</div>

I set the persona for the AI Helper’s “explain” feature to be a custom persona (using GPT-4.1-mini) and clicking explain causes it to load indefinitely. I switched it back to default and it started working again

> **Error log**
>
> Message (2 copies reported)
> 
> Job exception: no implicit conversion of nil into String
> 
> Backtrace
> 
> /var/www/discourse/plugins/discourse-ai/lib/ai\_helper/assistant.rb:143:in `block in generate_prompt' /var/www/discourse/plugins/discourse-ai/lib/personas/bot.rb:159:in `block in reply’  
> /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:187:in `block (3 levels) in perform_completion!' /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:230:in `block (5 levels) in perform\_completion!’  
> /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:230:in `each' /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:230:in `block (4 levels) in perform\_completion!’  
> /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:221:in `each' /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:221:in `block (3 levels) in perform\_completion!’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:535:in `call_block' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:526:in `\<\<’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:168:in `read' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http/response.rb:631:in `read\_chunked’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http/response.rb:595:in `block in read_body_0' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http/response.rb:588:in `inflater’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http/response.rb:593:in `read_body_0' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http/response.rb:363:in `read\_body’  
> /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:216:in `block (2 levels) in perform_completion!' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:2433:in `block in transport\_request’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http/response.rb:320:in `reading_body' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:2430:in `transport\_request’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:2384:in `request' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rack-mini-profiler-3.3.1/lib/patches/net_patches.rb:19:in `block in request\_with\_mini\_profiler’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rack-mini-profiler-3.3.1/lib/mini\_profiler/profiling\_methods.rb:50:in `step' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rack-mini-profiler-3.3.1/lib/patches/net_patches.rb:18:in `request\_with\_mini\_profiler’  
> /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:158:in `block in perform_completion!' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:1632:in `start’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-http-0.6.0/lib/net/http.rb:1070:in `start' /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:129:in `perform\_completion!’  
> /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/open\_ai.rb:53:in `perform_completion!' /var/www/discourse/plugins/discourse-ai/lib/completions/llm.rb:374:in `generate’  
> /var/www/discourse/plugins/discourse-ai/lib/personas/bot.rb:90:in `reply' /var/www/discourse/plugins/discourse-ai/lib/ai_helper/assistant.rb:148:in `generate\_prompt’  
> /var/www/discourse/plugins/discourse-ai/lib/ai\_helper/assistant.rb:197:in `stream_prompt' /var/www/discourse/plugins/discourse-ai/app/jobs/regular/stream_post_helper.rb:30:in `execute’  
> /var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with\_connection’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails\_multisite-6.1.0/lib/rails\_multisite/connection\_management.rb:21:in `with_connection' /var/www/discourse/app/jobs/base.rb:303:in `block in perform’  
> /var/www/discourse/app/jobs/base.rb:299:in `each' /var/www/discourse/app/jobs/base.rb:299:in `perform’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:220:in `execute_job' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:185:in `block (4 levels) in process’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:180:in `traverse' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse’  
> /var/www/discourse/lib/sidekiq/discourse\_event.rb:6:in `call' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse' /var/www/discourse/lib/sidekiq/pausable.rb:131:in `call’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job/interrupt\_handler.rb:9:in `call' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:26:in `track’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:134:in `call' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:173:in `invoke' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:184:in `block (3 levels) in process’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:145:in `block (6 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job_retry.rb:118:in `local’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:144:in `block (5 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/config.rb:39:in `block in class:Config’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:139:in `block (4 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:281:in `stats’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:134:in `block (3 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job_logger.rb:15:in `call’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:133:in `block (2 levels) in dispatch' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job_retry.rb:85:in `global’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:132:in `block in dispatch' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job_logger.rb:40:in `prepare’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:131:in `dispatch' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:183:in `block (2 levels) in process’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `handle_interrupt' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `block in process’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `handle_interrupt' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `process’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:86:in `process_one' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:76:in `run’  
> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/component.rb:10:in `watchdog' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/component.rb:19:in `block in safe\_thread’

---

<div class="post-metadata">

### Author: ![Roman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roman/32/157504_2.png) [@Roman](https://meta.discourse.org/u/Roman)
#### Post date: [June 12, 2025, 4:42pm UTC](https://meta.discourse.org/t/setting-a-persona-for-ai-helper-explain-causes-error/369562/3 "2025-06-12T16:42:52Z")

</div>

Fixed the bug here:

[https://github.com/discourse/discourse-ai/pull/1433](https://github.com/discourse/discourse-ai/pull/1433)

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [June 16, 2025, 11:40pm UTC](https://meta.discourse.org/t/setting-a-persona-for-ai-helper-explain-causes-error/369562/4 "2025-06-16T23:40:55Z")

</div>


