본문 바로가기

이거저거

Upstage Solar API 사용해 보기 2 - Open WebUI 에서 사용

올해 초에 Upstage의 Solar API가 한시적으로 무료 사용이 가능해서 간단히 을 올렸는데, 의외로 이 글이 제  글 중에서 조회수가 많은 편에 속하고 있습니다. 구글 검색을 통해서 들어오는 수도 가장 많은 편에 속하고요. 그래서, 기념(?)으로 두 번째 글을 써 봅니다. 마침  Solar pro preview를 무료로 사용해 볼 수 있는 기간이기도 합니다.

 

Ollma 와 Open WebUI

Ollma는 LLM(Large Language Model)을 정말 쉽게 사용할 수 있게 해 줍니다.

https://ollama.com/

 

Ollama

Get up and running with large language models.

ollama.com

설치도 정말 쉽고, 다양한 오픈 소스(내지는 open weights) 모델들을 바로 다운로드하여 사용할 수 있게 해 줍니다. 얼마 전에 on device LLM이 어느 정도 수준까지 발전해 왔는지 좀 보려다 알게 됐는데, 정말 세상 좋아졌다는 것을 느낄 수 있었습니다. 

Ollma는 기본적으로 CLI를 제공하는데, 여기에 ChatGPT의 웹 사이트와 같은 UI를 제공하는 Open WebUI를 사용하면 바로 자신만의 ChatGPT 사이트를 갖게 됩니다.

https://github.com/open-webui/open-webui 

 

GitHub - open-webui/open-webui: User-friendly AI Interface (Supports Ollama, OpenAI API, ...)

User-friendly AI Interface (Supports Ollama, OpenAI API, ...) - open-webui/open-webui

github.com

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 정도는 지원해 주면 어떨까 싶습니다.