[AI] LangChain 사용해보기

2025. 1. 12. 19:26·AI

우선 LangChain을 어떻게 쓰는것인지 알아보기 위해서 파이썬으로 테스트 해봤다.

 

나는 기존에 OpenAI API KEY를 발급 받은것이 있어서 환경 변수에 등록부터 했다.

  • 등록 방법: 시스템 환경 변수 편집 -> 환경 변수 -> 새로만들기 -> 키 등록

 

1. 환경 변수를 불러오는 코드를 작성한다.

import os

# 환경변수에서 API 키 가져오기
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")

if not OPENAI_API_KEY:
    raise ValueError("환경변수 'OPENAI_API_KEY'가 설정되지 않았습니다.")

 

2. 필요한 패키지를 설치한다.

openai, langchain만 설치하면 되는줄 알았는데 'ModuleNotFoundError: No module named 'langchain_community' 오류가 떠서 추가로 설치했다.

# OpenAI API 라이브러리 설치
pip install openai

# LangChain 라이브러리 설치 (기본적인 LLM 체인 구성을 위한 핵심 라이브러리)
pip install langchain

# LangChain의 추가 기능이 포함된 확장 모듈 설치
pip install langchain-community

# 설치된 패키지 목록 중 "langchain" 관련 패키지 확인
pip list | findstr langchain

 

3. 나의 돈은 소중하니까 저렴한 모델로 선택한다.

chat_chain = LLMChain(
    llm=ChatOpenAI(openai_api_key=OPENAI_API_KEY, model="gpt-3.5-turbo"),
    prompt=chat_prompt,
    output_parser=CommaSeparatedListOutputParser()
)

 

4. 원하는 프롬프트와 질문을 입력한다.

  • 프롬프트
"너는 여행 가이드를 도와주는 AI야. 사용자가 특정 장소에 대해 추천을 요청하면, 해당 장소에서 유명한 항목(맛집, 관광지 등)을 3개 추천해줘. 단어는 반드시 comma(,)로 분리해서 답변하고, 다른 내용은 포함하지 마."
  • 질문
"부산 해운대에서 유명한 맛집 3가지를 추천해줘."

 

5. 완성 코드

import os
from langchain.chat_models import ChatOpenAI
from langchain.prompts.chat import (
    ChatPromptTemplate,
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
)
from langchain.chains import LLMChain
from langchain.schema import BaseOutputParser

# 환경변수에서 API 키 가져오기
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")

if not OPENAI_API_KEY:
    raise ValueError("환경변수 'OPENAI_API_KEY'가 설정되지 않았습니다.")

# CommaSeparatedListOutputParser 정의
class CommaSeparatedListOutputParser(BaseOutputParser):
    """LLM 출력에서 ','로 분리된 결과를 반환하는 파서."""
    def parse(self, text: str):
        return text.strip().split(", ")

# 시스템 메시지 프롬프트 템플릿
system_template = """
너는 여행 가이드를 도와주는 AI야.
사용자가 특정 장소에 대해 추천을 요청하면, 해당 장소에서 유명한 항목(맛집, 관광지 등)을 3개 추천해줘.
단어는 반드시 comma(,)로 분리해서 답변하고, 다른 내용은 포함하지 마.
"""

system_message_prompt = SystemMessagePromptTemplate.from_template(system_template)
human_template = "{text}"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)

# 프롬프트 통합
chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])

# LLMChain 구성
chat_chain = LLMChain(
    llm=ChatOpenAI(openai_api_key=OPENAI_API_KEY, model="gpt-3.5-turbo"),
    prompt=chat_prompt,
    output_parser=CommaSeparatedListOutputParser()
)

# 질문 실행
response = chat_chain.run("부산 해운대에서 유명한 맛집 3가지를 추천해줘.")

# 결과 출력
print(response)  # ['맛집1', '맛집2', '맛집3']와 같은 리스트 형태로 출력됨
    6. 결과 출력
response = chat_chain.run("부산 해운대에서 유명한 맛집 3가지를 추천해줘.")
['밀면의달인', '해운대장어구이골목', '할매낙지']

  • 파이썬으로 LangChain 시작하기

'AI' 카테고리의 다른 글

[AI] LangChain 사용해보기3 (LLM과 네이버 검색 API를 활용한 맛집 데이터 수집 테스트)  (0) 2025.01.23
[AI] LangChain 사용해보기2  (0) 2025.01.15
[AI] LangChain이란 무엇인가?  (0) 2025.01.12
[AI] 텍스트 요약 모델(Summarization) 사용해보기  (0) 2025.01.10
[AI] Recognize Anything 사용해보기2  (0) 2025.01.09
'AI' 카테고리의 다른 글
  • [AI] LangChain 사용해보기3 (LLM과 네이버 검색 API를 활용한 맛집 데이터 수집 테스트)
  • [AI] LangChain 사용해보기2
  • [AI] LangChain이란 무엇인가?
  • [AI] 텍스트 요약 모델(Summarization) 사용해보기
dud9902
dud9902
개발자 취준생 기록일지
  • dud9902
    dud's DevStory
    dud9902
  • 전체
    오늘
    어제
    • 분류 전체보기 (79)
      • SpringBoot (14)
      • React (12)
      • Python (14)
      • AI (21)
      • DB (6)
      • Figma (1)
      • Markdown (1)
      • AWS (7)
      • 기타 (3)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    FastAPI
    miniforge
    pytorch
    twilio
    AWS
    docker
    CrewAI
    EC2
    pydantic
    springboot
    의존성 주입
    recognize anything
    langchain
    db
    redis
    react
    Python
    스프링부트
    AI
    Agent
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dud9902
[AI] LangChain 사용해보기
상단으로

티스토리툴바