이 프로젝트를 시작한 게 1년이 넘었는데 이제 블로그 글로는 마무리를 지으려고 합니다. 최종 결과물 사용 방법을 공유하려고요. 앞선 글을 읽으셨던 분들이 주신 문의도 많았고 한 번 정리할 필요가 있다고 느꼈습니다. 처음 이 프로젝트의 시작은 ChatGPT를 슬랙에 연동하기 위해 2개의 Repository를 사용했는데요. 현재는 1개로 통합했습니다. 아래 링크만 사용하시면 됩니다.https://github.com/jybaek/llm-with-slack GitHub - jybaek/llm-with-slack: Connect LLM to Slackbot. Works via FastAPIConnect LLM to Slackbot. Works via FastAPI. Contribute to jybaek/llm-w..
이전 글을 작성한 이후로 소스코드가 많이 변경 됐습니다. 특히 아래 구문(이전 글에서 작성했던 내용)에 대해 수정이 있었는데요. 그리고 number_of_messages_to_keep는 꼭 0으로 넣어주세요. 이 환경변수는 대화내역을 N개 저장하고 있겠다는 설정인데요. 대화내역을 저장하는 경우 ChatGPT와 대화할 때 상호작용이 되는 것처럼 보일 겁니다. 이전 대화내용을 기억하고 있으니까요. 아주 훌륭한 옵션이죠. 다만, 이 설정을 위해서는 Redis가 필요합니다. Google Cloud에서 Memorystore(Redis)를 올려서 사용하는 것도 좋지만 비용 문제로 다루지 않겠습니다. 만약 이미 Redis가 있다면 앞에 Hello-ChatGPT에 환경변수로 REDIS_HOST를 넣어서 사용해 주시면 ..
첫 번째 글을 통해 슬랙 앱을 설치했고 두 번째 글에서 로컬 PC에서 ChatGPT를 서비스하는 방법을 살펴봤습니다. 이번 글에서는 앞서 소개한 소스코드를 클라우드에 올려두고 슬랙에 연동해서 사용해 볼 겁니다. 슬랙 앱이 없다면 첫 번째 글을 참고하시고, 두 번째 글은 슬랙 앱에 권한 설정 부분과 토큰을 얻는 설명이 있기 때문에 부분적으로 참고하셔야 할 겁니다. 만약 권한 같은 문제를 이미 통달하셨다면 이번 글만 보셔도 상관은 없습니다. 자, 그럼 클라우드로 출발합니다. 우리는 Google Cloud 를 통해 서버리스 환경에서 ChatGPT와 슬랙앱을 운영해 볼 겁니다. 대략적인 아키텍처는 아래와 같습니다. 보이는 것처럼 아주 심플합니다. Cloud Run은 fully-managed serverless ..
이번 글에서는 ChatGPT를 로컬 PC 서비스하기 위한 과정을 살펴볼 겁니다. 이 과정을 준비하기 위해서는 첫 번째로 Slack App이 필요합니다. 혹시 아직 앱이 없으시다면 이전 글을 참고해서 앱을 먼저 생성해 주세요. 두 번째는 ngrok이라는 애플리케이션이 필요합니다. 그리고 끝으로는 제가 만든 애플리케이션을 동작시키기 위해 Git과 Python이 필요합니다. 먼저 ngrok 은 Slack에서 발생하는 메시지를 내 PC에서 받아서 처리하기 위해 필요한데요. 설치를 포함한 자세한 내용은 여기 글을 통해 확인하시기 바랍니다. # OpenAI 회원 가입 및 토큰 획득 우리 프로그램을 돌리기 위해서는 OpenAI API를 호출할 수 있는 토큰 정보가 필요합니다. https://platform.opena..
이번 글에서는 연일 화제를 이어가고 있는 ChatGPT를 슬랙에 연동하는 과정을 살펴보겠습니다. 소스코드는 제가 모두 준비해 놨으니 천천히 따라오시면 누구나 슬랙에 ChatGPT를 사용하실 수 있을 겁니다. 글은 총 세 편으로 이어질 겁니다. 첫 번째 글에서는 슬랙 앱을 생성하고 두 번째 글에서는 로컬에서 서비스를 실행시켜 ChatGPT를 슬랙에 연동할 겁니다. 세 번째 글에서는 클라우드에 서비스를 배포하고 운영하는 내용을 다룰 겁니다. 자, 그럼 첫 번째 글을 시작합니다. 첫 번째 글에서는 슬랙 앱을 생성합니다. 아주 간단한 과정으로 이어지니 편하게 따라와 주시면 됩니다. 먼저 https://api.slack.com/apps로 접속해서 앱을 생성하도록 하겠습니다. 사이트에 접속했으면 Create New..
이전 편에서 데이터를 Google Cloud의 BigQuery에 담는 것 까지 진행을 했다. 사실 빅쿼리가 오버스펙이기는 하지만 쿼리 감각이 5년 전에서 멈춰있었기 때문에 이쯤에 개인 프로젝트로 쿼리 감을 되찾자는 것도 있었고, 빅쿼리를 통해 연동되는 GCP( Google Cloud Platform )의 여러 가지 부가적인 기능을 공부하자는 목적도 있었다. 아무튼, 지난시간까지 데이터를 적재하는 부분은 어느 정도 끝났기 때문에 데이터 모양새는 꽤 나쁘지 않게 쌓이고 있다. 현재는 대략 한 달치 이상의 데이터가 쌓이기를 기다리고 있는 시기인데 데이터가 충분히 쌓였을 때 다음 계획에 대해서 이것저것 생각해보고 있다. 사실 프로젝트의 목적은 "용인-> 강남 버스 출근 앉아가기"지만 이미 적은 데이터로도 앉을 ..
이전 편에서 놓치고 있던 세 가지 부분에 대해서 이야기를 했었는데 데이터 중간점검을 하는 도중 이상한 점이 발견되었다. 특정 버스의 데이터가 제대로 수집되고 있지 않다던지, 아침 시간대에 대충 알고 있는 버스 빈 자리 숫자와 수집된 데이터에 확연한 오차가 발생하고 있었던 것이다. 다시 유심히 경기버스의 데이터를 살펴보니 수집되는 데이터에 index가 고정이 아니라는 사실을 알 수 있었다. 예를 들어 보면 수집되는 데이터를 나타내는 busArrivalInfo 배열에는 32개의 버스 데이터 정보가 있는데 이 배열 안에 내게 필요한 버스 정보들이 있는 위치가 가변이라는 것이다. 예를 들어 A라는 버스가 이른 아침에는 6번 index에 있었지만 어느 시간이 되면 7번 index로 바뀌어 있는 것이다. 데이터 안..
이번에는 프로젝트를 진행하면서 놓친 부분을 언급하고 끝내려고 한다. 프로젝트를 시작한 지 이제 일주일 정도 되었고 데이터는 쌓이고 있지만 매우 중요한 부분이기 때문에 누군가 나와 비슷한 계획으로 움직이려고 한다면 미리 생각해야 할 부분일 것이다. 첫 번째로 이야기하는 건 타깃 정류소의 위치다. 이 프로젝트의 핵심은 내가 타고자 하는 정류소의 데이터를 수집하고 수집된 데이터 안에서 버스의 빈자리를 확인하는 데 있다. 예를 들어 특정 시간대에 빈자리가 항상 5자리 있다고 생각해보면 나는 그 시간대에 버스를 타기 위해 움직이면 된다는 이야기다. 여기서 매우 중요한 부분이 간과되고 있는데 바로 그 정류소에서 대기하고 있는 사람의 수이다. 이미 여섯명이 기다리고 있다면 나는 그 정류소에 제때 도착해봐야 앉을 수 ..
(용인) 집 근처에서 아침에 강남가는 버스를 타면 시간대에 따라서 앉을 수 있는 확률이 많이 갈린다. 경험으로 이야기하자면, - 06시 30분 전후 : 대략 10번에 9번은 앉을 수 있음 (2층버스) - 08시 30분 전후 : 대략 10번에 8~9번 앉을 수 있음 (2층버스) - 09-10시 사이 : 앉을 수 있는 확률 극악 (1층버스) 쉽게 납득하기 어렵다. 아무래도 학생들이나 출근하는 사람수는 08시 30분쯤이 더 많을 것 같은데 오히려 09시-10시 사이가 버스에 앉기 훨-씬 어렵다. 그런데 특이한 점은 09시-10시 사이에는 2층 버스가 덜 운행되는 느낌. 버스회사에 문의해보니 08시 20분까지만 모든 배차가 2층버스로 이뤄지고 그 이후로는 2층버스의 비율이 점차 줄어든단다. 다시말해 타는 사람도..
slack 에는 다양한 투표 기능이 있는데 대표적으로 simple-poll, polly 등이 있다. 하지만 이런 투표기능이 있는 명령어가 무조건적으로 무료는 아니다. polly 같은 경우에는 한달간 베타 버전처럼 사용할 수 있고 그 이후에는 비용을 지불해야 하며, simple-poll 은 일정 횟수 이상을 초과해서 사용하게 되면 비지니스로 업그레이드 해서 사용할 것을 권고한다.아래는 simple-poll 로부터 발생되는 비지니스 업그레이드 권고 메시지.warning: Remember to upgrade to Simple Poll Business before December 11thAs one of Simple Poll's most active workspaces, we were delighted to g..
개인 프로젝트를 고민하다가 예전부터 미루어 왔던 AI 스피커 만들기를 시작합니다. 프로젝트의 요구사항은 간단합니다. 사용자의 음성을 인식하고 의도를 파악한 후에 상황에 맞는 답변을 스피커로 출력합니다. 가벼운 요구사항이지만 내부적으로는 아래와 같은 기술을 필요로 합니다.- 사용자의 음성을 인식 ( Speech to Text ) - 변환된 Text 를 구문 분석 ( Natural Language Processing ) - 분석된 내용을 토대로 답변을 음성 출력 ( Text to Speech )일단 당장은 머신러닝에 대한 배경지식이 부족하기 때문에 세 가지 모두 쉬운 과제는 아닙니다. 그래서 고민끝에 우선 Speech to Text( STT), Text to Speech( TTS) 는 Google Cloud..
Vue.js 로 웹 개발을 시작한지 한달 남짓. 뷰스러운 것 보다는 오히려 html, css, javascript 가 발목을 잡는다. 이래서 어느 분야던지 기초가 중요하다고 하는거다. 애초에 웹 개발쪽은 쳐다본 적도 없으니 그럴 수 밖에 없지. 아무튼 고작 한달 했다고 쓸데없이 자신감만 생겨서는 우연히 알게된 좋은 플랫폼을 개인 프로젝트로 흉내내고 싶은 욕심이 생겼다. (사내 세미나를 통해 알게 됨)플랫폼은 비교적 간단하다. 용도는 콘퍼런스장에서 Q&A 시간에 질문을 받고 Timeline 을 보여준다. 좋은 질문이라고 생각되면 누구나 해당 질문에 upvote 를 할 수 있다. 익명으로 질문을 포스팅 하거나 닉네임을 적을 수도 있다. 그리고 타임라인을 여러가지 방식으로 정렬할 수 있다. 예를들면 시간, u..
어느순간 아침마다 일어나서 미세먼지 농도를 인터넷에 검색하는 것이 일상이 되어버렸다. 일단 미세먼지 관련해서는 우리나라에도 문제가 있지만 중국의 영향이 크다. 앞으로 살아갈 우리 아이들의 미래가 걱정인데, 일부 주변 지인들은 앱을 통해 아침마다 미세먼지 수치를 조회 하기도 한다. 여튼 난 이런 모든 것들이 귀찮아졌고 그냥 알림을 받고 싶었기에 이번 일(?)을 시작하게 됐다.우선 미세먼지 농도를 알 수 있는 방법은 여러가지가 있겠지만 공공데이터포털에서 제공하는 정보를 사용하기로 했다. 오늘 날짜(2017.05.23) 기준으로 2,330 개의 OpenAPI 를 제공하는데 미세먼지 농도도 여기에 포함되어 있다.우선 이 데이터를 사용하려면 간단한 회원가입 절차가 필요하다. 아마도 인증 때문이겠지. 어렵지 않으니..
- Total
- Today
- Yesterday