이번글에서는 Langchain을 사용하여 AI 기반 애플리케이션을 만드는 방법을 만들어보자
Langchain은 외부 데이터 소스와의 연결을 용이하게 하며, 다양한 구성 요소를 쉽게 교체할 수 있는 기능을 제공한다.
Python과 JavaScript를 지원하며, ' 챗봇'을 간단히 구현할 수 있는 데모를 진행해보자
특히 보안성을 강조하며 환경 변수를 활용하여 API 키를 관리하는 방법은 꼭 가져가도록 하자
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/009.gif)
1. 서론 🚀 LangChain의 핵심 기능과 중요성
- LangChain은 AI 기반 애플리케이션을 만드는 데 도움을 주는 개발 프레임워크로, JavaScript와 Python을 지원한다.
- 이 프레임워크는 AI 애플리케이션을 외부 데이터 소스와 쉽게 연결할 수 있는 능력을 제공하며, 구성 요소의 교체 또한 매우 간단하다.
- 예를 들어, OpenAI 모델을 사용하고 싶지 않을 때, 오히려 오픈 소스 모델로 쉽게 교체할 수 있는 기능이 있다.
- LangChain은 실행 중 필요한 모든 정보(단계, 입력, 출력 등)를 제공하여 실제 SaaS 애플리케이션 구축에 매우 중요하다.
- 이 시리즈는 초보자에게 친숙하지만 기본적인 이해가 필요하므로, 필요한 경우 GitHub에서 소스 코드를 찾아볼 수 있는 방법도 제공된다.
![](https://blog.kakaocdn.net/dn/uJyku/btsKDsRGSJe/MlN24zkbX8tt4a7gKNzig1/img.png)
2. 🚀 LangChain 프로젝트 환경 설정 방법
![](https://blog.kakaocdn.net/dn/EeNlw/btsKDj1qO4B/BmBlleWNZ7kujw5RtuVC6K/img.png)
- 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. 🤖 챗봇 기능 구현하기
![](https://blog.kakaocdn.net/dn/bdXoU9/btsKDsxo1gH/IIJQqghqVxSKYn7OhpyDw0/img.png)
- 챗봇을 사용하기 위해서는 `llm.invoke`를 호출해야 하며, 모델에 메시지를 전달할 수 있다 .
- 모델로부터 응답을 받기 위해서, 응답을 `response`라는 변수에 저장하고 출력할 수 있다 .
- 이를 통해 간단하게 첫 번째 챗봇을 만들 수 있었고, 결과적으로 원하는 내용을 화면에 출력할 수 있다 .
- 코드 개선을 위해 터미널을 종료하고, 다음 단계로 진행할 준비를 한다 .
4. 🔒 API 키 보안을 위한 환경 변수 활용 방법
![](https://blog.kakaocdn.net/dn/IJeQr/btsKDp8y0nr/WF5MkbnMXtoO4OygbnoYF0/img.png)
- API 키를 코드에서 제거하고 환경 변수에 추가하는 것이 보안상 필수적이다 .
- 예를 들어, 사용자 기반으로 API 키를 동적으로 생성해야 했던 프로젝트 경험이 있으며, 이러한 경우 API 키를 속성으로 전달하는 것이 적합하다고 여겨졌다 .
- 보안을 위해 프로젝트 폴더에 `.env` 파일을 생성하고, `OPENAI_API_KEY`라는 새 값을 설정해야 한다 .
- 환경 변수를 코드에서 사용 가능하게 만들기 위해 `python-dotenv` 패키지를 설치하고, 필요한 import 및 함수를 실행해야 한다 .
- `ChatOpenAI` 클래스가 자동으로 `OPENAI_API_KEY`라는 환경 변수를 찾기 때문에, 추가적인 코드 라인을 제거해도 됩니다 .
5. 🤖 OpenAI 모델 설정 및 호출 방법
![](https://blog.kakaocdn.net/dn/dKtlsD/btsKDptXcWE/TC8rlogbgcXrGhpdceb1qk/img.png)
- 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. 결론 🤖 챗봇 구현의 단계와 앞으로의 학습 방향
![](https://blog.kakaocdn.net/dn/bqUyJp/btsKD3XY4Ho/4gseGbR4VnQtTn6mpdOAMk/img.jpg)
- 이제 LangChain을 사용하여 기본적인 챗봇을 구현하는 방법을 알게 되었다.
- 다음 영상에서는 대화에 대한 완전한 제어와 AI가 생성하는 출력에 대한 조절 방법을 배울 예정이다.
- 이 과정은 챗봇의 기능 확장을 위한 기초적인 단계를 마무리하는 것으로, 향후 심화 학습에 대한 기대감을 유지하고 있다.
'파이썬' 카테고리의 다른 글
렝체인 실습#2 - 다양한 출력방법_1 (0) | 2024.11.11 |
---|---|
렝체인 실습#1 - 재료에 따른 레스피 만들기 (4) | 2024.11.10 |
Vscode 또는 Cursor에서 Jupyter Notebook 가상환경만들기 (2) | 2024.11.10 |
댓글