WEBVTT 00:01.070 --> 00:04.640 유피터랩은 언제나 환영이죠 제가 제일 좋아하는 곳이에요 00:04.640 --> 00:07.790 지금은 5주 차 폴더에 있죠 00:07.790 --> 00:14.000 이건 5주 차에 작성된 첫째 날 주피터 노트예요 오늘 우리가 지낼 곳이죠 아주 00:14.000 --> 00:20.240 단순한 방식으로 DIY 래그 구현을 구축할 겁니다 하지만 이게 어떻게 작동하는지 00:20.240 --> 00:22.610 통찰력을 줄 거예요 00:22.700 --> 00:29.870 우선 쇼어햄에 있는 우리 보험 기술 회사에 대해 말씀드리죠 00:29.990 --> 00:37.400 회사 공유 폴더에 엑세스 권한이 있어요 노웨어 베이스라는 거죠 같은 주에 여기 5개 00:37.400 --> 00:41.690 폴더에 넣어뒀어요 여러분이 정독하세요 00:41.690 --> 00:48.260 열어보면 4개의 폴더가 있어요 회사 계약서, 직원과 제품 4개의 00:48.260 --> 00:53.660 다른 부서나 4개의 분야를 나타내는 것들이죠 00:54.020 --> 01:00.050 한 가지 언급할 것은 이미 짐작하셨겠지만 여기 회사 데이터가 꽤 많이 01:00.050 --> 01:03.450 있습니다 전부 완전히 허구예요 01:03.660 --> 01:07.440 이건 LLM이 만든 거예요 01:07.470 --> 01:14.940 몇 주 전에 했던 운동을 그대로 하면서 데이터 생성기를 작성해서 데이터 일부를 만드는 데 사용했어요 01:14.940 --> 01:19.020 몇몇 문서와 기타 등등의 관계를 유지하기 위해서요 01:19.050 --> 01:24.450 저도 몇 가지 수정을 추가하긴 했지만 거의 모든 것은 01:24.450 --> 01:28.530 GPT 4나 클로드가 생성했어요 01:29.370 --> 01:34.470 회사에서 이걸 잠깐 보죠 회사에 관한 게 몇 가지 있어요 01:34.470 --> 01:39.180 마크다운 문서라면 꽤 짧은 문서라고 생각해요 01:39.180 --> 01:46.440 이렇게 열 수 있으면 INurer Elmlm에 대한 평가서를 볼 수 있어요 01:46.440 --> 01:50.880 2015년에 에이버리 랭커스터가 설립한 것으로 알려져 있죠 01:50.880 --> 01:52.230 에이버리 이름을 쓸 거예요 01:52.260 --> 01:53.910 몇 번 만날 거예요 01:54.240 --> 01:57.030 원본 문서도 보여 드릴게요 01:57.030 --> 02:00.210 우리가 잘 아는 마크다운처럼 보여요 02:00.210 --> 02:03.850 그럼 계약의 지식 기반으로 돌아가 보죠 02:03.850 --> 02:10.540 계약에 관해 보다 실질적인 정보를 얻었는데요 계약 조건 갱신과 계약에 포함된 02:10.570 --> 02:15.130 기능은 나중에 중요하게 다루게 될 텐데요 02:15.130 --> 02:16.960 그러니 기억해 두세요 02:17.260 --> 02:19.150 다른 것들도요 02:19.510 --> 02:25.480 다시 지식 기반으로 돌아가서 직원들을 살펴보면 이건 다양한 직원들의 직원 인사 02:25.480 --> 02:26.770 기록이에요 02:26.770 --> 02:32.440 CEO인 에이버리 랭커스터도 인사팀의 기록이 있어요 02:32.770 --> 02:41.050 모두 인사 서류를 갖고 있고 제품에는 인큐어 엘름에서 제안한 다양한 02:41.050 --> 02:50.530 공지 사항이 적혀 있어요 자동차 보험에 대한 카 엘름도 있고 홈 엘름 등도 있죠 02:50.530 --> 02:55.600 이 문서들을 훑어보면 정말 사실적이라는 게 놀라워요 02:55.630 --> 02:59.800 프론티어 모델스 협찬이죠 02:59.920 --> 03:03.480 로드맵을 가지고도 훌륭한 제품 요약이에요 03:03.480 --> 03:04.500 좋아요 03:04.980 --> 03:06.360 네 03:06.390 --> 03:08.940 그 시절 첫날부터요 03:08.940 --> 03:10.800 그럼 어떻게 하죠? 03:10.830 --> 03:16.380 이 회사에 대한 질문을 하는 뭔가를 지금 작성하겠습니다 인위적으로 03:16.410 --> 03:20.700 찾아보고 프롬프트에 컨텍스트를 삽입하는 거죠 03:20.700 --> 03:22.110 수입도 좀 하고요 03:22.110 --> 03:25.470 이번에는 GPT 4 미니를 사용할 거예요 03:25.530 --> 03:31.170 이제 주스 얘기를 해보죠 get it get it 03:31.170 --> 03:40.560 그래서 여기서 하는 건 이건 Python 함수입니다 이 폴더 안에서 모든 콘텐츠를 03:40.560 --> 03:43.350 취해 리스트에 넣는 거죠 03:43.350 --> 03:44.100 직원들요 03:44.100 --> 03:51.600 따라서 직원은 이제 지식 기반/직원 파일명 목록이 되겠죠 03:51.600 --> 03:59.400 각각의 파일은 엉성한 코드인데 해킹을 당해서 파일의 이름을 취해요 03:59.640 --> 04:06.490 사실 직원의 플로이드 이름인데 거기에 성을 취하죠 04:06.520 --> 04:14.140 성을 분할해 파일을 열고 사전에 넣죠 키는 직원 이름이고 04:14.140 --> 04:17.080 문서는 문서예요 04:17.080 --> 04:20.020 이걸 실행해 보죠 이걸 보세요 04:20.020 --> 04:22.090 사전이 나올 거라고 기대해요 04:23.080 --> 04:24.760 미안해요 04:25.210 --> 04:28.570 문맥이나 사전이라고 하죠 04:28.570 --> 04:31.180 모든 키를 문맥 안에서 살펴보죠 04:31.390 --> 04:33.130 여기 열쇠요 04:33.130 --> 04:38.410 예상하셨겠지만 열쇠는 직원들의 성이에요 04:38.410 --> 04:42.040 그중 한 명은 CEO인 랭커스터예요 04:42.040 --> 04:44.560 랭커스터를 간단히 살펴보죠 04:44.560 --> 04:48.520 랭커스터 사전에서 간단히 찾아볼 수 있죠 04:48.520 --> 04:53.620 뱀이 인사 기록에서 하락 문서를 떼는 걸 봐야 해요 04:53.650 --> 04:58.990 마법 같은 일은 전혀 없어요 파일을 읽고 사전에 쑤셔 넣는 거요 04:58.990 --> 05:00.670 그게 다예요 05:01.480 --> 05:09.200 이제 이걸 확장해보죠 여기서 하려는 건 제품에 대해 정확히 같은 걸 하는 거예요 05:09.230 --> 05:16.520 제품 폴더를 보세요, 각각의 파일을 반복해 이름을 빼내고 같은 컨텍스트 05:16.520 --> 05:18.800 사전에 밀어 넣어요 05:18.800 --> 05:22.520 이제 보면∙∙∙ 먼저 실행하면∙∙∙ 잊지 않도록 하세요 05:22.520 --> 05:23.180 됐어요 05:23.180 --> 05:24.650 이제 건반을 보세요 05:24.650 --> 05:28.580 직원들의 성과 제품명을 조합한 게 보일 거예요 05:28.940 --> 05:32.570 이게 그 회사 성이랑 시장이에요 05:32.750 --> 05:33.620 다녀왔어요 05:33.620 --> 05:34.910 진정했어요 05:35.030 --> 05:38.150 제품명은 괜찮아요? 05:38.810 --> 05:40.130 준비됐죠? 05:40.160 --> 05:41.780 시스템 메시지예요 05:41.780 --> 05:47.180 보험 회사인지 아닌지 묻는 질문에 정확하게 대답하는 전문가죠 05:47.210 --> 05:49.100 간결하고 정확하게 대답하세요 05:49.100 --> 05:51.590 모르면 모른다고 하세요 05:51.590 --> 05:52.820 지어내지 마세요 05:52.820 --> 05:55.550 관련 맥락을 제공받지 못했다면요 05:56.060 --> 06:02.570 매우 신뢰할 만한 설명을 시스템에 입력하면 아무것도 발명하지 말라고 06:02.570 --> 06:08.790 경고하는 효과가 있어서 환각 증상을 막고 정확도를 높일 수 있죠 06:08.970 --> 06:13.500 나중에 다시 살펴보겠지만 기억해두실 가치가 있어요 이걸 여러분 노트북에 06:13.530 --> 06:20.550 두시거나 유용한 것 목록에 두시길 바랍니다 정확성이 필수적일 땐 프롬프트도 유용하거든요 06:20.940 --> 06:32.610 그걸 추가해 관련 컨텍스트 get이라는 함수를 만들 거예요 06:32.610 --> 06:35.490 이 함수가 하는 일은 아주 중요해요 06:35.490 --> 06:45.090 이건 메시지가 될 거예요 어떤 종류의 메시지든요 06:45.450 --> 06:53.160 컨텍스트를 반복할 거예요 컨텍스트에 있는 각각의 아이템에서 제목과 세부 사항을 06:53.160 --> 06:55.020 가져오는 거죠 06:55.020 --> 07:02.370 그리고 타이틀인지 아닌지 직원의 성인지 제품인지를 봅니다 07:02.370 --> 07:07.370 제품이라면요 메시지 어딘가에 있다면요 07:07.370 --> 07:14.030 랭커스터라는 단어가 메시지의 어디에 있든 간에 이 관련 컨텍스트 리스트에 07:14.030 --> 07:18.920 밀어넣을 것입니다 그리고 리스트를 반환하죠 07:18.950 --> 07:21.110 그게 무슨 뜻인지 보여드리죠 07:21.140 --> 07:34.670 관련 컨텍스트를 get 하고 완전히 무관한 걸 넘긴다면 고양이 같은 거요 아무것도 못 얻어요 07:34.700 --> 07:38.870 고양이는 보장 문제와 관련이 없어요 07:38.900 --> 07:46.160 그래서 에이버리 랭커스터가 누구인지를 입력하면, 만세! Tipet up! Tipet up! Tipet up! Tipet up! Tipet up! Tipet up! 07:46.190 --> 07:53.690 사실 아주 확실한 답이 나올 겁니다 우리가 기대하는 바로 그 답이죠 get it get it get it 07:53.840 --> 08:04.310 에이버리 랭커스터가 누구고 누가 차분한지 물으면 한번 보죠 08:04.370 --> 08:09.030 포함할 수 있는 두 가지 목록이 get을 받게 되죠 08:09.060 --> 08:10.800 네, 두 번째가 시작되는 게 보이시죠 08:10.800 --> 08:12.600 저게 기둥이에요 08:12.600 --> 08:17.940 에이버리의 문서와 열 문서가 담긴 목록을 받았죠 get it get it 08:18.450 --> 08:21.030 물론 아주 잘 부서지죠 08:21.030 --> 08:28.650 Avery 성을 빼고 Avery라고만 쓸게요 대문자 C 없이요 대소문자 구분이 08:28.650 --> 08:32.220 안 되는 매치도 아직 안 했거든요 08:32.220 --> 08:34.950 Get을 해도 얻는 게 없다는 걸 알게 되겠죠 08:34.950 --> 08:36.360 잘 부서져요 08:36.360 --> 08:39.780 기본 케이스에만 적용될 거예요 08:40.620 --> 08:46.950 이제 한 단계 더 나아가서 함수 추가 컨텍스트를 만들어 메시지를 08:46.950 --> 08:47.970 받죠 08:48.120 --> 08:53.190 간단히 어떤 관련 컨텍스트든 get이 되는 거죠 08:53.190 --> 08:56.370 뭔가를 찾으면 그걸 메시지에 추가하죠 08:56.370 --> 09:01.290 다음의 추가적인 컨텍스트가 이 질문에 대답하는 데 관련 있을 수 있다고 할 거예요 09:01.290 --> 09:04.320 지나간 것 위에 뭔가를 쌓는 거예요 09:04.320 --> 09:07.900 예를 들어보죠 질문을 다시 해보죠 09:07.960 --> 09:12.160 에이버리 랭커스터부터 시작할게요 긍정적인 예죠 나쁜 예도 09:12.160 --> 09:12.880 있어요 09:12.880 --> 09:17.170 에이버리 랭커스터가 누구고 감방을 운영해야 한다고요 09:19.270 --> 09:23.410 에이버리 랭커스터가 누구죠? 09:23.410 --> 09:24.700 뭐가 보이죠? 09:24.940 --> 09:25.840 그렇군요 09:25.840 --> 09:26.830 시작할게요 09:26.830 --> 09:29.650 에이버리 랭커스터가 누구죠? 09:29.680 --> 09:32.620 다음의 추가적인 맥락은 이 질문에 대답하는 데 관련이 있을 수 있죠 09:32.620 --> 09:34.540 세세한 부분까지 신경 써야 해요 09:34.750 --> 09:37.870 제가 반대 예시를 들어볼게요 09:37.870 --> 09:39.340 또 다른 문제요 09:39.340 --> 09:44.290 알렉스 랭커스터가 누구냐고 물으면 랭커스터라고 쓰여 있을 거예요 09:44.290 --> 09:47.530 물론 여전히 관련 컨텍스트라고 하죠 09:47.740 --> 09:50.380 물론 거기서 묘기를 놓쳤죠 09:50.380 --> 09:53.320 그래서 조잡해요 09:53.440 --> 09:56.470 문자열만 살펴보는 거예요 09:56.470 --> 10:01.570 하지만 최애 채팅 함수를 쓰려면 그 정도면 충분하죠 10:01.570 --> 10:04.510 이게 그라디오가 기대하는 함수라는 걸 기억하세요 10:04.510 --> 10:09.230 사용자 인터페이스를 빠르게 만들려면 현재 메시지와 메시지의 이력을 취해야 합니다 10:09.230 --> 10:12.200 이제 이게 여러분께 제2의 본성이 됐으면 좋겠네요 10:12.230 --> 10:20.510 히스토리를 OpenAI가 기대하는 형식으로 변환합니다 특정 구조의 독재 목록이죠 10:20.510 --> 10:23.660 그리고 이 멋진 전화를 걸죠 10:23.660 --> 10:28.880 메시지에 컨텍스트를 추가해 오픈AI에 보냈어요 10:28.880 --> 10:36.590 오픈AI 채팅 완료 역시 여러분께 제2의 본성이 되어 응답을 스트림으로 10:36.590 --> 10:38.150 보내드리죠 10:38.150 --> 10:40.190 실행해 보죠 10:40.280 --> 10:46.430 이제 마지막 단계는 그래디오에서 이걸 불러오는 한 줄 대사예요 10:46.760 --> 10:47.510 시작할게요 10:47.540 --> 10:49.370 어떤지 보죠 10:54.230 --> 10:56.000 이렇게 말해 보죠 10:56.060 --> 10:56.780 안녕하세요 10:59.510 --> 11:00.050 안녕하세요 11:00.050 --> 11:01.460 무엇을 도와드릴까요? 11:01.490 --> 11:06.410 에이버리 랭커스터가 누구냐고 물어보죠 11:08.620 --> 11:09.190 맞아요 11:09.190 --> 11:09.460 네 11:09.490 --> 11:10.570 랭커스터요 11:11.950 --> 11:21.670 물론 좋은 답변이 나왔죠 에이버리 랭커스터 정보가 입력된 정보를 오픈라이에 보냈다는 걸 알고 11:21.670 --> 11:24.940 있었으니까요 get it 11:25.300 --> 11:30.040 이제 뭐가 평온한지 말해 볼까요? 11:32.350 --> 11:34.870 혁신적인 자동차 보험 상품도 있죠 11:34.900 --> 11:35.770 다 됐어요 11:35.770 --> 11:40.660 제품에 대해 중점을 두고 있는 큰 컨텍스트에서 요약되는 정보가 엄청나게 11:40.660 --> 11:41.830 많아요 11:41.950 --> 11:45.370 로드맵을 통해 계속 개선할 수 있다고도 하죠 11:45.400 --> 11:46.390 좋아요 11:46.990 --> 11:50.110 누더기인 거 보이시죠? 11:50.110 --> 11:54.130 단순하지만 이게 바로 핵심이에요 11:54.220 --> 11:56.440 잠깐 끊고 얘기하죠 11:56.440 --> 11:57.760 내가 뭘 할지 알죠? 11:57.790 --> 12:02.380 에이버리가 누군지 물어볼게요 12:02.410 --> 12:09.950 사실 예전에 했던 대화가 들어 있어요 다시 시작해야겠네요 12:10.040 --> 12:11.570 새로운 대화를 해요 12:11.600 --> 12:15.470 안 그러면 에이버리가 누군지 알 거예요 아까 물어봤잖아요 12:15.470 --> 12:22.880 새로운 사용자 인터페이스를 가져와서 처음부터 시도해보죠 그런 장점은 주지 말고 그냥 물어보세요 12:22.910 --> 12:24.320 에이버리가 누구죠? 12:25.760 --> 12:30.170 죄송하지만 에이버리에 대한 정보가 없어요 12:30.470 --> 12:32.540 잘 부러지는 게 보이죠? 12:32.540 --> 12:34.430 성을 따야 해요 12:34.430 --> 12:46.040 성 철자를 틀려도 대문자 L이 없는 랭커스터는 망가지기 마련이니 이해하시죠? 12:46.040 --> 12:48.200 Get it 12:48.200 --> 12:51.620 추가 정보를 추가하는 효과적인 방법이죠 12:51.650 --> 12:57.140 더 정확한 답을 얻지만 글자가 정확히 일치해야 해요 12:57.140 --> 13:01.550 유연하지도 확장성도 낮은 해결책이죠 13:01.670 --> 13:03.140 더 잘할 수 있어요 13:03.140 --> 13:06.710 내일 우리가 할 일이 바로 그거예요 13:06.710 --> 13:09.350 이제 슬라이드로 돌아가죠