[Node.js_4기] 최종프로젝트 2주차_day4_API 작업 (24/04/04)

2024. 4. 4. 20:43공부/내배캠 TIL

목차

 

1. 문제

2. 시도

3. 결과

4. 배운점

 

1. 문제 

 

gpt 4 -> 덜창의적인 작업에서, 훨씬 느린 성능을 보여줌. 간단한 작업에 대해선 gpt3.5turbo를 쓰는게 훨씬 경제적으로 보임.
번역 : gpt3.5 = 1.48s/gpt4-turbo-preview = 3.73

imageToText / withCsv / translate 3스텝으로 하는건 별로인것 같음.  
5.37(2스텝) vs 4.33+1.48(3스텝)
한번에 합쳐서 테스트 해볼 예정.

import * as csv from 'csv-parser' -> 전체를 가져온다.
import csv from 'csv-parser' ->  default를 가져온다.

 

2. 시도 

 

docker에 올려서 시도해본 결과.

<API 두개>

public async dietManagerWithCsvUsingLocalData(
    prosConsDiscusserDto: ProsConsDiscusserDto,
  ) {
    const csvDataArray = await this.readLocalCsv();
    const csvDataString = JSON.stringify(csvDataArray);
    return await dietManagerWithCsv(this.openai, {
      prompt: prosConsDiscusserDto.prompt,
      csvData: csvDataString,
    });
  }

  public async imageToText(prosConsDiscusserDto: ProsConsDiscusserDto) {
    return await imageToText(this.openai, {
      prompt: prosConsDiscusserDto.prompt,
    });
  }
<하나의 API>
public async processImageAndManageDiet(
    processImageAndManageDietDto: ProcessImageAndManageDietDto,
  ): Promise<string> {
    const imageText = await imageToText(this.openai, {
      prompt: processImageAndManageDietDto.imageUrl,
    });

    const csvDataArray = await this.readLocalCsv();
    const csvDataString = JSON.stringify(csvDataArray);

    const dietResponse = await dietManagerWithCsv(this.openai, {
      prompt: imageText.content,
      csvData: csvDataString,
    });

    return dietResponse.content;
  }

prompt를 영어로 수정했다. 서비스시에는 google translate api를 사용할 예정.(한 계층이 또 추가된다니...)

 

3. 결과 

 

<2개로 분할>

<1개로 합침>

시간적으로는 큰 차이가 없다. 

대신, 직접 출력된 content의 evaluation을 json으로 다시 옮겨줄 필요가 없다는 장점이 있다.

 

 

4. 배운점 

 

<튜터님 피드백>
한글 -> 글자당 토큰 수가 더 클거라 성능 차이가 꾸준히 생길것. (번역 횟수를 줄이는게 좋다?)
대부분 영어로 학습된거라 ...
번역 -> 구글 translate api 추천

기능 하나로 합쳤는데, 
요청이 1000건 들어오면 마지막에 응답받는 사람은 몇초 뒤에 응답 받을까?
영향을 줄 수 있는것 : 
지금도 가장 시간이 많이 걸리는게 gpt 자체가 추론하는 시간이잖아요
gpt는 어떻게 동시 처리를 할까?(api를 요청하면) -> 동시 처리 어느정도까지 보장할지 테스트해볼것.
10개만이라도 동시에 해보고, 1개 속도*10 대비 얼마나 차이나는지 계산 해보고, 개선해보기.