상세한 과정 추가된 노션페이지
langchain - AI 예언가1. AI 시인 - 튜토리얼 따라하기
참고영상 - 조코딩
https://youtu.be/EWKbZFqiCsE?si=y4hTOf8cxBPobB7a
결과물
2.AI 예언가
현재 나의 성격이나 전공 등 정보를 바탕으로 10년 뒤를 예상해서 기사를 작성해주는 AI 예언가
Profile
이름
현재 나이
MBTI
성별
전공 이나 관심사
미래의 나에게 꼭 바라는것
Playground
파인튜닝 시작
결정
model=gpt-4
temperature=1.08
max_tokens=1024
system_messege
지금은 2023년이고 너는 미래 2033년에 살고있어. 인터넷 신문사 '지피터스 타임즈' 3년차 기자 '구라임'이야. 자극적이고 재미있는 기사를 많이 써. 가끔 비난도 해.
user_messege (human_messege)
다음 나의 정보를 이용해서 니가 살고있는 2033년에서 나에 대한 자극적인 기사를 500자 이내로 작성해줘. 실제 신문기사처럼.
OpenAI Code
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{
"role": "system",
"content": "너는 미래 2033년에 살고있어. 인터넷 신문사 3년차 기자야. 자극적이고 재미있는 기사를 많이 써. 가끔 비난도 해."
},
{
"role": "user",
"content": "다음 나의 정보를 이용해서 니가 살고있는 2033년에서 나에 대한 자극적인 기사를 작성해줘. 실제 신문기사처럼. 지금은 2023년 이야.\\n- 이름: 허승연\\n- 현재 나이: 26\\n- MBTI: ENTP\\n- 성별: 여\\n- 전공 이나 관심사: 복부비만\\n- 미래의 나에게 꼭 바라는것: 5개국어 능력자"
}
],
temperature=1.08,
max_tokens=1024,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)
langchain 으로 작성
결정된 파라미터 값들을 적용
ChatGPT?
혹시나 싶어 chatgpt에게 langchain을 이용한 코드로 바꿔달라고 요청했지만 부질없음
그냥 내가 스스로 공부해야지….
공식 문서
문서랑 API들 살펴보는데 검색창에 AI가 존재
how do I set system message and temperature?
Based on the verified sources, here are a few ways to set the system message and temperature when using chat models in LangChain:
To set the system message, you can create a SystemMessage object and pass it in as the first message when calling the chat model:
from langchain.schema import SystemMessage
system_message = SystemMessage(content="You are a helpful assistant")
To set temperature, you can pass in a temperature parameter when initializing the chat model class. For example:
from langchain.chat_models import ChatLLM
chat = ChatLLM(temperature=0.7)
The temperature controls the randomness of the model's responses, with lower values resulting in more predictable/conservative responses.
So to set both the system message and temperature, you would do:
from langchain.chat_models import ChatLLM
from langchain.schema import SystemMessage
system_message = SystemMessage(content="You are a helpful assistant")
chat = ChatLLM(temperature=0.7)
response = chat([system_message, human_message])
The system message tells the model how to behave, and the temperature controls the randomness. Let me know if you need any clarification or have additional questions!
친절하게 알려줘서 감동받았다. 하긴 chatgpt는 이거아직 공부안했나. 얘는 langchain만 엄청 학습시켜놨겠지.
막혔던 부분
predict 할때 system 메시지와 user 메세지를 설정하고 싶은데 하나만 보내게 되어있었다. 문서ai가 여러 방법을 알려줬지만 계속 에러가 났음.
일단 해결방안
system message, human message를 그냥 하나의 스트링으로 합쳐서 그냥 predict에 하나의 텍스트로 보냈다.
최종 코드
from dotenv import load_dotenv
load_dotenv()
from langchain.llms import OpenAI
from langchain.chat_models import ChatOpenAI
import streamlit as st
# Chat Model 초기화
chat_model = ChatOpenAI(model="gpt-4", temperature=1.08, max_tokens=1024)
system_message = "지금은 2023년이고 너는 미래 2033년에 살고있어. 인터넷 신문사 '지피터스 타임즈' 3년차 기자 '구라임'이야. 자극적이고 재미있는 기사를 많이 써. 가끔 비난도 해. "
st.title("AI 예언가 🔮")
st.write("당신의 10년 뒤 모습을 알려드립니다.")
# 사용자 입력 받기
name = st.text_input("이름")
age = st.text_input("현재 나이")
MBTI = st.text_input("MBTI")
sex = st.text_input("성별")
field = st.text_input("전공이나 관심사")
dream = st.text_input("미래의 나에게 꼭 바라는 것")
if st.button("🪄 미래 알아보기"):
with st.spinner("주문을 외우는 중 ... 60~100초"):
# 예측 요청
human_message = f"다음 나의 정보를 이용해서 니가 살고있는 2033년에서 나에 대한 자극적인 기사를 500자 이내로 작성해줘. 실제 신문기사처럼. \\n- 이름: {name}\\n- 현재 나이: {age}\\n- MBTI: {MBTI}\\n- 성별: {sex}\\n- 전공이나 관심사: {field}\\n- 미래의 나에게 꼭 바라는것: {dream}"
response = chat_model.predict(system_message + human_message)
# 응답 출력
st.write(response)
3. Deploy
streamlit 에서 배포
📌 들어가보세용
https://ai-foreteller-huhsame.streamlit.app/
결과화면
4. 느낀점 🫠
호기롭게 신청했지만, 스터디 첫시간에 겁먹고 다른 스터디방으로 바꿔달라고 요청
변경 불가로 울면서 일단 시작
생각보다 수월하게 진행되어서 정말 langchain이 편한 프레임워크인것 같다.
다음주엔 어떤부분부터 보면 좋을지 추천해주십시옹