[랭체인] 수학 연산 체인 구현하기
안녕하세요, 여러분! 오늘은 LangChain과 OpenAI의 ChatGPT를 활용하여 수학 연산을 수행하는 간단하지만 강력한 체인을 만드는 방법에 대해 알아보겠습니다. 이 튜토리얼을 통해 여러분은 자연어로 된 수학 문제를 입력받아 정확한 수치 결과를 출력하는 시스템을 구축하게 될 것입니다.
준비 단계
먼저, 필요한 라이브러리를 설치하고 임포트해야 합니다.
라이브러리 설치:
!pip install -Uq langchain_core langchain_openai
필요한 모듈 임포트:
from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser from langchain_openai import ChatOpenAI import numexpr
OpenAI API 키 설정:
import os from google.colab import userdata os.environ["OPENAI_API_KEY"] = userdata.get('OPENAI_API_KEY')
참고: 이 부분은 Google Colab에서 작업할 때 필요한 단계입니다. 로컬 환경에서는 API 키를 직접 설정해주세요.
체인 구성하기
이제 LangChain을 사용하여 수학 연산 체인을 구성해 보겠습니다.
1. 프롬프트 템플릿 정의:
prompt_template = ChatPromptTemplate.from_template(
"For {query}, write only the mathematical expression suitable for numexpr.evaluate()."
)
이 템플릿은 사용자의 쿼리를 받아 numexpr 라이브러리가 평가할 수 있는 수학 표현식으로 변환하도록 ChatGPT에 지시합니다.
2. 체인 구성:
chain = prompt_template | ChatOpenAI() | StrOutputParser() | numexpr.evaluate
이 한 줄의 코드로 우리는 다음과 같은 강력한 파이프라인을 만들었습니다:
prompt_template
: 사용자 쿼리를 ChatGPT에 적합한 형식으로 변환ChatOpenAI()
: ChatGPT 모델을 사용하여 수학 표현식 생성StrOutputParser()
: ChatGPT의 출력을 문자열로 파싱numexpr.evaluate
: 파싱된 수학 표현식을 실제로 계산
체인 사용하기
이제 우리의 체인을 사용해 봅시다!
result = chain.invoke({'query': 'What is 13 raised to the .3432 power?'})
print(result)
이 코드를 실행하면 다음과 같은 결과를 얻게 됩니다:
array(2.41160046)
놀랍지 않나요? 우리는 자연어로 된 수학 문제를 입력했고, 시스템은 이를 정확하게 해석하여 계산된 결과를 반환했습니다.
작동 원리
- 사용자의 쿼리 "What is 13 raised to the .3432 power?" 가 프롬프트 템플릿에 전달됩니다.
- ChatGPT는 이 쿼리를 해석하여
13**0.3432
와 같은 수학 표현식을 생성합니다. - 이 표현식은 문자열로 파싱된 후
numexpr.evaluate()
함수에 전달됩니다. numexpr
라이브러리가 이 표현식을 평가하여 최종 결과를 계산합니다.
결론
이렇게 우리는 LangChain과 ChatGPT를 활용하여 자연어로 된 수학 문제를 해결하는 강력한 도구를 만들었습니다. 이 접근 방식은 단순한 계산을 넘어 복잡한 수학적 개념이나 문제 해결에도 확장하여 적용할 수 있습니다.
이 튜토리얼이 여러분의 AI와 수학의 융합에 대한 이해를 높이는 데 도움이 되었기를 바랍니다. 더 복잡한 수학 문제나 다른 도메인의 문제에도 이 방식을 적용해 보세요. 행운을 빕니다!
- [랭체인] 간단한 텍스트 생성 체인 만들기
- [랭체인] 텍스트 감성 분류 체인 만들기
- [랭체인] 간단한 챗봇 만들기
- [랭체인] 수학 연산 체인 구현하기
- [랭체인] SQL 데이터베이스 쿼리 자동화
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
You've got a free upvote from witness fuli.
Peace & Love!
안녕하세요. 오늘(2024.07.01) 기준 @jsup 2.0 후원 보팅 현황입니다.
jsup 2.0 - 업보팅을 다시 위대하게
@newiz -> @anpigon : 606.97sp
@jstst -> @anpigon : 89.68sp
@jsup에 임대하시면 매일 업보팅을 받으며, 23일후부터 매일 큐레이션/패시브 보상을 받습니다. 후원 내역이 있을 경우 임대량에 합산되어 보팅됩니다. 개발자(@joviansummer) 지원 보팅 외에 수수료가 없어 수익률도 우수합니다. 많은 관심 부탁드립니다. 감사합니다.