AI 봇 - 에이전트

:bookmark: 이 가이드는 Discourse AI - AI 봇의 에이전트(Agent) 설정 및 관리 방법을 설명합니다.

:person_raising_hand: 필요한 사용자 권한: 관리자(Administrator)

Discourse AI 봇에는 에이전트를 관리하기 위한 유연한 시스템이 포함되어 있습니다. 이 가이드에서는 다음 내용을 다룹니다:

  • AI 에이전트 상호작용 방법
  • 설정 옵션
  • 고급 설정
  • 지원되는 도구(Tools)
  • 사용자 정의 가능성

:link: AI 봇에 대한 정보 및 활성화 방법은 이 가이드에서 확인하세요.

에이전트(Agent)란?

에이전트는 Discourse 포럼에서 AI 엔진의 동작을 사용자 정의할 수 있는 강력한 기능입니다. 이는 AI의 응답과 상호작용을 안내하는 ‘시스템 메시지(System message)’ 역할을 하여, 보다 개인화되고 몰입감 있는 사용자 경험을 만드는 데 도움을 줍니다.

왜 에이전트를 사용해야 하나요?

에이전트를 사용하면 포럼의 맥락과 톤에 맞게 AI의 동작을 조정할 수 있습니다. 전문적인 환경을 위해 더 격식 차린 AI를 원하든, 커뮤니티 포럼을 위해 더 캐주얼한 AI를 원하든, 또는 역할극 게임(RPG)을 위해 특정 캐릭터를 구현하든, 에이전트는 이를 위한 유연성을 제공합니다.

그룹별 에이전트 접근 권한

또한, 특정 사용자 그룹이 특정 에이전트에 접근할 수 있도록 설정할 수 있습니다. 이를 통해 포럼의 각 섹션마다 다른 AI 동작을 설정하여 커뮤니티 상호작용의 다양성과 풍부함을 한층 더 높일 수 있습니다.

에이전트와의 상호작용

에이전트는 다음과 같은 여러 방식으로 상호작용할 수 있습니다:

  1. 개인 메시지(PM)
  2. 채팅 다이렉트 메시지(DM)
  3. 채팅 채널 멘션
  4. 공개 주제(Topic)에서 @example_bot_username을 통한 멘션

관리자는 네 개의 개별 토글을 통해 각 에이전트에 허용되는 상호작용 방법을 제어할 수 있습니다:

  • 개인 메시지 허용: 사용자가 이 에이전트와 PM을 시작할 수 있도록 허용 (기본값: 활성화)
  • 주제 멘션 허용: 주제(Topic)에서의 @mention이 응답을 트리거하도록 허용
  • 채팅 다이렉트 메시지 허용: 이 에이전트와 채팅 DM을 허용 (채팅 플러그인 필요)
  • 채팅 채널 멘션 허용: 채팅 채널에서의 @mention을 허용 (채팅 플러그인 필요)

설정 (Configuration)

에이전트를 설정하려면 discourse.example.com/admin/plugins/discourse-ai/ai-agents로 이동하세요.

주요 설정 옵션은 다음과 같습니다:

  • 시스템 프롬프트(System prompt): 대화의 방향을 설정합니다.
  • 비전 지원(Vision support): 비전 기능을 지원하는 LLM(예: GPT-4 Turbo, Claude 3)의 경우 활성화합니다.
  • 기본 모델(Default model): 멘션 가능한 에이전트 및 기본 LLM 강제 사용이 활성화된 에이전트의 경우 필수입니다.
  • 허용된 그룹(Allowed groups): Discourse 그룹 보안 설정을 사용하여 권한을 정의합니다.
  • 업로드(Uploads): 추가 지식(텍스트 파일)을 인덱싱합니다 (RAG - 검색 증강 생성 사용).
  • 활성화된 도구(Enabled tools): 특정 도구에 대한 접근을 제어합니다.
  • 실행 모드(Execution mode): “default” 모드와 “agentic” 모드 중 선택합니다 (agentic 모드는 설정 가능한 토큰 제한 및 압축을 가진 다중 턴 도구 사용을 활성화합니다).

다음은 완전한 AI 에이전트 설정 화면의 예시입니다:

고급 설정 옵션

에이전트 편집기에는 몇 가지 고급 옵션이 제공됩니다:

  • Temperaturetop_p (nucleus sampling): 창의성과 예측 가능성의 균형을 조절합니다.
  • 최대 컨텍스트 게시물 수(Max context posts): LLM에 전달되는 히스토리용 게시물 수를 제한합니다 - 게시물 수가 적을수록 비용은 줄지만, AI가 오래된 내용을 “잊게” 됩니다 (agentic 모드에서 사용 불가).
  • 실행 모드(Execution mode): "Default"는 단일 패스 응답을 위해, "Agentic"는 다음을 가진 다중 단계 도구 사용을 위해 사용됩니다:
    • 최대 턴 토큰(Max turn tokens): agentic 실행을 위한 토큰 예산
    • 압축 임계값(Compression threshold): 컨텍스트 압축을 위한 백분율 임계값 (20-99%)
  • 생각 과정 표시(Show thinking): 사용자에게 AI의 추론 과정을 표시합니다 (기본값: 활성화)
  • 승인 요구(Require approval): 특정 작업 실행 전에 인간 승인을 요구합니다.
  • 기본 LLM 강제(Force default LLM): 사용자가 이 에이전트에서 LLM을 변경하는 것을 방지합니다.
  • 응답 형식(Response format): 구조화된 출력 형식을 구성합니다.
  • 예시(Examples): AI의 동작을 안내하기 위한 Few-shot 예시 (사용자/어시스턴트 메시지 쌍).
  • 업로드 옵션(Upload options):
    • 청크 토큰(Chunk tokens): 문서 분할을 제어합니다.
    • 청크 오버랩 토큰(Chunk overlap tokens): 청크 간 오버랩을 설정합니다.
    • 대화 청크 검색(Search conversation chunks): 사용자 쿼리에 추가되는 문서 조각의 수.
    • 질문 통합 LLM(Question consolidator LLM): 사용자 질문을 결정하기 위한 LLM을 선택합니다.
    • RAG LLM 모델: RAG 처리를 위한 특정 LLM을 선택합니다.

업로드 지원 사전 요구 사항

업로드 지원을 사용하려면:

  1. ai_embeddings_enabled 설정을 활성화하세요.
  2. ai_embeddings_selected_model을 통해 임베딩 모델을 구성하세요.

Discourse AI는 다양한 임베딩 모델을 지원합니다. 호스팅 고객은 bge-large-en 모델에 대한 무료 접근 권한을 얻습니다.

:information_source: 셀프 호스터나 더 많은 선택지를 원하는 사람은 임베딩 모델을 셀프 호스팅하거나 Open AI, Google (Gemini) 등의 모델을 사용할 수 있습니다.

Discourse AI의 텍스트 분할

Discourse는 텍스트를 분할할 때 단락, 줄, 단어를 유지하기 위해 Recursive Character Text Splitter를 사용합니다. [[metadata YOUR METADATA HERE]] 구분자를 사용하여 텍스트 분할을 제어할 수 있습니다:

[[metadata about cats]]
a long story about cats
[[metadata about dogs]]
a long story about dogs

이 방법은 각 청크에 관련 데이터만 포함되도록 하여 "청크 오염(chunk contamination)"을 방지합니다.

AI 에이전트 디버깅

에이전트를 디버깅하려면:

  1. ai_bot_debugging_allowed_groups 설정에 지정된 그룹에 사용자를 추가하세요.
  2. 이 그룹의 사용자는 AI 게시물 하단에 AI 디버깅 버튼을 볼 수 있습니다.
  3. 버튼을 클릭하여 디버깅 UI 모달에 접근하세요.

:warning: 기억하세요: LLM에 모호하거나 도움이 되지 않는 정보를 제공하면, 이를 유용한 정보로 변환하는 데 큰 어려움을 겪을 것입니다.

지원되는 도구 (Tools)

Discourse AI는 다음과 같은 다양한 도구를 지원합니다:

항상 사용 가능

  • Categories (카테고리)
  • Time (시간)
  • Search (검색)
  • Read (읽기)
  • Database Schema (데이터베이스 스키마)
  • Search Settings (검색 설정)
  • Setting Context (컨텍스트 설정)
  • Random Picker (무작위 선택기)
  • Web Browser (웹 브라우저)
  • Search Meta Discourse
  • JavaScript Evaluator (JavaScript 평가기)
  • Researcher (리서처)
  • Flag Post (게시물 신고)
  • Close Topic (주제 닫기)
  • Unlist Topic (주제 목록에서 제거)
  • Lock Post (게시물 잠금)
  • Delete Topic (주제 삭제)
  • Edit Post (게시물 편집)
  • Edit Category (카테고리 편집)
  • Set Topic Timer (주제 타이머 설정)
  • Set Slow Mode (슬로우 모드 설정)
  • Move Posts (게시물 이동)
  • Grant Badge (배지 부여)

GitHub 연동

  • GitHub File Content (GitHub 파일 내용)
  • GitHub Pull Request Diff (GitHub Pull Request 차이)
  • GitHub Search Files (GitHub 파일 검색)

이 세 가지 도구는 항상 사용 가능합니다. 추가로:

  • GitHub Search Codeai_bot_github_access_token 설정이 입력되어야 합니다.

조건부 도구

  • TagsEdit Tags: 사이트에 태그 기능이 활성화된 경우 사용 가능
  • Image generation (Image, Create Image, Edit Image): 관리자 UI를 통해 사용자 정의 이미지 생성 도구가 구성되어야 합니다.
  • Google search: ai_google_custom_search_api_keyai_google_custom_search_cx 설정이 입력되어야 합니다.
  • Artifacts (Create Artifact, Update Artifact, Read Artifact): ai_artifact_security가 lax, hybrid, strict 중 하나로 설정된 경우 사용 가능
  • Assign: Assign 플러그인이 설치된 경우 사용 가능
  • Mark as Solved: Solved 플러그인이 설치된 경우 사용 가능

일부 도구는 추가 구성이나 API 키가 필요합니다.

사용자 정의 도구 지원

사용자 정의 도구 지원을 사용하여 자신의 도구를 만들 수 있습니다.

시스템 에이전트 사용자 정의

  1. 새 에이전트를 생성합니다.
  2. 사용자 정의하려는 에이전트의 시스템 프롬프트를 복사하여 붙여넣습니다.
  3. 필요에 따라 수정합니다.
  4. 중복을 피하기 위해 원본 시스템 에이전트를 비활성화합니다 (선택 사항).

검색 사용자 정의

새 에이전트의 검색을 사용자 정의하려면:

  1. 새 에이전트를 생성합니다.
  2. “search” 도구를 추가합니다.
  3. 다음을 포함한 검색 옵션을 구성합니다:

이를 통해 검색 권한을 위임하거나, 결과 수를 증가시키거나, 검색을 사이트의 특정 섹션으로 제한할 수 있습니다.

10개의 좋아요
Discourse AI - AI bot
RAG capacities of discourse-ai
Multiple AI bots, and replying in public
Experiments with AI based moderation on Discourse Meta
Two different answers from gpt4o - one right, one wrong.. !?
Renaming AI Persona -> AI Agent
New AI Persona Editor for Discourse
"Triage posts using AI" script of "Automation" plugin always includes image data in request
Setting up toxicity detection in your community
Discourse AI - AI triage
Discourse AI subagents
Setting up NSFW detection in your community
Gemini Flash 2.5 Image - now on Discourse
Content Localization - Manual and Automatic with Discourse AI
Why is my AI forum helper struggling to answer questions?
Auto-categorize topics using AI
AI Bot – Bring Your Own MCP Server
Tag topics using AI
Unlock All Discourse AI Features with Our Hosted LLM
Using PDF and attachment support with AI bots
Setting up spam detection in your community
Using Discourse AI as a Discobot
Multiple AI bots, and replying in public
AI bot - Custom tools
AI bot - Chat and PM integration
A Plug-In to convert Discourse Forum Discussions into Clear Proposal Revisions with Community-Sourced Justifications
Discourse AI
OpenAI image generation and editing now supported in Discourse AI
Can Discourse AI Suggest Relevant Topics and Send Private Messages to Users Based on Their Queries?
Renaming AI Persona -> AI Agent
Improving your results from the "Web Artifact Creator" bot with the Prompt Master bot
Discourse AI - Helper
How to generate AI replies for forum topics using Persona
Discourse AI - AI triage using Agent

A post was split to a new topic: Can I provide an image generator function to Discourse AI

What exactly does the Read tool do?

Also, mentions on posts are currently broken per this bug report.

In a nutshell it allows the LLM the ability to read topics and posts on your forum.

1개의 좋아요

Basically it reads a topic/post when url, name or ID is given and otherwise, or still, it uses embeds and what, when, why and how depends model itself, prompting etc?

2개의 좋아요

Oh sorry was replying to a different post :slight_smile:

It uses topic ID or topic ID + Post Number to find the raw markdown for a topic/post with some guards for max length.

Does not depend on embedding.

5개의 좋아요

A bit off-topic, but because I don’t have anything to ask and you guys will clean these topics every now and then, I don’t care.

Automatic titles in PMs with AI are now in the right language. Not a biggie, but its psychological value is big. Thanks!

4개의 좋아요

is there any way to add the Bot users to a group? I basically want to add an avatar flair to those users, but when adding them to a group, they don’t show up

They don’t show up, but are still there. You can be sure by trying add an AI person second time. Or you see needed group on settings of those pseudo users.

1개의 좋아요

Which part of the Discourse AI repo should I check out if I want to precisely know how the AI bot’s tools work?

Tool, Playground, Bot are all good areas to start with.

See this for example: Understanding Tools in Discourse AI System - AI Conversation - Discourse Meta

3개의 좋아요

Precisely the answer I was looking for — thank you kind sir! For anyone it may pertain to: I recommend reading through the code in this repo to be able better steer your prompts for your persona’s tools.

1개의 좋아요

게시물이 새 주제로 분리되었습니다: 채팅 기록에 의존하는 페르소나 엔지니어링

현재 “Read” 도구를 사용하여 특정 토픽의 모든 게시글을 가져오려고 하고 있습니다. 하지만 LLM 모델에는 최대 100개만 제공됩니다. 페르소나 설정에서 "Max posts"를 999로 설정해 두었지만 문제가 여전히 지속되고 있습니다.

서버 측 API 요청 제한으로 인해 이러한 문제가 발생하는 것일 수 있을까요?

@sam 이 문제에 대해 혹시 원인을 아시나요? 제가 겪고 있는 100개 게시물 제한의 원인이 무엇일 수 있을까요?

코드베이스를 직접 확인해 보진 않았지만, 코드 자체에 하드 리밋이 설정되어 있을 가능성이 있다고 생각합니다. 혹시 이걸로 어떤 걸 이루고 싶으신 건지 여쭤봐도 될까요? 이 부분이 핵심입니다.

아마 포럼 리서처 페르소나를 사용하는 게 가장 좋을 수도 있겠네요.

우리는 “저널/로그” 카테고리를 보유하고 있으며, 이 카테고리에는 주제 소유자가 4~5개월에 걸쳐 자신의 프로젝트 진행 상황을 보고하는 수백 개의 게시글이 포함된 경우가 많습니다.

제 목표는 해당 주제 내의 모든 게시글을 가져온 후, 작성자 = 주제 소유자로 필터링하여 요약을 생성하는 것입니다.

우리는 리서처(researcher) 페르소나를 사용하는 것을 고려해 보았지만, 현재는 비전(vision)을 지원하지 않습니다. 또한 사용자의 이미지도 처리해야 합니다.

1개의 좋아요

이건 포럼 리서처를 써야 해요. 이 페르소나의 정확한 용도이니까요.

2개의 좋아요

@sam 저도 원하지만, 현재 이미지 지원이 되지 않습니다. 로드맵에 있는 건지, 아니면 현재 우선순위가 아닌 건가요?

3개의 좋아요

네, 추가할 수 있어요. 큰 변경 사항은 아니에요.

3개의 좋아요