반응형
🦜🔗LangChain이란?
- LangChain은 LLM(대형 언어 모델)을 기반으로 하는 Application을 개발하기 위한 Framework이다.
- Third party 통합이 가능하여 Open AI, Gemini 등 다양한 기업의 LLM 모델을 사용할 수 있다.
- LangSmith, LangGraph와 같은 플랫폼을 제공하여 LangChain의 테스트, 모니터링, 배포 등의 기능을 지원한다.
REF
https://github.com/langchain-ai/langchain
https://python.langchain.com/v0.1/docs/integrations/chat/google_generative_ai/
⚙ 환경설정
- Open AI API 발급 : https://platform.openai.com/account/api-keys
- Google AI API 발급 : https://console.cloud.google.com/apis
# 구글(Gemini) AI 모델 세팅
# https://python.langchain.com/v0.1/docs/integrations/chat/google_generative_ai/
%pip install --upgrade --quiet langchain-google-genai pillow
import os
import getpass
os.environ['GOOGLE_API_KEY'] = getpass.getpass()
🌱 ChatGoogleCenerativeAI 사용예시
Message 스키마 적용
from langchain_google_genai import ChatGoogleGenerativeAI
llm = ChatGoogleGenerativeAI(model="gemini-pro")
result = llm.invoke("2024년 올림픽 개최지는 어디야?") # 모델 호출
print(result.content)
from langchain_core.messages import HumanMessage, SystemMessage
llm = ChatGoogleGenerativeAI(model="gemini-pro",# 모델 종류
convert_system_message_to_human=True, #ChatGoogleGenerativeAI각 SystemMessage를 지원하지 않아 해당 파라미터를 True로 전달하여 SystemMessage 사용 가능
temperature=0.2, # 창의성 정도 0~1
)
message = [
SystemMessage(content="앞으로 다, 나 까 로 말이 끝나도록 군대식으로 대답해."),
HumanMessage(content="오늘 점심 메뉴 추천해봐"),
]
llm.invoke(message)
Steaming & Batching
ChatGoogleGenerativeAI는 자체적으로 스트리밍, 배치 기능을 제공한다.
# Streaing
for chunk in llm.stream("개발자에 관련된 시를 지어줘"):
print(chunk.content)
print("---")
# Batching
results = llm.batch(
[
"이번주에 등, 가슴 운동을 했는데 오늘 어떤 부위 운동을 할까?",
"내일은 어떤 부위를 운동하는게 좋을까?"
]
)
for res in results:
print(res.content)
print("---")
📑 Prompt Template
PromptTemplate은 사용자의 입력으로부터 변수를 생성해 특정 양식으로 변환하여 LLM에게 전달하기 위해 사용한다.
from langchain.prompts import PromptTemplate
template = '{company}이 무슨 기업인지 간략하게 소개해줘'
prompt = PromptTemplate(template=template, input_variables=['company'])
# 연결된 체인(Chain)객체 생성
llm_chain = prompt | llm
# 체인 실행: run()
print(llm_chain.invoke('애플'))
🔬 Output Parser
OutputParser는 llm 모델의 반환 값 중 content를 파싱하며 LCEL(LangChain Expression Language)를 구성하기 위해 사용한다.
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.messages import HumanMessage, SystemMessage
from langchain.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
llm = ChatGoogleGenerativeAI(model="gemini-pro",# 모델 종류
convert_system_message_to_human=True, #ChatGoogleGenerativeAI각 SystemMessage를 지원하지 않아 해당 파라미터를 True로 전달하여 SystemMessage 사용 가능
temperature=0.2, # 창의성 정도 0~1
)
template = '{company}이 무슨 기업인지 간략하게 소개해줘'
prompt = PromptTemplate(template=template, input_variables=['company'])
output_parser = StrOutputParser()
# 연결된 체인(Chain)객체 생성
llm_chain = prompt | llm | output_parser
print(llm_chain.invoke({'company': '애플'}))
🦜🛠LangSmith 연결
- LangSmith는 LLM Application 모니터링, 테스트 지원, 배포 지원 도구이다.
- 프로젝트 및 API Key를 생성하고 .env 파일에 아래의 4개 값을 추가하면 동작하는 LLM Application을 LangSmith와 연동할 수 있다.
- 추후 RAG 구축 시 어떤 문서가 llm 모델에 전달되는지 또한 모니터링이 가능하다.
- https://smith.langchain.com/
반응형
'LangChain' 카테고리의 다른 글
[LangChain] Reranker (0) | 2024.08.29 |
---|---|
[LangChain] RAG VectorStore & Retrievers (4) | 2024.08.29 |
[LangChain] Chatbot Message History (1) | 2024.08.29 |
[LangChain] LangServe를 이용한 LLM앱 배포 (0) | 2024.08.29 |