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_level 및 ai_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
Anyone else currently undergoing mass spam attack?
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?
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
Best practices for AI antispam plus AI post triage operating together?
Random discussion about Discourse LLM setup
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
AI agents signing up for accounts
Human-driven copy-paste spam
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?

이 부분에 대해 상당한 테스트를 해보았지만, 일관된 결과를 얻지 못하고 있습니다. 참고로 gpt-4o 모델을 사용하고 있습니다.

정확도를 테스트하기 위해 다음과 같은 간단한 지시를 주었습니다:

당신은 스팸 감지 시스템입니다. 다음 콘텐츠와 컨텍스트를 분석하세요.
아래의 참고 사항을 확인하세요. 아래 항목 중 *어느 하나라도* 참이면 스팸으로 표시하세요:
- 사용자 이름이 정확히 "testjon"인 경우, *항상* 스팸입니다.
- "SPAM - It's Jon!" 또는 "NOT SPAM"으로만 응답하세요.

testjon이라는 사용자 이름으로 게시글을 테스트해 보았을 때, NOT SPAM으로 결과가 나옵니다. 지시를 제대로 따르지 않는 것 같습니다. 조언이 있으신가요?

다른 분들 중 AI 스팸 감지에 대해 좋은 또는 나쁜 경험을 해 보신 분이 계신가요?

이런 상황에서 일이 어떻게 돌아가는지는 모르겠지만, 일반적으로 인용된 문장은 매우 쉽게 깨질 수 있습니다. 이 문장은 ANY(어떤/아무)의 의미를 이해하지 못하고, 처리할 수 있는 한 무사히 진행합니다. 그리고 거기서 마침내 NOT SPAM(스팸이 아님)을 찾게 되었습니다.

1개의 좋아요

그러니까 'ANY’에 대한 굵게 표시를 제거하라는 말씀인가요? 아니면 '아래 항목 중 하나라도’라는 전체 문장을 삭제하라는 말씀인가요?

더 논리적이고 정확하게 작성해야 한다는 겁니다. AI가 아무 방식으로든 선택하도록 내버려 둘 수 없어요. AI는 숫자를 세지 못하며, 처음부터 끝까지 다 읽고 나서 다시 돌아가서 논리적으로 작동하려 하지 않거든요. 지적인 ADHD를 가진 3살 아이에게 지시를 내리듯 아주 쉽게 설명해 보세요. 예시는 틀린 것이 아니지만, 토큰 사용량을 늘릴 수 있습니다.

1개의 좋아요

정말 멋진 정보네요. 예를 들어, 이 시나리오를 다르게 작성할 수 있을까요?

1개의 좋아요

이런 느낌으로요.

당신은 스팸 탐지 시스템입니다. 당신의 역할은 이 포럼의 높은 품질을 유지하기 위해 콘텐츠를 조용히 분석하는 것입니다. 게시물이 스팸인지 여부를 정의할 때 규칙을 따라야 합니다. 스팸을 발견하면, 규칙에 명시된 대로 응답합니다. 지시된 응답만 사용합니다.

## 스팸 규칙

저는 이걸 당신을 위해 하는 게 아닙니다 😏 하지만 설명과 예시가 필요합니다. 빠르고 대충 든 예시:
* 게시물이 도박, 성, 암호화폐 등 유사한 것(이 맥락에서 '유사한'은 위험한 표현입니다, 참고로)과 연결된 외부 링크가 있으면, 해당 게시물은 스팸으로 분류됩니다. 예시: www.buy-crypto.deal

이것은 케이스별로 조정해야 합니다. 왜냐하면 거짓 양성(false positives)과 거짓 음성(false negatives)이 발생할 수 있기 때문입니다.

그리고 콘텐츠에 대한 몇 가지 가이드라인도 제공해야 합니다. 하지만 테스트할 때:

* 사용자 이름이 "testjon"이면 콘텐츠 분석을 건너뛰고 즉시 스팸으로 분류합니다. 당신의 응답은 "SPAM - it’s Jon"입니다.

참고로, 사용자(계정)를 볼 수 있나요?

## 기타 콘텐츠 규칙

게시물이 스팸 분석을 통과했고 그것이 legitimate한 콘텐츠임이 확실하다면, 당신의 유일한 응답은 "NOT SPAM"입니다.

이런 식입니다. 물론 테스트해야 합니다. 그리고 잘못된 응답을 받을 때마다 혼동의 원인을 찾아보세요. 하지만 AI가 무엇을 할지 선택할 기회를 주지 마세요. 그러면 AI는 마지막, 가장 쉬우거나 가장 좋은 방향으로 갈 것입니다. AI는 응답하고 만족해야 한다는 코딩된 욕구가 있으니까요.

방금 이 기능을 활성화했는데, 어떻게 될지 기대가 됩니다!

사용자의 신뢰 수준에 따라 설정하거나 고려할 사항이 있을까요?

예를 들어, TL2 이상의 사용자는 AI가 개입할 필요가 없습니다. 그들은 자신의 위치를 확보했으므로 스캔 대상에서 제외되어야 합니다. 만약 그들이 문제를 일으킨다면, 그들과 좀 이야기를 나누어야 할 것 같습니다 :sweat_smile:

2개의 게시글이 새 주제로 분리되었습니다: Discourse AI 플러그인 누락

Akismet을 대체하는 것이므로, AI에 따른 LLM 비용을 원치 않는다면 스팸 감지/방지를 위한 가장 좋은 대안은 무엇일지 궁금합니다.

2개의 좋아요

실제로 Gemini 2.0 Flash는 무료로 사용 가능합니다. 물론 하루에 100만 건의 요청을 보내는 경우를 제외하구요. 현재 제 포럼에서는 비용이 전혀 들지 않는 상태에서 잘 작동하고 있으며, Akismet보다 확실히 더 정확하고 "똑똑"합니다.

하지만 AI 스팸 감지 방식이 실패할 경우를 대비해, 제 사이트에는 여전히 Akismet 플러그인이 설치되어 있으며 필요할 때 언제든 다시 사용할 준비가 되어 있습니다. 여러분도 여전히 설치할 수 있을 거라고 생각합니다. (다만 비추천(deprecated) 대상이므로 영원히 유지되지는 않을 것 같네요). 또한 신뢰 수준(Trust Levels)은 스팸을 관리하는 데 도움이 되는 Discourse의 근본적인 핵심 기능임을 기억해 주세요. :+1:

5개의 좋아요

오, 그거 정말 멋지네요. LLM에서 비용이 전혀 들지 않도록 토큰 사용량에 한도를 설정하는 것도 가능한가요?

2개의 좋아요

제가 아는 바로는, 한도를 초과하면 LLM API가 더 이상 응답하지 않을 것 같습니다. 제 Google Cloud Console 계정에는 결제 계정이 연결되어 있지 않지만, 무료 티어에서 여전히 API를 무료로 사용할 수 있으니 걱정하지 않으셔도 될 것 같습니다. :+1:

5개의 좋아요

게시물이 새 주제로 분리되었습니다: 편집 및 병합에 대한 AI 스팸 감지 개선

모델을 호스팅하는 서비스의 “API 키”는 어디서 받을 수 있나요?

당신이 우리 호스팅을 사용 중이라면 LLM Small을 사용할 수 있습니다.

아니라면, LLM을 설정하고 OpenAI/Google/Anthropic/X/등에서 키를 받아야 합니다.

3개의 좋아요

아, Discourse가 아니라 그쪽에서 발급한 API 키군요.

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) |

API 키가 유효하지 않아 테스트가 수행되지 않고 있습니다.

https://www.foodtalkcentral.com/admin/plugins/discourse-ai/ai-spam에서 테스트를 실행하고 해당 URL을 붙여넣으면 500 오류가 발생합니다. /var/discourse/shared/web-only/log/rails/production.log 로그를 확인하고 " 500 "을 검색하면 다음 내용을 볼 수 있습니다.

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개의 좋아요

아, 감사합니다. 실수로 Gemini 2.0 Flash Lite 대신 Gemini 2.0 Flash를 선택했었네요. 이제 테스트가 정상적으로 통과됩니다.

1개의 좋아요