생성형 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
'데이터&AI > langchain' 카테고리의 다른 글
[langchain공부] SimpleJsonOutputParser (json으로 결과도출!!) (0) | 2024.02.02 |
---|---|
[langchain공부] langchain 기초 - 5 (뉴스결과 요약해!!) (2) | 2024.02.02 |
[langchain공부] langchain 기초 - 4 (사이트 요약해!!) (0) | 2024.02.01 |
[langchain공부] langchain 기초 - 3 (feat. 검색결과!!) (0) | 2024.02.01 |
[langchain공부] langchain 기초 - 2 (feat. function call. 함수호출하기) (1) | 2024.01.26 |
댓글