나만의 챗GPT 만들기-2/5
자체 데이터,매뉴얼을 학습시킨 챗봇을 만들어보자.
학습시킨 매뉴얼 기준으로 답변 생성
매뉴얼을 벡터화
챗GPT에 질문하고, 매뉴얼 기준으로 답변을 요청
VS Code 터미널 사용
1
RAG는 미리 텍스트를 데이터베이스로 준비.
사용자가 입력하면 그 입력 내용을 참고로 데이터베이스에서 검색해 추가함으로 좀 더 정확한 답변을 준다.
질문 + 검색한 내용을 LLM에서 질문하여 답변을 받는다.
2
동작 순서?
정보 저장 = 데이터를 벡터화한다.
질문한다.
3
동작 순서?
텍스트 데이터를 CSV로 변경, 임베딩, 벡터 데이터화 (실습)
VS Code 터미널 사용
PS C:\0ai2> pip install pandas
1
# C: 드라이브에 1work 디렉토리 만들기
1work 폴더에 실습 예제 복사
2
# VScode 실행
File > Open Folder
Terminal > NEW Terminal
3
4장
나만의 데이터로 학습한 채팅봇 만들기
https://github.com/ychoi-kr/ChatGPT-API-Python/blob/main/ch4/text_to_csv_converter.py
4
# 텍스트 파일을 만들자.
매뉴얼
data.txt
노을 캠핑장 이용법에 대해 적어보자~
예)
1. 노을 캠핑장 예약 방법
인터파크 사이트에서 한다.
2. 체크인과 체크 아웃시간
체크인은 방문자 센터에가서 신분증을 제시해야 한다.
체크 아웃은 2시이후에 한다.
3.wi-fi
wi-fi는 안된다.
4. 주차장
전용 주차장이 있다.
5.
# 텍스트 데이터를 CSV 파일로 만들어 사용하자.
# VSCODE 터미널에서 실습한다.
# 제목과 내용이 있는것은 csv파일이 좋다.
1) text_to_csv_converter.py 사용
# 필요한 라이블러리 설치, 판다스
pip install pandas
python text_to_csv_converter.py
scaped.csv 파일이 생긴다.
csv로 정리 된다.
6
# 학습 데이터를 임베딩 하자 , text_embedding.py 파일
# VSCODE로 text_embedding.py 파일에 키 추가
import os
os.environ["OPENAI_API_KEY"] = "sk-proj-gmLnswflnrO"
from openai import OpenAI
client = OpenAI()
# alt + s 로 저장하기
https://platform.openai.com/docs/overview
7
2) # python text_embedding.py 실행하기
# 필요한 라이블러리 설치
pip install tiktoken matplotlib plotly scipy scikit-learn
python text_embedding.py
embedding.csv 파일이 생성됨
8
embedding 된
embedding.csv 파일을 열어 본다.
9
3) app.py 에 OPENAI API 키 추가.
# app.py 실행 , 터미널에서 실행한다.
# 사용자의 입력을 받아 챗GPT의 답변을 출현한다.
import os
os.environ["OPENAI_API_KEY"] = "sk-proj-zSVwdEF4A"
from openai import OpenAI
client = OpenAI()
PS C:\1work\ChatGPT-API-Python-main\ch4> python .\app.py
질문을 입력하세요
10
# 질문한다.
노을 캠핑장 예약법 알려주세요
ChatGPT: 노을 캠핑장 예약을 원하신다면, 노을 캠핑장의 공식 웹사이트나 전화로 예약을 진행하실 수 있습니다. 원하시는 날짜와 숙박 인원을 알려주시면 예약을 도와드리겠습니다. 감사합니다.
11
# exit 로 나간다.
12
4) # 주어진 지식을 바탕으로 응답하는 프로그램 , search.py
# temperature=1 로 추가한다. 자연스러운 답변을 준다.
# temperature=0 으로 설정하면 완전히 학습 데이터에 기반한 문장이 생성된다.
# api 키 추가
import os
os.environ["OPENAI_API_KEY"] = "sk-proj-zSVwdEF4A"
from openai import OpenAI
client = OpenAI()
13
5) app.py 수정, 실행
search.py에서 answer_question 함수를 가져온다.
python .\app.py
PS C:\1work\ChatGPT-API-Python-main\ch4> python .\app.py
질문을 입력하세요
주차장 있나요?
ChatGPT: 네, 당 호텔은 180대의 무료 주차장을 제공하고 있습니다. 주차장은 호텔 건물 근처에 위치해 있으며, 이용 방법은 무료로 이용 가능하며 선착순입니다. 주차장은 24시간 개방되어 있습니다. 만약 추가적인
질문이 있으시면 언제든지 문의해 주세요.
농구 규칙
ChatGPT: 모르겠습니다. 호텔에서는 주로 숙박 및 투숙 서비스에 관련된 정보를 안내해 드리고 있습니다. 농구 규칙에 대한 자세한 정보를 찾고자 한다면, 관련 농구 단체나 스포츠 시설에서 문의해 보시거나 온라인
에서 규칙을 검색하실 수 있습니다. 다른 도움이 필요하시면 언제든지 저희에게 질문해 주세요.
체크인 시간 알려줘
ChatGPT: 체크인 시간은 오후 3시입니다. 만약 일찍 체크인을 원하시거나 늦게 체크인을 하실 계획이 있으시다면 미리 호텔로 연락 주시면 객실의 상태를 확인하여 최대한 도와드리겠습니다. 필요하시다면 짐을 보관
해드릴 수 있습니다. 부수적인 질문이 있으시면 언제든지 문의해 주세요. 이용해 주셔서 감사합니다.
14
응용 사례?
고객 지원 - 서비스 관련해서 자주 묻는 질믄과 답변 학습
사내 학습 도구 - 특정 스킬에 대한 지식을 제공
# 음성을 text로 변경해보자~
0
https://github.com/ychoi-kr/ChatGPT-API-Python/tree/main/ch5/03
1
OPENAI의 위스퍼 서비스
음성파일 준비
최대 25MB
위스퍼 API = ChatGPT API와 동일하다.
https://platform.openai.com/docs/overview
2
vscord
# sample.wav
# text.py
import os
os.environ["OPENAI_API_KEY"] = "sk-proj-mP_TTiWo521jO9FK8Er3HZ8FPKrsSTWjYnoaEA"
from openai import OpenAI
client = OpenAI()
file = open("sample.wav", "rb")
transcript = client.audio.transcriptions.create(
model="whisper-1",
file=file
)
print(transcript.text) # 결과를 표시
3
python text.py
결과
D:\02chat\ChatGPT-API-Python-main\ch5\03>python text.py
이번에 만든 것은 번역을 해주는 gpt 입니다 lingua bridge 라는 것이구요 여기다가 이렇게 번역해 달라고 하면 번역을 해 줍니 다 제가 이걸 활용해 가지고 문서를 번역하는 걸 한번 보여드리려고 하는데요 Streamlit 이라는 Python 라이브러리 입니다 여기 Streamlit 을 배우는 30일 챌린지 라는 앱이 있더라구요 그래서 제가 번역을 해보고 있는데 지금 1, 2, 3, 4일차까지 번역이 3일차 까지 번역이 되어 있고 4일차를 번역할 차례입니다 문장이 얼마 안되네요 4일차 번역하는 걸 한번 바로 해보겠습니다 현재 30일 챌린지 깃허브 저장소를 복제해 가지고 제 로컬에다가 환경을 만들어 놓은 상태이구요 거기 홈에서 콘텐츠 밑에 ko 라는 폴더도 만들어 놨습니다 데이 숫자 .md 라는 그런 파일들이 있는데 지금 번역할 파일은 데이 4.md 입니다
1
# 위스퍼로 음성을 텍스트로 변환하고, 챗GPT로 텍스트를 요약해주는 서비스
# main.py
# api 키 추가 > 저장
# 위스퍼로 음성을 텍스트로 변환
import os
os.environ["OPENAI_API_KEY"] = "sk-proj-sSTWjYnoaEA"
from openai import OpenAI
client = OpenAI()
file = open("sample.wav", "rb")
transcript = client.audio.transcriptions.create(
model="whisper-1",
file=file,
)
# 챗GPT로 요약하기
summary = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{
"role": "system",
"content": f"다음 문장을 3줄의 글머리 기호로 요약해 주세요:\n{transcript}"
}
]
)
print(summary.choices[0].message.content)
print(f"요약에 사용한 토큰 수: {summary.usage.total_tokens}")
python main.py
2
결과
D:\02chat\ChatGPT-API-Python-main\ch5\04>python main.py
- 번역을 해주는 gpt인 lingua bridge로 30일 챌린지 번역 앱을 활용
- 4일차까지 번역 완료, 4일차 번역 진행 중
- 깃허브 저장소에서 번역 파일 환경 구축 후 진행 중
요약에 사용한 토큰 수: 488
1
# 음성을 영어 text로
# text를 영어로 번역하는 서비스도 가능하다.
# OPANAPI AI 코드 추가
import os
os.environ["OPENAI_API_KEY"] = "sk-proj-TUvStxcA"
from openai import OpenAI
client = OpenAI()
file = open("sample.wav", "rb")
transcript = client.audio.translations.create(
model="whisper-1",
file=file,
)
# ChatGPT로 요약
summary = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{
"role": "user",
"content": f"다음 문장을 한국어로 번역하고 3줄의 글머리 기호로 요약하세요:\n{transcript}"
}
]
)
print(f"요약 결과: \n{summary.choices[0].message.content}")
print(f"요약에 사용한 토큰 수: {summary.usage.total_tokens}")
2
결과
python.exe .\translate.py
PS C:\0ai2> python.exe .\translate.py
요약 결과:
- 이번에 제가 만든 것은 번역을 하는 GPT인 Lingua Bridge입니다.
- Streamlit이라는 Python 라이브러리를 사용하여 문서를 번역할 것입니다.
- 31번 도전의 Github 저장소를 복사하여 로컬 환경에서 번역 작업을 시작했습니다.
요약에 사용한 토큰 수: 324
PS C:\0ai2>
2
5장. 음성 데이터 요약~
https://github.com/ychoi-kr/ChatGPT-API-Python/tree/main/ch5
1
6장
최신 정보를 포함한 뉴스 기사 만들기
https://github.com/ychoi-kr/ChatGPT-API-Python/tree/main/ch6
2
# 구글 검색엔진 ID와 키 복사해 놓기
<script async src="https://cse.google.com/cse.js?cx=07519ba">
</script>
<div class="gcse-search"></div>
맞춤 설정
검색엔진 ID복사
075ㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌ
프로그래매틱 액세스
시작하기
키 가져오기
Show Key 복사
AIzaSyDmㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌㅌ
3
pip install langchain-community==0.0.17
pip install langchain==0.1.4 langchain-core==0.1.17
pip install langchain-openai==0.0.5
# 라이블러리 설치 오류??
File "C:\Users\seo\AppData\Local\Programs\Python\Python311\Lib\site-packages\pydantic\main.py", line 212, in __init__
validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pydantic_core._pydantic_core.ValidationError: 1 validation error for GoogleSearchAPIWrapper
Value error, Did not find google_api_key, please add an environment variable `GOOGLE_API_KEY` which contains it, or pass `google_api_key` as a named parameter. [type=value_error, input_value={}, input_type=dict]
For furth
4
API 키를 환경 변수로 설정하기 (윈도우)
openai
https://brunch.co.kr/@topasvga/4183
5
https://programmablesearchengine.google.com/about/
6
# 기사 작성
출력은 output.txt
파이썬 코드에 api 키 추가
import os
os.environ["OPENAI_API_KEY"] = "sk-pYWC1PYFgmIpGVCF2rac61QNxVtL3Kb1dJDVt4UvStxcA"
python app.py
실행
7
# 라이블러리 설치
pip install google-api-python-client
PS C:\0ai2> python.exe '.\app (1).py'
C:\0ai2\app (1).py:20: LangChainDeprecationWarning: The class `GoogleSearchAPIWrapper` was deprecated in LangChain 0.0.33 and will be removed in 1.0. An updated version of the class exists in the :class:`~langchain-google-community package and should be used instead. To use it run `pip install -U :class:`~langchain-google-community` and import as `from :class:`~langchain_google_community import GoogleSearchAPIWrapper``.
search = GoogleSearchAPIWrapper()
기사 주제를 입력해 주세요: AFC 2023 우승국에 관해
출력이 완료되었습니다
결과
output.txt 파일이 생성된다.
# 랭체인 기반의 뉴스 기사 작성
# text 파일로 출력
8
# 에이전트로 외부 기사 검색하여 기사 작성
2번째
영어권 구측 최신 정보
정해진 형식으로 출력해준다.
서비스이름
공식 URL
서비스 개요 로 출력됨
9
https://github.com/ychoi-kr/ChatGPT-API-Python/blob/main/ch6/3-4-2/app.py
# 세번째 app.py 결과
영어권 최신정보 수집
영어로 나온다.
10
https://brunch.co.kr/@topasvga/3867