Discourse AI - Обнаружение спама

:bookmark: Это руководство объясняет, как настроить и использовать функцию обнаружения спама Discourse AI, включая процесс настройки, критерии сканирования, логику классификации, возможности кастомизации и отличия от системы AI triage.

:person_raising_hand: Требуемый уровень пользователя: Администратор

:megaphone: Эта функция теперь включена по умолчанию для клиентов Starter и Pro, а также для наших устаревших клиентов Basic, Open Source, Creator и Business.

Discourse AI предоставляет эффективную функцию обнаружения спама, которая идентифицирует и помечает спам-сообщения с минимальной настройкой. Хотя она разработана для простоты, она дополняет более универсальную систему AI triage, которая поддерживает более широкие рабочие процессы и крупные сценарии использования.

Краткое содержание

В этом руководстве вы узнаете:

  • Как работает обнаружение спама ИИ и какой контент сканируется
  • Логика классификации и контекст, используемые ИИ
  • Шаги настройки обнаружения спама через /admin/plugins/discourse-ai/ai-spam
  • Рекомендации по выбору больших языковых моделей (LLM)
  • Ключевые различия между обнаружением спама и AI triage
  • Как управлять помеченными и пропущенными сообщениями

Как работает обнаружение спама ИИ

Какой контент сканируется?

Обнаружение спама ИИ оценивает сообщения на основе следующих критериев:

  1. Уровень доверия пользователя:

    • Сканирует сообщения от пользователей с уровнем доверия, равным или ниже настроенного максимального уровня (управляется настройкой сайта ai_spam_detection_max_trust_level, по умолчанию: уровень доверия 1).
    • Исключает сообщения от пользователей с более высоким уровнем доверия.
    • Всегда исключает сообщения от сотрудников и ботов, независимо от уровня доверия.
  2. Тип сообщения:

    • Публичные сообщения (исключая личные сообщения).
    • Включаются как ответы, так и первые сообщения тем, в зависимости от дополнительных пороговых значений.
  3. Редактирование сообщений:

    • Сканирует сообщения со значительными изменениями (например, изменения более 10 символов).
    • Применяет задержку в 10 минут между сканированиями одного и того же сообщения.
    • Ограничивает повторные сканирования максимум 3 раза на сообщение.
    • Повторно сканирует только сообщения, отредактированные в последние 24 часа.
  4. Частота сообщений:

    • Сканирует сообщения от пользователей с количеством сообщений не выше настроенного порога (управляется настройкой сайта ai_spam_detection_max_post_count, по умолчанию: 3 сообщения) в публичных темах.
    • Исключает сообщения от пользователей, превышающих этот порог.
  5. Очередь проверки:

    • Сообщения, уже одобренные из очереди проверки, не сканируются.

Процесс классификации

Сообщения, соответствующие критериям, отправляются агенту ИИ для анализа. Агент оценивает, является ли сообщение спамом или нет, и предоставляет причину своей классификации, используя структурированный вывод JSON. Оценка основана на:

  • Контекст: Включает содержание сообщения, заголовок темы, категорию, данные учетной записи пользователя (например, имя пользователя, электронная почта, возраст аккаунта, общее количество сообщений и уровень доверия) и геолокацию на основе IP.
  • Анализ изображений: Для анализа включаются до 3 загруженных изображений, прикрепленных к сообщению.
  • Контекст ответа: Для ответов включается содержание родительского сообщения (до 500 символов).
  • Информация о сайте: ИИ предоставляются название сайта, URL, описание и топ-10 категорий.
  • Пользовательские инструкции: Правила, определенные администратором, для усиления или адаптации критериев сканирования.
  • Автоматическое обнаружение:
    • Помечает нерелевантный или рекламный контент (например, рекламу или коммерческие материалы).
    • Выявляет автоматизированное поведение или поведение, похожее на ботов.
    • Оценивает релевантность контента обсуждению.

Стандартный запрос и контекст

ИИ использует стандартный системный запрос для руководства обнаружением спама. Встроенный запрос агента обнаружения спама охватывает:

Вы — система обнаружения спама. Проанализируйте следующее содержание сообщения и контекст.

Внимательно рассмотрите тип сообщения:
- Для ОТВЕТОВ: Проверьте, релевантен ли ответ теме обсуждения
- Для НОВЫХ ТЕМ: Проверьте, является ли это легитимной темой или спам-рекламой

Сообщение является спамом, если оно соответствует любому из следующих критериев:
- Содержит несанкционированный коммерческий контент или рекламу
- Содержит подозрительные или нерелевантные внешние ссылки
- Демонстрирует паттерны автоматизированной/ботовой публикации
- Содержит нерелевантный контент или рекламу
- Для ответов: Полностью не связано с темой обсуждения
- Использует чрезмерное количество ключевых слов или повторяющиеся паттерны текста
- Демонстрирует подозрительное форматирование или использование символов

Будьте особенно строги к:
- Ответам, игнорирующим предыдущий разговор
- Сообщениям, содержащим несколько нерелевантных внешних ссылок
- Общим ответам, которые можно опубликовать где угодно

Будьте справедливы к:
- Новым пользователям, делающим легитимные первые вклады
- Носителям других языков, прилагающим искренние усилия для участия
- Упоминаниям продуктов, релевантным теме, в соответствующем контексте

Сканер также компилирует пакет контекста, включающий:

  • Тип сообщения (НОВАЯ ТЕМА или ОТВЕТ) с метаданными категории и темы.
  • Для ответов: содержание родительского сообщения и автора темы.
  • Данные автора (имя пользователя, электронная почта, возраст аккаунта, общее количество сообщений, уровень доверия и местоположение на основе IP).
  • Текст сообщения, обрезанный до 5000 символов для обработки.
  • До 3 загруженных изображений, прикрепленных к сообщению.

Настройка обнаружения спама ИИ

Руководство по настройке

  1. Доступ к настройкам:
    Перейдите по адресу /admin/plugins/discourse-ai/ai-spam.

  2. Выбор LLM:

:information_source: Если ваш сайт размещен компанией Discourse

Вы можете выбрать наш размещенный малый LLM CDCK из списка LLM.

  1. Активация обнаружения спама:
    Включите обнаружение спама, переключив функцию.

:information_source: Примечание: Подключенный LLM обязателен.

  1. Добавление пользовательских инструкций:

    • Определите правила, специфичные для вашего форума (например, более строгий мониторинг внешних ссылок).
    • Сохраните любые изменения, чтобы применить их.
  2. Настройка порогов сканирования (опционально):

    • ai_spam_detection_max_trust_level: Установите максимальный уровень доверия пользователей, чьи сообщения сканируются (по умолчанию: 1). Можно установить от 0 до 4.
    • ai_spam_detection_max_post_count: Установите максимальное количество сообщений, которое может иметь пользователь и при этом быть сканируемым (по умолчанию: 3). Можно установить от 1 до 100.

Отличия от AI triage

Хотя обнаружение спама разработано специально для выявления спама, AI triage поддерживает более широкие задачи управления сообщениями.

Функция Обнаружение спама ИИ AI Triage
Сложность Упрощенная, ориентированная настройка Высокая степень кастомизации и гибкость
Основной сценарий использования Обнаружение спама с минимальными накладными расходами Продвинутые рабочие процессы для категоризации, тегирования, ответов, обнаружения спама, обнаружения NSFW
Действия Помечает спам, скрывает сообщения, заглушает пользователей Тегирование, категоризация, скрытие сообщений, добавление ответов, пометка сообщений, заглушение пользователей
Рекомендация Простая настройка и эффективность для большинства ситуаций Используйте для богатых, высококастомизируемых рабочих процессов

Для получения дополнительной информации см. Discourse AI - AI triage.


Рекомендации по выбору LLM

Производительность обнаружения спама зависит от выбранной LLM.

Большинство недорогих LLM работают эффективно, например:

  • GPT-4o-mini
  • Claude 3.5 Haiku
  • Gemini 2.0 Flash

Экспериментируйте с различными моделями, чтобы найти наилучшее соответствие. Настройте свои модели через /admin/plugins/discourse-ai/ai-llms.


Тестирование поведения сканера спама

Вы можете протестировать правила обнаружения спама непосредственно со страницы конфигурации.

  • Вставьте URL или ID сообщения в поле тестирования.
  • Просмотрите результат классификации и обоснование ИИ для своего решения.
  • Несохраненные изменения применяются во время тестирования, что позволяет экспериментировать без риска.

Управление помеченными и пропущенными сообщениями

Обработка помеченных сообщений

Когда сообщение обнаружено как спам, система:

  • Помечает сообщение как спам и добавляет его в очередь проверки.
  • Заглушает пользователя, отправившего сообщение.
  • Скрывает сообщение от публичного просмотра.
  • Делает тему невидимой, если спам-сообщение было первым в теме.

Помеченные сообщения отображаются в очереди модерации. Администраторы могут:

  • Одобрить легитимные сообщения, ошибочно классифицированные как спам.
  • Отклонить спам-темы, чтобы поддерживать точность системы.

:warning: Важно: Отклоняйте флаги спама для неправильно классифицированных сообщений. Пользователи остаются заглушенными, пока флаг не будет разрешен.

Обработка пропущенного спама

Пропущенный спам относится к сообщениям, которые обошли обнаружение, но были отмечены сообществом. Модераторы могут управлять ими по мере необходимости.


Лучшие практики

  • Регулярно отслеживайте помеченный и пропущенный спам для повышения точности системы. Кликабельные метрики упрощают этот процесс.
  • Используйте тестовые случаи для оценки пользовательских инструкций на граничных случаях.
  • При необходимости пересматривайте и корректируйте настройки LLM.
  • Используйте настройки сайта ai_spam_detection_max_trust_level и ai_spam_detection_max_post_count для настройки того, какие пользователи сканируются, в зависимости от потребностей вашего сообщества.

Дополнительные ресурсы


:mega: Эффективная настройка обнаружения спама ИИ сокращает ручные усилия по модерации, обеспечивая чистое, свободное от спама сообщество.

17 лайков
Discourse AI spam detection replaces Akismet plugin
Setting up spam detection in your community
AI powered Spam detection
Tips for Preventing Spam
How to block certain types of user registrations
Inappropriate posts are spamming the Anthias Discourse forums
Experiments with AI based moderation on Discourse Meta
Filtering spam/troll accounts
Anyone else currently undergoing mass spam attack?
Discourse AI spam detection replaces Akismet plugin
Failing update
Watched words to block recent spam attack
Discourse AI spam detection "Scan log" is frequently truncated
Watched words: Does Discourse automatically remove unsupported html tag
Best practices for AI antispam plus AI post triage operating together?
Discourse AI - Large Language Model (LLM) settings page
Human-driven copy-paste spam
Responding to the error "You can’t log in from that IP address”, but IP not blocked"
Unlock All Discourse AI Features with Our Hosted LLM
Account left silenced without review when user deletes spam flagged post
"Needs Approval" review items from “Triage posts using AI” script of “Automation” plugin not visible to moderators
Setting up spam detection in your community
Testing automation rules
Strategies for filtering spam / AI user accounts?
Inappropriate posts are spamming the Anthias Discourse forums
AI integration for moderation
How do I configure AI Spam protection
Documentation around actions available to moderators somewhat lacking
What's the cheapest/best AI to use for AI Spam?
How do I configure AI Spam protection
A few questions related to moderation
Posts and account not always restored when flag from Discourse AI spam detection rejected
Setting up spam detection in your community
Discourse AI
How to prevent spam posts?

We’ve done quite a bit of testing with this, and we don’t seem to get reliable results at all. For context, we’re using the gpt-4o model.

To test its accuracy, I gave the following simple instructions:

You are a spam detection system. Analyze the following content and context.
Notes below. If *ANY* of the items are true below then mark it as spam:
- The username is very specifically "testjon", then it is *ALWAYS* spam.
- Respond only with "SPAM - It's Jon!" or "NOT SPAM".

Testing on a post, by the username testjon, results in NOT SPAM. It seems like it’s not heeding instructions well at all. Any suggestions?

Have any others had any good or bad experiences with the AI spam detection?

I don’t know how things are in this situation, but in general statement as quoted is very prone to break down. It doesn’t understand what ANY means and goes happily as long it gets. And from there it found at last NOT SPAM.

1 лайк

So you’re saying to remove the bolding for ANY? Or you’re saying the statement overall of “if any items below”?

I’m saying you have to write it more logical and exact. You can’t let an AI choose in any way. Remeber it can’t count and it defenetly not read first all and them come back and try to work logically. Try to explain so simple as you would give instructions to lazy ADHD 3 years old. Examples aren’t wrong but will increase use of tokens.

1 лайк

This is awesome info. For example, how might you write this exact scenario differently?

1 лайк

Something like…

You are a spam detection system. Your job is analyse silently content to keep up high quality in this forum. You must follow rules to define when a post is spam. When you find a spam, your respond is told in rules. You are using only told responses.

## Rules for spam

I don’t do this for you 😏 But you need some explanations and examples. Like as a fast&crude example:
* if a post has links to outside that are connected to gambling, sex, crypto etc. similar (similar is risky in this context, BTW), then a post is classified as spam. Example: www.buy-crypto.deal

This you must tune up case by cases, because you will get false positives and false negatives

Then you must give some guidelines to content too. But when testing:

* if username is ”testjon” skip analysing content and classify that directly spam. Your response is ”SPAM - it’s Jon”

BTW, can it see user?

## Rules for other content

When a post is passed spam analysing and you are sure it is legit content, your only response is ”NOT SPAM”. 

Something like that. You have to test, of course. And everytime you get false response, try to find the confusing point. But don’t give to AI opportunity to choose what it can do, because it will then take the last, easiest or nicest direction. It has coded need to answer and be happy.

I have just enabled this and am excited to see how it goes!

Is there a setting or a consideration for the trust level users have?

For example: I don’t need the AI to kick in for TL2 and above, they have earned their place and should not be considered for scanning. If they do go rogue, we’ll have to have some words with them :sweat_smile:

2 posts were split to a new topic: Discourse AI plugin missing

Since this is replacing Akismet, I wonder what the best alternative is for spam detection/prevention if you don’t want the LLM costs that comes with AI?

2 лайка

Actually, Gemini 2.0 Flash is available for free, just as long as you aren’t of course sending a million requests to it each day. It’s working fine for my forum right now with zero cost, and it is defenitely more precise and “smarter” than Akismet.

However, if the AI Spam detection plan fails, I still have the Akismet plugin installed on my site and ready to go if I ever need it again, and I think you can still install it. (Since it is being deprecated though, I don’t expect it to stick around forever). Also remember that trust levels are a fundamental core of Discourse that help you manage spam on your site. :+1:

5 лайков

Oh that is cool, is it possible to put like a limit on tokens to make sure that the limit (zero cost) is there from the LLM?

2 лайка

As far as I know, I think if you exceed the limit the API for the LLM will just stop responding. My Google Cloud Console account does not have a billing account attached, and I can still use the API free of charge on the free tier, so you should be good. :+1:

5 лайков

A post was split to a new topic: Improving AI spam detection for edits and merges

Where do I get the “API Key of the service hosting the model”?

If you are on our hosting then you can use LLM Small.

If not, you need to configure an LLM and get a key from OpenAI/Google/Anthropic/X/whatever…

3 лайка

Oh, an API key from them, not from Discourse.

2 лайка

Enabling AI spam detection with Gemini 2.0 Flash doesn’t seem to have helped block this stuff. I’ve never had such obvious spam get through the filter before. Maybe it’s specifically designed for Discourse sites?

| [QuickBooks Payroll Error After an Update +1-800-223-1608 Step- by- Step Resolution](https://www.foodtalkcentral.com/t/quickbooks-payroll-error-after-an-update-1-800-223-1608-step-by-step-resolution/18669) [new](https://www.foodtalkcentral.com/t/quickbooks-payroll-error-after-an-update-1-800-223-1608-step-by-step-resolution/18669 "new topic") | [Americas - Canada](https://www.foodtalkcentral.com/c/canada/7) | [![|24x24](upload://1Q8KV2bBz93mPnuYtm9iAYRdJbr.png "xabibe4257 - Original Poster") ](https://www.foodtalkcentral.com/u/xabibe4257)[![|24x24](upload://q1duD7o9bzWuTP6aWjezml7TCYS.png "system - Most Recent Poster")](https://www.foodtalkcentral.com/u/system) | [1](https://www.foodtalkcentral.com/t/quickbooks-payroll-error-after-an-update-1-800-223-1608-step-by-step-resolution/18669/1) | 2 | [1h](https://www.foodtalkcentral.com/t/quickbooks-payroll-error-after-an-update-1-800-223-1608-step-by-step-resolution/18669/2) | |----|----|----|----|----|----| | [Understanding QuickBooks Payroll Tax Table Update Error +1-800-223-1608](https://www.foodtalkcentral.com/t/understanding-quickbooks-payroll-tax-table-update-error-1-800-223-1608/18657) [new](https://www.foodtalkcentral.com/t/understanding-quickbooks-payroll-tax-table-update-error-1-800-223-1608/18657 "new topic") | [Americas - Canada](https://www.foodtalkcentral.com/c/canada/7) | [![|24x24](upload://1Q8KV2bBz93mPnuYtm9iAYRdJbr.png "xabibe4257 - Original Poster") ](https://www.foodtalkcentral.com/u/xabibe4257)[![|24x24](upload://q1duD7o9bzWuTP6aWjezml7TCYS.png "system - Most Recent Poster")](https://www.foodtalkcentral.com/u/system) | [1](https://www.foodtalkcentral.com/t/understanding-quickbooks-payroll-tax-table-update-error-1-800-223-1608/18657/1) | 2 | [1h](https://www.foodtalkcentral.com/t/understanding-quickbooks-payroll-tax-table-update-error-1-800-223-1608/18657/2) | | [Understanding QuickBooks Payroll Error PS107 +1-800-223-1608](https://www.foodtalkcentral.com/t/understanding-quickbooks-payroll-error-ps107-1-800-223-1608/18640) [new](https://www.foodtalkcentral.com/t/understanding-quickbooks-payroll-error-ps107-1-800-223-1608/18640 "new topic") | [Americas - Canada](https://www.foodtalkcentral.com/c/canada/7) | [![|24x24](upload://1Q8KV2bBz93mPnuYtm9iAYRdJbr.png "xabibe4257 - Original Poster") ](https://www.foodtalkcentral.com/u/xabibe4257)[![|24x24](upload://q1duD7o9bzWuTP6aWjezml7TCYS.png "system - Most Recent Poster")](https://www.foodtalkcentral.com/u/system) | [1](https://www.foodtalkcentral.com/t/understanding-quickbooks-payroll-error-ps107-1-800-223-1608/18640/1) | 2 | [2h](https://www.foodtalkcentral.com/t/understanding-quickbooks-payroll-error-ps107-1-800-223-1608/18640/2) | | [Full List Of QuickBooKs CusTomer™ SUPPORT®️ USA Contact™ Numbers : Your Expert Guide](https://www.foodtalkcentral.com/t/full-list-of-quickbooks-customer-support-usa-contact-numbers-your-expert-guide/18517) [new](https://www.foodtalkcentral.com/t/full-list-of-quickbooks-customer-support-usa-contact-numbers-your-expert-guide/18517 "new topic") | [Americas - Canada](https://www.foodtalkcentral.com/c/canada/7) | [![|24x24](upload://629dxMtGyMlino1LevLopQN2wkZ.png "domew40238 - Original Poster") ](https://www.foodtalkcentral.com/u/domew40238)[![|24x24](upload://q1duD7o9bzWuTP6aWjezml7TCYS.png "system - Most Recent Poster")](https://www.foodtalkcentral.com/u/system) | [1](https://www.foodtalkcentral.com/t/full-list-of-quickbooks-customer-support-usa-contact-numbers-your-expert-guide/18517/1) | 2 | [5h](https://www.foodtalkcentral.com/t/full-list-of-quickbooks-customer-support-usa-contact-numbers-your-expert-guide/18517/2) | | [Complete QuickBooks®️ Payroll & Error Support Numbers™️: 2025 Reference Guide](https://www.foodtalkcentral.com/t/complete-quickbooks-payroll-error-support-numbers-2025-reference-guide/18516) [new](https://www.foodtalkcentral.com/t/complete-quickbooks-payroll-error-support-numbers-2025-reference-guide/18516 "new topic") | [Asia](https://www.foodtalkcentral.com/c/asia/39) | [![|24x24](upload://629dxMtGyMlino1LevLopQN2wkZ.png "domew40238 - Original Poster") ](https://www.foodtalkcentral.com/u/domew40238)[![|24x24](upload://q1duD7o9bzWuTP6aWjezml7TCYS.png "system - Most Recent Poster")](https://www.foodtalkcentral.com/u/system) | [1](https://www.foodtalkcentral.com/t/complete-quickbooks-payroll-error-support-numbers-2025-reference-guide/18516/1) | 2 | [5h](https://www.foodtalkcentral.com/t/complete-quickbooks-payroll-error-support-numbers-2025-reference-guide/18516/2) | | [{Expert\~ Guide} QuickBooks® Payroll Support® Contact Info – 2025 USA Guide](https://www.foodtalkcentral.com/t/expert-guide-quickbooks-payroll-support-contact-info-2025-usa-guide/18509) [new](https://www.foodtalkcentral.com/t/expert-guide-quickbooks-payroll-support-contact-info-2025-usa-guide/18509 "new topic") | [Americas - Canada](https://www.foodtalkcentral.com/c/canada/7) | [![|24x24](upload://629dxMtGyMlino1LevLopQN2wkZ.png "domew40238 - Original Poster") ](https://www.foodtalkcentral.com/u/domew40238)[![|24x24](upload://q1duD7o9bzWuTP6aWjezml7TCYS.png "system - Most Recent Poster")](https://www.foodtalkcentral.com/u/system) | [1](https://www.foodtalkcentral.com/t/expert-guide-quickbooks-payroll-support-contact-info-2025-usa-guide/18509/1) | 4 | [5h](https://www.foodtalkcentral.com/t/expert-guide-quickbooks-payroll-support-contact-info-2025-usa-guide/18509/2) | | [{Call@ +1-855-510-6777} How Can I Talk To \~$#Expedia Vacation Package Booking Support?](https://www.foodtalkcentral.com/t/call-1-855-510-6777-how-can-i-talk-to-expedia-vacation-package-booking-support/18512) [new](https://www.foodtalkcentral.com/t/call-1-855-510-6777-how-can-i-talk-to-expedia-vacation-package-booking-support/18512 "new topic") | [Louisiana](https://www.foodtalkcentral.com/c/usa-south/louisiana/31) | [![|24x24](upload://kK4P84w88VXUqJZGohlzqgRusk0.png "avacarter - Original Poster") ](https://www.foodtalkcentral.com/u/avacarter)[![|24x24](upload://q1duD7o9bzWuTP6aWjezml7TCYS.png "system - Most Recent Poster")](https://www.foodtalkcentral.com/u/system) | [1](https://www.foodtalkcentral.com/t/call-1-855-510-6777-how-can-i-talk-to-expedia-vacation-package-booking-support/18512/1) | 6 | [5h](https://www.foodtalkcentral.com/t/call-1-855-510-6777-how-can-i-talk-to-expedia-vacation-package-booking-support/18512/2) | | [Complete List of™️ Caribbean Support™️ – The Detailed Official Guide](https://www.foodtalkcentral.com/t/complete-list-of-caribbean-support-the-detailed-official-guide/18496) [new](https://www.foodtalkcentral.com/t/complete-list-of-caribbean-support-the-detailed-official-guide/18496 "new topic") | [Asia](https://www.foodtalkcentral.com/c/asia/39) | [![|24x24](upload://9bJJjoqN6VZ8Wcp9uHm0DxK3AYf.png "jofohe - Original Poster") ](https://www.foodtalkcentral.com/u/jofohe)[![|24x24](upload://q1duD7o9bzWuTP6aWjezml7TCYS.png "system - Most Recent Poster")](https://www.foodtalkcentral.com/u/system) | [1](https://www.foodtalkcentral.com/t/complete-list-of-caribbean-support-the-detailed-official-guide/18496/1) | 2 | [6h](https://www.foodtalkcentral.com/t/complete-list-of-caribbean-support-the-detailed-official-guide/18496/2) | | [\[Call^Agent^Direct\] What Number Connects To Expedia Vacation Package Support? {Dial +1-855-510-6777}](https://www.foodtalkcentral.com/t/call-agent-direct-what-number-connects-to-expedia-vacation-package-support-dial-1-855-510-6777/18479) [new](https://www.foodtalkcentral.com/t/call-agent-direct-what-number-connects-to-expedia-vacation-package-support-dial-1-855-510-6777/18479 "new topic") | [Americas - Canada](https://www.foodtalkcentral.com/c/canada/7) |

Your API key is invalid, so it’s not doing any tests.

If you do a test at https://www.foodtalkcentral.com/admin/plugins/discourse-ai/ai-spam and paste in that URL you get a 500 error. If you wade into the logs in
/var/discourse/shared/web-only/log/rails/production.log and search for " 500 " you’ll see

Completed 200 OK in 399ms (Views: 123.1ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 22.9ms)
DiscourseAi::Completions::Endpoints::Gemini: status: 400 - body: {
  "error": {
    "code": 400,
    "message": "API key not valid. Please pass a valid API key.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "API_KEY_INVALID",
        "domain": "googleapis.com",
        "metadata": {
          "service": "generativelanguage.googleapis.com"
        }
      },
      {
        "@type": "type.googleapis.com/google.rpc.LocalizedMessage",
        "locale": "en-US",
        "message": "API key not valid. Please pass a valid API key."
      }
    ]
  }
}
1 лайк

Oh, thanks. I accidentally selected Gemini 2.0 Flash instead of Gemini 2.0 Flash Lite. Now it tests OK.

1 лайк