LangSmith
, LangGraph
와 같은 플랫폼을 제공하여 LangChain의 테스트, 모니터링, 배포 등의 기능을 지원한다.REF
https://github.com/langchain-ai/langchain
https://python.langchain.com/v0.1/docs/integrations/chat/google_generative_ai/
# 구글(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()
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)
ChatGoogleGenerativeAI
는 자체적으로 스트리밍, 배치 기능을 제공한다.
# Streaing
for chunk in llm.stream("개발자에 관련된 시를 지어줘"):
print(chunk.content)
print("---")
# Batching
results = llm.batch(
[
"이번주에 등, 가슴 운동을 했는데 오늘 어떤 부위 운동을 할까?",
"내일은 어떤 부위를 운동하는게 좋을까?"
]
)
for res in results:
print(res.content)
print("---")
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('애플'))
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
는 LLM Application 모니터링, 테스트 지원, 배포 지원 도구이다..env
파일에 아래의 4개 값을 추가하면 동작하는 LLM Application을 LangSmith와 연동할 수 있다.RAG
구축 시 어떤 문서가 llm 모델에 전달되는지 또한 모니터링이 가능하다.