| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- topic
- effective java
- 싱글톤
- Stream
- 카프카
- 인텔리제이 단축키
- Java
- Factory Method Pattern
- orelse
- JWT
- Clean Code
- consumer
- optional
- orElseGet
- SpringBoot
- git cli
- TDD
- producer
- 함수형 프로그래밍
- signWith
- 패스트캠퍼스 #환급챌린지 #패스트캠퍼스후기 #습관형성 #직장인자기계발 #오공완
- Java8
- Functional Programming
- mokito
- Authentication
- kafka
- Spring Security
- #패스트캠퍼스 #환급챌린지 #패스트캠퍼스후기 #습관형성 #직장인자기계발 #오공완
- 디자인패턴
- junit5
- Today
- Total
goodbye
패스트캠퍼스 환급챌린지 39일차 : 테디노트의 RAG 비법노트 강의 후기 본문
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다
https://fastcampus.info/4n8ztzq
(~6/20) 50일의 기적 AI 환급반💫 | 패스트캠퍼스
초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!
fastcampus.co.kr
패스트캠퍼스 환급챌린지 39일차!
1) 공부 시작 시간 인증

2) 공부 종료 시간 인증

3) 강의 수강 클립 인증

4) 학습 인증샷

5) 학습통계

LangGraph Persistence
LangGraph에는 체크포인터를 통해 구현되는 내장된 지속성 계층이 있습니다. 체크포인터가 있는 그래프를 컴파일하면 체크포인터는 checkpoint모든 슈퍼스텝의 그래프 상태를 저장합니다. 이러한 체크포인트는 thread그래프 실행 후 접근할 수 있는 에 저장됩니다. threads실행 후 그래프 상태에 대한 접근을 허용하기 때문에, 휴먼 인더 루프(Human-in-the-Loop), 메모리, 시간 이동, 내결함성 등 여러 가지 강력한 기능이 모두 가능합니다. 아래에서 이러한 개념들을 더 자세히 살펴보겠습니다.

LangGraph API는 체크포인팅을 자동으로 처리합니다.
LangGraph API를 사용하면 체크포인터를 수동으로 구현하거나 구성할 필요가 없습니다. API가 모든 지속성 인프라를 백그라운드에서 자동으로 처리해 줍니다.
Threads
스레드는 체크포인터에 의해 저장된 각 체크포인트에 할당된 고유 ID 또는 스레드 식별자입니다. 스레드에는 일련의 실행 에 대한 누적된 상태가 포함됩니다 . 실행이 실행되면 어시스턴트의 기본 그래프 상태 가 스레드에 저장됩니다. 체크포인터가 있는 그래프를 호출할 때 구성의 일부로 a를 지정 해야 합니다 .
{"configurable": {"thread_id": "1"}}
스레드의 현재 상태와 이전 상태를 검색할 수 있습니다. 상태를 유지하려면 실행 전에 스레드를 생성해야 합니다. LangGraph 플랫폼 API는 스레드 및 스레드 상태를 생성하고 관리하기 위한 여러 엔드포인트를 제공합니다..
Checkpoints
특정 시점의 스레드 상태를 체크포인트라고 합니다. 체크포인트는 각 슈퍼스텝에 저장된 그래프 상태의 스냅샷이며, StateSnapshot다음과 같은 주요 속성을 가진 객체로 표현됩니다.
- config: 이 체크포인트와 연관된 구성입니다..
- metadata: 이 체크포인트와 관련된 메타데이터입니다.
- values: 현재 시점에서의 상태 채널의 값입니다.
- next : 그래프에서 다음에 실행할 노드 이름의 튜플입니다.
- tasks: 다음에 실행될 작업에 대한 정보를 포함하는 객체 튜플입니다 . 해당 단계가 이전에 시도된 경우 오류 정보가 포함됩니다. 그래프가 노드 내에서 동적으로 중단된 경우 , 작업은 중단과 관련된 추가 데이터를 포함합니다.
체크포인트는 지속되며 나중에 스레드 상태를 복원하는 데 사용될 수 있습니다.
다음과 같이 간단한 그래프를 호출하면 어떤 체크포인트가 저장되는지 살펴보겠습니다.
from langgraph.graph import StateGraph, START, END
from langgraph.checkpoint.memory import InMemorySaver
from typing import Annotated
from typing_extensions import TypedDict
from operator import add
class State(TypedDict):
foo: str
bar: Annotated[list[str], add]
def node_a(state: State):
return {"foo": "a", "bar": ["a"]}
def node_b(state: State):
return {"foo": "b", "bar": ["b"]}
workflow = StateGraph(State)
workflow.add_node(node_a)
workflow.add_node(node_b)
workflow.add_edge(START, "node_a")
workflow.add_edge("node_a", "node_b")
workflow.add_edge("node_b", END)
checkpointer = InMemorySaver()
graph = workflow.compile(checkpointer=checkpointer)
config = {"configurable": {"thread_id": "1"}}
graph.invoke({"foo": ""}, config)
그래프를 실행한 후에는 정확히 4개의 체크포인트가 표시될 것으로 예상합니다.
- START 다음 실행 노드로 빈 체크포인트가 있음
- 사용자 입력을 받고 다음으로 실행될 노드로 체크포인트를 지정 {'foo': '', 'bar': []}node_a
- 합니다
- 출력이 있는 체크포인트 node_a {'foo': 'a', 'bar': ['a']}node_와 다음으로 실행될 노드로
- 출력이 있는 체크포인트와 node_b {'foo': 'b', 'bar': ['a', 'b']}실행할 다음 노드가 없음
bar채널 에 대한 리듀서가 있으므로 채널 값에는 두 노드의 출력이 모두 포함된다는 점에 유의
Get state
저장된 그래프 상태와 상호 작용할 때는 스레드 식별자를 지정 해야 합니다 . 를 호출하여 그래프의 최신 상태를 확인할 수 있습니다 . 이 함수는 구성에 제공된 스레드 ID와 연관된 최신 체크포인트 또는 스레드의 체크포인트 ID(제공된 경우)와 연관된 체크포인트에 해당하는 객체를 반환합니다
# get the latest state snapshot
# get the latest state snapshot
config = {"configurable": {"thread_id": "1"}}
graph.get_state(config)
# get a state snapshot for a specific checkpoint_id
config = {"configurable": {"thread_id": "1", "checkpoint_id": "1ef663ba-28fe-6528-8002-5a559208592c"}}
graph.get_state(config)
우리의 예에서 출력은 get_state다음과 같습니다.
StateSnapshot(
values={'foo': 'b', 'bar': ['a', 'b']},
next=(),
config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef663ba-28fe-6528-8002-5a559208592c'}},
metadata={'source': 'loop', 'writes': {'node_b': {'foo': 'b', 'bar': ['b']}}, 'step': 2},
created_at='2024-08-29T19:19:38.821749+00:00',
parent_config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef663ba-28f9-6ec4-8001-31981c2c39f8'}}, tasks=()
)

QA Pair-GPT
from dotenv import load_dotenv
from unstructured.partition.pdf import partition_pdf
load_dotenv()
# PDF 로드
def extract_pdf_elements(filepath):
"""
PDF 파일에서 이미지, 테이블, 그리고 텍스트 조각을 추출합니다.
path: 이미지(.jpg)를 저장할 파일 경로
fname: 파일 이름
"""
return partition_pdf(
filename=filepath,
extract_images_in_pdf=False, # PDF 내 이미지 추출 활성화
infer_table_structure=False, # 테이블 구조 추론 활성화
chunking_strategy="by_title", # 제목별로 텍스트 조각화
max_characters=4000, # 최대 문자 수
new_after_n_chars=3800, # 이 문자 수 이후에 새로운 조각 생성
combine_text_under_n_chars=2000, # 이 문자 수 이하의 텍스트는 결합
)
# PDF 파일 로드
elements = extract_pdf_elements("data/SPRI_AI_Brief_2023년12월호_F.pdf")
# 로드한 TEXT 청크 수
len(elements)
print(elements[2])
위험 식별과 완화에 필요한 조치를 포함
주요 7개국(G7)은 미국, 일본, 독일, 영국, 프랑스, 이탈리아, 캐나다를 의미
** 5월 정상회의에는 한국, 호주, 베트남 등을 포함한 8개국이 초청을 받았으나, AI 국제 행동강령에는 우선 G7 국가만 포함하여 채택
n G7은 행동강령을 통해 아래의 조치를 제시했으며, 빠르게 발전하는 기술에 대응할 수 있도록
이해관계자 협의를 통해 필요에 따라 개정할 예정
첨단 AI 시스템의 개발 과정에서 AI 수명주기 전반에 걸쳐 위험을 평가 및 완화하는 조치를 채택하고,
첨단 AI 시스템의 출시와 배포 이후 취약점과 오용 사고, 오용 유형을 파악해 완화
첨단 AI 시스템의 성능과 한계를 공개하고 적절하거나 부적절한 사용영역을 알리는 방법으로 투명성을
보장하고 책임성을 강화
산업계, 정부, 시민사회, 학계를 포함해 첨단 AI 시스템을 개발하는 조직 간 정보공유와 사고 발생 시
신고를 위해 협력하고, 위험 기반 접근방식을 토대로 개인정보보호 정책과 위험 완화 조치를 포함하는
AI 거버넌스와 위험 관리 정책을 마련
AI 수명주기 전반에 걸쳐 물리보안, 사이버보안, 내부자 위협 보안을 포함한 강력한 보안 통제 구현
사용자가 AI 생성 콘텐츠를 식별할 수 있도록 워터마크를 비롯하여 기술적으로 가능한 기법으로
신뢰할 수 있는 콘텐츠 인증과 출처 확인 메커니즘을 개발 및 구축
사회적 위험과 안전·보안 문제를 완화하는 연구와 효과적인 완화 대책에 우선 투자하고, 기후 위기
대응, 세계 보건과 교육 등 세계적 난제 해결을 위한 첨단 AI 시스템을 우선 개발
국제 기술 표준의 개발 및 채택을 가속화하고, 개인정보와 지식재산권 보호를 위해 데이터 입력과 수집
시 적절한 보호 장치 구현
☞ 출처: G7, Hiroshima Process International Code of Conduct for Advanced AI Systems, 2023.10.30.
2
1. 정책/법제
2. 기업/산업
3. 기술/연구
4. 인력/교육
영국 AI 안전성 정상회의에 참가한 28개국, AI 위험에 공동 대응 선언
KEY Contents
n 영국 블레츨리 파크에서 개최된 AI 안전성 정상회의에 참가한 28개국들이 AI 안전 보장을
위한 협력 방안을 담은 블레츨리 선언을 발표
n 첨단 AI를 개발하는 국가와 기업들은 AI 시스템에 대한 안전 테스트 계획에 합의했으며,
영국의 AI 안전 연구소가 전 세계 국가와 협력해 테스트를 주도할 예정
£ AI 안전성 정상회의 참가국들, 블레츨리 선언 통해 AI 안전 보장을 위한 협력에 합의
n 2023년 11월 1~2일 영국 블레츨리 파크에서 열린 AI 안전성 정상회의(AI Safety Summit)에
참가한 28개국 대표들이 AI 위험 관리를 위한 ‘블레츨리 선언’을 발표
선언은 AI 안전 보장을 위해 국가, 국제기구, 기업, 시민사회, 학계를 포함한 모든 이해관계자의 협력이
중요하다고 강조했으며, 특히 최첨단 AI 시스템 개발 기업은 안전 평가를 비롯한 적절한 조치를 취하여
AI 시스템의 안전을 보장할 책임이 있다고 지적
각국은 AI 안전 보장을 위해 첨단 AI 개발기업의 투명성 향상, 적절한 평가지표와 안전 테스트 도구
개발, 공공부문 역량 구축과 과학 연구개발 등의 분야에서 협력하기로 합의
£ 영국 총리, 정부 주도의 첨단 AI 시스템 안전 테스트 계획 발표
n 리시 수낙 영국 총리는 AI 안전성 정상회의를 마무리하며 첨단 AI 모델에 대한 안전성 시험 계획
수립과 테스트 수행을 주도할 영국 AI 안전 연구소의 출범을 발표
첨단 AI 모델의 안전 테스트는 국가 안보와 안전, 사회적 피해를 포함한 여러 잠재적 유해 기능에 대한
시험을 포함하며, 참석자들은 정부 주도의 외부 안전 테스트에 합의
각국 정부는 테스트와 기타 안전 연구를 위한 공공부문 역량에 투자하고, 테스트 결과가 다른 국가와
관련된 경우 해당 국가와 결과를 공유하며, 적절한 시기에 공동 표준 개발을 위해 노력하기로 합의
n 참가국들은 튜링상을 수상한 AI 학자인 요슈아 벤지오 교수가 주도하는 ‘과학의 현황(State of
the Science)’ 보고서 작성에도 합의했으며, 보고서를 통해 첨단 AI의 위험과 가능성에 관한
QA Pair 생성
from langchain_core.prompts import PromptTemplate
prompt = PromptTemplate.from_template(
"""Context information is below. You are only aware of this context and nothing else.
---------------------
{context}
---------------------
Given this context, generate only questions based on the below query.
You are an Teacher/Professor in {domain}.
Your task is to provide exactly **{num_questions}** question(s) for an upcoming quiz/examination.
You are not to provide more or less than this number of questions.
The question(s) should be diverse in nature across the document.
The purpose of question(s) is to test the understanding of the students on the context information provided.
You must also provide the answer to each question. The answer should be based on the context information provided only.
Restrict the question(s) to the context information provided only.
QUESTION and ANSWER should be written in Korean. response in JSON format which contains the `question` and `answer`.
DO NOT USE List in JSON format.
ANSWER should be a complete sentence.
#Format:
```json
{{
"QUESTION": "바이든 대통령이 서명한 '안전하고 신뢰할 수 있는 AI 개발과 사용에 관한 행정명령'의 주요 목적 중 하나는 무엇입니까?",
"ANSWER": "바이든 대통령이 서명한 행정명령의 주요 목적은 AI의 안전 마련과 보안 기준 마련을 위함입니다."
}},
{{
"QUESTION": "메타의 라마2가 오픈소스 모델 중에서 어떤 유형의 작업에서 가장 우수한 성능을 발휘했습니까?",
"ANSWER": "메타의 라마2는 RAG 없는 질문과 답변 및 긴 형식의 텍스트 생성에서 오픈소스 모델 중 가장 우수한 성능을 발휘했습니다."
}},
{{
"QUESTION": "IDC 예측에 따르면 2027년까지 생성 AI 플랫폼과 애플리케이션 시장의 매출은 얼마로 전망되나요?",
"ANSWER": "IDC 예측에 따르면 2027년까지 생성 AI 플랫폼과 애플리케이션 시장의 매출은 283억 달러로 전망됩니다."
}}
""" ){{ "QUESTION": "바이든 대통령이 서명한 '안전하고 신뢰할 수 있는 AI 개발과 사용에 관한 행정명령'의 주요 목적 중 하나는 무엇입니까?", "ANSWER": "바이든 대통령이 서명한 행정명령의 주요 목적은 AI의 안전 마련과 보안 기준 마련을 위함입니다." }}, {{ "QUESTION": "메타의 라마2가 오픈소스 모델 중에서 어떤 유형의 작업에서 가장 우수한 성능을 발휘했습니까?", "ANSWER": "메타의 라마2는 RAG 없는 질문과 답변 및 긴 형식의 텍스트 생성에서 오픈소스 모델 중 가장 우수한 성능을 발휘했습니다." }}, {{ "QUESTION": "IDC 예측에 따르면 2027년까지 생성 AI 플랫폼과 애플리케이션 시장의 매출은 얼마로 전망되나요?", "ANSWER": "IDC 예측에 따르면 2027년까지 생성 AI 플랫폼과 애플리케이션 시장의 매출은 283억 달러로 전망됩니다." }}
```python
import json
from langchain_openai import ChatOpenAI
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
def custom_json_parser(response):
json_string = response.content.strip().removeprefix("```json\\n").removesuffix("\\n```").strip()
json_string = f'[{json_string}]'
return json.loads(json_string)
chain = (
prompt
| ChatOpenAI(
model="gpt-4o",
temperature=0,
streaming=True,
callbacks=[StreamingStdOutCallbackHandler()],
)
| custom_json_parser
) # 체인을 구성합니다.
qa_pair = []
for element in elements[1:]:
if element.text:
qa_pair.extend(
chain.invoke(
{"context": element.text, "domain": "AI", "num_questions": "3"}
)
)
qa_pair
[{'QUESTION': '바이든 대통령이 2023년 10월 30일 발표한 행정명령의 주요 내용 중 하나는 무엇입니까?',
'ANSWER': '바이든 대통령이 발표한 행정명령의 주요 내용 중 하나는 AI의 안전과 보안 기준 마련입니다.'},
{'QUESTION': "G7이 2023년 10월 30일 합의한 '히로시마 AI 프로세스'의 주요 목적은 무엇입니까?",
'ANSWER': "G7이 합의한 '히로시마 AI 프로세스'의 주요 목적은 AI 기업을 대상으로 AI 위험 식별과 완화를 위한 국제 행동강령을 마련하는 것입니다."},
{'QUESTION': '행정명령에 따르면 AI 시스템의 안전성과 신뢰성을 확인하기 위해 기업이 미국 정부와 공유해야 하는 정보는 무엇입니까?',
'ANSWER': '행정명령에 따르면 AI 시스템의 안전성과 신뢰성을 확인하기 위해 기업이 미국 정부와 공유해야 하는 정보는 안전 테스트 결과와 시스템에 관한 주요 정보입니다.'},
{'QUESTION': 'G7 국가들이 채택한 AI 국제 행동강령의 주요 조치 중 하나는 무엇입니까?',
'ANSWER': 'G7 국가들이 채택한 AI 국제 행동강령의 주요 조치 중 하나는 첨단 AI 시스템의 성능과 한계를 공개하고 적절하거나 부적절한 사용영역을 알리는 방법으로 투명성을 보장하고 책임성을 강화하는 것입니다.'},
{'QUESTION': "영국 블레츨리 파크에서 개최된 AI 안전성 정상회의에서 발표된 '블레츨리 선언'의 주요 내용은 무엇입니까?",
'ANSWER': "'블레츨리 선언'의 주요 내용은 AI 안전 보장을 위해 국가, 국제기구, 기업, 시민사회, 학계를 포함한 모든 이해관계자의 협력이 중요하다는 점을 강조하고, 첨단 AI 시스템 개발 기업이 안전 평가를 비롯한 적절한 조치를 취하여 AI 시스템의 안전을 보장할 책임이 있다는 것입니다."},
{'QUESTION': '영국 AI 안전 연구소가 주도할 예정인 첨단 AI 모델의 안전 테스트는 어떤 잠재적 유해 기능에 대한 시험을 포함합니까?',
'ANSWER': '영국 AI 안전 연구소가 주도할 예정인 첨단 AI 모델의 안전 테스트는 국가 안보와 안전, 사회적 피해를 포함한 여러 잠재적 유해 기능에 대한 시험을 포함합니다.'}]
# 디버깅을 위한 데이터셋 추가
additional_qa = [
{
"QUESTION": "테디노트 유튜브 채널에 대해서 알려주세요.",
"ANSWER": "테디노트(TeddyNote)는 데이터 분석, 머신러닝, 딥러닝 등의 주제를 다루는 유튜브 채널입니다. 이 채널을 운영하는 이경록님은 데이터 분석과 인공지능에 대한 다양한 강의를 제공하며, 초보자도 쉽게 따라할 수 있도록 친절하게 설명합니다.",
},
{
"QUESTION": "랭체인 관련 튜토리얼은 어디서 찾을 수 있나요?",
"ANSWER": "테디노트의 위키독스 페이지에는 LangChain에 대한 다양한 한국어 튜토리얼이 제공됩니다. 링크: <https://wikidocs.net/book/14314>",
},
{
"QUESTION": "테디노트 운영자에 대해서 알려주세요",
"ANSWER": "테디노트(TeddyNote) 운영자는 이경록(Teddy Lee)입니다. 그는 데이터 분석, 머신러닝, 딥러닝 분야에서 활동하는 전문가로, 다양한 교육 및 강의를 통해 지식을 공유하고 있습니다. 이경록님은 여러 기업과 교육기관에서 파이썬, 데이터 분석, 텐서플로우 등 다양한 주제로 강의를 진행해 왔습니다",
},
]
qa_pair.extend(additional_qa)
qa_pair
[{'QUESTION': '바이든 대통령이 2023년 10월 30일 발표한 행정명령의 주요 내용 중 하나는 무엇입니까?',
'ANSWER': '바이든 대통령이 발표한 행정명령의 주요 내용 중 하나는 AI의 안전과 보안 기준 마련입니다.'},
{'QUESTION': 'G7 국가들이 채택한 AI 국제 행동강령의 주요 조치 중 하나는 무엇입니까?',
'ANSWER': 'G7 국가들이 채택한 AI 국제 행동강령의 주요 조치 중 하나는 첨단 AI 시스템의 성능과 한계를 공개하고 적절하거나 부적절한 사용영역을 알리는 방법으로 투명성을 보장하고 책임성을 강화하는 것입니다.'},
{'QUESTION': '한국은 영국 정부와 몇 개월 뒤에 온라인으로 AI 미니 정상회의를 공동 개최하기로 합의했습니까?',
'ANSWER': '한국은 영국 정부와 6개월 뒤에 온라인으로 AI 미니 정상회의를 공동 개최하기로 합의했습니다.'},
{'QUESTION': 'FTC가 생성 AI와 관련하여 주목하고 있는 주요 위험 요소는 무엇입니까?',
'ANSWER': 'FTC는 생성 AI와 관련하여 소비자의 개인정보 침해, 차별과 편견의 자동화, 사기 범죄 등의 위험에 주목하고 있습니다.'},
{'QUESTION': '프런티어 모델 포럼이 AI 안전 연구를 위해 조성한 기금의 규모는 얼마입니까?',
'ANSWER': '프런티어 모델 포럼이 AI 안전 연구를 위해 조성한 기금의 규모는 1,000만 달러입니다.'},
{'QUESTION': '데이터 출처 탐색기(Data Provenance Explorer) 플랫폼의 주요 기능은 무엇입니까?',
'ANSWER': '데이터 출처 탐색기 플랫폼의 주요 기능은 데이터셋의 라이선스 상태를 쉽게 파악하고, 주요 데이터셋의 구성과 데이터 계보도를 추적할 수 있게 하는 것입니다.'},
{'QUESTION': "삼성전자가 공개한 생성 AI 모델 '삼성 가우스'는 어떤 장점을 가지고 있습니까?",
'ANSWER': '삼성 가우스는 온디바이스에서 작동 가능하여 외부로 사용자 정보가 유출될 위험이 없다는 장점을 가지고 있습니다.'},
{'QUESTION': '앤스로픽은 구글의 클라우드 서비스 사용을 위해 얼마 규모의 계약을 체결했습니까?',
'ANSWER': '앤스로픽은 구글의 클라우드 서비스 사용을 위해 4년간 30억 달러 규모의 계약을 체결했습니다.'},
{'QUESTION': '유튜브는 생성 AI 콘텐츠에 AI 라벨을 표시하지 않을 경우 어떤 조치를 취할 계획입니까?',
'ANSWER': '유튜브는 생성 AI 콘텐츠에 AI 라벨을 표시하지 않으면 해당 콘텐츠를 삭제하고 광고 수익을 배분하는 유튜브 파트너 프로그램도 정지할 수 있습니다.'},
{'QUESTION': '구글 딥마인드 연구진이 제시한 범용 AI(AGI) 모델의 분류 체계에서, 현재 챗GPT와 구글 바드는 어떤 단계에 속합니까?',
'ANSWER': '구글 딥마인드 연구진이 제시한 범용 AI(AGI) 모델의 분류 체계에서, 현재 챗GPT와 구글 바드는 범용 AI 1단계 수준에 속합니다.'},
{'QUESTION': "GPT-4와 GPT-3.5 터보는 'LLM 환각 지수' 평가에서 어떤 성능을 보였습니까?",
'ANSWER': 'GPT-4는 작업 유형과 관계없이 가장 우수한 성능을 보였으며, GPT-3.5 터보도 거의 동등한 성능을 발휘했습니다.'},
{'QUESTION': 'CES 2024 전시회의 주제는 무엇입니까?',
'ANSWER': "CES 2024 전시회의 주제는 '올 온(All on)'입니다."},
{'QUESTION': '테디노트 유튜브 채널에 대해서 알려주세요.',
'ANSWER': '테디노트(TeddyNote)는 데이터 분석, 머신러닝, 딥러닝 등의 주제를 다루는 유튜브 채널입니다. 이 채널을 운영하는 이경록님은 데이터 분석과 인공지능에 대한 다양한 강의를 제공하며, 초보자도 쉽게 따라할 수 있도록 친절하게 설명합니다.'},
{'QUESTION': '랭체인 관련 튜토리얼은 어디서 찾을 수 있나요?',
'ANSWER': '테디노트의 위키독스 페이지에는 LangChain에 대한 다양한 한국어 튜토리얼이 제공됩니다. 링크: <https://wikidocs.net/book/14314>'},
{'QUESTION': '테디노트 운영자에 대해서 알려주세요',
'ANSWER': '테디노트(TeddyNote) 운영자는 이경록(Teddy Lee)입니다. 그는 데이터 분석, 머신러닝, 딥러닝 분야에서 활동하는 전문가로, 다양한 교육 및 강의를 통해 지식을 공유하고 있습니다. 이경록님은 여러 기업과 교육기관에서 파이썬, 데이터 분석, 텐서플로우 등 다양한 주제로 강의를 진행해 왔습니다'}]
jsonl 파일로 저장
original_qa
[{'QUESTION': '바이든 대통령이 2023년 10월 30일 발표한 행정명령의 주요 내용 중 하나는 무엇입니까?',
'ANSWER': '바이든 대통령이 발표한 행정명령의 주요 내용 중 하나는 AI의 안전과 보안 기준 마련입니다.'},
{'QUESTION': 'G7 국가들이 채택한 AI 국제 행동강령의 주요 조치 중 하나는 무엇입니까?',
'ANSWER': 'G7 국가들이 채택한 AI 국제 행동강령의 주요 조치 중 하나는 첨단 AI 시스템의 성능과 한계를 공개하고 적절하거나 부적절한 사용영역을 알리는 방법으로 투명성을 보장하고 책임성을 강화하는 것입니다.'},
{'QUESTION': '한국은 영국 정부와 몇 개월 뒤에 온라인으로 AI 미니 정상회의를 공동 개최하기로 합의했습니까?',
'ANSWER': '한국은 영국 정부와 6개월 뒤에 온라인으로 AI 미니 정상회의를 공동 개최하기로 합의했습니다.'},
{'QUESTION': 'FTC가 생성 AI와 관련하여 주목하고 있는 주요 위험 요소는 무엇입니까?',
'ANSWER': 'FTC는 생성 AI와 관련하여 소비자의 개인정보 침해, 차별과 편견의 자동화, 사기 범죄 등의 위험에 주목하고 있습니다.'},
{'QUESTION': '프런티어 모델 포럼이 AI 안전 연구를 위해 조성한 기금의 규모는 얼마입니까?',
'ANSWER': '프런티어 모델 포럼이 AI 안전 연구를 위해 조성한 기금의 규모는 1,000만 달러입니다.'},
{'QUESTION': '데이터 출처 탐색기(Data Provenance Explorer) 플랫폼의 주요 기능은 무엇입니까?',
'ANSWER': '데이터 출처 탐색기 플랫폼의 주요 기능은 데이터셋의 라이선스 상태를 쉽게 파악하고, 주요 데이터셋의 구성과 데이터 계보도를 추적할 수 있게 하는 것입니다.'},
{'QUESTION': "삼성전자가 공개한 생성 AI 모델 '삼성 가우스'는 어떤 장점을 가지고 있습니까?",
'ANSWER': '삼성 가우스는 온디바이스에서 작동 가능하여 외부로 사용자 정보가 유출될 위험이 없다는 장점을 가지고 있습니다.'},
{'QUESTION': '앤스로픽은 구글의 클라우드 서비스 사용을 위해 얼마 규모의 계약을 체결했습니까?',
'ANSWER': '앤스로픽은 구글의 클라우드 서비스 사용을 위해 4년간 30억 달러 규모의 계약을 체결했습니다.'},
{'QUESTION': '유튜브는 생성 AI 콘텐츠에 AI 라벨을 표시하지 않을 경우 어떤 조치를 취할 계획입니까?',
'ANSWER': '유튜브는 생성 AI 콘텐츠에 AI 라벨을 표시하지 않으면 해당 콘텐츠를 삭제하고 광고 수익을 배분하는 유튜브 파트너 프로그램도 정지할 수 있습니다.'},
{'QUESTION': '구글 딥마인드 연구진이 제시한 범용 AI(AGI) 모델의 분류 체계에서, 현재 챗GPT와 구글 바드는 어떤 단계에 속합니까?',
'ANSWER': '구글 딥마인드 연구진이 제시한 범용 AI(AGI) 모델의 분류 체계에서, 현재 챗GPT와 구글 바드는 범용 AI 1단계 수준에 속합니다.'},
{'QUESTION': "GPT-4와 GPT-3.5 터보는 'LLM 환각 지수' 평가에서 어떤 성능을 보였습니까?",
'ANSWER': 'GPT-4는 작업 유형과 관계없이 가장 우수한 성능을 보였으며, GPT-3.5 터보도 거의 동등한 성능을 발휘했습니다.'},
{'QUESTION': 'CES 2024 전시회의 주제는 무엇입니까?',
'ANSWER': "CES 2024 전시회의 주제는 '올 온(All on)'입니다."},
{'QUESTION': '테디노트 유튜브 채널에 대해서 알려주세요.',
'ANSWER': '테디노트(TeddyNote)는 데이터 분석, 머신러닝, 딥러닝 등의 주제를 다루는 유튜브 채널입니다. 이 채널을 운영하는 이경록님은 데이터 분석과 인공지능에 대한 다양한 강의를 제공하며, 초보자도 쉽게 따라할 수 있도록 친절하게 설명합니다.'},
{'QUESTION': '랭체인 관련 튜토리얼은 어디서 찾을 수 있나요?',
'ANSWER': '테디노트의 위키독스 페이지에는 LangChain에 대한 다양한 한국어 튜토리얼이 제공됩니다. 링크: <https://wikidocs.net/book/14314>'},
{'QUESTION': '테디노트 운영자에 대해서 알려주세요',
'ANSWER': '테디노트(TeddyNote) 운영자는 이경록(Teddy Lee)입니다. 그는 데이터 분석, 머신러닝, 딥러닝 분야에서 활동하는 전문가로, 다양한 교육 및 강의를 통해 지식을 공유하고 있습니다. 이경록님은 여러 기업과 교육기관에서 파이썬, 데이터 분석, 텐서플로우 등 다양한 주제로 강의를 진행해 왔습니다'},
{'QUESTION': '테디노트 유튜브 채널에 대해서 알려주세요.',
'ANSWER': '테디노트(TeddyNote)는 데이터 분석, 머신러닝, 딥러닝 등의 주제를 다루는 유튜브 채널입니다. 이 채널을 운영하는 이경록님은 데이터 분석과 인공지능에 대한 다양한 강의를 제공하며, 초보자도 쉽게 따라할 수 있도록 친절하게 설명합니다.'},
{'QUESTION': '랭체인 관련 튜토리얼은 어디서 찾을 수 있나요?',
'ANSWER': '테디노트의 위키독스 페이지에는 LangChain에 대한 다양한 한국어 튜토리얼이 제공됩니다. 링크: <https://wikidocs.net/book/14314>'},
{'QUESTION': '테디노트 운영자에 대해서 알려주세요',
'ANSWER': '테디노트(TeddyNote) 운영자는 이경록(Teddy Lee)입니다. 그는 데이터 분석, 머신러닝, 딥러닝 분야에서 활동하는 전문가로, 다양한 교육 및 강의를 통해 지식을 공유하고 있습니다. 이경록님은 여러 기업과 교육기관에서 파이썬, 데이터 분석, 텐서플로우 등 다양한 주제로 강의를 진행해 왔습니다'}]
with open("data/qa_pair.jsons", "w") as f:
json.dumps(original_qa)
import json
with open("qa_pair.jsonl", "w", encoding="utf-8") as f:
original_qa = json.dumps(qa_pair, ensure_ascii=False)
# 디버깅을 위한 데이터셋 추가
additional_qa = [
{
"QUESTION": "여러분의 이름을 넣어보세요",
"ANSWER": "답변을 적어보세요...",
},
{
"QUESTION": "랭체인 관련 튜토리얼은 어디서 찾을 수 있나요?",
"ANSWER": "테디노트의 위키독스 페이지에는 LangChain에 대한 다양한 한국어 튜토리얼이 제공됩니다. 링크: <https://wikidocs.net/book/14314>",
},
{
"QUESTION": "테디노트 운영자에 대해서 알려주세요",
"ANSWER": "테디노트(TeddyNote) 운영자는 이경록(Teddy Lee)입니다. 그는 데이터 분석, 머신러닝, 딥러닝 분야에서 활동하는 전문가로, 다양한 교육 및 강의를 통해 지식을 공유하고 있습니다. 이경록님은 여러 기업과 교육기관에서 파이썬, 데이터 분석, 텐서플로우 등 다양한 주제로 강의를 진행해 왔습니다",
},
]
original_qa = json.loads(original_qa)
original_qa.extend(additional_qa)
original_qa
with open("qa_pair.jsonl", "w", encoding="utf-8") as f:
for qa in original_qa:
f.write(json.dumps(qa, ensure_ascii=False) + "\\n")
with open("qa_pair.jsonl", "w", encoding="utf-8") as f:
for qa in qa_pair:
qa_modified = {
"instruction": qa["QUESTION"],
"input": "",
"output": qa["ANSWER"],
}
f.write(json.dumps(qa_modified, ensure_ascii=False) + "\\n")
from datasets import load_dataset
# JSONL 파일 경로
jsonl_file = "qa_pair.jsonl"
# JSONL 파일을 Dataset으로 로드
dataset = load_dataset("json", data_files=jsonl_file)
dataset
from huggingface_hub import HfApi
# HfApi 인스턴스 생성
api = HfApi()
# 데이터셋을 업로드할 리포지토리 이름
repo_name = "teddylee777/QA-Dataset-mini"
# 데이터셋을 허브에 푸시
dataset.push_to_hub(repo_name, token="허깅페이스 토큰")
'Lecture > 패스트캠퍼스' 카테고리의 다른 글
| 패스트캠퍼스 환급챌린지 41일차 : 테디노트의 RAG 비법노트 강의 후기 (4) | 2025.08.10 |
|---|---|
| 패스트캠퍼스 환급챌린지 40일차 : 테디노트의 RAG 비법노트 강의 후기 (5) | 2025.08.10 |
| 패스트캠퍼스 환급챌린지 38일차 : 테디노트의 RAG 비법노트 강의 후기 (4) | 2025.08.07 |
| 패스트캠퍼스 환급챌린지 37일차 : 테디노트의 RAG 비법노트 강의 후기 (3) | 2025.08.06 |
| 패스트캠퍼스 환급챌린지 36일차 : 테디노트의 RAG 비법노트 강의 후기 (2) | 2025.08.05 |