생성형AI

Langchain의 모델

도그사운드 2024. 12. 30. 17:05

템플릿을 활용하는 형태는 다음의 예로 확인해볼 수 있다.

from langchain_core.prompts import PromptTemplate

information="""Carter is..... """

summary_template="""내용을 요약해줘"""

summary_prompt_template=PromptTemplate(input_variables=["information"], template=summary_template)
#PromptTemplate는 명령과 템플릿을 담는다.

llm=ChatOpenAI(temperature=0, model_name="gpt-3.5-turbo")

chain= summary_prompt_template|llm

chain.invoke(input={"information":information})

 

PromptTemplate 메소드, ChatOpenAI 메소드와 Chain |이 핵심적인 형태다.

PromptTemplate

- 프롬프트 템플릿은 LLM의 템플릿 예) {X} X=FPV  처럼 입력과 매개변수를 받는다. 위의 예를 본다면 input_variable(요약을할지, 특징을 뽑을 지 등등의 요청)과 template(말뭉치)이 입력이 된다.

Fewshot도 가능

from langchain_core.prompts import FewShotPromptTemplate

 

ChatOpenAI

- 모델 사용과 관련된 부분으로 OpenAI를 사용할때에 해당. 당연히 이전에 .env에 OPENAI_API_KEY는 입력해 주어야 한다. from langchain_openai import ChatOpenAI로 불러준다.

인스턴스를 생성할때는 

llm=ChatOpenAI(model='gpt-4o", temperature=0, max_tokens=None, timeout=None, max_retries=2, api_key=".env에 입력 안했을 경우")

호출할때는 llm.invoke(msg)

msg=["번역해줘", "나는 어쩌구~~~"]

 

Chain

체인은 |로 파이프라인처럼 처리한다.

chain = prompt | model | StrOutputParser()

.pipe() 메소드를 사용하기도 한다.

예를 들자면

chain=(RunnableParallel({"joke":chain}).pipe(analysis_prompt).pipe(model).pipe(StrOutputParser()))