랭체인에서 ChatOpenAI를 이용하면 OpenAI에서 제공하는 채팅 전용 LLM(Large Language Model)을 사용할 수 있다.
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
temperature=0,
max_tokens=256,
model_name='gpt-4'
)
query = "대한민국의 가을은 몇 월부터 몇 월까지야?"
response = llm.invoke(query) # reponse = content + response_metadata
print(f"답변 내용 : {response.content}") # llm 답변이 출력됨
print(f"메타 데이터 : {response.response_metadata}") # model_name, token_usage 등이 출력됨
from langchain_openai import ChatOpenAI
from langchain_teddynote.messages import stream_response
llm = ChatOpenAI(
temperature=0,
max_tokens=256,
model_name='gpt-4'
)
query = "대한민국의 대표 음식 5가지를 알려줘"
response = llm.stream(query)
for token in response:
print(token.content, end="", flush=True)
query = "호주의 대표 도시 3개를 고르고 각 도시에 대한 간단한 소개를 해줘."
response = llm.stream(query)
stream_response(response)
사용자 정의 체인을 쉽게 만들도록 대부분의 컴포넌트에 Runnable 프로토콜을 구현해 놓았으며, 이 중 invoke, stream, batch는 다음과 같은 역할을 수행하는 표준 인터페이스이다.
from langchain_openai import ChatOpenAI
from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
llm = ChatOpenAI(
temperature=0.2,
model_name="gpt-4-turbo"
)
prompt = PromptTemplate.from_template("{location}에 대해 소개하는 글을 2문장으로 작성해줘.")
chain = prompt | llm | StrOutputParser() # create chain
# invoke
chain.invoke({"location": "서울"})
# stream
for token in chain.stream({"location": "서울"}):
print(token, end="", flush=True)
# batch
chain.batch([{"location" : "서울"}, {"location" : "캘리포니아"}])