올해 초에 Upstage의 Solar API가 한시적으로 무료 사용이 가능해서 간단히 글을 올렸는데, 의외로 이 글이 제 글 중에서 조회수가 많은 편에 속하고 있습니다. 구글 검색을 통해서 들어오는 수도 가장 많은 편에 속하고요. 그래서, 기념(?)으로 두 번째 글을 써 봅니다. 마침 Solar pro preview를 무료로 사용해 볼 수 있는 기간이기도 합니다.
Ollma 와 Open WebUI
Ollma는 LLM(Large Language Model)을 정말 쉽게 사용할 수 있게 해 줍니다.
설치도 정말 쉽고, 다양한 오픈 소스(내지는 open weights) 모델들을 바로 다운로드하여 사용할 수 있게 해 줍니다. 얼마 전에 on device LLM이 어느 정도 수준까지 발전해 왔는지 좀 보려다 알게 됐는데, 정말 세상 좋아졌다는 것을 느낄 수 있었습니다.
Ollma는 기본적으로 CLI를 제공하는데, 여기에 ChatGPT의 웹 사이트와 같은 UI를 제공하는 Open WebUI를 사용하면 바로 자신만의 ChatGPT 사이트를 갖게 됩니다.
https://github.com/open-webui/open-webui
Open WebUI는 Ollma와 연동 뿐 아니라, ChatGPT의 API와도 연동이 가능합니다. 그리고, Upstage의 Solar Chat API는 ChatGPT의 명세를 그대로 따르고 있으므로 Open WebUI는 기본적으로 Upstage의 Chat API와 연동이 가능하다고 볼 수 있습니다. 그런데....
models API 의 부재
Open WebUI에서는 ChatGPT의 Chat API에서 다음의 두 가지를 사용합니다.
- GET https://api.openai.com/v1/models
- POST https://api.openai.com/v1/chat/completions
Solar API에서는 /chat/completions는 제공하는데 /models는 제공하지 않습니다. 그래서, 기본적으로는 Open WebUI에서 바로 사용할 수 없습니다.
여기서 관둘 수는 없어서 다음과 같이 nginx의 리버스 프록시를 설정하여 테스트해 보기로 했습니다.
nginx reverse proxy 설정
nginx에 리버스 프록시를 설정하여, /models 로 요청이 오는 경우에는 모델 목록을 응답하는 API 쪽으로 연결하고, /chat/completions 로 요청이 오면 Solar API 쪽으로 요청이 가게 하기로 했습니다.
먼저 models 요청이 왔을 때 응답을 하는 API가 필요하여 간단히 만들었습니다. 이 거는 파일로 해도 되기는 한데, 테스트할 수 있는 Summer 기반 애플리케이션이 있어서 거기에 추가했습니다.
응답은 ChatGPT의 /models API 형식에 맞게 다음과 같이 하도록 했습니다.
{
"object": "list",
"data": [
{
"id": "solar-pro",
"object": "model",
"created": 1686935002,
"owned_by": "organization-owner"
}
]
}
다른 항목들은 테스트에서 중요한 항목이 아니기 때문에 대충 설정해도 되고, id만 Solar쪽 모델 id와 맞으면 됩니다.
이제 nginx 리버스 프록시를 다음과 같이 설정했습니다.
server {
listen 8888;
access_log /var/log/nginx/chat_access.log geo;
error_log /var/log/nginx/chat_error.log;
location /models {
proxy_pass http://models반환하는컴퓨터IP주소:5000;
}
location /chat/completions {
proxy_pass https://api.upstage.ai/v1/solar/chat/completions;
}
}
Open WebUI 설정 및 사용
Open WebUI는 https://github.com/open-webui/open-webui?tab=readme-ov-file#installation-with-default-configuration 에서 설명하는 대로만 하면 Docker를 사용하여 쉽게 실행할 수 있기 때문에 특별히 설치에 대해서 언급하지는 않겠습니다.
설정
/admin/settings 페이지에 접속해서 "연결" 부분으로 가면 다음과 같은 화면을 볼 수 있습니다.
OpenAI API 부분의 첫 번째 항목에 리버스 프록시를 설정한 nginx 서버 주소를 입력합니다. 그리고, 우측으로 있는 두 번째 칸에는 Solar API의 Secret Key를 입력합니다. 그리고, 그 옆에 있는 재적재 버튼을 클릭해서 "서버 연결 확인됨"이라는 메시지가 나오면 제대로 설정이 된 것입니다.
사용
제대로 설정이 된 경우 "모델 선택"에서 solar-pro 가 나오게 됩니다. 이 모델을 선택한 후에 ChatGPT를 사용하듯이 사용하면 됩니다.
마무리
/models API만 제공되면 Open WebUI를 사용하여 편하게 Solar API를 테스트할 수 있습니다. Solar API가 ChatGPT의 모든 API와 호환될 수도, 그리고 호환될 필요도 없겠지만 /models 정도는 지원해 주면 어떨까 싶습니다.
'이거저거' 카테고리의 다른 글
Spring Security Architecture - Servlet 기반 애플리케이션 (3) | 2024.11.15 |
---|---|
유니코드 한글 자소 분리 방법 (0) | 2024.10.26 |
앤트로픽의 프롬프트 라이브러리 (0) | 2024.03.22 |
Upstage Solar API 사용해 보기 (1) | 2024.02.25 |