호돌찌의 AI 연구소
article thumbnail

ChatGPT가 출시되고 나서 AI 산업계에서 많은 지각변동이 일어났습니다. 작년 말에 ChatGPT가 출시되고 간단하게 사용한 후기 글을 아래와 같이 썼었습니다.

2022.12.22 - [AI/NLP] - ChatGPT 사용법 A-Z, 예시, 한계점 및 시사점

 

ChatGPT 사용법 A-Z, 예시, 한계점 및 시사점

OpenAI에서 Text를 Input으로 하여 이미지를 생성하기 위한 모델 DALL-E(2021), DALL-E 2(2022.04) 를 출시했을 때에도 신선한 충격을 받았었지만, 또 많은 사람들을 충격받게 한 Model이 2주 전에 출시되었습니

hotorch.tistory.com

4개월 전에 관련 글을 지금 다시 보니, 정말 활용을 못하고 글만 올렸다는 느낌이 드는데요. 제가 이전에 작성했던 예시 이상으로 현재 챗봇 서비스는 물론 문서 요약, 번역서비스, 카피라이팅 등 다양한 서비스들이 쏟아지고 있는 것이 현실입니다. 인프라 차이부터 많이 나기 때문에 우리나라에서 빠른 시일 내에 LLM을 만드는 것이 쉬운 것이 아닙니다. 하지만 아래와 같은 경우에는 ChatGPT의 API를 활용하여 서비스를 출시한 Case도 있습니다. 

https://hitchhickr.com/myrealtrip_chatgpt/

 

마이리얼트립의 챗GPT 이용한 ‘AI여행플래너’ 써보니?

 

hitchhickr.com

이와 같이 빨리 Product나 서비스를 내놓기 위해 OpenAI가 가지고 있지 않으면서 우위를 가져가려는 모습이 꽤 보입니다. 저도 생성 쪽을 공부하면서 ChatGPT를 응용 하기 위해 리서치하다가 발견한 하나의 Framework를 소개하고자 합니다. 

 

LangChain이란 무엇인가?


LangChain은 언어 모델로 구동되는 application을 개발하기 위한 framework입니다. 저는 LangChain을 봤을 때의 첫 인상은 19~20년 NLP에서 강력한 아키텍처인 transformer들이 low level로 구현이 되었었던 것을 huggingface에서 만든 transformers 가 나오고 나서 누구나 손쉽게 언어 모델들을 쉽게 활용하게 되었었습니다.

LangChain이 주장하는 것은, 강력하고 차별화된 애플리케이션API를 통해 언어 모델을 호출할 뿐만 아니라 이를 통해 개발할 것이라는 컨셉을 밀어붙이고 있습니다. OpenAI의 gpt api 개인 key를 이어받아 LangChain에 있는 여러 예시(챗봇, 생성요약, qa, 테이블조회 등)들을 활용하여 서비스를 빨리 낼 수 있는 것이 특징인 것 같습니다.

LangChain의 framework의 설계 원칙은 1) 데이터를 쉽게 인식 부분(Be data-aware, 이 부분은 개인적으로 아직까지는 유연하다는 생각이 들지 않습니다.)과 2)언어모델이 강화학습에서의 environment와 작동을 용이하게 하기 위한 에이전트(Be agentic) 부분에 집중하였다고 합니다.

빠르게 시작해보시려는 분들은 여기를 참고하면 좋겠습니다.

https://python.langchain.com/en/latest/getting_started/getting_started.html

 

Quickstart Guide — 🦜🔗 LangChain 0.0.131

You can get chat completions by passing one or more messages to the chat model. The response will be a message. The types of messages currently supported in LangChain are AIMessage, HumanMessage, SystemMessage, and ChatMessage – ChatMessage takes in an a

python.langchain.com

 

주요 Module & 어떤 Use Cases가 존재하는가?


LangChain이 지원하는 몇 가지 주요 module이 있습니다. 각 module마다 시작하기 위한 몇 가지 예제, 사용법 가이드, 참조 문서, 개념 등은 아래 공식 Document를 참고하는 것이 좋습니다. 아래는 각 module들에 대한 설명을 번역 + 제 경험을 녹였습니다. 아마 예제들을 위주로 보면서 이해하는 것이 좋습니다. 

  • model : 다양한 모델 유형(OpenAI) 및 모델 통합 LangChain이 지원합니다.
  • prompts : prompt 템플릿 관리, prompt 최적화 등이 포함됩니다.
  • memory : memory는 아래 설명할 chain / agent 호출 간에 지속되는 State의 개념입니다. LangChain은 memory에 대한 표준 인터페이스, memory 구현 모음, memory를 사용하는 chain / agent의 예시는 공식 document를 상당히 많이 보아야 합니다.
  • index : 언어 모델은 자체 텍스트 데이터와 결합할 때 더욱 강력해지는 경우가 많은데, 이 모듈에서는 이를 위한 모범 사례를 다룹니다. (이 부분을 이용해서 저장하고 활용하는 경우가 존재하였습니다.)
  • chain : 단순한 단일 LLM 호출을 넘어 (LLM 또는 다른 유틸리티에 대한) 호출 시퀀스입니다. LangChain은 chain을 위한 표준 인터페이스나 다른 도구들을 통합하거나, application을 위한 end-2-end chain을 제공합니다.
  • agent : 어떤 작업을 수행할지 결정하고, 해당 작업을 수행하고, 관찰을 확인하고, 완료될 때까지 이를 반복하는 LLM을 포함합니다. LangChain은 agent를 위한 표준 인터페이스, 선택할 수 있는 agent 선택, end-2-end agent의 예시를 제공합니다.

 

위의 모듈에 대한 다양한 방식으로 사용할 수 있습니다. 아래는 LangChain이 지원하는 몇 가지 use cases입니다.

  • Personal Assistants : LangChain의 주요 사용 사례입니다. Personal Assistants는 조치를 취하고, 상호 작용을 기억하고, 데이터에 대한 지식을 가지고 있어야 합니다.
  • QA : 두 번째로 큰 LangChain 사용 사례이며, 특정 문서에 대한 질문에 답변하며, 해당 문서에 있는 정보만을 활용하여 답변을 구성합니다. (Test를 했을 때, Data Chunk 시키는 부분이 저는 중요하다고 생각합니다.)
  • Chatbot : 언어 모델은 텍스트를 생성하는 데 능숙하기 때문에 챗봇을 만드는 데 이상적입니다. (리서치를 했을 때, 이 부분이 가장 많은 사람들이 내놓고 있는 느낌입니다.)
  • Query Tabular Data : LLM을 사용하여 표 형식(csv, SQL, 데이터 프레임 등)으로 저장된 데이터 이해하는 부분(간단한 eda를 하는 예시가 있는데, Test 해보았을 때 파이썬 3.9 이상에서 됩니다.)
  • Interacting with APIs : LLM이 API와 상호 작용할 수 있도록 하는 것은 최신 정보를 제공하고 조치를 취할 수 있도록 하는 매우 강력한 기능입니다.
  • Extraction : 텍스트에서 구조화된 정보를 추출
  • Summarization : 긴 문서를 더 짧고 압축된 정보 요약하는 작업

 

제가 이렇게 작성하면 어떤 감이 오시는지 이해가 안가실 수 있습니다. 위의 공식 Doc 이 연결된 URL을 참고하거나, 아래 내용이 요약이 잘 되어있기 때문에, 아래 글을 한번 보시는 것을 추천합니다.

https://revf.tistory.com/280

 

LangChain 을 알아볼까요?

LangChain 에 대해 들어보셨나요? LangChain 은 LLM 에서 구동되는 APP을 개발하기 위한 프레임워크입니다. LangChain 에서 제공되는 라이브러리들을 사용하여 보다 쉽게 LLM 기술들을 활용할 수 있습니다.

revf.tistory.com

 

현재(작성일 기준) 어떤 문제점이 존재하는가? 


저도 LangChain의 Documents를 보면서 쓰고 있는지 3일 정도 되었습니다. 그때까지 느낀 것들을 정리하면 다음과 같습니다. 

1. Dependency 잡혀있는 library나 python 버전 문제들

현재 작성일 기준으로 아직 미숙함이 많은 library입니다. langchain의 dependency로 잡혀있는 chroma에서 이와 같은 에러가 있었습니다. 저도 issue를 넣으려는데 3시간 정도 다른 누군가가 넣었었던 경험이 있었습니다.

 

2. LangChain의 Version

정말 짧은 순간에 많이 업데이트가 되고 있습니다. 그래서 저는 아침에 출근해서 LangChain를 업데이트하는 습관이 생겼습니다. 어제 해결 못한 에러가 오늘 해결이 되는 마법을 경험했었습니다. 또한 Document도 실시간으로 반영이 되질 않아 혼동을 겪은 경험도 있었습니다.

 

3. 그렇지 않다면 Discord에 도움을 요청하라.

저는 아래와 같은 경험을 통해 에러를 개선했었습니다. 순서는 다음과 같습니다.

1) pip install langchain --upgrade

2) 그래도 내가 가진 에러가 해결이 안 되면 다른 사람들이 제기한 github issue를 검색해 본다.

3) 그래도 해결이 안 된다면 디스코드에 물어본다(시차 고려하기)

4) 답변이 없으면 issue에 제기한다. 

 

추후에는 이 LangChain을 이용해서, Document와 다른 예제들을 결합하고 활용하는 Case들을 블로그에 포스팅 해보겠습니다. 

 

Reference


- 공식 documents (concept)

https://docs.langchain.com/docs/

 

- python 공식 document

Welcome to LangChain — 🦜🔗 LangChain 0.0.128

 

- Github

https://github.com/hwchase17/langchain

 

- Discord

https://discord.gg/6adMQxSpJS

 

- 활용된 Examples

🦜🔗 Introducing AmjadGPT - an AI chatbot 🤖 that acts like the CEO of Replit

GitHub - Conner1115/Amjad-GPT: A chatbot trained to act like Amjad Masad, built with LangChain and Next.js.

https://disquiet.io/@sanggubot/makerlog/7955

 

- 간단한 Examples 예시

https://revf.tistory.com/280


아래는 블로그 주인장의 토스 익명 후원 링크입니다. 글이 너무 너무 도움되거나 흡족스러웠다면 후원해주시면 감사하겠습니다.

https://toss.me/hotorch

 

hotorch님에게 보내주세요

토스아이디로 안전하게 익명 송금하세요.

toss.me

 

profile

호돌찌의 AI 연구소

@hotorch's AI Labs

포스팅이 도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!