스택큐힙리스트

스트리밍 ChatGPT의 결과를 Flask와 LangChain으로 전송 본문

카테고리 없음

스트리밍 ChatGPT의 결과를 Flask와 LangChain으로 전송

스택큐힙리스트 2024. 2. 1. 22:00
반응형

기본적으로 Flask와 LangChain을 사용하여 이를 달성하고자 합니다: https://www.youtube.com/watch?v=x8uwwLNxqis.


백엔드에서 LangChain을 사용하는 Q&A Flask 앱을 구축 중인데, ChatGPT에서의 응답을 스트리밍하는 데 문제가 있습니다. 제 체인은 다음과 같이 구성되어 있습니다:


chain = VectorDBQA.from_chain_type(llm=ChatOpenAI(model_name=gpt-3.5-turbo, streaming=True, chain_type=stuff, vectorstore=docsearch)
...
result = chain({query: query})
output = result['result']

Jinja는 단순히 {{ output }}를 출력하며 문제없이 작동하지만, 결과는 전체 응답이 완료될 때까지 웹 사이트에 표시되지 않습니다. ChatGPT에서 생성되는 대로 결과를 스트리밍하고 싶습니다.


stream_template을 사용해 보았지만 작동하지 않았습니다 (결과를 스트리밍하지 않고, 한꺼번에 전체 응답을 출력합니다. 물론 제가 무언갈 잘못하고 있을 수도 있습니다).

나는 마침내 해결했습니다:


https://github.com/DanteNoguez/FlaskGPT

답변 1

이 질문에 대답이 있다는 것을 명확하게 하고 나중에 링크가 깨지는 문제를 피하기 위해 (링크만 남기는 일반적인 스택오버플로우 문제), Dante (OP)는 이곳에서 해결하였습니다:


https://github.com/DanteNoguez/FlaskGPT

def gen_prompt(docs, query) -> str:
return f질문에 대답하기 위해서는 주어진 문맥만 사용하세요. 다른 것은 사용하지 마세요. 답을 만들어내지 말고, 확실하지 않으면 '모르겠습니다'라고 말하세요.
질문: {query}
문맥: {[doc.page_content for doc in docs]}
답변:

def prompt(query):
docs = docsearch.similarity_search(query, k=4)
prompt = gen_prompt(docs, query)
return prompt
def stream(input_text):
completion = openai.ChatCompletion.create(model=gpt-3.5-turbo, messages=[
{role: system, content: 당신은 어시스턴트입니다.},
{role: user, content: f{prompt(input_text)}},
], stream=True, max_tokens=500, temperature=0)
for line in completion:
if 'content' in line['choices'][0]['delta']:
yield line['choices'][0]['delta']['content']
@app.route('/completion', methods=['GET', 'POST'])
def completion_api():
if request.method == POST:
data = request.form
input_text = data['input_text']
return Response(stream(input_text), mimetype='text/event-stream')
else:
return Response(None, mimetype='text/event-stream')

답변 2

Streaming ChatGPT의 결과를 Flask와 LangChain과 함께 스트리밍하는 방법
지난 몇 년 동안 인공지능 기술은 상용화되고 있으며 이에 따라 텍스트 생성과 대화 시뮬레이션에 대한 새로운 기회가 생겼습니다. OpenAI의 GPT 모델은 그중에서도 가장 높은 인기를 얻고 있으며, 이를 활용하여 더욱 풍부하고 다양한 컨텐츠를 생성할 수 있습니다. 그런데 이러한 모델은 대화 형태로 구성되었기 때문에 실시간 스트리밍 기술의 적용이 필요합니다. 이번 글에서는 Flask와 LangChain을 사용하여 Streaming ChatGPT의 결과를 스트리밍하는 방법에 대해 알아보겠습니다.
먼저, Flask는 파이썬 웹 프레임워크로서 웹 애플리케이션을 쉽게 구축할 수 있도록 지원합니다. Flask를 사용하면 간단하게 웹 서버를 만들 수 있으며, 여기에 ChatGPT의 결과를 스트리밍하는 기능을 추가할 수 있습니다. Flask를 통해 생성된 웹 애플리케이션은 사용자의 요청을 처리하고 ChatGPT와 상호작용할 수 있게 됩니다.
또한, LangChain은 이러한 대화 시뮬레이션에 특화된 언어 처리 서비스입니다. LangChain은 다국어 처리에 뛰어나며, 문장 번역, 자동 완성, 자연어 이해 등 다양한 기능을 제공합니다. ChatGPT의 결과를 스트리밍하기 위해서는 LangChain을 사용하여 사용자의 입력을 처리하고, ChatGPT의 생성 결과를 실시간으로 출력할 수 있습니다.
Flask와 LangChain을 함께 사용하여 Streaming ChatGPT의 결과를 스트리밍하기 위해서는 몇 가지 단계를 거쳐야 합니다. 우선 Flask를 사용하여 웹 서버를 구축하고, 사용자의 요청을 받아들일 수 있는 라우팅을 설정해야 합니다. 그리고 사용자의 입력을 LangChain에 전달하여 ChatGPT의 결과를 생성하고, 생성된 결과를 사용자에게 스트리밍 방식으로 전달해야 합니다. 이를 위해 Flask에서 제공하는 웹 소켓 기능을 이용할 수 있습니다.
Streaming ChatGPT의 결과를 스트리밍하는 웹 애플리케이션을 구축하기 위해 SEO를 고려해야 합니다. SEO는 검색 엔진 최적화를 의미하며, 온라인 검색 시 사용자에게 더 나은 결과를 제공하기 위해 중요합니다. 이를 위해 웹 애플리케이션의 URL 구조와 메타 데이터를 염두에 두어야 합니다. 또한 웹 페이지의 제목, 설명, 키워드 등을 올바르게 설정하여 검색 엔진에서 더 높은 순위로 노출될 수 있도록 해야 합니다.
Streaming ChatGPT의 결과를 스트리밍하는 웹 애플리케이션을 구현하고 SEO를 고려한다면, 더욱 많은 사용자들이 해당 웹 사이트를 찾아 이용할 수 있게 됩니다. 또한 LangChain의 다양한 언어 처리 기능을 활용하여 기존 사용자와의 상호작용을 강화하고, 새로운 기능을 개발하는 데도 도움이 될 것입니다. 전 세계적으로 인공지능 기술의 사용이 늘어나고 있으므로, 이러한 기술을 효과적으로 활용하는 것이 중요합니다. Streaming ChatGPT의 결과를 스트리밍하는 방법은 이를 실현하기 위한 한 가지 방법이며, 더 나은 컨텐츠 생성과 대화 시뮬레이션을 위한 가능성을 열어줍니다.

반응형
Comments