[7기 랭체인] AI 예언가 만들기


상세한 과정 추가된 노션페이지

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이 편한 프레임워크인것 같다.

다음주엔 어떤부분부터 보면 좋을지 추천해주십시옹


4
3개의 답글

👉 이 게시글도 읽어보세요

모집 중인 AI 스터디