fromlangchain_core.promptsimportPromptTemplatefromlangchain_openaiimportChatOpenAIimportos# model 준비
os.environ["OPENAI_API_KEY"]="MyAPIKey..."model=ChatOpenAI(model="gpt-4o-mini")# prompt template 준비
prompt=PromptTemplate.from_template("{topic}에 대해 초보자도 이해할 수 있도록 3문장으로 설명하세요.")# chain 생성
chain=prompt|model# input 을 받아 추론
result=chain.invoke({"topic":"LangChain의 LCEL"})print(result)
1
2
3
4
5
6
# 출력content='LCEL은 LangChain Expression Language의 약자로, LangChain에서 체인을 간결하게 구성하기 위한 표현 방식입니다.
이를 사용하면 프롬프트, 모델, 출력 파서를 파이프(|)로 연결하여 하나의 실행 흐름으로 만들 수 있습니다.
덕분에 복잡한 체인도 직관적이고 재사용 가능하게 작성할 수 있습니다.'additional_kwargs=...
response_metadata=...
(3) 종류
1) Chat Model
대화 형식의 입력을 받아 응답을 생성하는 모델입니다.
일반적인 챗봇, 질의응답, 역할 기반 대화 등에 주로 사용됩니다.
LangChain에서는 ChatOpenAI 또는 ChatGoogleGenerativeAI 등을 지원합니다.
최근 LangChain에서는 Chat Model 중심으로 많이 사용되지만, 개념적으로는 텍스트 생성 모델도 포함됩니다.
3) Embedding Model
문장을 직접 답변으로 생성하는 것이 아니라, 텍스트를 벡터로 변화하는 모델입니다.
의미 기반 검색, 문서 유사도 비교, RAG의 검색 단계 등에서 사용됩니다.
응답 생성용 모델과는 역할이 다릅니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
fromlangchain_openaiimportOpenAIEmbeddingsimportos# API Key 설정
os.environ["OPENAI_API_KEY"]="My API Key ..."# Embedding Model 준비
embeddings=OpenAIEmbeddings(model="text-embedding-3-small")# 문장을 벡터로 변환
result=embeddings.embed_query("Langchain의 LCEL은 무엇인가요?")# 답변 출력
print(type(result))# 답변의 자료형
print(len(result))# 답변의 전체 길이(차원)
print(result[:5])# 앞 5개 값만 출력
fromlangchain_openaiimportOpenAIEmbeddingsimportos# API Key 설정
os.environ["OPENAI_API_KEY"]="My API Key ..."# Embedding Model 준비
embeddings=OpenAIEmbeddings(model="text-embedding-3-small")documents=["LangChain은 LLM 애플리케이션 개발을 돕는 프레임워크입니다.","LCEL은 LangChain Expression Language의 약자입니다.","벡터 데이터베이스는 임베딩된 문서를 저장하고 검색하는 데 사용됩니다."]# 여러 문서를 벡터로 변환
result=embeddings.embed_documents(documents)print(len(result))# 문서 개수
print(len(result[0]))# 각 문서 벡터 차원 수
print(result[0][:5])# 첫 번째 문서 벡터 일부
1
2
3
4
# 출력 예시
3
1536
[0.0211, -0.0342, 0.0554, 0.0188, -0.0723]
(4) Chat Model의 출력
Chat Model의 결과는 단순 문자열이 아니라 AIMessage 객체 형태입니다.
따라서 chain.invoke() 결과를 그대로 출력하면 응답 본문 외 메타데이터도 보이게 됩니다.
응답 텍스트만 사용하고 싶다면 .content 필드만 사용하거나, 다음 포스팅에서 살펴볼 OutputParser 를 연결해 문자열로 변환할 수 있습니다.
# 출력
LCEL은 LangChain Expression Language의 약자로, LangChain에서 체인을 간결하게 구성하기 위한 표현 방식입니다.
이를 사용하면 프롬프트, 모델, 출력 파서를 파이프(|)로 연결하여 하나의 실행 흐름으로 만들 수 있습니다.
덕분에 복잡한 체인도 직관적이고 재사용 가능하게 작성할 수 있습니다.
Comments