본문 바로가기
파이썬

LangChain으로 AI 기반 애플리케이션 구현하기: 초보자를 위한 가이드 🚀

by 일등미노왕국 2024. 11. 10.

 

이번글에서는 Langchain을 사용하여 AI 기반 애플리케이션을 만드는 방법을 만들어보자
Langchain은 외부 데이터 소스와의 연결을 용이하게 하며, 다양한 구성 요소를 쉽게 교체할 수 있는 기능을 제공한다. 
Python과 JavaScript를 지원하며, ' 챗봇'을 간단히 구현할 수 있는 데모를 진행해보자
특히 보안성을 강조하며 환경 변수를 활용하여 API 키를 관리하는 방법은 꼭 가져가도록 하자
 

 

1. 서론 🚀 LangChain의 핵심 기능과 중요성

  • LangChain은 AI 기반 애플리케이션을 만드는 데 도움을 주는 개발 프레임워크로, JavaScript와 Python을 지원한다.
  • 이 프레임워크는 AI 애플리케이션을 외부 데이터 소스와 쉽게 연결할 수 있는 능력을 제공하며, 구성 요소의 교체 또한 매우 간단하다.
  • 예를 들어, OpenAI 모델을 사용하고 싶지 않을 때, 오히려 오픈 소스 모델로 쉽게 교체할 수 있는 기능이 있다.
  • LangChain은 실행 중 필요한 모든 정보(단계, 입력, 출력 등)를 제공하여 실제 SaaS 애플리케이션 구축에 매우 중요하다.
  • 이 시리즈는 초보자에게 친숙하지만 기본적인 이해가 필요하므로, 필요한 경우 GitHub에서 소스 코드를 찾아볼 수 있는 방법도 제공된다.

 

2. 🚀 LangChain 프로젝트 환경 설정 방법

  • Python을 사용하여 새로운 프로젝트를 코드 에디터에서 시작하고, VS Code를 사용하여 프로젝트 환경을 설정한다.
  • 터미널에서 `python -m venv` 명령어를 실행하여 'venv'라는 이름의 가상 환경을 생성하고, `venv\Scripts\activate`로 활성화한다.
  • 종속성을 설치하기 위해 `pip install langchain` 및 `langchain[ openai]` 명령어를 실행하여 OpenAI 모델을 사용할 준비를 한다.
  • 이후, `llm.py`라는 새 파일을 생성하고, LangChain의 ChatOpenAI 클래스를 가져와 OpenAI API를 호출할 수 있도록 모델을 인스턴스화한다.
  • API 키는 platform. openai.com에서 생성한 후, 해당 키를 코드에 파라미터로 전달하여 사용한다.

 

3. 🤖 챗봇 기능 구현하기

  • 챗봇을 사용하기 위해서는 `llm.invoke`를 호출해야 하며, 모델에 메시지를 전달할 수 있다 .
  • 모델로부터 응답을 받기 위해서, 응답을 `response`라는 변수에 저장하고 출력할 수 있다 .
  • 이를 통해 간단하게 첫 번째 챗봇을 만들 수 있었고, 결과적으로 원하는 내용을 화면에 출력할 수 있다 .
  • 코드 개선을 위해 터미널을 종료하고, 다음 단계로 진행할 준비를 한다 .

 

4. 🔒 API 키 보안을 위한 환경 변수 활용 방법

  • API 키를 코드에서 제거하고 환경 변수에 추가하는 것이 보안상 필수적이다 .
  • 예를 들어, 사용자 기반으로 API 키를 동적으로 생성해야 했던 프로젝트 경험이 있으며, 이러한 경우 API 키를 속성으로 전달하는 것이 적합하다고 여겨졌다 .
  • 보안을 위해 프로젝트 폴더에 `.env` 파일을 생성하고, `OPENAI_API_KEY`라는 새 값을 설정해야 한다 .
  • 환경 변수를 코드에서 사용 가능하게 만들기 위해 `python-dotenv` 패키지를 설치하고, 필요한 import 및 함수를 실행해야 한다 .
  • `ChatOpenAI` 클래스가 자동으로 `OPENAI_API_KEY`라는 환경 변수를 찾기 때문에, 추가적인 코드 라인을 제거해도 됩니다 .

 

5. 🤖 OpenAI 모델 설정 및 호출 방법

  • OpenAI는 사용 가능한 여러 모델의 목록을 제공하며, 이 중에서 상호작용할 특정 모델(GPT-3.5 또는 GPT-4)을 선택하여 사용한다. 이번 튜토리얼에서는 대부분의 사용자에게 접근 가능한 GPT-3.5 모델을 사용할 예정이다.
  • 모델의 온도 값을 설정할 수 있으며, 이는 0에서 1 사이의 값을 가지며, 0은 사실적이고 1은 창의적인 응답을 의미한다. 예를 들어, 수학 질문에 대해서는 0.2 또는 0.4와 같은 낮은 온도 값을 사용하고, 창의적 질문에 대해서는 0.7과 같은 높은 값을 사용할 수 있다.
  • 최대 토큰 수를 설정하는 것도 중요하며, OpenAI 모델사용 시 비용이 생성되는 토큰 수를 제한하는 데 유용하다.
  • verbose 속성을 true로 설정하면, 모델의 출력을 디버깅할 수 있어 복잡한 체인 작업에 유용하다.
  • 여러 프롬프트를 동시에 전달해 답변을 받을 수 있는 batch 메서드가 존재하며, 이 메서드를 사용하면 리스트 형태로 여러 프롬프트를 전달할 수 있다.
  • stream 메서드는 프롬프트에 대한 응답을 청크 단위로 받아오는 기능을 제공하며, 사용자가 명령어를 변경하여 청크를 출력할 수 있다.
5.1. 모델 선택 및 초기 설정
  • 모델 이름을 지정할 수 있으며, OpenAI는 사용할 수 있는 다양한 모델 목록을 제공한다 .
  • 본 튜토리얼에서는 접근 가능한 모델 중 하나로 GPT-3.5 모델을 사용하겠다고 설명한다 .
  • 또한, 온도 값을 설정할 수 있으며, 이 값은 0과 1 사이의 값으로, 0은 엄격하고 사실적인 답변을, 1은 창의적인 답변을 의미한다 .
  • 사실적인 답변을 원할 경우 온도 값을 0.2 또는 0.4로 설정하며, 수학 문제나 데이터베이스 질의에 적합한 수치를 제안한다 .
  • 반면에 창의적인 결과를 원할 경우 온도 값을 0.7과 같은 값으로 설정하는 것이 바람직하다고 설명한다 .
5.2. 모델 상호작용 최적화를 위한 속성 설정
  • 모델과 상호작용 시, 생성할 수 있는 최대 토큰 수를 지정할 수 있으며, 이는 OpenAI 모델과의 상호작용에서 발생하는 비용을 고려할 때 중요하다 .
  • 따라서 최대 토큰 수를 제한하는 속성을 추가하는 것이 필요하다 .
  • 또 다른 중요한 속성인 verbose 속성 디버깅을 위해 true로 설정할 수 있으며, 이는 복잡한 체인에서 출력結果을 점검하는 데 유용하다 .
5.3. 모델 호출 및 응답 처리 방법
  • 모델을 호출하는 여러 방법을 통해 프롬프트를 전달하고 응답을 처리할 수 있다.
  • 'invoke' 메서드는 단일 프롬프트를 전달하고 응답을 받는 기능을 제공하지만, 'batch'를 사용하면 다수의 프롬프트를 전달할 수 있다.
  • 'batch' 메서드를 사용하면 리스트 형식으로 여러 값을 전달하고, 예를 들어 "AI에 대한 시를 작성해라"와 같은 추가 프롬프트를 사용할 수 있다.
  • 응답은 AI 메시지 객체의 리스트로 제공되며, 각 객체에는 프롬프트에 대한 내용이 포함된다.
  • 주목할 만한 점은 두 개의 프롬프트가 병렬로 실행되어 동시에 응답이 처리된다는 것이다.
5.4. 스트리밍 방식으로 모델 응답 처리하기
  • 스트리밍 메서드는 AI의 응답을 덩어리(chunk)로 받아오는 방법을 제공한다 .
  • 응답을 더 잘 나타내기 위해서, 단순히 응답을 출력하는 대신 chunk.content를 출력하도록 수정해야 한다 .
  • 터미널에서 스트리밍을 실행하면, AI가 생성한 응답이 실시간으로 제공됨을 확인할 수 있다 .
  • 예를 들어, "AI에 대한 시를 작성하라"는 큰 프롬프트를 사용했을 때, 모델의 응답이 순차적으로 스트리밍되는 것을 볼 수 있다 .

6. 결론 🤖 챗봇 구현의 단계와 앞으로의 학습 방향

  • 이제 LangChain을 사용하여 기본적인 챗봇을 구현하는 방법을 알게 되었다.
  • 다음 영상에서는 대화에 대한 완전한 제어와 AI가 생성하는 출력에 대한 조절 방법을 배울 예정이다.
  • 이 과정은 챗봇의 기능 확장을 위한 기초적인 단계를 마무리하는 것으로, 향후 심화 학습에 대한 기대감을 유지하고 있다.

 

 

 

댓글