Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejs
themeEmacs
titlesynapeditor.config.js
//...
'editor.quickInsert': [
	// AI 요청하기 버튼
    'openTextAI',
	//...
],
// ...



플러그인 설정하기

...

글 작성 AI와 관련된 설정은 'text' , 이미지 생성 AI와 관련된 설정은 'image' 키 아래에 객체로 정의합니다.

Code Block
languagejs
themeEmacs
titlesynapeditor.config.js
'aiWriteSupporter.config': {
	text: {
		url: '/request',
		//...
	},
	image: {
		url: '/request',
		//...
	}
}

사용 가능한 키 

KeyType필수기본값설명
urlstringO''
  • 요청을 보낼 URL을 설정합니다.
    • OpenAI의 API 주소
    • OpenAI의 API로 요청을 하도록 구현한 URL
    • HyperCLOVA X로 요청을 하도록 구현한 URL 
  • 설정이 되지 않으면 툴바에 플러그인 버튼이 표시되지 않습니다.
apiKeystring
''
  • OpenAI에서 발급받은 API Key를 설정합니다.
  • 해당 설정을 사용하게 되면 브라우저에 Key 값이 노출되기 때문에, Key 값을 설정하지 않고 서버를 통해 요청을 할 수 있도록 하는 것이 안전합니다. 

ai 

string


'gpt'
  • 사용할 AI를 설정합니다. 기본값은 'gpt'입니다.
    • OpenAI GPT: 'gpt' 
    • NAVER HyperCLOVA X: 'hcx'
requestBodyObject
{}
ocrUrlstring
''
  • OCR URL을 설정하면 초안 작성 메뉴에서 '이미지 첨부'메뉴가 활성화됩니다.
  • 이미지를 첨부하면 이미지에 있는 텍스트를 추출해 추출된 텍스트와 프롬프트를 AI에 함께 전송합니다.

customPrompts

Object[]
[]
  • 사용자 정의 프롬프트 메뉴를 추가합니다.
  • key, type, label, prompt 키를 가지는 객체의 배열을 설정합니다.
Code Block
languagejs
themeEmacs
{
    key: 'customPromptKey',
    type: 'prompt', // 또는 'immediately'
    label: {
        ko: '메뉴에 보여지는 텍스트',
        en: 'Label shown in menu'
    },
    prompt: {
        ko: 'AI에게 전달될 프롬프트. 요약해줘, 내용을 늘려줘, ...',
        en: 'Prompts to be passed to the AI',
    }
}


Code Block
languagejs
themeEmacs
{
    key: 'customPromptKey',
    type: 'group',
    label: {
        ko: '하위 메뉴가 있는 메뉴',
        en: 'Menu with submenus'
    },
    items: ['summarize', 'explanation', ...]
}


keyType필수설명
keystringO
  • 프롬프트를 구분할 수 있는 유니크한 값을 설정합니다.
type'prompt' | 'immediately' | 'group'O
  • prompt: 프롬프트 입력칸에 prompt에 정의한 텍스트가 추가됩니다.
  • immediately: prompt에 정의한 텍스트가 메뉴를 실행 시 바로 전송됩니다.
  • group: 하위 메뉴를 가지는 경우 설정합니다.
labelObjectO
  • 메뉴에 보일 텍스트를 설정합니다.
promptObject
  • type: 'prompt' 또는 type: 'immediately'일 때만 유효합니다.

  • 프롬프트로 전송할 텍스트를 설정합니다.
itemsstring[]
  • type: 'group'일 때만 유효합니다.

  • 하위 메뉴에 보일 프롬프트 메뉴의 key를 배열 형태로 설정합니다.
iconNamestring
  • 아이콘 이름을 설정합니다.
  • 이름에 해당하는 아이콘이 에디터에 등록이 되어있으면 메뉴에 아이콘이 보입니다.


categoryConfigObject
{}
  • 카테고리 별 보일 프롬프트 메뉴를 설정합니다.
  • 카테고리는 아래와 같습니다. 
    • favorite: 즐겨찾기
    • draft: 초안 작성
    • edit: 편집 또는 검토
    • createByReference: 내용을 참고하여 생성
    • write: 글쓰기

URL, API Key 설정

요청을 보낼 API의 URL, API Key를 설정합니다.

...

HyperCLOVA X의 설정할 수 있는 값들은 아래와 같습니다.

필드타입

설명

temperaturedouble생성 토큰에 대한 다양성 정도 (설정값이 높을수록 다양한 문장 생성 가능) - 0~1 (기본값: 0.5)
topKint생성 토큰 후보군에서 확률이 높은 k 개를 후보로 지정하여 샘플링 - 0~128 (기본값: 0)
topPdouble생성 토큰 후보군을 누적 확률을 기반으로 샘플링 - 0~1 (기본값: 0.8)
repeatPenaltydouble같은 토큰을 생성하는 것에 대한 패널티 정도 (설정값이 높을수록 같은 결괏값을 반복 생성할 확률 감소) - 0~10 (기본값: 5)
stopBeforestring토큰 생성 중단 문자 - [] (기본값)
maxTokensint최대 생성 토큰 수 - 0~2048 (기본값: 2048)




OCR URL 설정: '이미지 첨부' 기능 사용

...

Code Block
languagejs
themeEmacs
titlesynapeditor.config.js
'aiWriteSupporter.config': {
    ocrUrl: 'https://ailab.synap.co.kr/sdk', // 프로모션 기간 중 사용이 가능합니다.
    ocrApiKey: '발급받은 API key'
}


'ocrUrl'을 설정하지 않음: 초안 작성시 '이미지 첨부'메뉴 보이지 않음'ocrUrl'을 설정: 초안 작성시 '이미지 첨부'메뉴 보여짐

Image Modified

Image Modified


사용자 정의 프롬프트 설정

사용자 정의 프롬프트를 추가합니다.

...

카테고리는 'favorites', 'draft', 'edit', 'createByReference', 'write'가 있고, 아래는 각각의 카테고리에 대한 설명입니다.

KeyCategory카테고리가 보여지는 경우기본 값
favorites즐겨찾기
  • 항상


Code Block
languagejs
themeEmacs
[ ]


draft초안 작성
  • 에디터 컨텐츠가 셀렉션 되지 않은 상태(캐럿 상태)에서 'AI 요청하기'를 실행했을 때


Code Block
languagejs
themeEmacs
[
    'emailGroup', 'meetingLogGroup', 'proposalGroup', 'reportGroup',
    'marketingGroup', 'contractGroup', 'roadmapGroup', 'announcementGroup',
    'guidelinesGroup', 'creativityGroup', 'draftEtcGroup'
]


edit편집 또는 검토
  • 에디터 컨텐츠가 셀렉션 된 상태에서  'AI 요청하기'를 실행했을 때
  • AI 요청에 대한 답변을 받았을 때


Code Block
languagejs
themeEmacs
[
    'polishing', 'correctSpelling', 'writeShort', 'writeLong',
    'toneChangeGroup', 'arrangingFormatGroup', 'characterCount'
]


createByReference내용을 참고하여 생성
  • 에디터 컨텐츠가 셀렉션 된 상태에서  'AI 요청하기'를 실행했을 때
  • AI 요청에 대한 답변을 받았을 때


Code Block
languagejs
themeEmacs
[
    'summarize', 'translationGroup', 'explanation', 'findActionItems',
    'keywordRecommendation', 'makeTitle', 'addRelatedInfo'
]


write글쓰기
  • 에디터 컨텐츠가 셀렉션 된 상태에서  'AI 요청하기'를 실행했을 때
  • AI 요청에 대한 답변을 받았을 때


Code Block
languagejs
themeEmacs
['continueWriting']



초안 작성(draft) 카테고리 메뉴 재정의 하기

...

플러그인에 미리 정의된 프롬프트 메뉴 Key는 [AIWriteSupporter] 미리 정의된 프롬프트 메뉴에서 확인할 수 있습니다.

적용된 모습설정

Image Modified


Code Block
languagejs
themeEmacs
titlesynapeditor.config.js
'aiWriteSupporter.config': {
    categoryConfig: {
        draft: [
            'meetingRequestEmail', 'salesEmail', 'jobAnnouncement'
        ]
    }
}



편집 또는 검토(edit), 내용을 참고하여 생성(createByReference) 카테고리가 보이지 않도록 하기

카테고리에 빈 배열을 설정하면 카테고리가 보이지 않게 할 수 있습니다.

적용된 모습설정

Image Modified


Code Block
languagejs
themeEmacs
titlesynapeditor.config.js
'aiWriteSupporter.config': {
    categoryConfig: {
        edit: [],
        createByReference: []
    }
}



즐겨찾기(favorite) 카테고리에 커스텀 메뉴 추가하기

...

자주 사용하는 프롬프트 메뉴를 추가할 수 있습니다.

적용된 모습설정

Image Modified


Code Block
languagejs
themeEmacs
titlesynapeditor.config.js
// 즐겨찾기 카테고리에 커스텀 메뉴 추가
'aiWriteSupporter.config': {
    categoryConfig: {
        favorites: ['my-custom-menu1', 'my-custom-menu2', 'my-custom-menu3']
    },
    customPrompts: [
        {
        	key: 'my-custom-menu1',
        	type: 'prompt',
      		label: {
      	    	ko: '나의 커스텀 메뉴 1',
            	en: 'My custom menu'
        	},
        	prompt: {
            	ko: '바나나를 영어로',
            	en: 'banana in english',
        	}
    	}, 
        {
            key: 'my-custom-menu2',
        	type: 'immediately',
        	label: {
            	ko: '나의 커스텀 메뉴 2',
            	en: 'My custom menu'
        	},
        	prompt: {
            	ko: '포도를 영어로',
            	en: 'grape in english',
        	}
    	},
		{
        	key: 'my-custom-menu3',
        	type: 'group',
        	label: {
            	ko: '내가 제일 자주쓰는 메뉴 모음',
            	en: 'My most used menu'
        	},
        	items: ['englishTranslation', 'tabularFormat']
    	}
    ]
}