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