[랭체인] 텍스트 감성 분류 체인 만들기
안녕하세요, 여러분! 오늘은 LangChain을 사용하여 간단한 텍스트 감성 분류 체인을 만드는 방법에 대해 알아보겠습니다. 이 튜토리얼을 통해 여러분은 LangChain의 기본 개념을 이해하고, 실제로 작동하는 텍스트 분류 모델을 만들 수 있게 될 거예요.
준비하기
먼저, 필요한 라이브러리를 설치해야 합니다. Google Colab을 사용한다면, 다음 명령어로 필요한 패키지를 설치할 수 있습니다:
!pip install -Uq langchain_core langchain_openai langchain
그 다음, 필요한 모듈을 임포트합니다:
from langchain_core.prompts import ChatPromptTemplate
from langchain.output_parsers.enum import EnumOutputParser
from langchain_openai import ChatOpenAI
from enum import Enum
OpenAI API 키 설정
OpenAI의 API를 사용하기 위해서는 API 키가 필요합니다. Google Colab에서는 다음과 같이 설정할 수 있습니다:
import os
from google.colab import userdata
os.environ["OPENAI_API_KEY"] = userdata.get('OPENAI_API_KEY')
주의: 실제 프로덕션 환경에서는 API 키를 더 안전하게 관리해야 합니다.
감성 분류 체인 만들기
이제 본격적으로 감성 분류 체인을 만들어 보겠습니다.
- 먼저, 감성을 나타내는 열거형(Enum)을 정의합니다:
class Sentiment(Enum):
POSITIVE = 'positive'
NEGATIVE = 'negative'
- 다음으로, 프롬프트 템플릿을 만듭니다:
prompt_template = ChatPromptTemplate.from_template("Classify '{input_text}' as 'positive' or 'negative' only.")
- 마지막으로, 체인을 구성합니다:
chain = prompt_template | ChatOpenAI() | EnumOutputParser(enum=Sentiment)
이 체인은 다음과 같이 작동합니다:
prompt_template
이 입력 텍스트를 포함한 프롬프트를 생성합니다.ChatOpenAI()
가 이 프롬프트를 처리하여 응답을 생성합니다.EnumOutputParser
가 ChatGPT의 응답을Sentiment
열거형으로 파싱합니다.
체인 사용하기
이제 만든 체인을 사용해 봅시다:
result = chain.invoke({'input_text':'I love LLM.'})
print(result) # 출력: <Sentiment.POSITIVE: 'positive'>
result = chain.invoke({'input_text':'I hate LLM.'})
print(result) # 출력: <Sentiment.NEGATIVE: 'negative'>
결과 분석
우리의 체인은 간단한 문장에 대해 잘 작동하는 것 같습니다. 하지만 복잡한 감정이 섞인 문장에 대해서는 어떨까요?
result = chain.invoke({'input_text':'I love and hate LLM.'})
print(result) # 출력: <Sentiment.NEGATIVE: 'negative'>
result = chain.invoke({'input_text':'I hate and love LLM.'})
print(result) # 출력: <Sentiment.NEGATIVE: 'negative'>
흥미롭게도, 모델은 이런 복잡한 감정이 섞인 문장을 주로 부정적으로 분류하는 것 같습니다. 이는 모델이 문장에서 부정적인 요소에 더 민감하게 반응하는 것으로 보입니다.
마치며
이렇게 LangChain을 사용하여 간단한 텍스트 감성 분류 체인을 만들어 보았습니다. 이 예제를 통해 LangChain의 기본적인 사용법과 체인 구성 방법을 배웠습니다.
이 모델은 매우 기본적이지만, 더 복잡한 감성 분석이나 다른 종류의 텍스트 분류 작업으로 확장할 수 있습니다. 예를 들어, 더 많은 감성 카테고리를 추가하거나, 더 정교한 프롬프트를 사용하거나, fine-tuning된 모델을 사용할 수 있습니다.
LangChain의 강력함은 이런 식으로 다양한 컴포넌트를 쉽게 조합하고 확장할 수 있다는 점입니다. 여러분도 이를 기반으로 자신만의 흥미로운 NLP 프로젝트를 만들어 보시는 건 어떨까요?
행운을 빕니다! 🚀
- [랭체인] 간단한 텍스트 생성 체인 만들기
- [랭체인] 텍스트 감성 분류 체인 만들기
- [랭체인] 간단한 챗봇 만들기
- [랭체인] 수학 연산 체인 구현하기
- [랭체인] SQL 데이터베이스 쿼리 자동화
- [랭체인] PythonREPL을 활용한 동적 코드 실행 챗봇 구현
- [랭체인] PDF 문서 기반 QA챗봇 구현
- [랭체인] 대화형 챗봇 만들기
- [랭체인] 도구 체인 구축 가이드
- [랭체인] 라우팅 체인 - 유연한 AI 응답 시스템 구축하기
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
Congratulations, your post has been upvoted by @upex with a 0.22% upvote. We invite you to continue producing quality content and join our Discord community here. Keep up the good work! #upex