본문 바로가기
소프트웨어 마에스트로/BackEnd(Django)

[Django] openai 시간 줄이기 4회차

by alpakaka 2024. 10. 23.

어제 풀링 넣어도 좋지 않은 결과를 얻어 혹시나 openai와의 커넥션때문이 아니라 그냥 생성되는데 많은 시간이 걸리는걸까?

일단 다른이유를 찾아봐야할 것 같다.

 

https://community.openai.com/t/how-can-i-improve-response-times-from-the-openai-api-while-generating-responses-based-on-our-knowledge-base/237169

 

How can I improve response times from the OpenAI API while generating responses based on our knowledge base?

Hello, I have a Node.js project where I utilize Microsoft’s Cognitive Search for indexed searching. This allows me to perform structured searches on my own knowledge base. Once I receive the query response, I make a call to the OpenAI API to generate the

community.openai.com

 

일단 여기를 찾아봤고 여기에 나온 링크를 따라 들어가봤다.

https://www.taivo.ai/__making-gpt-api-responses-faster/

 

Making GPT API responses faster

GPT APIs are slow. Just in the past week, the OpenAI community has had 20+ questions around that. And not only is it rare for users to tolerate 30-second response times in any app, it is also extremely annoying to develop when even basic tests take several

www.taivo.ai

 

흠 일단 사용할 수 있는 것은 4 -> 3.5가 빠르다. 근데 나는 4-o-mini 를 쓰고 있어서 딱히 큰 차이는 없을 것 같다.

 

max token 을 사용하기

 

타임 아웃을 없애니 시간이 똑같아졌다... ..^^b

프롬프트를 좀 간소화해봤다. 한 30자 지웠다.

돌려본다.

오 효과가 있다.

처음에는 4초 초반으로 나왔는데 지금은 3초 후로 나온다..!

근데 저기서 더이상 줄일 수는 없을 것 같다.

 

근데 포스트맨으로 5번보내는게 귀찮아서 pytest 로 돌려봤다.

 

안찍힌다.

왜 이런지 모르겠다. 또 재미난 건 issue 는 등록이 된다. 정말 왜 그런지 모르겠다.

그래서 그냥 postman 으로 5번 보내는 테스트 스크립트를 작성해보려고한다.!

var iteration = pm.variables.get("iteration") || 0;

if (iteration < 5) {
    setTimeout(function() {
        iteration++;
        pm.variables.set("iteration", iteration);
        postman.setNextRequest(pm.info.requestName);  // 1초마다 요청을 보냄
    }, 1000);  // 1초 대기
}

이런식으로 작성하라고 챗지피티가 시켰다.

이렇게 작성하는게 신기해서 물어보니까 저기 1초 대기때문에 이런식으로 작성했다고 한다.

포문으로 사용하면 기다리는 게 없다고... 그냥 sleep(1초) 하면 되지 않았나 싶지만 어쨋든 동작하면 그만이다.

일단 돌려본다

안된다. 더 찾아본다....


 

급히 전보가 들어왔다.

테스트에서는 이렇게 잘만되는 rank가...

front 에게는 ;{s<<<<fM 이런 문자열로 계속 간다고 들었다...

어흑흑 이유를 찾아본다.

 

해결했다. 장장 4시간같은 1시간 30의 결과였다

사건의 발단은 이러하다

지금 rank를 subtodo, category, todo 모두 겹쳐서 사용중이다.

그래서 저번에 사용했던 0|asdf: 형식과 다른 방식으로 사용중이였는데

저거 다음이 아마 ;{s 어쩌구였던 거다. 그런데 길이도 짧아서 리밸런싱도 들어가지 않았다.

 

그래서 전부 rank를 수정해주었더니 해결완료했다..^^ㅎㅎ

따봉입니다... 로직상 문제가 아니라 db상에 데이터 문제였다.....

어흑흑

production 의 데이터를 어떻게 변환시킬지도 좀 생각해봐야할 듯

추가적으로 category, subtodo, todo 가 각자의 랭크를 따르고, user_id 마다도 랭크를 따르도록 변환해야할 듯 싶다.

 

 

이제 한번 토큰 제한을 넣어보자..!

내일 끝까지 해보겠다.. 오늘은 여기까지...