본문 바로가기

스타트업 투자/데이터 + 테크

패스트캠퍼스 환급챌린지 19일차 : 모델 문제 실습

by Sungwook Choi 2025. 4. 19.

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

*_1. 학습 인증샷 4장 이상 포함
*_① 오늘자 날짜, 공부 시작 시각 포함 사진 1장

② 오늘자 날짜, 공부 종료 시각 포함 사진 1장

③ 1개 클립 수강 인증 사진 (강의장 목록 캡쳐, 강의 내용이 담긴 수강화면이 보이지 않도록) 1장

④ 학습 인증샷 1장 이상 (ex. 필기 촬영, 작업물, 등)

2. 학습 후기 700자 이상 (공백 제외)

공장데이터 문제

  1. 셋팅하기
    from tqdm import tqdm
    import openai
    

client = openai.OpenAI(api_key="key")


2. 업무자동화
~~~업무자동화
import pandas as pd
import ast

# 데이터를 리스트의 형태로 정리
data = {
    "수리일자": ["2023-09-07", "2021-10-08", "2022-02-23", "2022-04-06", "2021-02-20", "2021-02-26", "2021-04-13", "2021-07-30", "2022-07-12", "2022-07-13", "2022-07-18", "2022-07-18", "2022-08-11", "2022-09-13", "2022-10-04", "2022-10-26", "2022-11-11", "2022-11-14"],
    "고장내용": [
        "출하장 입구 에어 50A 유니온 에어리크 재조임",
        "SHIELD ROOM 화풍기 철거부위 마감,판넬벽체문타공",
        "F/P 기능상실 PLC 확인 및 클램프 감지센샤 조정",
        "와이어 전진동작이상 점검 중 정상 작동됨",
        "클램프기동이상 오일보충 에어 제거",
        "피이더 조작판 매입 콘센트 고정",
        "QDC 파손 클램프 교체",
        "광세샤 고정블록 볼트 마모 600ton 것으로 대체",
        "휠 회전 작동불량 점검 세기정공 AS 요청",
        "클러치 ASS'Y 작동이상 분해출문(세기정공)",
        "클러치 assy 불량으로 전자접촉기교체",
        "클러치 밋션 기어오일보출 ATF-3",
        "휨 가지센서 단선 교체",
        "안전1행정 타발정지위치이상 리미트캠스위치교체및조정,상사점리미트스위치교체",
        "QDC 클램프 기동이상 에어빼기",
        "피이더 소재 진입이상 캠 스위치 조정",
        "카운터 완료시 정지시점 불량 카운타 각도 조정",
        "NC FEEDER 코일 이송거리 이상 재 셋팅"
    ],
    "고장부품": [None if x in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17] else x for x in ["50A 유니온", "SHIELD ROOM 화풍기"] + [None]*16],
    "불량유형": [None if x in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17] else x for x in ["에어리크", "철거부위 마감"] + [None]*16],
    "조치내용": [None if x in [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17] else x for x in ["재조임", "판넬벽체문타공"] + [None]*16]
}

# 데이터프레임 생성
df = pd.DataFrame(data)

# 고장부품, 불량유형, 조치내용이 존재하지 않는 데이터만 남긴다.
sub_df = df[df['고장부품'].isnull()]

# 인덱스 번호를 초기화한다. (가장 왼쪽에 붙는 0부터 시작하는 번호)
sub_df.reset_index(drop=True, inplace=True)

# 16개의 고장 내용을 파이썬 리스트로 변환
inputs= sub_df['고장내용'].to_list()

# 고장내용으로부터 고장부품, 불량유형, 조치내용을 반환하는 함수 작성.
# 예시를 작성하여 답변의 안정성을 높이고 추후 파싱이 편하도록 파이썬의 Dictionary 형태로 답변을 요구한다.
def return_label(text):
    prompt = '''주어진 고장내용 텍스트로부터 고장부품, 불량유형, 조치사항을 추출하시오.
    이때 파이썬의 Dictionary 형태로 반환하시오.
    마크다운은 사용하지 마십시오.

    ex)
    고장내용: '출하장 입구 에어 50A 유니온 에어리크 재조임'
    출력: {"고장부품": "50A 유니온", "불량유형" : "에어리크", "조치내용" : "재조임"}

    고장내용: 'SHIELD ROOM 화풍기 철거부위 마감,판넬벽체문타공    '
    출력: {"고장부품": "SHIELD ROOM 화풍기", "불량유형" : "철거부위 마감", "조치내용" : "판넬벽체문타공"}'''

    response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": prompt},
          {"role": "user", "content": "고장내용: " + text + "\n출력: "}
      ],
    temperature=0
    )
    return response.choices[0].message.content

# 16개의 고장 내용에 대해서 반복 호출.
result = []
for input in tqdm(sub_df['고장내용'].to_list()):
  result.append(return_label(input))

# 16개의 데이터를 문자열 타입을 파이썬 Dictionary 형태로 전부 변환
result = [ast.literal_eval(elem) for elem in result]
print(result)  

# Dictionary의 리스트 형태를 파이썬 데이터프레임으로 변환
new_df = pd.DataFrame(result)

sub_df['고장부품'] = new_df['고장부품']
sub_df['불량유형'] = new_df['불량유형']
sub_df['조치내용'] = new_df['조치내용']

url : https://abit.ly/lisbva

댓글