POE를 이용한 다양한 AI모델 사용

Simon Kim·2024년 3월 29일
1

서론


생성형 AI에 대한 토이 프로젝트를 진행하면서, 로컬 환경에서 LLAMA2 모델과 RAG를 구성하여 생성형 챗봇을 구성해 보았다. LLAMA2 모델 말고 GPT나 Claude, Gemini 등 핫하게 떠오르고 있는 모델들도 사용해 보고 싶어 방법이 없을까 고민 하던 중, 다양한 엔진 기반으로 Chatbot 및 생성형 플랫폼을 제공하는 POE라는 서비스를 알게되어, 기존 토이프로젝트에 POE를 이용한 다양한 AI 모델을 연동해 보았다.

본론

1.POE 서비스는?


poe는 Quora에서 만든 인공지능 챗봇이다. GPT, Claude+ (클로드+), Claude-instant, NeevaAI 등 다양한 챗봇을 사용해 볼 수 있도록 제공하고 있으며, StableDiffusion 등의 솔루션 기반의 이미지 생성, 학습, 취미 등의 다양한 형태의 봇을 제공하고 있다. 해당 서비스는 PC, 모바일 앱 등의 크로스 플랫폼으로 지원하고 있다.

URL : https://poe.com

최초 회원 가입을 하면 챗봇에 사용되는 3,000 Token 상당의 Token을 무료로 제공하며, 매 24시간 후에 3,000 Token이 초기화되어 제공하기 때문에, 간단한 봇 사용이나 테스트용으로 다양한 모델을 사용하고 싶은 사용자에게 굉장히 유용한 서비스이지 않을까 생각된다.

뿐만 아니라, GPT-4, Claude3, Gemini 등 최근 발표한 AI 모델 기반의 봇도 가장 빠르게 제공하고 있어 최신 모델에 대한 기능 및 벤치마크를 원한다면 해당 서비스가 큰 도움이 될 듯 하다.
(아쉽게도, 최신 모델은 유료 플랜(구독)에 가입해야 하며, 한화로 약 25,000원 정도이다. 년단위로 구독할 경우 할인 혜택도 있으므로, 사용자의 입맛에 맞게 선택하면 된다.)

마지막으로, 여러분들이 만든 나만의 Chatbot이 있다면, 해당 chatbot을 POE에 등록할 수 있다. 등록 시, 마켓플레이스처럼 chatbot 목록에 표시되며, 다른 사용자가 이용할 경우 Token을 벌 수 있다고 하니, 세부적인 내용은 POE 사이트에서 확인하시길...

2.POE를 이용한 chatbot 연동


해당 서비스가 무엇인지 이해했으니, 내가 만든 토이 프로젝트에 해당 chatbot을 연동해보자.

POE API 관련 제공여부를 파악하기 위해 열씨미 구글링을 했지만... 공식적으로는 API를 별도 제공하고 있지 않은 듯 하다. 그래서 Opensource 형태로 개발자가 개발한 모듈이 있는지 찾아보니 2개의 모듈이 있는 것을 확인하였다.
poe-api : https://github.com/ading2210/poe-api
poe-api-wrapper : https://github.com/snowby666/poe-api-wrapper

이 중, poe-api는 초기 배포 후 POE관련 해서 더 이상 지원하지 않는다고 나와 있어, poe-api-wrapper 모듈을 이용하여 chatbot을 연동해 보았다. 설치 방법 및 코드 작성 방법은 https://github.com/snowby666/poe-api-wrapper에 상세하게 나와 있어 해당 내용을 참고하였다.

1)설치

pip를 이용해 poe-api-wrapper를 설치한다. python 버전에 따라 설치 방법이 조금 다르니, 본인의 python 버전을 확인 후 설치해야 한다.

# python 3.8 이하
pip install -U poe-api-wrapper
# python 3.9 이상
pip install -U poe-api-wrapper[proxy]

2) 코드 작성

poe api를 통해 chatbot을 호출하기 위해서는 어떤 chatbot엔진을 사용할 것인지, chatbot code(내가 생성한 chatbot의 ID)는 무엇인지 확인 후, prompt를 요청해야 한다. 이를 위해,
아래 순서로 나는 작업을 진행하였다.
2-1) POE 사이트에서 chatbot 생성한다. 이때 chatbot 엔진을 선택하여 생성하며, 가장 많이 사용하고 있는 ChatGPT를 생성해 보았다.

2-2) poe api의 get_chat_history 함수를 통해 chatbot code 조회

chatCode = client.get_chat_history(genEngCd)['data']['chinchilla'][0]['chatCode'] or ""

2-3) send_message함수를 통해 chatbot에 prompt 요청한다. chatbot_code는 https://github.com/snowby666/poe-api-wrapper의 Available Default Bots를 통해 아래 이미지처럼 제공된다. (ChatGPT3.5의 chatbot_code는 'chinchilla'이다.)

for chunk in client.send_message(chatbot_engine, message, chatCode=chatbot_code):
	print(chunk["response"], end="", flush=True)

2-4) 전체 코드
위의 내용을 바탕으로 작성한 전체 코드는 다음과 같다. 토이프로젝트가 Django Framework로 구성되어 있어, Rest API 구조로 코드를 작성하였다.

3) 결과

내가 작성한 API를 호출하면 poe chatbot에 내가 요청한 Prompt가 나오고, 스트리밍 형태로 응답한다.

동시에, 내가 작성한 API에서는 응답이 완료될 때까지 대기하고 있다, chatbot의 답변이 완료되면 결과를 DB에 저장 후 응답한다.

결론


지금까지 POE 서비스를 이용한 chatbot 연동을 진행해 보았다. 지금처럼 하루가 멀다하고 실시간으로 새로운 AI엔진이 나오고, 급변하게 바뀌고 있는 상황에서 다양한 AI엔진을 테스트하고 싶거나, 이를 응용하고 싶은 케이스가 있다면, 해당 내용이 자그마한 도움이 되었음한다. 무엇보다, AI엔진을 연동하는 부분이 점점 쉬워지고 있어 AI 응용부분의 진입 장벽이 내려오고 있다는 느낌을 받았다. POE 서비스와 같은 중개 서비스나 Tool이 대중화가 된다면, 비개발자도 쉽게 서비스를 런칭할 수 있는 날이 오지 않을까 조심스럽게 예측해본다.

참고


https://github.com/snowby666/poe-api-wrapper
https://github.com/ading2210/poe-api
https://tilnote.io/pages/645da1f3fe21036239231fe2#google_vignette
https://quorablog.quora.com/Introducing-the-Poe-API

profile
다양한 주제를 심플하고 명확하게 정리해 보려는 연차만 많은 IT 잡부입니다. 사람들과의 소통을 사랑합니다.~^^

0개의 댓글