일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- RecursiveCharacterTextSplitter
- azure services
- lcel
- Parallel
- ai language
- 문서/번역 서비스 사용
- rag
- azure open ai service
- Multimodal
- azure open ai
- pdfloader
- teddynote
- OpenAI
- 자연어처리
- chain생성
- 자연어 처리
- Azure
- runnableparallel
- langchain
- azure ai
- runnablepassthrough
- splitter
- langsmith
- azureai
- webbaseloader
- csvloader
- Runnable
- runnablelambda
- 챗봇 만들기
- GPT
- Today
- Total
Nathaniel
6. Langchain Parser?? 본문
출력 Parser에 대한 역할에 대해 알아보자
Langchain의 출력파서(output Parser)는 언어 모델(LLM)의 출력을 더 유용하고 구조화된 형태로 변환하는 중요한 컴포넌트이다. 원래의 Parser는 해석하다이지만 Langchain에서는 변환하다는 의미가 좀 더 부각된다.
Json 형식인 딕셔너리 Key:Value 로 데이터를 가져오는 게 굉장히 용이하다. Parser가 하는 역할은 일반적인 문단을 봤을 때 정확하게 내용을 딱 찝어오는 게 어렵다
Parser의 종류는 굉장히 많다. 아래에는 Parser의 종류별 코드 출력을 넣었다.
PydanticeOutputParser
스키마를 따르는 데이터 구조로 변환함.
CommaSeparatedListOutputParser
리스트 형식으로 출력이 된다.
StructuredOutputParser
GPT, Cluade 모델 보다는 인텔리전스가 낮은(parameter 수가 적은) 모델에서 효과적이다.
JsonOutputParser
Json Parser는 모델의 용량인 인텔리전스가 충분히 커야 한다. llama-70B 모델은 llama-8B 모델보다 더 큰 용량을 가지고 있으니 복잡한 데이터를 처리하는 데 유리하다
PandasDataFrameOutputParser
이 출력 파서는 임의의 Pandas DataFrame을 지정해 Data-Frame에서 데이터를 추출하고 형식화된 사전(dictionary)형태로 조회할 수 있도록 하는 LLM 도구이다.
DatetimeOutputParser
파이썬의 datetime은 약속된 문자 형식으로 날짜 및 시간을 지정할 수 있다.
무슨 뜻이냐면, 아래의 변수에 따옴표("")내에 %영문을 넣으면 년도 날짜 시간을 나타내는 것
ex)1. output_parser.format = "%Y-%m-%d" = 2025-03-11
ex)2. output_parser.format = "%Y-%m-%d %H" = 2025-03-11 14시
아래 사진에서 형식코드를 보면 어떠한 문자를 쓸지 생각하고 쓰면 된다.
코드 참고 표를 확인해도 좋다.
**참고**
| 형식 코드 | 설명 | 예시 |
|------------|---------------------|---------------|
| %Y | 4자리 연도 | 2024 |
| %y | 2자리 연도 | 24 |
| %m | 2자리 월 | 07 |
| %d | 2자리 일 | 04 |
| %H | 24시간제 시간 | 14 |
| %I | 12시간제 시간 | 02 |
| %p | AM 또는 PM | PM |
| %M | 2자리 분 | 45 |
| %S | 2자리 초 | 08 |
| %f | 마이크로초 (6자리) | 000123 |
| %z | UTC 오프셋 | +0900 |
| %Z | 시간대 이름 | KST |
| %a | 요일 약어 | Thu |
| %A | 요일 전체 | Thursday |
| %b | 월 약어 | Jul |
| %B | 월 전체 | July |
| %c | 전체 날짜와 시간 | Thu Jul 4 14:45:08 2024 |
| %x | 전체 날짜 | 07/04/24 |
| %X | 전체 시간 | 14:45:08 |
DatetimeOutputParser 코드 사용 예시
from langchain.output_parsers import DatetimeOutputParser
from langchain.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
# 날짜 및 시간 출력 파서
output_parser = DatetimeOutputParser()
output_parser.format = "%Y-%m-%d"
# 사용자 질문에 대한 답변 템플릿
template = """Answer the users question:\n\n#Format Instructions: \n{format_instructions}\n\n#Question: \n{question}\n\n#Answer:"""
prompt = PromptTemplate.from_template(
template,
partial_variables={
"format_instructions": output_parser.get_format_instructions()
}, # 지침을 템플릿에 적용
)
# 프롬프트 내용을 출력
prompt
SerpApi
SerpApi는 검색 엔진을 전부 통합시켜줌(구글 관련 맵, 검색, Play Store, image 등등)
이제 Parser까지 했으면 해당 검색 엔진 툴 API를 사용할 것이다.
해당 사이트에서 로그인 한 후에, API 키를 발급 받고 .env 파일에 넣어서 해당 키를 읽어온다.
parameter 사용 법은 사이트에 접속해서 python으로 사용할지, JS로 사용할지 골라서 사용법을 보면된다.
https://serpapi.com/integrations/python
SerpApi: Python Integration
Easy integration with Python. SerpApi provides integrations in multiple languages. Start integration using your preferred language.
serpapi.com
SerpApi의 Engine Params로는 google 엔진을 선택하고 언어는 한국어로 받아들이는 방법으로 실행해보았다.
검색 결과가 굉장히 잘 나오는 것 같다 ㅎ
'AI' 카테고리의 다른 글
8. Langchain Document_Loader, Parser (0) | 2025.03.19 |
---|---|
7. Langchain 캐싱(API 호출 비용 감소) (0) | 2025.03.17 |
5. Lagnchain-prompt-template 생성 (0) | 2025.03.07 |
4. Runnable(Passthrough, Parallel,Lambda) (0) | 2025.03.02 |
3. Langchain LCEL, Parallel (4) | 2025.03.02 |