본문 바로가기
데이터&AI/langchain

[langchain공부] langchain 기초 - 1 (feat. GPT api와의 비교)

by 일등박사 2024. 1. 25.

생성형 AI열풍!!

이미 chatGPT가 우리 일상에 밀접해지고,

더 이상 이 중요성을 강조할 필요도 없을것 같네요~!^^

 

이 GPT 모델을 활용한 최신의 기술인 langchain 의 공부내용을 공유하고자

블로그 포스팅을 진행해보았습니다~!^^


1. 환경세팅

우선!! openai 패키지가 설치되어야겠지요~?

저는 익숙한 openai 0.28 버전으로 설치를 추천드립니다!!

pip install langchain
pip install openai

 

2. GPT api 기초.

 - 모두 이미 익숙할, openai 의 GPT api 기초를 다시한번 테스트해봅시다!!

import openai
client = openai.OpenAI(api_key = '{나의 key 입력}')

def chat(query):
    completion = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
    {"role": "system", "content": "당신은 친절한 비서야."},
    {"role": "user", "content": query}
    ]
    )
    message =  completion.choices[0].message
    return message
    
res = chat("프랑스의 수도는??")
res

 

간단하죠?? 손쉽게 gpt와 동일한 결과를 api를 통하여 받을 수 있습니다

2. GPT api 기초 using langchain

 - 위와 같은 api 호출을 langchain을 활용하여 진행해봅시다!

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(openai_api_key  = '{나의 key}')

res_langchain = llm.invoke("프랑스의 수도는??")
res_langchain

 

langchain을 활용해서 더욱 짧은 코드로 간단하게 결과를 뽑을 수 있었습니다.

 

그런데!! 결과물의 Type이 string이 아닌, 처음보는 langchain_core.messages.ai.AIMessage 라는 타입이었습니다!!

그럼, 어떻게 텍스트로 가공할 수 있을까요!?

 > 간단한방법!! .content로 하면됩니다~!!

 

하지만, 이렇게한다면 랭채인을 배우는 의미가 없겠지요~!?

스트링을 뽑아내는 output_parser를 공부해봅시다!!

 

#1. 우선 추가로 사용되는 패키지는 아래 두가지 입니다.

 - StrOutputParser

: StrOutputParser는 ChatGPT의 출력을 문자열로 파싱하는 데 사용

 - ChatPromptTemplate  : ChatGPT에 대한 프롬프트를 만드는 데 사용되는 클래스

 

#2. 그리고,  ChatPromptTemplate 클래스의 from_messages() 메서드를 사용하여 프롬프트를 생성합니다.

 

#3. 다음으로,

ChatPromptTemplate(prompt : 나의 프롬포트),

LLM(llm: 초기에 생성한 객체),

StrOutputParser 클래스

위 세가지를 연결하여 Chain 객체를 생성합니다.

"chain = prompt | llm | output_parser"

Chain 객체는 ChatGPT를 통해 프롬프트를 보내고 출력을 처리하는 데 사용됩니다.

 

#4

마지막으로, Chain 객체의 invoke() 메서드를 사용하여 프롬프트와 입력을 전달합니다. i

nvoke() 메서드는 ChatGPT를 통해 프롬프트를 보내고 출력을 반환합니다.

출력되는 결과가 텍스트임을 확인할수 있지요!!

#1
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate

#2
prompt = ChatPromptTemplate.from_messages([
    ("system", "당신은 친절한 비서야."),
    ("user", "{input}")
])

#3
output_parser = StrOutputParser()
chain = prompt | llm | output_parser

#4
res_langchain2 = chain.invoke({"input": "프랑스의 수도는??"})
res_langchain2

 

결과물이 텍스트로 잘 산출되는것을 볼수 있습니다!^

 

 

이로서 첫번쨰 langchain 포스트를 마칩니다~!^^

 

 

ㅁ 참고

https://github.com/Coding-Crashkurse/Langchain-Full-Course/blob/main/functions.ipynb

https://python.langchain.com/docs/get_started/quickstart

 

Quickstart | 🦜️🔗 Langchain

In this quickstart we'll show you how to:

python.langchain.com

 

댓글