Skip to content

Commit

Permalink
feat(#36): naver clova ai의 기본 요약 ai 적용
Browse files Browse the repository at this point in the history
  • Loading branch information
kimhji committed Feb 5, 2025
1 parent 586f7eb commit 883a9b4
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 0 deletions.
41 changes: 41 additions & 0 deletions server/src/rss/ai/feed-ai.service.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
export class FeedAIService {
async findImpactfulMessageByFeed(feedData: String) {
const API_KEY = 'nv-f7ef7973181443efa0cf781646d54435fOB2';
const URL =
'https://clovastudio.stream.ntruss.com/testapp/v1/api-tools/summarization/v2';

const callClovaLLM = async (feedData) => {
try {
const body = {
texts: [
"문서: 뒤의 문자열들을 홍보하는 요약 메세지를 50자 이내로로 작성해줘. 요약은 '~~에 대해서 설명하는 글입니다.' 형태로 하되 주어지는 문자열들은 XML 형태야. 문서:" +
feedData,
],
segMinSize: 300,
includeAiFilters: true,
autoSentenceSplitter: true,
segCount: 2,
};
const response = await fetch(URL, {
method: 'POST',
headers: {
Authorization: `Bearer ${API_KEY}`, // 발급받은 API 키를 입력
'X-NCP-CLOVASTUDIO-REQUEST-ID': 'e2dab9d0ca3c471caf107098ec40ecd2', // 유일한 요청 ID
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
});

if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}

const data = await response.json();
console.log('응답 데이터:', data);
} catch (error) {
console.error('에러 발생:', error);
}
};
await callClovaLLM(feedData);
}
}
3 changes: 3 additions & 0 deletions server/src/rss/feed-crawler.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ import { FeedRepository } from '../feed/feed.repository';
import { RssParserService } from './rss-parser.service';
import { RssAccept } from './rss.entity';
import { Feed } from '../feed/feed.entity';
import { FeedAIService } from './ai/feed-ai.service';

@Injectable()
export class FeedCrawlerService {
constructor(
private readonly feedRepository: FeedRepository,
private readonly rssParser: RssParserService,
private readonly feedAI: FeedAIService,
) {}

async loadRssFeeds(rssUrl: string) {
Expand Down Expand Up @@ -41,6 +43,7 @@ export class FeedCrawlerService {

return await Promise.all(
objFromXml.rss.channel.item.map(async (feed) => {
this.feedAI.findImpactfulMessageByFeed(feed.description);
const date = new Date(feed.pubDate);
const formattedDate = date.toISOString().slice(0, 19).replace('T', ' ');
const thumbnail = await this.rssParser.getThumbnailUrl(feed.link);
Expand Down
2 changes: 2 additions & 0 deletions server/src/rss/rss.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { FeedCrawlerService } from './feed-crawler.service';
import { FeedRepository } from '../feed/feed.repository';
import { RssParserService } from './rss-parser.service';
import { EmailModule } from '../common/email/email.module';
import { FeedAIService } from './ai/feed-ai.service';

@Module({
imports: [EmailModule],
Expand All @@ -22,6 +23,7 @@ import { EmailModule } from '../common/email/email.module';
RssAcceptRepository,
RssRejectRepository,
FeedRepository,
FeedAIService,
],
})
export class RssModule {}

0 comments on commit 883a9b4

Please sign in to comment.