목차
오늘의 TIL 순서는
- 시작전 마음가짐
- Python 문제풀이
- LLM 특강
- 개인과제 수행
- 회고
학습 코드와 필기내용은 GITHUB링크를 이용해주세요
시작전 마음가짐
이번주 일정이 매우 빠듯합니다.
학습 1개만을 진득하게 할 수 있는 날은 없것 같은데요
여러가지를 만히 배우지만 한개를 진득하게 배운다고 생각하고 열심히 학습해서 모두 내것으로 만들어야겟습니다.
그럼 학습을 시작하겟습니다.
Python 문제풀이
1. 이어 붙인 수
- join함수를 사용해서 완료
- 다른 사람 풀이가 좋아서 2개 정도 같이 올림
# 나의 풀이
def solution(num_list):
num_1 = ''.join(str(answer) for answer in num_list if answer % 2 == 0)
num_2 = ''.join(str(answer) for answer in num_list if answer % 2 != 0)
return int(num_1) + int(num_2)
# append사용 풀이
def solution(num_list):
o=[]
e=[]
for n in num_list:
if n%2:o.append(str(n))
else:e.append(str(n))
return int(''.join(o))+int(''.join(e))
# for문 사용 풀이
def solution(num_list):
a=""#홀수
b=""#짝수
for i in num_list:
if i%2!=0:
a+=str(i)
else:
b+=str(i)
return int(a)+int(b)
2. 마지막 두 원소
- 완료
- 리스트에 새로운 요소 추가 방법: append, insert, +=, extend, 슬라이싱
def solution(num_list):
a = num_list[-1]
b = num_list[-2]
if a > b :
num_list += [a - b]
else:
num_list += [a*2]
return num_list
3. 수 조작하기 1
- 반복문을 통해 쉽게 풀었다.
- 에러가 나올 상황에 대처를 못했다.
- 다른 함수를 이용해 쉽고 가독성 좋게 만들 수 있는 방법이 많았다.
# 나의 풀이
def solution(n, control):
for i in control:
if i == 'w':
n += 1
elif i == 's':
n -= 1
elif i == 'd':
n += 10
elif i == 'a':
n -= 10
else:
pass # 다른 문자열이 왔을 때 넘어가기
return n
# zip함수 풀이
def solution(n, control):
key = dict(zip(['w','s','d','a'], [1,-1,10,-10]))
return n + sum([key[c] for c in control])
# 딕셔너리 활용 풀이
def solution(n, control):
answer = n
c = { 'w':1, 's':-1, 'd':10, 'a':-10}
for i in control:
answer += c[i]
return answer
LLM 특강 2일차
목차
- 프롬프트 엔지니어링
- 구조화된 추출
- 함수 호출
1. 프롬프트 엔지니어링
- 맥락을 어떻게 주는지에 따라서 정확한 답을 얻거나 이상하게 나오거나한다.
- 프롬프트에 따라서 응답 성능이 달라짐
- 파인튜닝 보다 성능이 좋을 수 있다.
- 많은 프롬프트 전략들이 정리가 되었다.(Open AI의 공식문서도 있다.)
- 문서를 볼 때 딥엘 확장프로그램 사용하기
1) 맥락을 자세하게 짜라
- 페르소나(역할)를 적용 시켜라
- 마크다운 형식으로 작성하면 더 좋다.
- few shot
2) reference text를 제공해라
3) 용도에 맞는 프롬프팅을 만들어야한다.
- step 나누기
- 맥락이 너무 길어지면 성능 저하
4) 이전 대화 내역을 필터링해서 성능을 유지 시켜라
5) 계산의 경우 풀이과정을 쓰게해서 답을 찾게하면 정확도가 올라간다.
6) 변경 점을 체계적으로 검증해야한다.
2. 구조화된 추출 Structured Output
1) type hint
- 사용해도 안해도 괜찮다.
- 함수 식에 영향을 주지않고 설명 역할
2) Pydantic
- 데이터를 검사하고, 구조화할 수 있게 도와주는 라이브러리 `pytohn from pydantic import BaseModel
class CalendarEvent(BaseModel): name : str date : str participants : list[str] `
3. 함수 호출 Function Calling
- 프로그래밍 된 함수를 LLM이 호출해서 사용해 결과를 출력Ex) gpt-4o는 2023데이터만 학습한 상태인데 프로그래밍 된 함수를 사용해 검색해서 2024 데이터를 활용하고 결과를 보여줄 수 있게할 수 있다.
개인과제
개인과제를 진행하며 프롬프트 마다 다른 상황과 역할을 부여하였습니다.
시스템 메세지에 {splits}를 넣어서 splits변수를 찾지 못하는 에러가 나왔고 이는 처음에 유니코드에러로만 나와서 어떤 에러인지도 파악하지못하고 상관없는 부분만 수정을 계속 진행하다.
재부팅을 하고 다시 실행하였을 때 변수를 찾을 수 없다는 에러가 나와 시스템 메세지에서 splits를 삭제해주니 정상작동하였습니다.
또한 프롬프트를 직접 입력주는 형태로 진행했는데 txt파일에 따로 작성한 뒤 불러오는 형태로 진행해야한다는 것을 이제야 알았습니다.
내일은 txt파일을 불러오고 답변을 저장하는 방법을 찾고 코드를 작성해서 비교까지 해볼아야겟습니다.
회고
전체적으로
오늘 학습은 시간을 버렸다고 생각합니다.
어떤 부분에서 에러가 나오는지 파악하지 모하고 에러코드로만 해결하려했던게 패착인것같습니다.
다른 학습과 강의는 물론 좋았고 알찻습니다.^^
Python 문제풀이를 하며
오늘은 지금까지 풀어본 문제들을 다시한번 풀어보는 시간을 같이 가졌습니다.
전에 이해하고 작성을 거리낌없이 했던 문제들도 헷갈려서 완성하지 못하는 문제들도 있었습니다.
다음에 조금 시간이 지난 뒤 한번더 이런 형태의 학습을 자주 진행해보아야할 것같습니다.
답이 외워지는 상황까지 반복할것입니다.
특강을 들으며 오늘의 LLM특강은 프롬프트 엔지니어링의 아주 자세하 설정까지 알아보는 시간이였습니다.
아직 3강이나 남았는데 또 어떤 내용이 나올지 궁금해집니다.
개인과제를 진행하며
오늘 개인과제의 진도를 쭉 빼고 싶었습니다.
완성이라는 단어를 사용할 정도로 진행하고싶었지만 어이없는 변수에러로 시작부분을 맴도는 느낌으로 시간이 끝나버렸습니다.
또한 모델에 프롬프트를 직접 입력하는 것이 아닌 텍스트 파일에 저장 해놓은 것을 불러오는 형태였다니 좌절감이 생기지만 확실하게 내가 해결해야하는게 무엇인지 분명해졌기 때문에 내일은 학습시간이 다 지나도 완성하지 못한다면 넘겨서 까지라도 완성을 해낼 것입니다.
'TIL' 카테고리의 다른 글
내일배움캠프 39일차 TIL + Python, LLM특강, 개인과제(완료) (1) | 2024.11.20 |
---|---|
내일배움캠프 38일차 TIL + Python, LLM특강, 개인과제(완료) (0) | 2024.11.19 |
내일배움캠프 36일차 TIL + Pytohn,특강(LLM, API), 개인과제(LLM), prompt engineering (3) | 2024.11.15 |
내일배움캠프 35일차 TIL + Python, LLM 개인과제, prompt engineering (2) | 2024.11.14 |
내일배움캠프 34일차 TIL + Python, 개인과제(LLM), 수준별 학습반(프롬프트) (2) | 2024.11.13 |