[LangChain] 챗봇 구성하기

2025. 4. 3. 00:18·ML_DL/MUJAKJUNG (무작정 시리즈)
728x90
반응형

 

 

[LangChain] 시작하기

LangChain 이란?LLM을 활용한 어플리케이션 개발을 위한 오픈소스 프레임워크DB, File System 지원LangChain 설치가상환경 설정conda create -n langchain python=3.11langchain 설치pip install -U langchainopenai 설치pip install

swwho.tistory.com

 

프로젝트 파일 구조

chatbot_project/
├── .env                    # 환경변수 저장
├── main.py                 # 챗봇 실행 스크립트
├── chatbot/
│   ├── config.py           # 환경변수 로드 및 설정
│   ├── llm_chain.py        # Langchain LLM 설정 및 체인 정의
│   └── prompt.py           # 프롬프트 템플릿 정의

 


llm_chain.py

  • langchain_openai를 통해 OpenAI 모델 활용
  • | 파이프를 통해 chain 생성
  • chain을 custom하기 위해 Runnable 객체 사용
from langchain_openai import OpenAI
from langchain_core.runnables import Runnable
from chatbot.prompt import prompt
from chatbot.config import OPENAI_API_KEY

def create_chatbot_chain():
    llm = OpenAI(model="gpt-3.5-turbo-instruct", openai_api_key=OPENAI_API_KEY, streaming=True)
    chain: Runnable = prompt | llm
    return chain

 


config.py

  • OpenAI API KEY 등 환경변수나 설정등을 담은 파일
import os
from dotenv import load_dotenv

load_dotenv()
OPENAI_API_KEY = os.getenv("OPEN_API_KEY")

 


prompt.py

  • prompt를 관리하는 파일
from langchain.prompts import PromptTemplate

prompt = PromptTemplate.from_template(
    "당신은 친절한 한국의 AI 비서입니다. 다음 질문에 정확하고 친절하게 답변합니다. 질문: \n{input}"
)

main.py

  • input을 prompt와 담아 모델에 요청하고, 그 응답을 스트리밍 방식으로 처리
  • print의 flush=True를 통해 buffer를 바로바로 출력하도록 처리
  • exit이 입력되면 채팅 종료
from chatbot.llm_chain import create_chatbot_chain

def main():
    chain = create_chatbot_chain()
    print("무엇이든 물어보세요! ('exit'으로 종료)")

    while True:
        user_input = input("질문: ")
        if user_input.lower() == "exit":
            break

        print("답변:", end="", flush=True)
        for chunk in chain.stream({"input": user_input}):
            print(chunk, end="", flush=True)
        print()
    return

if __name__ == "__main__":
    main()
저작자표시

'ML_DL > MUJAKJUNG (무작정 시리즈)' 카테고리의 다른 글

[PDF 기반 퀴즈 생성기] 구성하기  (0) 2025.05.02
[LangChain] 모델 파라미터 설정  (0) 2025.04.09
[LangChain] 시작하기  (0) 2025.03.19
Elasticsearch, Airflow 활용하기 - 3. Airflow 환경설정  (0) 2025.03.04
Elasticsearch, Airflow 활용하기 - 2. Elasticsearch 설정  (0) 2025.03.03
'ML_DL/MUJAKJUNG (무작정 시리즈)' 카테고리의 다른 글
  • [PDF 기반 퀴즈 생성기] 구성하기
  • [LangChain] 모델 파라미터 설정
  • [LangChain] 시작하기
  • Elasticsearch, Airflow 활용하기 - 3. Airflow 환경설정
swwho
swwho
일상을 데이터화하다
  • swwho
    하루한장
    swwho
  • 전체
    오늘
    어제
    • 분류 전체보기 (187) N
      • ML_DL (38) N
        • MUJAKJUNG (무작정 시리즈) (17) N
        • 딥러닝 공부하기 (21)
      • 데이터사이언스 (1)
        • EDA (1)
        • 데이터과학을 위한 통계 (0)
      • 데이터엔지니어링 (2)
      • 논문리뷰 (2)
        • Computer Vision (2)
      • Python 활용하기 (12)
      • 코딩테스트 (127)
        • Python (109)
        • MySQL (14)
      • Git (3)
      • MySQL 활용하기 (0)
      • 일상 이야기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
swwho
[LangChain] 챗봇 구성하기
상단으로

티스토리툴바