본문 바로가기
IT모든것/IT소식

랭체인 챗봇 파이썬 사용법 자연어 LLM rag 오픈Ai ChatGPT

by godmulzu 2024. 2. 29.
반응형


랭체인(Langchain)은 LLM (Large Language Model)을 사용하여 애플리케이션을 개발하고 통합하는 데 도움이 되는 프레임워크입니다. LLM은 인공지능 모델로서 자연어를 이해하고 생성할 수 있습니다. 랭체인은 LLM을 쉽게 활용할 수 있는 다양한 기능과 모듈을 제공합니다.

목차

    랭체인


    예를 들어, 랭체인은 다음과 같은 것들을 할 수 있습니다.

    랭체인이란?

    다양한 언어 모델을 선택하고 교체할 수 있습니다. 랭체인은 오픈 AI, 코히어, AI21 등의 상용 LLM과 허깅페이스에서 제공하는 오픈소스 LLM을 지원합니다.

    외부 데이터 소스에서 텍스트를 가져오고, 임베딩 모델로 변환하고, 벡터 데이터베이스에 저장하고, 쿼리를 통해 검색할 수 있습니다. 랭체인은 PDF, 웹 페이지, CSV, 관계형 데이터베이스 등의 다양한 소스와 통합될 수 있습니다.

    LLM에 단기 및 장기 메모리를 추가할 수 있습니다.

    LLM은 상태 비저장형이므로 대화의 이전 메시지를 기억하지 못합니다. 랭체인은 메시지 기록을 레디스와 같은
    외부 소스에 저장하고, LLM에 콘텍스트를 제공할 수 있습니다.

    LLM을 사용하여 프롬프트를 행동 계획으로 추출할 수 있습니다.
    랭체인의 에이전트 모듈은 LLM을 추론 엔진으로 사용하여 어떤 순서로 어떤 동작을 취할지 결정할 수 있습니다.

    LLM 애플리케이션의 다양한 단계에 연결할 수 있는 콜백 시스템을 제공합니다. 랭체인은 로깅, 모니터링, 스트리밍 등의 작업에 유용한 사용자 지정 콜백 핸들러를 작성할 수 있게 해 줍니다.

    랭체인은 LLM을 활용하여 문서 분석 및 요약, 챗봇, 코드 분석 등의 다양한 애플리케이션을 개발할 수 있습니다 3. 랭체인은 파이썬 또는 자바스크립트 SDK를 통해 사용할 수 있습니다.

     

     

     

     

    랭체인 사용한 애플리케이션

    문서 요약기: GPT-3을 사용하여 PDF, 스프레드시트, 프레젠테이션 등

    다양한 형식과 유형의 문서에서 정보를 추출하고 요약 또는 보고서를 생성하는 도구입니다.

    코드 GPT: GPT-3을 사용하여 자연어 설명이나 사양에서 다양한 언어로 코드를 생성하는 도구입니다.

    웹스크레이퍼: GPT-3을 사용하여 자연어 쿼리나 명령을 사용하여 웹사이트나

    API에서 데이터를 스크랩하는 도구입니다.

    QAGPT: GPT-3을 사용하여 자연어 입력에서 질문에 답하거나

    텍스트 또는 주제에서 질문을 생성하는 도구입니다.

    랭체인 챗봇

    랭체인은 언어 모델을 활용하여 다양한 애플리케이션을 개발할 수 있는 프레임워크입니다.

    챗봇은 언어 모델을 사용하여 자연어 입력에 대해 적절한 응답을 생성하는 애플리케이션입니다.

    랭체인은 챗봇을 만들기 위해 필요한 여러 기능과 모듈을 제공합니다.

    예를 들어, 랭체인은 다음과 같은 것들을 할 수 있습니다.

    다양한 언어 모델을 선택하고 교체할 수 있습니다.

    랭체인은 오픈 AI, 코히어, AI21 등의 상용 LLM과 허깅페이스에서 제공하는 오픈소스 LLM을 지원합니다.

    챗봇에 단기 및 장기 메모리를 추가할 수 있습니다.

    LLM은 상태 비저장형이므로 대화의 이전 메시지를 기억하지 못합니다.

    랭체인은 메시지 기록을 레디스와 같은 외부 소스에 저장하고, LLM에 콘텍스트를 제공할 수 있습니다.
    챗봇을 사용하여 프롬프트를 행동 계획으로 추출할 수 있습니다.

    랭체인의 에이전트 모듈은 LLM을 추론 엔진으로 사용하여 어떤 순서로 어떤 동작을 취할지 결정할 수 있습니다.

    챗봇의 UI를 쉽게 구현할 수 있습니다. 랭체인은 그라디오와 같은 GUI 프레임워크와 통합될 수 있습니다.

    그라디오는 챗봇의 채팅 화면, 입력 칸, 버튼, 테마 등을 간단하게 설정할 수 있습니다

    3.1 랭체인을 사용한 챗봇의 예시

    랭체인은 언어 모델을 활용하여 다양한 애플리케이션을 개발할 수 있는 프레임워크입니다.

    챗봇은 언어 모델을 사용하여 자연어 입력에 대해 적절한 응답을 생성하는 애플리케이션입니다.

    랭체인은 챗봇을 만들기 위해 필요한 여러 기능과 모듈을 제공합니다.

    예를 들어, 랭체인은 다음과 같은 것들을 할 수 있습니다.

    다양한 언어 모델을 선택하고 교체할 수 있습니다.

    랭체인은 오픈 AI, 코히어, AI21 등의 상용 LLM과 허깅페이스에서 제공하는 오픈소스 LLM을 지원합니다.

    챗봇에 단기 및 장기 메모리를 추가할 수 있습니다. LLM은 상태 비저장형이므로 대화의 이전 메시지를 기억하지 못합니다. 랭체인은 메시지 기록을 레디스와 같은 외부 소스에 저장하고, LLM에 콘텍스트를 제공할 수 있습니다.
    챗봇을 사용하여 프롬프트를 행동 계획으로 추출할 수 있습니다.

    랭체인의 에이전트 모듈은 LLM을 추론 엔진으로 사용하여 어떤 순서로 어떤 동작을 취할지 결정할 수 있습니다.

    챗봇의 UI를 쉽게 구현할 수 있습니다. 랭체인은 그라디오와 같은 GUI 프레임워크와 통합될 수 있습니다.

    그라디오는 챗봇의 채팅 화면, 입력 칸, 버튼, 테마 등을 간단하게 설정할 수 있습니다.

     

    4. 랭체인을 사용하여 챗봇을 만드는 방법

     

    그리고, 랭체인을 사용하여 만든 챗봇의 예시를 보여드리겠습니다.

    다음은 랭체인과 그라디오를 사용하여 만든 간단한 챗봇입니다.

    이 챗봇은 GPT-3을 사용하여 자연어 입력에 대해 응답을 생성합니다.

    챗봇의 테마는 파란색이고, 챗봇의 이름은 Copilot입니다.

    4.1 챗봇에게 물어볼 수 있는 예시 질문

    너는 누구야?
    오늘 날씨는 어때?
    너는 어떤 언어를 할 수 있어?
    너는 어떤 일을 할 수 있어?
    이 챗봇을 실행해 보려면, 다음의 코드를 복사하여 파이썬 파일로 저장하고, 실행하면 됩니다. 그러면, 웹 브라우저에서 챗봇과 대화할 수 있습니다.

    Python

    # 라이브러리 불러오기
    import gradio as gr
    import openai
    import langchain as lc

    # 랭체인 객체 생성
    lc = lc.LangChain()

    # 언어 모델 선택
    lc.set_model("openai", "text-davinci-003")

    # 챗봇에 채팅이 입력되면 이 함수를 호출합니다.
    # message는 유저의 채팅 메시지, history는 채팅 기록입니다.
    def response(message, history):
        # 채팅 기록을 LLM에 콘텍스트로 제공합니다.
        lc.set_context(history)
        # LLM에 메시지를 입력하고 응답을 받습니다.
        gpt_message = lc.query(message)
        # 채팅 기록에 메시지와 응답을 추가합니다.
        history.append((message, gpt_message))
        # 응답과 채팅 기록을 반환합니다.
        return "", history

    # 그라디오 챗봇 인터페이스 생성
    gr.ChatInterface(
        fn=response, # 챗봇 함수
        chatbot=gr.Chatbot(name="Copilot", avatar="https://i.imgur.com/0X6Q8kT.png"), # 챗봇 이름과 아바타
        textbox=gr.Textbox(placeholder="말걸어주세요..", container=False, scale=7), # 챗봇 입력 칸
        title="랭체인 챗봇 예시", # 챗봇 제목
        description="이 챗봇은 랭체인과 그라디오를 사용하여 만들었습니다. GPT-3을 사용하여 자연어 입력에 대해 응답을 생성합니다.", # 챗봇 설명
        theme="blue", # 챗봇 테마
        examples=[ # 챗봇에게 물어볼 수 있는 예시 질문
            "너는 누구야?",
            "오늘 날씨는 어때?",
            "너는 어떤 언어를 할 수 있어?",
            "너는 어떤 일을 할 수 있어?"
        ]
    ).launch() # 챗봇 인터페이스 실행


    이 챗봇의 실행 결과는 다음과 같습니다.

    이 챗봇은 간단한 예시이므로, 완벽하지 않을 수 있습니다. 랭체인을 사용하여 더 다양하고 복잡한 챗봇을 만들 수 있습니다.

     

     

     

     

     

     

     

     

     

    반응형