Discourse AI - 스팸 감지

:bookmark: 이 가이드는 Discourse AI의 스팸 감지 기능 설정 및 사용법을 설명합니다. 설정 과정, 스캔 기준, 분류 로직, 사용자 정의 옵션, 그리고 AI 트리아지와의 차이점을 포함합니다.

:person_raising_hand: 필요한 사용자 권한: 관리자

:megaphone: 이제 이 기능은 Starter 및 Pro 고객을 기본 활성화되며, 기존 Basic, Open Source, Creator, Business 고객에게도 적용됩니다.

Discourse AI는 최소한의 설정으로 스팸 게시물을 식별하고 표시하는 효율적인 스팸 감지 기능을 제공합니다. 이 기능은 단순함을 위해 설계되었지만, 더 넓은 워크플로우와 대규모 사용 사례를 지원하는 더 다재다능한 AI 트리아지 시스템을 보완합니다.

요약

이 가이드를 통해 다음 내용을 배울 수 있습니다:

  • AI 스팸 감지 작동 방식 및 스캔 대상 콘텐츠
  • AI가 사용하는 분류 로직 및 컨텍스트
  • /admin/plugins/discourse-ai/ai-spam을 통한 스팸 감지 설정 단계
  • 대규모 언어 모델(LLM) 선택 가이드라인
  • 스팸 감지와 AI 트리아지 간의 주요 차이점
  • 표시된(Flagged) 및 놓친(Missed) 게시물 관리 방법

AI 스팸 감지 작동 방식

어떤 콘텐츠가 스캔되나요?

AI 스팸 감지는 다음 기준에 따라 게시물을 평가합니다:

  1. 사용자 신뢰도 수준:

    • 설정된 최대 신뢰도 수준 이하의 사용자가 작성한 게시물을 스캔합니다(ai_spam_detection_max_trust_level 사이트 설정으로 제어, 기본값: 신뢰도 수준 1).
    • 더 높은 신뢰도 수준의 사용자는 제외됩니다.
    • 신뢰도 수준과 무관하게 스태프 사용자의 게시물은 항상 제외됩니다.
  2. 게시물 유형:

    • 공개 게시물(비공개 메시지 제외).
    • 추가 임계값에 따라 답변 게시물과 주제 첫 게시물 모두 포함됩니다.
  3. 게시물 수정:

    • 중요한 수정이 이루어진 게시물을 스캔합니다(예: 10자 이상 변경).
    • 동일한 게시물에 대한 스캔 사이에 10분 지연을 강제합니다.
    • 게시물당 최대 3회의 재스캔을 제한합니다.
    • 최근 24시간 이내에 수정된 게시물만 재스캔합니다.
  4. 게시 빈도:

    • 공개 주제에서 설정된 게시물 수 임계값 이하의 사용자의 게시물을 스캔합니다(ai_spam_detection_max_post_count 사이트 설정으로 제어, 기본값: 3개 게시물).
    • 이 임계값을 초과하는 사용자의 게시물은 제외됩니다.
  5. 검토 대기열:

    • 검토 대기열에서 이미 승인된 게시물은 스캔하지 않습니다.

분류 과정

기준을 충족하는 게시물은 분석을 위해 AI 에이전트로 전송됩니다. 에이전트는 구조화된 JSON 출력을 사용하여 해당 게시물이 스팸인지 아닌지 평가하고 분류 이유를 제공합니다. 평가는 다음 요소에 기반합니다:

  • 컨텍스트: 게시물 내용, 주제 제목, 카테고리, 사용자 계정 데이터(예: 사용자명, 이메일, 계정 연령, 총 게시물 수, 신뢰도 수준) 및 IP 기반 위치 정보를 포함합니다.
  • 이미지 분석: 게시물에 첨부된 최대 3개의 이미지 업로드가 분석에 포함됩니다.
  • 답변 컨텍스트: 답변 게시물의 경우, 부모 게시물 내용(최대 500자)이 포함됩니다.
  • 사이트 정보: 사이트 이름, URL, 설명 및 상위 10개 카테고리가 AI에 제공됩니다.
  • 사용자 정의 지침: 강화되거나 조정된 스캔 기준을 위한 관리자 정의 규칙.
  • 자동 감지:
    • 관련성이 없거나 홍보적인 콘텐츠(예: 광고 또는 상업적 자료)를 표시합니다.
    • 자동화되거나 봇과 유사한 행동을 식별합니다.
    • 토론에 대한 콘텐츠 관련성을 평가합니다.

기본 프롬프트 및 컨텍스트

AI는 스팸 감지를 안내하기 위해 기본 시스템 프롬프트를 사용합니다. 내장된 스팸 감지 에이전트 프롬프트는 다음을 다룹니다:

You are a spam detection system. Analyze the following post content and context.

Consider the post type carefully:
- For REPLY posts: Check if the response is relevant and topical to the thread
- For NEW TOPIC posts: Check if it's a legitimate topic or spam promotion

A post is spam if it matches any of these criteria:
- Contains unsolicited commercial content or promotions
- Has suspicious or unrelated external links
- Shows patterns of automated/bot posting
- Contains irrelevant content or advertisements
- For replies: Completely unrelated to the discussion thread
- Uses excessive keywords or repetitive text patterns
- Shows suspicious formatting or character usage

Be especially strict with:
- Replies that ignore the previous conversation
- Posts containing multiple unrelated external links
- Generic responses that could be posted anywhere

Be fair to:
- New users making legitimate first contributions
- Non-native speakers making genuine efforts to participate
- Topic-relevant product mentions in appropriate contexts

스캐너는 또한 다음을 포함한 컨텍스트 패키지를 컴파일합니다:

  • 카테고리 및 주제 메타데이터가 포함된 게시물 유형(새 주제 또는 답변).
  • 답변의 경우: 부모 게시물 내용 및 주제 작성자.
  • 작성자 데이터(사용자명, 이메일, 계정 연령, 총 게시물 수, 신뢰도 수준, IP 기반 위치).
  • 처리를 위해 5000자로 절단된 게시물 텍스트.
  • 게시물에 첨부된 최대 3개의 이미지 업로드.

AI 스팸 감지 설정

설정 가이드

  1. 설정 접근:
    /admin/plugins/discourse-ai/ai-spam으로 이동합니다.

  2. LLM 선택:

:information_source: Discourse에서 호스팅되는 사이트인 경우

LLM 목록에서 CDCK 호스팅 소형 LLM을 선택할 수 있습니다.

  • 포럼의 필요성에 맞는 언어 모델을 선택합니다. LLM 설정에 대해서는 대규모 언어 모델(LLM) 설정 페이지를 참조하세요.
  • LLM 설정에 액세스하려면 /admin/plugins/discourse-ai/ai-llms로 이동합니다.
  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 트리아지와의 차이점

스팸 감지는 스팸 식별을 위해 특별히 설계된 반면, AI 트리아지는 더 넓은 게시물 관리 작업을 지원합니다.

기능 AI 스팸 감지 AI 트리아지
복잡성 단순화되고 의견이 담긴 설정 고도로 사용자 정의 가능하고 유연함
주요 사용 사례 최소한의 오버헤드로 스팸 감지 분류, 태그, 답변, 스팸 감지, nsfw 감지를 위한 고급 워크플로우
동작 스팸 표시, 게시물 숨김, 사용자 침묵 처리 태그, 분류, 게시물 숨김, 답변 추가, 게시물 표시, 사용자 침묵 처리
권장 사항 대부분의 상황에서 쉬운 설정 및 효과적 풍부한 고도로 사용자 정의 가능한 워크플로우에 사용

자세한 내용은 Discourse AI - AI 트리아지를 참조하세요.


LLM 선택 권장 사항

스팸 감지의 성능은 선택한 LLM에 따라 달라집니다.

다음과 같은 대부분의 저비용 LLM이 효과적으로 작동합니다:

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

최적의 적합성을 찾기 위해 다양한 모델을 실험해 보세요. /admin/plugins/discourse-ai/ai-llms를 통해 모델을 구성합니다.


스팸 스캐너 동작 테스트

설정 페이지에서 직접 스팸 감지 규칙을 테스트할 수 있습니다.

  • 테스트 필드에 게시물 URL 또는 ID를 붙여넣습니다.
  • 분류 결과 및 AI의 결정 이유를 검토합니다.
  • 저장되지 않은 변경 사항은 테스트 중에 적용되므로 위험 없이 실험할 수 있습니다.

표시된 및 놓친 게시물 관리

표시된 게시물 처리

게시물이 스팸으로 감지되면 시스템은 다음을 수행합니다:

  • 게시물을 스팸으로 **표시(Flag)**하고 검토 대기열에 추가합니다.
  • 게시물을 작성한 사용자를 침묵(Silence) 처리합니다.
  • 게시물을 공개 보기에서 숨깁니다.
  • 스팸 게시물이 주제의 첫 게시물인 경우 주제를 비공개로 만듭니다.

표시된 게시물은 모더레이션 대기열에 나타납니다. 관리자는 다음을 수행할 수 있습니다:

  • 잘못 스팸으로 분류된 합법적인 게시물을 승인합니다.
  • 시스템의 정확성을 유지하기 위해 스팸 주제를 거부합니다.

:warning: 중요: 잘못 분류된 게시물에 대한 스팸 표시를 거부하세요. 표시가 해결될 때까지 사용자는 침묵 상태로 유지됩니다.

놓친 스팸 처리

놓친 스팸은 감지를 우회했지만 커뮤니티에 의해 표시된 게시물을 의미합니다. 모더레이터는 필요에 따라 이를 관리할 수 있습니다.


모범 사례

  • 시스템 정확도를 개선하기 위해 표시된 및 놓친 스팸을 정기적으로 모니터링하세요. 클릭 가능한 메트릭이 이 과정을 단순화합니다.
  • 사용자 정의 지침을 엣지 케이스에 대해 평가하기 위해 테스트 케이스를 사용하세요.
  • 필요할 때 LLM 설정을 검토하고 조정하세요.
  • ai_spam_detection_max_trust_levelai_spam_detection_max_post_count 사이트 설정을 사용하여 커뮤니티의 필요성에 따라 스캔될 사용자를 조정하세요.

추가 자료


:mega: AI 스팸 감지를 효과적으로 구성하면 수동 모더레이션 노력을 줄여 스팸이 없는 깨끗한 커뮤니티를 보장할 수 있습니다.

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
Filtering spam/troll accounts
Inappropriate posts are spamming the Anthias Discourse forums
Experiments with AI based moderation on Discourse Meta
What's the cheapest/best AI to use for AI Spam?
Anyone else currently undergoing mass spam attack?
Discourse AI spam detection replaces Akismet plugin
Failing update
Random discussion about Discourse LLM setup
Discourse AI spam detection "Scan log" is frequently truncated
Best practices for AI antispam plus AI post triage operating together?
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
Support formatting of flag "reason" text
AI + Automation Governance: Orchestrating Independent AI Triage Scripts
Watched words to block recent spam attack
Discourse AI
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
Watched words: Does Discourse automatically remove unsupported html tag
Documentation around actions available to moderators somewhat lacking
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
Setting up spam detection in your community
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개의 좋아요

Gemini 2.0 Flash를 사용하여 AI 스팸 감지를 활성화했지만, 이 같은 스팸을 차단하는 데 도움이 되지 않는 것 같습니다. 이렇게 명백한 스팸이 필터를 통과한 것은 처음입니다. 혹시 이것이 Discourse 사이트를 위해 특별히 설계된 건가요?

| [업데이트 후 QuickBooks Payroll 오류 +1-800-223-1608 단계별 해결](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) | |----|----|----|----|----|----| | [QuickBooks Payroll 세금 테이블 업데이트 오류 이해하기 +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) | | [QuickBooks Payroll 오류 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) | | [QuickBooks 고객 지원 USA 연락처 번호 전체 목록: 전문가 가이드](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) | | [QuickBooks Payroll 및 오류 지원 번호 전체 목록: 2025 참고 가이드](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) | | [{전문가 가이드} QuickBooks Payroll 지원 연락처 정보 – 2025 USA 가이드](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) | | [{전화 +1-855-510-6777} Expedia 휴가 패키지 예약 지원에 어떻게 연결할 수 있나요?](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) | | [Caribbean 지원 전체 목록 – 상세 공식 가이드](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) | | [\[에이전트 직접 통화\] Expedia 휴가 패키지 지원으로 연결되는 번호는 무엇인가요? {+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개의 좋아요