제게 있는 요청은 단 하나뿐이며 항상 동일합니다. 이 기능을 위한 프롬프트가 있으니 코드 어딘가에 숨기지 말고 공개해 주세요. 제가 필요한 것은 단 하나의 문장만 추가하는 것입니다: ‘항시 핀란드어를 사용하라’. 이것뿐입니다. 그러면 갑자기 모든 곳에서 전역적으로 사용될 수 있습니다.
하지만 지금은 제 시간, 활성 사용자의 시간, 그리고 이 서비스를 필요로 할 수 있는 익명 사용자의 시간까지 모두 낭비하고 있습니다.
이것은 정말 훌륭한 작업입니다. 하지만 그 한 가지 기능이 빠져서… 아니요. 저는 이 기능을 제 사용자에게 제공하고 싶습니다. 왜냐하면 그들이 사용할 수 있다면 누구나 사용할 수 있기 때문입니다. 하지만 핀란드어 포럼에서 영어로 이 내용을 생성하고 요약하는 등의 작업은 전혀 의미가 없습니다.
정말 골치 아픈 문제네요! 프롬프트를 사용자 정의 가능하게 만드는 것은 정말 어려운 과제입니다.
구체적인 사항을 생각해 보겠습니다. 예를 들어 다음을 가져다 보겠습니다:
CompletionPrompt.seed do |cp|
cp.id = -306
cp.name = "explain"
cp.prompt_type = CompletionPrompt.prompt_types[:text]
cp.messages = { insts: <<~TEXT }
You are a tutor explaining a term to a student in a specific context.
I will provide everything you need to know inside <input> tags, which consists of the term I want you
to explain inside <term> tags, the context of where it was used inside <context> tags, the title of
the topic where it was used inside <topic> tags, and optionally, the previous post in the conversation
in <replyTo> tags.
Using all this information, write a paragraph with a brief explanation
of what the term means. Format the response using Markdown. Reply only with the explanation and
nothing more.
TEXT
end
어떻게 해결하고 사용자 정의 가능하게 만들 수 있을까?
번역 시스템을 사용하고 지시문을 server.en.yml로 이동
"Completion Prompt"를 폐기하고 Ai Persona 모델을 도입
“Completion Prompt” 모델을 위한 에디터 제공
프롬프트 엔지니어링으로 문제를 해결
1. 번역 시스템을 사용하고 지시문을 server.en.yml로 이동
장점
여러 언어에 대한 지원을 자동으로 포함하여 배포할 수 있습니다
시스템이 이미 존재하므로 새로 구축할 것이 없습니다
관리자 UI의 로컬라이제이션 오버라이드를 통해 매우 쉽게 사용자 정의할 수 있습니다
단점
많은 LLM이 "영어 이외의 언어"에서 잘 작동하지 않으며, 번역 시 성능이 훨씬 떨어질 수 있습니다
사람들이 tags를 번역하면 완전히 깨질 수 있습니다 (예: <title>)
2. AI Persona 중심으로 통합
장점
대부분의 UI가 이미 존재합니다
AI 어시스턴트에 항목을 추가/제거하는 것이 매우 쉽습니다
단점
번역과 함께 배포되지 않습니다
특정 기능에 사용할 페르소나를 지정하기 위한 UI를 구축해야 합니다: (이것은 게시물 설명용인가요? 작성기 어시스턴트용인가요? 봇 제목 생성기용인가요?) 이 중 일부는 1:1 관계이고 일부는 1:N 관계입니다
일부 페르소나는 봇 대화에는 의미가 없습니다. <replyTo> 태그와 <item> 태그, <input> 태그가 필요하기 때문입니다.
3. Completion Prompts를 위한 UI 제공
장점
페르소나와의 명확한 분리, 혼란 감소
사용자에게 새로운 completion prompt를 추가할 수 있는 것이 좋습니다 … 번역 아래에 무언가를 원한다면, 문제없습니다
편집이 쉽습니다
단점
“drift” 처리가 복잡합니다 - 사용자가 프롬프트를 오버라이드하고 우리가 원래 프롬프트를 수정하여 <something_new> 태그를 추가한다면, 사용자가 어떻게 알 수 있을까요?
4. 프롬프트 엔지니어링으로 문제를 해결
이 마법을 성공적으로 수행할 수 있다면, 조금 더 사용자 정의 지시를 추가하면 좋을 수 있습니다. 예를 들어 "중요: 모든 답변은 핀란드어로 작성되어야 합니다"를 추가하는 것 등이 있겠죠. 하지만 일관되게 작동하도록 만드는 것은 어려울 것입니다.
장점
마법처럼, 그냥 작동합니다
단점
현실적으로는 일관되게 작동할 가능성이 매우 낮으며, 적절한 언어로 된 사용자 정의 지시는 모델을 훨씬 더 잘 기반(ground)하게 해줍니다
개인적으로는 실제로 (3)에 기울어 있습니다. 특히 커스텀 프롬프트를 추가할 수 있는 능력을 제공하고 강한 분리를 제공하기 때문입니다. 하지만 (2)가 해결책으로서 완전히 이해가 됩니다. 아마도 이것이 성공한다면 많은 코드를 통합할 수 있어 매우 좋습니다. 우리는 먼저 아이디어를 가지고 실험해 보고 승자를 결정해야 합니다.
우리는(최종 사용자 관리자로서) 이런 상황에서 프롬프트 전체를 엔지니어링할 필요가 없습니다. 프롬프트에 특정 언어를 사용하도록 요청하는 것만 추가하면 됩니다. 저는 코딩에 대해 아무것도 알지 못하지만, 일반적으로 텍스트에 텍스트 문자열을 추가하는 것은 매우 간단한 일 아닙니까? 그리고 여기서는 단순히 텍스트만 전송하고 있는 거 아닌가요?
이것은 일반적인 프롬프트 커스터마이징보다는 언어 문제에 특화된 내용입니다… 하지만 만약 언어 드롭다운 메뉴가 있다면, 태그를 제외하고 AI에게 프롬프트를 번역하도록 요청한 후 그 프롬프트를 저장/보낼 수 있을까요?
프롬프트를 핀란드어로 번역하는 중AI
<> 태그를 제외하고 이것을 핀란드어로 번역해 줘:
You are a tutor explaining a term to a student in a specific context. I will provide everything you need to know inside <input> tags, which consists of the term I want you to explain inside <term> tags, the context of where it was used inside <context> tags, the title of the topic where it was used inside <topic> tags, and optionally, the previous post in the conversation in <replyTo> tags. Using all this information, write a paragraph with a brief explanation of what the term means. Format the response using Markdown. Reply only with the explanation and nothing more.
Sinä olet ohjaaja, joka selittää termin oppilaalle tietyssä kontekstissa. Minä tarjoan sinulle kaiken tarvittavan tiedon <input> tageissa, joka sisältää termin, jonka haluat minun selittävän <term> tageissa, kontekstin, jossa sitä käytettiin <context> tageissa, aiheen otsikon, jossa sitä käytettiin <topic> tageissa, ja valinnaisesti, edellisen viestin keskustelussa <replyTo> tageissa. Käyttäen kaikkea tätä tietoa, kirjoita kappale lyhyellä selityksellä siitä, mitä termi tarkoittaa. Muotoile vastaus käyttäen Markdownia. Vastaa vain selityksellä eikä millään muulla.
기술적 세부 사항을 프롬프트의 별도 부분으로 분리할 수 있을까요? 그러면 프롬프트가 다음과 같은 형태가 될 것입니다:
아니요, 정말 나쁜 아이디어입니다. 그렇게 하면 매번 프롬프트가 바뀌는 두 번의 번역이 수행됩니다. 필요한 것은 단지 "[언어]로 답하세요"라는 문구입니다[1]. 당신의 문제는 그 언어가 무엇인지 결정하는 것이며, 저는 해당 포럼의 기본 로케일과 동일한 언어를 사용하는 것을 제안합니다.
또는 “사용하세요”… 이는 단순히 표현의 문제일 뿐, 영어로 되어야 합니다. 네, OpenAI의 경우 그렇습니다. 다른 모델들은 제게 아직 미지의 영역입니다 ↩︎