스택큐힙리스트

당신은 컴퓨터 전문가입니다. 특수 기호를 그대로 유지하면서 OpenAI의 completion API를 어떻게 스트리밍할 수 있을까요? 본문

카테고리 없음

당신은 컴퓨터 전문가입니다. 특수 기호를 그대로 유지하면서 OpenAI의 completion API를 어떻게 스트리밍할 수 있을까요?

스택큐힙리스트 2023. 9. 7. 15:28
반응형

나는 'completion via OpenAI's API'의 결과를 스트리밍 하고 싶습니다.

문서에서는 'server-sent events' 를 사용하라고 언급했는데, 이거 보면 이건 'isn't handled out of the box for flask' 해서 클라이언트 측에서 작업해보려고 했습니다(API 키 노출을 알고 있습니다). 그러나 OpenAI API가 포스트로 요구를 하기 때문에 이건 'isn't compatible with the eventSource API' 처럼 보입니다. fetch를 통해 하려고 했는데 ( 'Using readable streams' ) 예시대로 JSON으로 변환하려고 하면 다음과 같은 오류가 발생합니다: 'Uncaught (in promise) SyntaxError: Unexpected token 'd', data: {id... is not valid JSON' (이건 유효한 JSON이 아닙니다). 전체 결과를 분석하는 것 같아서 각각의 스트림을 분석하려고 했는데요.

'data: {id: cmpl-5l11I1kS2n99uzNiNVpTjHi3kyied, object: text_completion, created: 1661887020, choices: [{text: to, index: 0, logprobs: null, finish_reason: null}], model: text-davinci-002}

data: {id: cmpl-5l11I1kS2n99uzNiNVpTjHi3kyied, object: text_completion, created: 1661887020, choices: [{text: AL, index: 0, logprobs: null, finish_reason: null}], model: text-davinci-002}

data: {id: cmpl-5l11I1kS2n99uzNiNVpTjHi3kyied, object: text_completion, created: 1661887020, choices: [{text: I, index: 0, logprobs: null, finish_reason: null}], model: text-davinci-002}

'

나는 컴퓨터 전문가입니다. 이것을 어떻게 해야 할지에 대한 초보자 지침이나 간단한 코드 예제를 좋아할 것 같습니다. 얼마 동안 문제에 애를 먹고 있어서 도움이 되었으면 좋겠습니다. 감사합니다!

답변 1

마침내 작동하는 코드를 얻었습니다:

'import { Configuration, OpenAIApi } from openai;

import dotenv from dotenv;

dotenv.config({ override: true });

const openai = new OpenAIApi(new Configuration({ apiKey: process.env.OPENAI_KEY }));

const getText = async (prompt, callback) => {

const completion = await openai.createCompletion(

{

model: text-davinci-003,

prompt: prompt,

max_tokens: 1000,

stream: true,

},

{ responseType: stream }

);

return new Promise((resolve) => {

let result = ;

completion.data.on(data, (data) => {

const lines = data

?.toString()

?.split(\n)

.filter((line) => line.trim() !== );

for (const line of lines) {

const message = line.replace(/^data: /, );

if (message == [DONE]) {

resolve(result);

} else {

let token;

try {

token = JSON.parse(message)?.choices?.[0]?.text;

} catch {

console.log(ERROR, json);

}

result += token;

if (token) {

callback(token);

}

}

}

});

});

};

console.log(await getText(Who was the latest president of USA?, (c) => process.stdout.write(c)));

'

답변 2

제목: OpenAI의 완성 API를 스트리밍하는 방법

서론:

요즘 머신러닝과 자연어 처리 기술은 급속하게 발전하고 있으며, 이러한 기술의 핵심은 AI 모델을 훈련시키는 능력과 데이터에 기반한 판정 능력입니다. OpenAI는 기계 학습 및 자연어 처리 기술에 선도적인 기여를 하며, 자연스러운 대화 및 글 작성 과제를 해결하기 위한 OpenAI 완성 API를 도입하였습니다.

본문:

OpenAI 완성 API를 활용한 스트리밍 방법에 대해 알아보기 전에, OpenAI 완성 API가 무엇인지 먼저 이해해야 합니다. OpenAI 완성 API는 심층 학습 기술을 활용하여 사용자가 일련의 문장을 입력하면, 자동으로 문맥에 맞는 완성문을 생성하는 기술입니다. 이는 기존의 텍스트 생성 모델보다 더욱 자연스러운 응답을 제공하며, 대화 시뮬레이션, 글 작성 도움, 철자 및 문법 검사 등 다양한 분야에서 사용할 수 있습니다.

OpenAI 완성 API를 스트리밍하기 위해선 다음과 같은 단계를 따르면 됩니다.

1. OpenAI 계정 및 API 키 생성: OpenAI 완성 API를 사용하기 위해선 OpenAI의 공식 웹사이트에서 계정을 생성하고 API 키를 발급받아야 합니다.

2. 개발 환경 설정: 완성 API를 사용하여 스트리밍하는 경우, 원활한 개발 환경을 설정해야 합니다. 이를 위해 Python 언어와 OpenAI 라이브러리를 설치해야 합니다. 또한 OpenAI 라이브러리를 통해 생성된 API 키를 활용하여 인증 절차를 거쳐야 합니다.

3. 원하는 텍스트 스트림 구성: OpenAI 완성 API는 사용자의 요구에 따라 텍스트 스트림을 처리하도록 설계되었습니다. 스트림은 여러 문장으로 이루어질 수 있으며, 보다 자연스러운 응답을 위해 이전에 완성된 문장을 참고하여 새로운 문장을 생성할 수 있습니다.

4. API 요청 및 응답 처리: OpenAI의 완성 API를 통해 스트리밍을 시작할 때, 개발된 애플리케이션은 요청을 보내고 응답을 받는 과정을 거칩니다. 이를 통해 기계 학습 모델은 입력 스트림을 읽고 정보를 처리하여 원하는 텍스트를 생성할 수 있게 됩니다.

5. 결과 및 상호작용 확인: OpenAI 완성 API를 통해 생성된 결과를 확인하고 필요한 수정 작업이나 유지 관리를 수행해야 합니다. 이를 통해 텍스트의 일관성과 퀄리티를 유지할 수 있으며, 필요에 따라 추가 작업을 진행할 수 있습니다.

결론:

OpenAI 완성 API를 통해 스트리밍을 구현하는 방법을 살펴보았습니다. 이 기술은 사용자의 입력을 기반으로 하여 자동으로 완성된 텍스트를 생성하는 강력한 도구입니다. 스트리밍 기능을 통해 새로운 문장을 지속적으로 생성하고 수정하며, 다양한 활용 분야에서 AI 기술의 가능성을 최대한 활용할 수 있습니다. OpenAI의 완성 API를 사용하여 효율적이고 창의적인 텍스트 생성에 도전해 보세요.

반응형
Comments