지난 글에서 Ollama를 이용하여 로컬 시스템에서 LLM을 설치하고 사용해 보았습니다.
그럼 내 프로젝트에 LLM을 적용하려면 어떻게 해야 할까요?
기본적으로 LLM은 질의 메시지를 전달하면 결과를 돌려주는 방식이기때문에 프로젝트 내에서도 LLM으로 질의를 던져주고 결과를 받아오는 API를 사용하면 그걸로 끝이라고 볼 수 있습니다.
그 외에는 뭐가 필요할까... 생각해보면 Web 환경에서 사용할 수 있는 UI 등이 있을 수 있겠죠.
좀 복잡하지만 강력한 기능을 자랑하는 Open-WebUI, 간편하게 사용할 수 있는 Chatbot-Ollama 등 다양한 UI가 제공되고 있습니다.
그러나 불행히도 많은 UI가 JavaScript 계열의 환경으로 되어 있습니다.
뭐.. WebUI니까 어찌보면 당연하기도 합니다.
그런데 제 프로젝트는 일단 파이썬을 기반으로 할 계획이니까 좀 간단하긴 하지만 Ollama Python Library를 사용해보고자 합니다.
먼저 라이브러리의 설치가 필요하겠죠.
pip install ollama
설치가 완료되었다면 바로 사용해보도록 합시다.
import ollama
response = ollama.chat(model='openchat', messages=[
{
'role': 'user',
'content': 'Why is the sky blue?',
},
])
print(response['message']['content'])
코드를 작성하고 실행해보니 잘 작동합니다.
그런데 시간이 조금 걸리는군요.
질문을 한글로 바꾸어서 해 보겠습니다.
import ollama
response = ollama.chat(model='openchat', messages=[
{
'role': 'user',
'content': '하늘은 왜 푸른지 설명해줘.',
},
])
print(response['message']['content'])
한글도 잘 작동합니다.
그런데 오타인지.. 맞춤법이 틀린 곳이 보이는군요.
아무래도 한글에 맞추어진 모델이 아니라서 그런 것일까요?
어쨋든... 파이썬 코드에서 잘 작동하는 것을 확인했습니다.
그럼 다음은 REST API 또는 Open API를 통해서 사용하는 법을 확인해봐야 하겠네요.
Ollama의 사용 옵션을 확인해봅시다.
ollama --help
"serve" 옵션을 사용해서 Ollama 서버를 시작할 수 있다고 하는군요.
ollama serve
Error가 뜹니다만... 내용을 보면 이미 해당 주소가 바인딩되어 사용중이라는 메시지입니다.
저는 별도로 실행시킨 적이 없는 것 같은데... 이미 실행중이라고 하네요.
한 번 해당 주소로 접속을 해 보겠습니다.
잘 작동하고 있습니다.
다른 곳의 자료를 보면 일반적인 서버가 실행하듯이 메시지들이 쭈~욱 나오고 있는데...
어찌된 일인지 제 쪽에서는 계속 이미 실행중이라는 메시지만 나오는군요.
나중에 한 번 더 찾아봐야 할 것 같네요.
어쨋든... 잘 작동하고 있으니 한 번 사용해 보겠습니다.
파이썬 코드로 POST 방식의 호출을 실행해보죠.
먼저 requests 패키지를 설치합니다.
pip install requests
다음으로 POST 방식으로 Ollama를 호출하는 함수를 만들어서 실행해 보겠습니다.
import requests
def query_ollama(model_name, prompt):
url = "http://localhost:11434/api/generate"
headers = {"Content-Type": "application/json"}
data = {
"model": model_name,
"prompt": prompt,
"stream": False
}
response = requests.post(url, headers=headers, json=data)
response.raise_for_status()
response_data = response.json()
# print(response_data)
return response_data['response']
if __name__ == "__main__":
model = "openchat"
prompt = "하늘은 왜 푸르게 보일까?"
result = query_ollama(model, prompt)
print(result)
잘 작동하네요.
query_ollama 함수에서 주석처리된 print()문을 출력하면 JSON형태로 된 requests의 결과를 확인할 수 있습니다.
그 결과 중에서 "response"에 해당하는 내용이 위에 출력된 내용입니다.
이렇게 말이죠.
파이썬 코드 외에도 브라우저나 Postman, Insomnia, ThunderClient 등의 도구를 사용해서 확인하실 수도 있습니다.
참고로 API를 호출할 때 Streaming 형태로 호출하면 결과의 Content-Type이 일반적으로 볼 수 있는 "application/json" 타입이 아닌 "application/x-ndjson"이라는 타입으로 돌아오게 되는데 이 경우, 처리가 꽤 까다롭습니다.
뭘 처리해도 json 인식 오류가 발생하더군요.
그 부분은 차후에 다시 확인해 봐야 할 것 같습니다.
이렇게 해서 ollama가 지원하는 REST API의 사용법을 통해 우리 프로젝트에 ollama를 적용하는 방법을 확인해 보았습니다.
'AI 관련 기술들 > 대형AI모델' 카테고리의 다른 글
대형 액션 모델(LAM, Large Action Model) (6) | 2024.12.28 |
---|---|
내 프로젝트에 LLM을 달아보자(4) - LangChain 적용하기 (18) | 2024.10.17 |
내 프로젝트에 LLM을 달아보자(3) - 잘못된 대답 고치기 (2) | 2024.09.06 |
내 프로젝트에 LLM을 달아보자(1) - Ollama (6) | 2024.09.04 |
Mistral 7B 모델 (2) | 2023.12.10 |