# AI 요약기를 비영어권 언어로 사용자 설정하는 방법

**URL:** https://meta.discourse.org/t/customizing-ai-summarizer-to-use-non-english-languages/372644
**Category:** Support
**Tags:** ai, ai-summarize
**Created:** [7월 2, 2025, 3:04오후 UTC](https://meta.discourse.org/t/customizing-ai-summarizer-to-use-non-english-languages/372644 "2025-07-02T15:04:08Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![Ivan\_Rapekas](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ivan_rapekas/32/248924_2.png) [@Ivan\_Rapekas](https://meta.discourse.org/u/Ivan_Rapekas)
#### Post date: [7월 2, 2025, 3:04오후 UTC](https://meta.discourse.org/t/customizing-ai-summarizer-to-use-non-english-languages/372644/1 "2025-07-02T15:04:08Z")

</div>

안녕하세요, 저는 로컬에서 `google/gemma-3-4b` 모델을 최신 버전의 Discourse와 함께 사용하고 있습니다. 이 모델은 특정 언어를 잘 처리합니다. API나 LM Studio를 통해 테스트해 보면, 제가 요청한 언어로 요약을 생성해 줍니다.

하지만 현재 Discourse는 항상 영어로 요약을 생성하고 있습니다. 아래 단계는 요약 언어(비영어)를 하드코딩하는 방법을 설명합니다.

  

> 중요! 다음 재빌드(rebuild) 시 변경 사항이 \_실수\_됩니다.

하드코딩할 줄은 아래 두 파일에 있습니다. `ai_personas` 테이블의 데이터베이스 값은 현재(2025년 7월) 사용되지 않습니다. 비프로덕션 환경에서 실험하는 분들을 위해, 여러분의 모국어를 하드코딩할 수 있습니다:

1. 서버에 SSH로 접속합니다.

2. 컨테이너에서 호스트 파일시스템으로 하드코딩할 파일 `summarize.rb`를 복사합니다:

3. 이제 파일을 편집하여 영어 시스템 프롬프트를 원하는 언어로 교체합니다:

4. 다음으로, 두 번째 파일에 대해 동일한 작업을 수행합니다:

5. 수정된 파일을 컨테이너로 복사합니다:

6. 그런 다음 컨테이너를 커밋하고 재시작합니다:

7. 결과를 확인합니다 (새로운 토픽에 대해):

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [7월 2, 2025, 3:11오후 UTC](https://meta.discourse.org/t/customizing-ai-summarizer-to-use-non-english-languages/372644/2 "2025-07-02T15:11:09Z")

</div>

이 모든 작업을 수행할 필요가 없습니다. 이제 관리자 설정에서 요약 작업을 수행하는 페르소나를 변경할 수 있습니다.

기존 페르소나의 설정을 참고하여 새로운 페르소나를 생성하고, 시스템 프롬프트를 원하는 대로 변경한 후 `/admin/plugins/discourse-ai/ai-features/1/edit`에서 요약 기능이 해당 페르소나를 사용하도록 설정하세요.

---

<div class="post-metadata">

### Author: ![Ivan\_Rapekas](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ivan_rapekas/32/248924_2.png) [@Ivan\_Rapekas](https://meta.discourse.org/u/Ivan_Rapekas)
#### Post date: [7월 2, 2025, 3:41오후 UTC](https://meta.discourse.org/t/customizing-ai-summarizer-to-use-non-english-languages/372644/3 "2025-07-02T15:41:30Z")

</div>

> [@Falco](#):
>
> 이 모든 것을 할 필요가 없습니다

음… 언어 지원에 대한 최신 내용은 이 주제에서 찾을 수 있었습니다. 답변해 주셔서 감사합니다.

기존 봇의 클론으로 적절한 요약 봇을 만들기 위한 첫 번째 시도는 실패했습니다. 여전히 영어를 생성합니다. 아마 제가 무언가를 잘못하고 있는 것 같습니다.

---

<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: [7월 2, 2025, 9:18오후 UTC](https://meta.discourse.org/t/customizing-ai-summarizer-to-use-non-english-languages/372644/4 "2025-07-02T21:18:32Z")

</div>

> [@Ivan\_Rapekas](#):
>
> `google/gemma-3-4b`

이 모델로는 얼마나 잘 수행될지 확신이 없네요. 성능이 그렇게 강력하지는 않습니다.

---

<div class="post-metadata">

### Author: ![jrgong](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jrgong](https://meta.discourse.org/u/jrgong)
#### Post date: [2월 16, 2026, 11:09오전 UTC](https://meta.discourse.org/t/customizing-ai-summarizer-to-use-non-english-languages/372644/5 "2026-02-16T11:09:18Z")

</div>

여러분은 영어가 아닌 언어의 AI 요약에 대해 어떤 우회 방법이나 접근 방식을 사용하시나요?

예를 들어, 로케일이 독일어로 설정되어 있어도 채팅 요약은 여전히 영어로 생성되며, 개별 채팅 메시지에 대한 명확한 텍스트 마크다운 링크도 링크로 올바르게 포맷되지 않습니다.

Gemini 2.5 Lite로 테스트해 보았습니다.

 ![CleanShot 2026-02-16 at 12.08.37@2x](https://global.discourse-cdn.com/meta/original/4X/9/f/b/9fbe7fb126ad500d4c4383976bbddb372a8e2baa.png)

---

<div class="post-metadata">

### Author: ![Ivan\_Rapekas](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ivan_rapekas/32/248924_2.png) [@Ivan\_Rapekas](https://meta.discourse.org/u/Ivan_Rapekas)
#### Post date: [2월 16, 2026, 11:43오전 UTC](https://meta.discourse.org/t/customizing-ai-summarizer-to-use-non-english-languages/372644/6 "2026-02-16T11:43:02Z")

</div>

안녕하세요, 저는 여전히 위에서 설명한 우회 방법을 사용하고 있습니다. 사용자 정의 Personas를 사용한 트릭도 시도해 보았지만 작동하지 않습니다. 아마 제가 무언가를 잘못하고 있는 것 같지만, 제 입장에서는 이 방법이 덜 번거롭습니다.

간단히 요약하자면, [GitHub](https://github.com/discourse/discourse/tree/main/plugins/discourse-ai/lib/personas)에서 다운로드한 템플릿을 준비하여 필요에 맞게 수정하고, 재빌드(rebuild) 후 매번 적용해야 합니다. 2~3개월에 한 번씩 이러한 파일의 새 버전이 있는지 확인하는 것을 잊지 마세요.

`$HOME` 디렉터리에 실행 가능한 스크립트인 `do_it_after_rebuild.sh`를 생성하세요.

```plaintext
#/bin/bash
#
# https://github.com/discourse/discourse/tree/main/plugins/discourse-ai/lib/personas
docker cp app:/var/www/discourse/plugins/discourse-ai/lib/personas/tools/summarize.rb orig_summarize.rb
docker cp app:/var/www/discourse/plugins/discourse-ai/lib/personas/summarizer.rb orig_summarizer.rb
docker cp app:/var/www/discourse/plugins/discourse-ai/lib/personas/short_summarizer.rb orig_short_summarizer.rb
docker cp app:/var/www/discourse/plugins/discourse-ai/lib/personas/discover.rb orig_discover.rb

rm GeoLite2*
wget https://raw.githubusercontent.com/8bitsaver/maxmind-geoip/release/GeoLite2-City.mmdb
wget https://raw.githubusercontent.com/8bitsaver/maxmind-geoip/release/GeoLite2-ASN.mmdb

docker cp GeoLite2-City.mmdb app:/var/www/discourse/vendor/data/
docker cp GeoLite2-ASN.mmdb app:/var/www/discourse/vendor/data/
docker cp summarize.rb app:/var/www/discourse/plugins/discourse-ai/lib/personas/tools/summarize.rb
docker cp summarizer.rb app:/var/www/discourse/plugins/discourse-ai/lib/personas/summarizer.rb
docker cp short_summarizer.rb app:/var/www/discourse/plugins/discourse-ai/lib/personas/short_summarizer.rb
docker cp discover.rb app:/var/www/discourse/plugins/discourse-ai/lib/personas/discover.rb
docker commit app
sudo /var/discourse/launcher restart app

```

재빌드 후 실행하세요:

```plaintext
./do_it_after_rebuild.sh

```

> **여기에 파일 있음**
>
> [여기](https://github.com/discourse/discourse/tree/main/plugins/discourse-ai/lib/personas)에서 주기적으로 다운로드해야 하는 파일에 다음 변경 사항을 적용하세요. (저는 차이점(diff)만 표시합니다 - 이 줄들을 파일에 수동으로 추가해야 합니다):
> 
> ```plaintext
> diff discover.rb orig_discover.rb
> 35d34
> < * Use always German language.
> 80d78
> <
> 
> ```
> 
> ```plaintext
> └─# diff short_summarizer.rb orig_short_summarizer.rb
> 12c12,13
> < Du bist ein fortgeschrittener Bot, um den Text zusammenzufassen. Sie analysieren den bereitgestellten Text und erzeugen eine kurze Zusammenfassung aus einem einzigen Satz, in dem das Hauptthema und die aktuellen Ereignisse dem Gesprächspartner ohne vorläufigen Kontext verständlich sind.
> ---
> > You are an advanced summarization bot. Analyze a given conversation and produce a concise,
> > single-sentence summary that conveys the main topic and current developments to someone with no prior context.
> 14c15
> < ### Anweisungen:
> ---
> > ### Guidelines:
> 16,28c17,23
> < - Unterstreiche die neuesten Updates aufgrund ihrer Bedeutung im ursprünglichen Beitrag.
> < - Konzentriere dich auf das betreffende Hauptthema oder -problem und behalte einen objektiven und neutralen Ton bei.
> < - Schließen Sie fremde Details oder subjektive Meinungen aus.
> < - Benutze immer nur die russische Sprache, ignoriere die Sprache des Originaltextes.
> <
> 
> ```
> 
> ```plaintext
> └─# diff summarizer.rb orig_summarizer.rb
> 12,13c12,13
> < Sie sind ein fortgeschrittener Bot, um kurze Inhalte zu erstellen, die kurze, zusammenhängende Auszüge aus dem bereitgestellten Text erzeugen.
> < Sie können einen vorhandenen Lebenslauf auch ergänzen, indem Sie zusätzliche Beiträge hinzufügen, wenn Sie dazu aufgefordert werden.
> ---
> > You are an advanced summarization bot that generates concise, coherent summaries of provided text.
> > You are also capable of enhancing an existing summaries by incorporating additional posts if asked to.
> 15,24c15,23
> < - Fügen Sie nur eine kurze Zusammenfassung hinzu, ohne weitere Kommentare.
> < - Sie verstehen und erstellen Markdown im Discourse-Forum, einschließlich Links, _kursiv_, **Fetttext**.
> < - Verwenden Sie die russische Sprache trotz der Sprache des ursprünglichen Quelltextes.
> < - Versuchen Sie, den Lebenslauf auf 400 Wörter zu beschränken.
> < - Jeder Eintrag wird als "<POST_NUMBER>) <USERNAME> <MESSAGE>" ausgegeben
> < - Zitieren Sie bestimmte bemerkenswerte Publikationen mit dem Format [DESCRIPTION]({resource_url}/POST_NUMBER)
> < - Beispiel: Links zu den 3. und 6. Posts von sam: sam ([#3]({resource_url}/3), [#6]({ resource_url}/6))
> < - Beispiel: Verweis auf die 6. Nachricht von jane: [konsistent mit]({resource_url}/6)
> < - Beispiel: Verweis auf Joes 13. Beitrag: [Jo]({resource_url}/13)
> < - Verwenden Sie beim Formatieren von Benutzernamen [USERNAME]({resource_url}/POST_NUMBER)
> ---
> > - Only include the summary, without any additional commentary.
> > - You understand and generate Discourse forum Markdown; including links, _italics_, **bold**.
> > - Maintain the original language of the text being summarized.
> > - Aim for summaries to be 400 words or less.
> > - Jeder Beitrag ist als "<POST_NUMBER>) <BENUTZERNAME> <NACHRICHT>" formatiert
> > - Zitieren Sie bestimmte bemerkenswerte Beiträge im Format [BESCHREIBUNG] ({resource_url} / POST_NUMBER)
> > - Beispiel: Link zum 6. Beitrag von jane: [einverstanden mit]({resource_url}/6)
> > - Beispiel: Link zum 13. Beitrag von joe: [joe]({resource_url}/13)
> > - Verwenden Sie beim Formatieren von Benutzernamen [BENUTZERNAME] ({resource_url} / POST_NUMBER)
> Nr.26,30c25,28
> < Отформатируйте свой ответ в виде объекта JSON с помощью кадинственного ключа с именем "Zusammenfassung", который имеет значение "Zusammenfassung".
> < Ваши выходные данные должны быть в следующем формате:
> < <Ausgabe>
> < {"zusammenfassung": "xx"}
> < </Ausgabe>
> ---
> > Formatieren Sie Ihre Antwort als JSON-Objekt mit einem einzelnen Schlüssel namens "summary", der die Zusammenfassung als Wert enthält.
> > Ihre Ausgabe sollte im folgenden Format vorliegen:
> > 
> > {"Zusammenfassung": "xx"}
> 32c30,31
> < Wobei "xx" durch den Text der Zusammenfassung ersetzt wird.
> ---
> > Where "xx" is replaced by the summary.
> > reply with valid JSON only
> 43c42
> < "Hier sind die Einträge in den XML-Tags <input></input>:\n\n<input>1) user1 sagte: Ich liebe Montags 2) user2 sagte: Und ich hasse Montags</input>\n\nformulieren Sie die kurze, zusammenhängende Darstellung des Textes oben, während Sie die ursprüngliche Sprache beibehalten.",
> ---
> > "Here are the posts inside <input></input> XML tags:\n\n<input>1) user1 said: I love Mondays 2) user2 said: I hate Mondays</input>\n\nGenerate a concise, coherent summary of the text above maintaining the original language.",
> 46c45
> < "Zwei Benutzer teilen ihre Gefühle für Montag. [user1]({resource_url}/1) hasst sie, während [user2]({resource_url}/2) sie liebt.",
> ---
> > "Two users are sharing their feelings toward Mondays. [user1]({resource_url}/1) hates them, while [user2]({resource_url}/2) loves them.",
> 
> ```
> 
> ```plaintext
> └─# diff summarize.rb orig_summarize.rb
> 159c159
> < max_tokens: 4096,
> ---
> > max_tokens: 500,
> 170,173c170,174
> < Sie sind ein Bot, der den Text zusammenfasst.
> < Sie sind in der Lage, Text effektiv auf wichtige Gedanken zu reduzieren.
> < Sie verstehen und können Markdown-Markdown in Discourse generieren.
> < Fügen Sie bei Bedarf Links im Format #{topic hinzu.url}/POST_NUMBER, zum Beispiel: [link](#{topic.url}/77)
> ---
> > You are a summarization bot.
> > You effectively summarise any text.
> > You condense it into a shorter version.
> > You understand and generate Discourse forum markdown.
> > Try generating links as well the format is #{topic.url}/POST_NUMBER. eg: [ref](#{topic.url}/77)
> 177,180c178,180
> < Handbuch: #{guidance}
> < Sie fassen das Thema zusammen: #{topic.title}
> < Bitte gib eine Antwort auf Russisch an.
> < Benutze 400 Wörter in deiner Antwort:
> ---
> >
> 
> ```
