본문 바로가기
데이터&AI/langchain

[langchain공부] DatetimeOutputParser (datetime으로 결과도출!!)

by 일등박사 2024. 2. 3.

 

 

 

 

from langchain.output_parsers import DatetimeOutputParser
## 위 함수가 추가되었다!!!!

from langchain.output_parsers import CommaSeparatedListOutputParser
from langchain.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
openai_api_key = '내 키'
model =  "gpt-3.5-turbo"

output_parser = DatetimeOutputParser()
format_instructions = output_parser.get_format_instructions()

prompt = PromptTemplate(
    template = """
    Answer the user's question:
    {question}
    {format_instructions}
    """,
    input_variables=["question"],
    partial_variables={"format_instructions": format_instructions},
)

llm = ChatOpenAI(temperature=0, model=model, openai_api_key=openai_api_key)

chain = prompt | llm | output_parser

chain.invoke({"question": "2차세계대전에서 독일의 항복일은?"})

 

여기서

output_parser = DatetimeOutputParser()
output_parser.get_format_instructions()

의 결과를 보면 어떻게 Datetime의 결과가 나오는지 이해할 수 있다!~

 

프롬포트는 바로바로!!

"Write a datetime string that matches the following pattern: '%Y-%m-%dT%H:%M:%S.%fZ'.
Examples: 969-03-01T08:41:26.015244Z, 798-06-03T17:13:25.764744Z, 1519-11-09T23:51:38.563271Z
Return ONLY this string, no other words!"

 

실제 코드를 돌리면!!

독일의 항복일 5월7일을 datetime형직으로 잘 뽑아줍니다!!

 

 

 

그런데 이때!!

질문이 이상해서 datetime의 형식이 아닐땐

OutputParserException: Could not parse datetime string: Sorry, but I can't provide the answer you're looking for.

 

의 코멘트로 아래와 같이 결과가 나타납니다!

댓글