2. RAG를 위한 LangChain의 핵심 구성 요소 및 실습[Models]

2024. 10. 31. 18:57· Chatbot 프로젝트/LangChain
목차
  1. 1. LangChain API  활용하기
  2. 1. 실습은 코렙으로 진행
  3. 코렙의 특징
  4. 2. LangChain과 일반 프롬프트 비교
  5. 2.1. 엔트로픽 계정 생성
  6. 2.2. 엔트로픽 API 키 생성
  7. 2.3. 엔트로픽 Claude 2.1 모델 API 호출
  8. 2.4. GPT-3.5 Turnbo 모델 API 호출
  9. 2.5.  "랭체인"을 활용한 앤트로픽 Claude 2.1 모델 API 호출 코드
  10. 2.6. "랭체인"을 활용한 오픈AI GPT-4o-mini 모델 API 호출 코드
  11. 2.7. 프롬프트 이해하기
  12. 2.7.1. LangChain에서는 LLM에게 보내는 프롬프트의 형식을 크게 3가지로 구분
  13.  
  14. 2.7.2. LLM의 매개변수 중 하나인 Temperature는 답변의 일관성을 조정한다.
  15. 2.7.3. Langchain을 활용하면 LLM의 답변을 ChatGPT처럼 스트리밍할 수 있다.
  16. 2.7.4. LLM 답변 캐싱하기
728x90

1. LangChain API  활용하기

 

Langchain을 활용하면 다양한 모델 API를 일관된 형식으로 불러올 수 있다.

 

 

1. 실습은 코렙으로 진행

https://colab.research.google.com/

 

Google Colab

 

colab.research.google.com

 

코렙의 특징

구글에서 무료로 제공하는 딥러닝 환경으로 무료 GPU를 적용할 수 있는 개발 환경

Google Drive와 Jupyter Notebook(.ipynb)을 사용하기에 따로 설치하는 과정이 없고, 클라우드 상에서 동작.

OpenAI와 Anthropic의 모듈을 활용할 수 있도록 라이브러리 설치

코드 설명: 어떠한 모델을 쓰고, 출력 길이는 1024로 설정되며, 어떤 메시지에 대한 내용을 처리할지 메시지를 보낸다. 

2. LangChain과 일반 프롬프트 비교

2.1. 엔트로픽 계정 생성

 

 

2.2. 엔트로픽 API 키 생성

 

2.3. 엔트로픽 Claude 2.1 모델 API 호출

import anthropic

anthropic.Anthropic(
    api_key="API 키").messages.create(
    model="claude-3-opus-20240229",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Hello, world"}
    ]
)

5달러는 충전해야 호출할 수 있습니다!

 

 

2.4. GPT-3.5 Turnbo 모델 API 호출

from openai import OpenAI

client = OpenAI(api_key = "API키")
client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[    
        {
            "role": "user",
            "content": "Who won the world series in 2020?"
        }
    ]
)

 

5달러는 충전해야 호출할 수 있습니다! 만약 충전전에 호출하면 에러가 발생한다.

이때 충전 후, api 키를 다시 발급받아 복붙하면 사용가능하다.

 

대답 토큰 수: 43개, 프롬프트 토큰수 17개, 총 토큰수 60개 사용됨

 

2.5.  "랭체인"을 활용한 앤트로픽 Claude 2.1 모델 API 호출 코드

from langchain_anthropic import ChatAnthropic
chat = ChatAnthropic(
    model_name ="claude-3-opus-20240229",
    anthropic_api_key="API 키"
)
chat.invoke("안녕~ 너를 소개해줄래?")

<결과>

 

Response MeatData: 이 메시지의 아이디와 어떤 모델 등 Langchain사용 이전 호출보다 정제된 내용을 받을 수 있다. 

2.6. "랭체인"을 활용한 오픈AI GPT-4o-mini 모델 API 호출 코드

from langchain_openai import ChatOpenAI
chat = ChatOpenAI(
    model_name = 'gpt-4o',
    openai_api_key="YOUR_API_KEY"
)
chat.invoke("안녕~ 너를 소개해줄래?")

<결과>

 

LangChain을 활용하면 모델이 달라도 코드형태도 같고, 답변 형식도 똑같다. 이는 LangChain의 후처리 모듈에 의해 응답 값이 같아지게 되기 때문이다. 

2.7. 프롬프트 이해하기

2.7.1. LangChain에서는 LLM에게 보내는 프롬프트의 형식을 크게 3가지로 구분

 

2.7.1.1. SystemMessage : LLM에게 역할을 부여하는메시지(조금 더 고품질의 답변 가능)

2.7.1.2. HumanMessage : LLM에게전달하는 사용자의메시지

 

2.7.1.3. AIMessage : LLM이 출력한 메시지-> LLM에게 메모리를 전달하기 위해 즉, 이전 답변이 다음 답변에도 영향을 줘야하기 때문이다. 

 

 

 

2.7.2. LLM의 매개변수 중 하나인 Temperature는 답변의 일관성을 조정한다.

오늘의 날씨가 뒤에 나올 단어가 맑다가 자주 나오게 되던게 출현 확률을 조정해서 고르게도 나오게 할 수 있다.

 

낮은 온도: 출현 확률이 높은 단어의 학률이 증가되고, 다른 단어들은 낮아진다.

높은 온도: 출현 확률이 비슷해진다.

#API KEY 저장을 위한 os 라이브러리 호출
import os

#OPENAI API키 저장
os.environ["OPENAI_API_KEY"] = "YOUR_API_KEY"

#Temperature=0
chatgpt_temp0_1 = ChatOpenAI(model_name="gpt-3.5-turbo-0125", temperature = 0)
chatgpt_temp0_2 = ChatOpenAI(model_name="gpt-3.5-turbo-0125", temperature = 0)

#Temperature=1
chatgpt_temp1_1 = ChatOpenAI(model_name="gpt-3.5-turbo-0125", temperature = 1)
chatgpt_temp1_2 = ChatOpenAI(model_name="gpt-3.5-turbo-0125", temperature = 1)

model_list = [chatgpt_temp0_1, chatgpt_temp0_2, chatgpt_temp1_1, chatgpt_temp1_2]

for i in model_list:
    answer = i.invoke("왜 파이썬이 가장 인기있는 프로그래밍 언어인지 한 문장으로 설명해줘", max_tokens = 128)
    print("-"*100)
    print(">>>",answer.content)

 

온도가 낮을수록 일관성이 있다 -> 비슷한 단어만 나온다.

온도가 높을수록 일관성이 없다 -> 비슷하지 않은 단어가 주로 나온다.

 

temperature는 0~1 사이로 설정하면 됩니다!(소수점 가능)

 

 

 

2.7.3. Langchain을 활용하면 LLM의 답변을 ChatGPT처럼 스트리밍할 수 있다.

flush를 켜야 타이핑 치듯이 스트리밍할 수 있다.

 

 

2.7.4. LLM 답변 캐싱하기

 

 

[실습]

1. 첫번째 질문 실행 전에 실행 시간: 2.15 ms

2. 첫번째 질문 실행 후에 실행 시간: 1.77 ms

 

질문을 할때마다 캐시에 저장해두면 이를 캐시에서 같은 질문에 대한 답을 함으로써 속도가 향상된다.

728x90

'Chatbot 프로젝트 > LangChain' 카테고리의 다른 글

8. RAG를 위한 LangChain의 핵심 구성 요소 및 실습[Retrievers]  (0) 2024.11.24
7. RAG를 위한 LangChain의 핵심 구성 요소 및 실습[Vector Stores]  (0) 2024.11.24
6. RAG를 위한 LangChain의 핵심 구성 요소 및 실습[Embeddings]  (0) 2024.11.01
5. RAG를 위한 LangChain의 핵심 구성 요소 및 실습[Text Splitters]  (0) 2024.11.01
3. RAG를 위한 LangChain의 핵심 구성 요소 및 실습[Prompt Templates]  (0) 2024.10.31
  1. 1. LangChain API  활용하기
  2. 1. 실습은 코렙으로 진행
  3. 코렙의 특징
  4. 2. LangChain과 일반 프롬프트 비교
  5. 2.1. 엔트로픽 계정 생성
  6. 2.2. 엔트로픽 API 키 생성
  7. 2.3. 엔트로픽 Claude 2.1 모델 API 호출
  8. 2.4. GPT-3.5 Turnbo 모델 API 호출
  9. 2.5.  "랭체인"을 활용한 앤트로픽 Claude 2.1 모델 API 호출 코드
  10. 2.6. "랭체인"을 활용한 오픈AI GPT-4o-mini 모델 API 호출 코드
  11. 2.7. 프롬프트 이해하기
  12. 2.7.1. LangChain에서는 LLM에게 보내는 프롬프트의 형식을 크게 3가지로 구분
  13.  
  14. 2.7.2. LLM의 매개변수 중 하나인 Temperature는 답변의 일관성을 조정한다.
  15. 2.7.3. Langchain을 활용하면 LLM의 답변을 ChatGPT처럼 스트리밍할 수 있다.
  16. 2.7.4. LLM 답변 캐싱하기
'Chatbot 프로젝트/LangChain' 카테고리의 다른 글
  • 7. RAG를 위한 LangChain의 핵심 구성 요소 및 실습[Vector Stores]
  • 6. RAG를 위한 LangChain의 핵심 구성 요소 및 실습[Embeddings]
  • 5. RAG를 위한 LangChain의 핵심 구성 요소 및 실습[Text Splitters]
  • 3. RAG를 위한 LangChain의 핵심 구성 요소 및 실습[Prompt Templates]
조찬국
조찬국
개발자가 되기위해 매일매일 체득하며 배우는 학생입니다.
조찬국
changuk.log
조찬국
전체
오늘
어제
  • 분류 전체보기 (68)
    • Spring Boot (30)
      • Spring Boot 입문 강의 정리(김영한) (8)
      • Spring Boot JPA-기본편 강의 정리(.. (8)
      • Spring Boot JPA-활용편1 강의 정리 (7)
      • Spring Boot JPA-활용편2 강의 정리 (5)
      • Spring Boot 블로그(Blog) 만들기 프.. (2)
      • Spring Boot -Project 정리(Bac.. (0)
    • SQLD (2)
      • 데이터 모델링 (1)
      • 데이터 모델과 SQL (1)
    • 프로젝트 (1)
      • 플러터 (1)
      • 안드로이드 스튜디오 (0)
    • 캡스톤디자인 (2)
      • IoT 및 하드웨어 (1)
      • 모바일 프론트엔드 (1)
      • 백엔드 (0)
    • CS스터디 (5)
    • 수업자료 (13)
      • sw공학 (5)
      • database (8)
    • Chatbot 프로젝트 (13)
      • RAG (3)
      • LangChain (9)
      • FastAPI (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • computer sience
  • SQL
  • chatbot
  • RAG
  • SQLD
  • 비선형 자료 구조
  • CS
  • Chat bot
  • document loader
  • Spirng Boot
  • retrievers
  • LLM
  • spring boot
  • Blog
  • 관계
  • 티스토리챌린지
  • uvicorn
  • langchain
  • LCEL
  • text splitter
  • Spring
  • restapi
  • lanchain
  • ese32
  • 선형 자료 구조
  • 오블완
  • prompt tempate
  • embeddings
  • vector store
  • 김영한

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
조찬국
2. RAG를 위한 LangChain의 핵심 구성 요소 및 실습[Models]
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.