로컬 환경에 Llama 2 실행 및 LangChain으로 애플리케이션 개발

2024. 1. 14. 12:26·언어모델

Llama 2는 메타에서 공개한 대형 언어 오픈소스 모델이다. ChatGPT에서 제공하는 API를 사용해 애플리케이션을 개발할 수도 있지만, 비용, 보안, 안정성 등 다양한 이슈가 있을 수 있다.
그럼에도 범용 LLM을 위해선 ChatGPT를 사용하는 게 좋겠지만, 특정 도메인을 위해 사용할 애플리케이션은 sLLM (소형 언어 모델)을 사용하는 경우가 많아지고 있다.
이를 위해 가장 먼저 시작해야 하는 단계가 llama 2를 로컬환경에 띄우는 것이다. 그리고 여기에 LangChain을 결합하면 손쉽게 애플리케이션을 만들 수 있다.

Steps

  1. ollama로 로컬 환경에 llama 2 실행하기
  2. LangChain과 연결하기
  3. 대화형 애플리케이션 만들기

1. Ollama로 로컬 환경에 llama 2 실행하기

ollama는 로컬 환경에서 다양한 언어 모델을 실행할 수 있게 지원하는 오픈소스이다.
https://ollama.ai/ 여기에서 설치 및 문서를 확인할 수 있다.

ollama run llama2

2. LangChain과 연결하기

langchain은 LLM 애플리케이션을 기능을 위한 도구함이다. 간단히 설치할 수 있다.

pip install langchain

이제 langchain에서 제공하는 인터페이스로 Ollma에 질의할 수 있다.

from langchain_community.llms import Ollama

llm = Ollama(model="llama2")
llm("Hi")

# 응답
# Hello! It's nice to meet you. Is there something I can help you with or would you like to chat?

3. 대화형 애플리케이션 만들기

Step1에서 llama 2를 ollama를 통해 손쉽게 실행했다.
Step2에서 ollama와 대화하기 위한 인터페이스를 langchain을 통해 구축했다.

이제 정말 간단한 streamlit application을 만들어보자.
사용자가 입력하면 llama 2 모델이 답변하는 ChatGPT와 같은 대화형 애플리케이션이다.

# app.py
from langchain_community.llms import Ollama
import streamlit as st

# 모델 초기화
llm = Ollama(model="llama2")

# 세션 상태 초기화
if "chat_history" not in st.session_state:
    st.session_state.chat_history = []


def add_to_chat_history(user_input, bot_response):
    st.session_state.chat_history.("사용자: " + user_input)
    st.session_state.chat_history.("봇: " + bot_response)


def display_chat_history():
    for message in st.session_state.chat_history:
        st.write(message)


# 사용자 입력 필드
user_input = st.text_input("사용자 입력")

# 사용자가 입력을 제출했을 때
if user_input:
    # LLM으로부터 응답받기
    bot_response = llm(user_input)

    # 대화 기록에 추가
    add_to_chat_history(user_input, bot_response)

    # 입력 필드 초기화
    st.session_state.user_input = ""

# 대화 기록 표시
display_chat_history()

실행하자.

streamlit run app.py

아래와 같이 사용자 입력을 받아 결과를 반환하는 애플리케이션이 완성됐다.

코드에서 확인할 수 있듯이 대화 히스토리를 streamlit session에 저장했지만, prompt에 전달하진 않아서 문맥을 이해할 수 없다. 이를 어떻게 활용하고 애플리케이션을 개선해 나갈 수 있을지. langchain에서 제공하는 다양한 도구들을 어떻게 활용해 볼 수 있을지 스터디해서 포스팅해보자.

'언어모델' 카테고리의 다른 글
  • LangChain으로 똑똑한 Slack bot 만들기 (RAG)
  • 랭체인 완벽 입문
  • Langchain으로 쉽게 크롤링하기
  • Langchain의 Memory로 Llama2를 더 독똑하게 만들기
ssuwani
ssuwani
  • ssuwani
    Oops!!
    ssuwani
  • 전체
    오늘
    어제
    • 분류 전체보기 (69)
      • MLOps (19)
      • 데이터 엔지니어링 (4)
      • Kubernetes (5)
      • Kafka (10)
      • 📚책 (3)
      • 라즈베리파이 (1)
      • ETC (8)
      • Python (6)
      • 언어모델 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    mlflow
    LangChain
    topic
    Docker
    태그2
    Schema Registry
    Spark
    evidently ai
    RDD
    Airflow
    BentoML
    redis
    MLOps
    Kafka
    datadrift
    Python
    FastAPI
    producer
    태그1
    Confluent Cloud
    Kubernetes
    Github Actions
    asyncronous
    auto tagging
    Prometheus
    fluentbit
    Kubeflow
    gcp
    LLM
    consumer
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
ssuwani
로컬 환경에 Llama 2 실행 및 LangChain으로 애플리케이션 개발
상단으로

티스토리툴바