Output Parser
- llm의 응답을 특정 형태로 변형할 때 사용
- langchain의 BaseOutputParser 클래스를 상속 받아 OutputParser를 커스터마이징 할 수 있음
from langchain.schema import BaseOutputParser
class CommaOutputParser(BaseOutputParser)
def parse(self, text):
items = text.stip().split(',')
return list(map(str.strip, items))
parser = CommaOutputParser()
parser.parse('안녕, 내이름은, pysun이야')
['안녕', '내이름은', 'pysun이야']
OutputParser를 활용해서 chain 만들기
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
chat = ChatOpenAI(temperature=0.1)
template = ChatPromptTemplate.from_messages([
('system', 'You are a list generating machine. Everything you are asked will be answered with a comma separated list of max {max_items} in lowercase. Do not reply with anything else.'),
('human', '{question}')
])
chain = template | chat | CommaOutputParser()
chain.invoke({
'max_items':10,
'question':'what are the pokemons?'
})
['bulbasaur',
'charmander',
'squirtle',
'pikachu',
'jigglypuff',
'eevee',
'snorlax',
'bulbasaur',
'charmander',
'squirtle']