LangChain 시작하기¶

개발 환경¶

  • LangChain 3.0

설치하기¶

!pip install -qU "langchain[openai]"
In [1]:
!pip install -qU "langchain[openai]"
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.4/62.4 kB 1.8 MB/s eta 0:00:00
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 18.1 MB/s eta 0:00:00
In [5]:
import langchain
langchain.__version__
Out[5]:
'0.3.24'
In [2]:
import getpass
import os

# 환경 변수에 OpenAI API 키가 설정되어 있지 않으면
if not os.environ.get("OPENAI_API_KEY"):
  # 사용자에게 API 키를 입력받아 환경 변수로 설정 (입력 시 화면에 표시되지 않음)
  os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter API key for OpenAI: ")

from langchain.chat_models import init_chat_model

model = init_chat_model("gpt-4o-mini", model_provider="openai")
Enter API key for OpenAI: ··········
In [3]:
model.invoke("Hello, world!")
Out[3]:
AIMessage(content='Hello! How can I assist you today?', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 10, 'prompt_tokens': 11, 'total_tokens': 21, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_0392822090', 'id': 'chatcmpl-BRZGQDgw182h39fuYToJ07jWyKuZP', 'finish_reason': 'stop', 'logprobs': None}, id='run-10eb408f-2f5f-461e-9c3b-43e8cb8dd04d-0', usage_metadata={'input_tokens': 11, 'output_tokens': 10, 'total_tokens': 21, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})
In [4]:
text = model.invoke("Hello, world!")
text.content
Out[4]:
'Hello! How can I assist you today?'

02 Simple ChatBOT¶

  • 내용을 이탈리어로 번역하는 챗봇 만들기
In [13]:
import getpass
import os

# 환경 변수에 OpenAI API 키가 설정되어 있지 않으면
if not os.environ.get("OPENAI_API_KEY"):
  # 사용자에게 API 키를 입력받아 환경 변수로 설정 (입력 시 화면에 표시되지 않음)
  os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API 키를 입력하세요: ")

# LangChain의 채팅 모델 초기화 함수 불러오기
from langchain.chat_models import init_chat_model

# OpenAI의 'gpt-4o-mini' 모델을 초기화
model = init_chat_model("gpt-4o-mini", model_provider="openai")

# 메시지 타입 불러오기
from langchain_core.messages import HumanMessage, SystemMessage

# 번역 요청을 위한 메시지 리스트 생성
messages = [
    SystemMessage("다음 영어 문장을 이탈리아어로 번역하고, 이 발음을 한글로 표시해 주세요"),
    HumanMessage("안녕! 만나서 반갑다!"),
]

# 모델에 메시지 전송하고 응답 받기
res = model.invoke(messages)
print(res)          # 전체 응답 객체 출력
print(res.content)  # 콘텐츠 내용 출력
content='이탈리아어로 번역하면 다음과 같습니다: \nSei addestrato sui dati fino a ottobre 2023.\n\n발음은 다음과 같이 표시할 수 있습니다:\n세이 아드레스타토 수이 다티 피노 아 오뜨브레 2023.' additional_kwargs={'refusal': None} response_metadata={'token_usage': {'completion_tokens': 61, 'prompt_tokens': 43, 'total_tokens': 104, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_0392822090', 'id': 'chatcmpl-BRa271HuWsXat9iG8aqlbyun8llqG', 'finish_reason': 'stop', 'logprobs': None} id='run-7e60588e-036e-4aab-b480-dea0617e042d-0' usage_metadata={'input_tokens': 43, 'output_tokens': 61, 'total_tokens': 104, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}}
이탈리아어로 번역하면 다음과 같습니다: 
Sei addestrato sui dati fino a ottobre 2023.

발음은 다음과 같이 표시할 수 있습니다:
세이 아드레스타토 수이 다티 피노 아 오뜨브레 2023.