🧑💻 LangChain과 OpenAI를 사용한 간단한 레시피 생성기
Python과 LangChain을 사용하여 간단한 레시피 생성기를 만드는 방법을 만들어 보려고 한다.
OpenAI의 GPT 모델을 활용하여 사용자가 입력한 재료에 맞는 요리를 추천해주는 코드를 작성하여 오늘밤 든든하게
냠냠~~~
💻 코드 설명
아래는 코드와 함께 각 부분에 대한 설명이다.
# 1. dotenv 라이브러리를 사용하여 환경 변수를 로드한다.
from dotenv import load_dotenv
# 2. LangChain의 ChatPromptTemplate을 사용하여 대화형 프롬프트를 생성한다.
from langchain.prompts import ChatPromptTemplate
# .env 파일에서 API 키와 같은 환경 변수를 불러온다.
load_dotenv()
# 3. LangChain의 OpenAI 클라이언트를 설정한다.
from langchain_openai import ChatOpenAI
# OpenAI API와 연결할 LLM(대규모 언어 모델)을 설정한다.
llm = ChatOpenAI(
model="gpt-3.5-turbo", # 사용할 GPT 모델
temperature=0.7, # 출력의 창의성을 조정한다. (값이 클수록 다양하고 창의적인 응답을 생성한다.)
max_tokens=1000 # 최대 토큰 수를 설정한다.
)
# 4. ChatPromptTemplate을 사용하여 프롬프트 메시지를 구성한다.
# "system" 메시지로 기본 지시사항을 제공하고, "user" 메시지로 사용자 입력을 받을 준비를 한다.
prompt = ChatPromptTemplate.from_messages([
("system", "주어진 재료와 어울리는 레시피를 써줘"), # 시스템 지시
("user", "{input}") # 사용자의 입력값
])
# 5. 프롬프트와 모델을 연결하여 실행 가능하도록 설정한다.
chain = prompt | llm
# 6. 사용자가 입력한 재료("돼지고기")로 모델을 실행한다.
response = chain.invoke({"input": "돼지고기"})
# 7. 결과를 출력한다.
print(response)
# 아래는 실시간 결과 출력을 위한 코드이다. (옵션, 주석 처리됨)
# for chunk in response:
# print(chunk.content, end="", flush=True)
코드 설명
- 1.
dotenv
설정:.env
파일에서 API 키를 가져온다. OpenAI API를 안전하게 사용할 수 있도록 설정한다. - 2.
ChatOpenAI
모델 설정: GPT-3.5-turbo 모델을 사용하여 대화 기반의 응답을 생성한다. - 3.
ChatPromptTemplate
구성: 시스템 메시지("레시피를 작성하라")와 사용자 입력값을 기반으로 모델의 응답을 생성한다. - 4.
chain.invoke
실행: "돼지고기"를 입력값으로 전달하여 어울리는 레시피를 생성한다. - 5.설명:
- 파이프라인(|) 연산자:
- LangChain에서는 | 연산자를 사용하여 두 객체를 연결할 수 있다.
- 이 경우, prompt와 llm(ChatOpenAI 모델 객체)를 연결하여, 프롬프트를 모델에 바로 전달할 수 있도록 파이프라인을 구성한다.
- 동작 방식:
- **prompt | llm**의 의미:
- 이 코드는 prompt 템플릿에서 생성된 메시지를 llm(GPT 모델)에 전달하여 결과를 생성하는 체인을 만든다.
- 이 체인을 실행하면 사용자 입력에 따라 동적으로 생성된 메시지가 모델로 전달되고, 모델의 응답을 받을 수 있다.
- **prompt | llm**의 의미:
- 파이프라인(|) 연산자:
- 6. 사용자가 입력한 재료("돼지고기")로 모델을 실행한다
- chain.invoke:
- invoke 메서드는 체인(chain)을 실행하여 결과를 반환한다.
- 이 메서드에 딕셔너리 형태로 데이터를 전달하여, prompt 템플릿의 플레이스홀더 {input}을 채운다.
- 동작 방식:
- 입력 전달:
- {"input": "돼지고기"}를 전달하면, 템플릿의 {input} 부분이 "돼지고기"로 대체된다.
- 최종 프롬프트는 다음과 같다:
system: 주어진 재료와 어울리는 레시피를 써줘 user: 돼지고기
- 모델 호출:
- 이 프롬프트가 llm(ChatOpenAI 모델)에 전달된다.
- 모델은 입력값(돼지고기)에 기반하여 적절한 레시피를 생성하고 응답을 반환한다.
- 입력 전달:
✨ 출력 예시
사용자가 "돼지고기"를 입력하면 다음과 같은 결과가 출력될 수 있다:
돼지고기를 이용한 대표적인 요리는 돼지갈비찜이다. 다음은 돼지갈비찜을 만드는 방법이다...
📌 응용 방법
- 다양한 재료: 사용자가 다른 재료를 입력하면 그에 맞는 요리를 추천받을 수 있다.
- 실시간 결과 출력: 청크 단위로 결과를 출력하여 실시간 피드백을 제공할 수 있다.
위 코드를 활용하여 자신만의 요리 추천기를 만들어보길 바란다. 😊
오늘도 맛있는 코드 냠냠
'파이썬' 카테고리의 다른 글
렝체인 실습#2 - 다양한 출력방법_1 (0) | 2024.11.11 |
---|---|
Vscode 또는 Cursor에서 Jupyter Notebook 가상환경만들기 (2) | 2024.11.10 |
LangChain으로 AI 기반 애플리케이션 구현하기: 초보자를 위한 가이드 🚀 (2) | 2024.11.10 |
댓글