-
Notifications
You must be signed in to change notification settings - Fork 2
Clova Studio로 단어 간의 연관성 파악하기
JIN edited this page Mar 14, 2025
·
1 revision
| ⚙️ Web BE |
|---|
![]() |
| 김진 |
| 2025.02.04. 작성 |
기존 프로젝트에서 Clova Studio를 활용해 제시어를 생성하고 있다. 동일한 기능을 사용해 제시어와 인식된 테스트의 연관 여부를 확인해보자.
NCloud Clova Studio 또한 웹 사이트에서 간단하게 확인해볼 수 있다. 다음과 같이 초기 세팅을 하고 질문을 해보았다.
<시스템>
당신은 창의적인 드로잉 게임의 관리자입니다.
OCR API를 통해 만들어진 글자를 확인하고, 제시어를 연상할 수 있는지 여부를 판단해주세요.
답변은 부연 설명 없이 true 또는 false로만 응답해주세요.
<사용자>
다음 단어가 제시어 '○○'와 연관이 되어있는지 답변해주세요.
[□□]

인식에 실패한 당근(당농) 과 깡총깡총(깡촌깡총) 의 결과에 주목해보자.
-
당농인식에 실패해 전혀 다른 글자가 되어 토끼와의 연관성을 찾지 못해 false 반환-
당근으로 제대로 인식되었다면 true를 반환한다.
-
-
깡촌깡총인식에 실패해 텍스트가 약간 다르지만,깡총글자의 존재로 인해 토끼와의 연관성이 있어 true 반환-
깡총없이깡촌만 입력하면 false를 반환한다.
-
일단은! OCR 인식 문제로 인해 false를 반환하는 경우를 제외하면 Clova Studio는 원하는 대로 잘 동작하는 것을 확인할 수 있다.
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import axios, { AxiosInstance } from 'axios';
@Injectable()
export class ClovaClient {
private readonly client: AxiosInstance;
constructor(private configService: ConfigService) {
const apiKey = this.configService.get<string>('CLOVA_STUDIO_API_KEY');
const requestId = this.configService.get<string>('CLOVA_STUDIO_REQUEST_ID');
this.client = axios.create({
baseURL: 'https://clovastudio.stream.ntruss.com/testapp/v1/chat-completions/HCX-003',
headers: {
Authorization: `Bearer ${apiKey}`,
'X-NCP-CLOVASTUDIO-REQUEST-ID': requestId,
'Content-Type': 'application/json; charset=utf-8',
Accept: 'text/event-stream',
},
});
}
async isRelatedWord(suggestedWord: string, inferText: string) {
const request = {
messages: [
{
role: 'system',
content: `
당신은 창의적인 드로잉 게임의 관리자입니다.
OCR API를 통해 만들어진 글자를 확인하고, 제시어를 연상할 수 있는지 여부를 판단해주세요.
답변은 부연 설명 없이 true 또는 false로만 응답해주세요.
`,
},
{
role: 'user',
content: `
다음 단어가 제시어 '${suggestedWord}'와 연관이 되어있는지 답변해주세요.
[${inferText}]
`,
},
],
topP: 0.8,
topK: 0,
maxTokens: 256,
temperature: 0.8,
repeatPenalty: 5.0,
stopBefore: [],
includeAiFilters: true,
seed: 0,
};
try {
const response = await this.client.post('', request);
return response.data.result.message.content.trim() === 'true';
} catch (error) {
throw new Error(`CLOVA API request failed: ${error.message}`);
}
}
}- [BE] 프로젝트 코드 읽기
- [BE] 테스트 용도의 Redis Docker 생성 및 통합 테스트 진행
- [BE] 도커 생성부터 테스트까지 스크립트 하나로 해결해보기
- [BE] e2e 테스트 진행
- [BE] Redis List 삽입 방식 변경
- [FE] Shared Worker 학습
- [FE] Shared Worker 적용(Chat Socket)
- [FE] Shared Worker 적용(Game Socket)
- [FE] Shared Worker 적용(통합 정리)
- [BE] Clova OCR로 캔버스 이미지 검사하기
- [BE] Clova Studio로 단어 간의 연관성 파악하기
- [BE] Redis pub sub을 이용해서 소켓끼리 데이터 공유하기
- [FE] 텍스트가 인식된 영역 안에 선을 제거하기
- 2025.01.06. 팀 빌딩 및 주간 계획 수립
- 2025.01.13. 2주차 주간 계획 수립
- 2025.01.20. 3주차 주간 계획 수립
- 2025.02.03. 전체 및 1주차 주간 계획 수립
- 2025.02.10. 2주차 주간 계획 수립
- 2025.02.17. 3주차 주간 계획 수립
