- now version : 1.1
- v1.1 : api, model-change
- v1 : text-only, window-only, slack-bot, no-api, gpt-4o-only
- git 설치
- poetry 환경변수 추가하기
- 업무나 업무 외적으로도 GPT를 사용하는 비중이 커졌으나, 따로 관리하는 방법이 없고 날짜별로 정리만 해주기 때문에 이전에 질문했던 내용을 찾기가 쉽지 않습니다.
- 그러다 Slack이나 디스코드의 채널을 떠올렸는데, 관련 업무에 대한 질문을 해당 채널에서 관리할 수 있다면 조금 더 접근이 용이해지지 않을까 했습니다.
- slack 봇 형태로 동작합니다.
- 채널에 질문이 들어오면 해당 질문에 대한 쓰레드로 gpt가 생성한 답변을 반환합니다.
- 해당 쓰레드에서 질문을 이어나갈 수 있습니다.
- API 대신 구독중인 본인의 chatgpt 계정을 활용하고 있으므로 해당 프로젝트는 반드시 상업적 목적으로 사용해선 안됩니다.
- chatgpt docs에 나와있는 것과 동일하게
v1/chat/completions
endpoint를 본인의 것에 붙여 api를 사용할 수 있습니다. (분산처리 구현 X)
-
API를 활용해 답변을 생성하는 예제
python==3.10.11
을 권장pyenv
설치 코드도install.bat
에 있으니 필요시 주석해제하여 실행
- (이미 한 번 했으면 생략) slack api 페이지(링크)에서 봇 생성 및 봇을 추가할 워크스페이스 선택
- OAuth & Permissions 들어가서 Scopes에
channels:history
,chat:write
,chat:write.public
추가 - OAuth Tokens 만든 후
Bot User OAuth Token
복사 및app/slack/bot.py
의SLACK_BOT_TOKEN
에 붙여넣기
- OAuth & Permissions 들어가서 Scopes에
- 워크스페이스에서 원하는 채널에 들어가
/invite @bot-name
명령어를 통해 봇 초대
poetry run uvicorn app.main:app --host 0.0.0.0 --port 8000
- (중요!) 띄워진 chrome 창에서 chatgpt 페이지에 들어가 로그인 한 번 진행하기
- ngrok 설치(링크)
- 로컬 서버 -> 공개 서버,
ngrok http http://localhost.8000
- 공개 서버 주소 복사
- Slack 봇이 있는 채널에서 발생하는 이벤트를 감지하기 위해 앞서 만들어준 봇 페이지에 접속하여(관련 링크)에서 Event Subscription 페이지로 이동
- Enable Events 토글 on 해주고 Request URL에 앞서 복사한 공개서버 주소 붙여넣기
{공개서버주소}/slack/events
- Subscribe to bot events를 눌러
message.channels
이벤트 추가
poetry install
poetry run uvicorn app.main:app --host 0.0.0.0 --port 8000
curl -X POST http://127.0.0.1:8000/v1/chat/completions -H "Content-Type: application/json" -d "{\"model\":\"gpt-4o\",\"messages\":[{\"role\":\"user\",\"content\":\"안녕 오늘의 뉴스를 요약해줘\"}]}"