프롬프트 동작 방식
우선 프롬프트를 작성하고 Generate버튼을 누르면 작성한 폼데이터를 서버로 전송합니다.
서버는 폼데이터를 전달 받고 bctai_stream메서드를 찾아서 실행시킵니다.
bctai_stream메서드에서는 openai api로 클라이언트에서 받은 데이터와 함께 스트리밍 방식으로 요청하게 됩니다.
위에 보이는 코드는 openai에게 요청할때 보내는 파라미터 값들 입니다.
위 코드는 openai에서 v1/completions의 url로 요청할때 보내야하는 파라미터들을 보여주는 예시입니다.
위 코드 206라인에서 openai / chat()메서드로 파라미터 값과 함께 api로 부터 답변을 요청합니다. chat()메서드는 다음과 같습니다.
openai api로 요청할때 stream파라미터를 true로 설정했기때문에 api에서는 stream방식으로 답변을 넘겨줍니다. stream방식이란, API에서의 응답이 전부 도착할 때까지 연결을 유지하고 계속해서 데이터를 전송받는 것을 의미합니다. 일반적으로 이 옵션을 사용하면 서버는 결과가 준비되는 대로 그 즉시 클라이언트로 전송하며, 클라이언트는 중간 결과를 받을 수 있게 됩니다.
예시로 위 이미지에서 prompt에 적힌 텍스트를 api로 보내면 api는 준비되는 즉시 실시간으로 데이터를 넘겨줍니다. 그럼 아래 이미지와 같은 형태의 데이터로 넘겨 받습니다.
이처럼 stream방식은 긴 작업이나 긴 텍스트 생성과 같이 응답 시간이 오래 걸리는 작업에 유용하게 사용됩니다. 클라이언트는 서버에서 스트리밍되는 데이터를 실시간으로 받아 화면에 표시하거나 다른 작업을 수행할 수 있게 됩니다.