1.LangChain Expression Language(LCEL)
LangChain에서 제공하는 언어로, 워크플로우를 구성하고, 데이터 처리를 정의하며, 다양한 LLM을 활용하여 작업을 수행할 때 사용된다.
1-1.변수사용
{variable_name} 으로 변수를 사용할수있다.
나중에 값을 채울 수 있다.
chain.invoke({"country": country})
{country}의 수도는 어디입니까?
1-2.PromptTemplate
언어 모델(LLM)에 전달할 문장을 미리 정의해 두고, 필요한 값을 동적으로 삽입하여 완성하는 형식으로
프롬프트 템플릿를 생성한다.
변수: {country}
고정된 텍스트: 의 수도는 어디입니까?
template = "{country}의 수도는 어디입니까?"
prompt = PromptTemplate.from_template(template=template)
#prompt
input_variables=['country'] input_types={} partial_variables={} template='{country}의 수도는 어디입니까?'
1-3.format
format메소드를 통해 템플릿의 값을 채우며 prompt를 생성할수있다.
template = "{country}의 수도는 어디입니까?"
prompt = PromptTemplate.from_template(template=template)
print(prompt.format(country="대한민국"))
#결과
대한민국의 수도는 어디입니까?
2.Chain
여러 단계를 연결하여 입력 데이터를 처리하고 최종 결과를 생성하는 워크플로우를 만드는 데 사용된다.
- prompt: 입력 데이터를 받아 {country} 변수에 값을 채웁니다.
- llm: 채워진 프롬프트를 기반으로 응답을 생성합니다.
- output_parser: LLM의 응답을 문자열로 변환하여 반환합니다.
chain = prompt | llm | output_parser
2-1.invoke
체인은 invoke 메서드를 통해 실행된다.
invoke를 통해 chain에서 실행하면서 필요한 입력 데이터를 전달하고 최종 결과를 반환하는 역할을 수행할수있다.
프롬프트가 "한국의 수도는 어디입니까?"로 채워짐.
LLM이 해당 질문에 응답.
출력 파서가 응답을 문자열로 변환.
from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_ollama import OllamaLLM
llm = OllamaLLM(model="llama3.1")
template = "{country}의 수도는 어디입니까?"
prompt = PromptTemplate.from_template(template=template)
chain = prompt | llm | StrOutputParser()
result = chain.invoke({"country": "한국"})
#결과
서울
2-2.stream
스트리밍 방식으로 체인을 실행할 때 사용하는 기능이다.
조각(chunk) 단위로 나눈다.
for chunk in chain.stream({"country": "한국"}):
print(chunk)
#결과
서울
입니다.
2-2-1.스트리밍 출력
결과 데이터를 조각(chunk) 단위로 실시간으로 전달하는 방식
모델이 긴 결과를 생성할 때, 모든 결과를 다 계산한 후에 반환하지 않고, 생성 중인 데이터를 한 부분씩 즉시 전송하여 보여주는 기술이다. 긴 응답을 처리할 때 사용자 경험을 크게 향상된다.
2-3.batch
여러 입력을 한꺼번에 처리할 때 사용
questions = [
{"question": "학생이 선생님에게 질문하는 상황"},
{"question": "친구와 여행 계획을 세우는 상황"},
{"question": "가족과 저녁 메뉴를 고르는 상황"}
]
3.output_parser
모델의 출력 데이터를 처리하는 컴포넌트
모델의 응답을 원하는 형식으로 변환하거나 가공하는 역할을한다.
StrOutputParser(문자열 출력 파서)나 JsonOutputParser(JSON 출력 파서)가있다.
'AI' 카테고리의 다른 글
[LangChain] Runnable (0) | 2025.01.11 |
---|---|
[LangChain] llama 로컬환경에서 사용하기 (0) | 2025.01.10 |
[AI] Anaconda 가상환경 사용 (0) | 2025.01.10 |