WEBVTT 00:00.890 --> 00:04.400 마침내 래그가 활약하는 걸 보러 왔죠 00:04.430 --> 00:07.460 그렇게 떠들어대더니 결국 이렇게 됐네요 00:07.460 --> 00:10.730 주피터랩의 5주 차 폴더에 있어요 00:10.730 --> 00:16.760 4일째인 노트북을 보고 있는데요 3일째에 추가된 걸 복제한 거예요 00:16.760 --> 00:21.710 가상의 보험 기술 회사의 지식 노동자 세럼의 문제를 여전히 해결하는 00:21.710 --> 00:22.970 중이니까요 00:23.330 --> 00:27.620 기존의 수입품부터 시작할 거예요 00:28.070 --> 00:35.570 랑체인용 수입 기능도 추가했는데요 랑체인 메모리에서 두 가지를 추가했어요 00:35.600 --> 00:38.570 대화 버퍼 메모리를 불러올게요 00:38.600 --> 00:43.010 랭 체인에서 대화용 회수 체인을 가져왔어요 00:43.010 --> 00:46.850 이건 제가 전에 언급한 추상화 두 가지인데요 00:46.880 --> 00:52.310 눈치 빠른 분들은 눈치챘겠지만 세 번째 추상화도 여기 들어 있어요 00:52.310 --> 00:57.920 이전 강의에서 언급하지 않고 이미 불러왔지만 여기 있네요 00:57.920 --> 01:02.180 챗 오픈아이는 이미 랑가 체인에서 수입되고 있어요 01:02.180 --> 01:08.650 오픈AI, 지금까지 오픈AI 엠딩만 사용했는데 이번에는 채팅 오픈AI를 01:08.680 --> 01:10.990 사용할 거예요 01:11.050 --> 01:14.410 수입 검사를 해 봐야겠어요 01:15.010 --> 01:17.020 Get it 안 하면 멀리 못 가요 01:17.620 --> 01:19.720 그런 다음 상수를 하죠 01:19.720 --> 01:21.850 환경 변수를 로드해요 01:21.850 --> 01:23.800 이제 익숙해질 거예요 01:23.800 --> 01:30.580 하지만 검토하고 저기 있는 지식 기반 디렉터리에서 문서를 갖고 오죠 01:30.580 --> 01:35.350 이제 텍스트 덩어리를 갖고 와서 얼마나 많은지 보죠 01:35.350 --> 01:36.730 123번인 건 확실해요 01:36.760 --> 01:39.040 네, 123개요 01:39.040 --> 01:44.200 직원, 제품 회사, 계약이죠 01:44.590 --> 01:50.020 이제 다시 벡터 데이터베이스에 Put을 할게요 01:50.020 --> 01:52.300 벡터 데이터베이스를 삭제하고 다시 생성하죠 01:52.390 --> 01:57.640 각 벡터는 1536개의 차원을 가지고 있죠 01:57.640 --> 02:00.580 상상하긴 어렵지만 2D로 처리할 수 있어요 02:00.580 --> 02:01.930 그게 우리 일이죠 02:01.930 --> 02:03.220 저기 있네요 02:03.220 --> 02:07.450 3D로 보자고 할 수도 있어요 02:07.480 --> 02:08.810 비트가 좀 불필요하네요 02:08.810 --> 02:12.650 이걸 전부 다시 볼 필요는 없었지만 이 도표들을 보니 좋네요 02:12.680 --> 02:16.820 난 거짓말한 적 없어요 02:16.820 --> 02:19.790 이 코드 네 줄만큼 간단해요 02:19.820 --> 02:24.050 먼저 새 LM 추상화를 생성하죠 02:24.080 --> 02:25.250 채팅방 오픈라이예요 02:25.280 --> 02:27.950 아까 가져온 것을 put을 거예요 02:27.950 --> 02:29.570 드디어 그걸 쓸 수 있게 됐죠 Put it up Put it up Put it up Put it up Put it up Put it 02:29.960 --> 02:34.760 온도와 모델명 메모리를 제공해요 02:34.820 --> 02:39.710 전달되는 대화 버퍼 메모리를 생성합니다 아까 말씀드렸듯이 키를 생성하고 02:39.710 --> 02:42.230 목록의 형태로 반환하라고 하죠 02:42.560 --> 02:49.640 크로마 벡터 스토어를 가져와서 리트리버를 호출합니다 이 추상화, 리트리버에서 래핑하기 02:49.640 --> 02:52.580 위해서요 랭 체인에 필요한 거죠 02:52.580 --> 02:58.370 그래서 지금 대화 회수 체인을 만들 때 거기에 도달하는 거죠 get it 02:58.370 --> 03:03.200 LM, 리트리버, 메모리를 전달하는 거죠 03:03.740 --> 03:04.700 그게 다예요 03:04.820 --> 03:05.780 실행해 보죠 03:07.040 --> 03:07.640 네 03:07.640 --> 03:08.960 그래서 실행했죠 03:09.140 --> 03:10.430 살짝 실망스럽긴 하지만요 03:10.430 --> 03:14.590 뭘 기대하셨는지 모르겠지만요 갑자기 get이 나타날 거라고 생각하셨는지 03:14.590 --> 03:15.490 모르겠네요 03:15.700 --> 03:16.960 실제로 호출해야 해요 03:16.990 --> 03:19.270 그걸 활용할 방법을 찾아야 해요 03:19.300 --> 03:25.690 그래서 우리가 하려는 말은 쿼리 호출이라고 하죠 03:26.770 --> 03:38.230 짧은 영상으로 짧게 설명해 주시겠어요? 간단하게 시작할게요 03:38.320 --> 03:38.620 좋아요 03:38.650 --> 03:39.370 이렇게 말해요 03:39.370 --> 03:41.800 결과가 대화의 사슬이라고 하셨죠? 03:41.800 --> 03:46.510 방금 생성한 거요 메서드 호출이라고 부르죠 03:46.600 --> 03:52.600 인보크는 질문이 열쇠인 사전을 선택해요 03:52.690 --> 03:53.620 철자가 맞나요? 03:53.650 --> 03:53.830 네 03:53.830 --> 03:54.850 질문 있어요 03:55.150 --> 03:58.780 그리고 메시지 쿼리를 입력해야 해요 Put 04:00.010 --> 04:01.420 다 됐어요 04:01.420 --> 04:04.810 그런 다음 print결과를 하죠 04:06.430 --> 04:09.610 이건 그 결과의 해답 키 아래에 있어야 해요 04:09.610 --> 04:15.640 이게 우리가 합친 마지막 코드입니다 래그 파이프라인을 사용하기 위해서요 04:15.680 --> 04:16.970 어떻게 될 것 같아요? 04:16.970 --> 04:18.620 쿼리를 가져가요 04:18.620 --> 04:21.110 벡터로 바꿀 거예요 04:21.110 --> 04:24.230 크롬 데이터 스토어에서 찾아볼 거예요 04:24.260 --> 04:27.440 관련 있는 덩어리를 찾을 거예요 04:27.440 --> 04:29.780 덩어리 복수형이라고 하죠 04:29.780 --> 04:31.250 그건 나중에 다시 얘기하죠 04:31.580 --> 04:33.320 관련 있는 덩어리를 찾죠 04:33.320 --> 04:38.930 프롬프트에 그걸 넣어 OpenAI에 보내죠 04:39.020 --> 04:43.130 GPT for 미니로 보낼 겁니다 여기서 지정했거든요 04:43.130 --> 04:48.170 그리고 돌아온 것은 그것을 패키지로 해서 answer key에 두죠 04:48.200 --> 04:49.940 이게 통할지 보죠 04:52.400 --> 04:53.480 됐어요 04:53.510 --> 04:54.560 됐어요 04:54.560 --> 04:59.240 쇼어햄에서 처음으로 래그 파이프라인을 탔어요 04:59.270 --> 05:06.230 혁신적인 보험 기술 회사 에이버리 랭커스터가 설립했죠 지금도 잘 알려진 이름이에요 05:06.230 --> 05:07.940 정보도 좀 있고요 05:07.940 --> 05:12.980 여러분이 갖고 놀 수 있는 연습용으로 남겨두겠습니다만 다양한 문서에서 05:12.980 --> 05:18.530 그걸 갖고 온 걸 보실 수 있어요 회사 섹션의 모든 것에서 나온 거겠죠 05:18.530 --> 05:24.910 다양한 정보로부터 그걸 검색한 걸 보셨으면 좋겠네요 05:25.960 --> 05:26.860 좋아요 05:26.860 --> 05:28.750 그럼 좋겠죠? 05:29.230 --> 05:30.310 어떻게 될지 알아요? 05:30.340 --> 05:35.020 그걸 멋진 사용자 인터페이스로 패키지할 수 있다면 좋지 않을까요? 채팅 05:35.020 --> 05:37.480 UI를 통해 사용할 수 있도록요 05:37.480 --> 05:41.290 물론 그라디오는 아주 간단하게 만들고요 05:41.290 --> 05:47.890 이 시점에서 우리가 할 일은 그라디오가 기대하는 포맷으로 채팅 함수를 만드는 거예요 05:47.890 --> 05:50.170 그러려면 메시지와 역사가 필요하죠 05:50.170 --> 05:55.540 제가 한 일은 방금 작성한 바로 그 줄을 취해 여기 둔 겁니다 그런 다음 우리가 05:55.540 --> 05:58.480 기대하는 걸 정확히 반환하죠 05:58.510 --> 06:03.070 뭔가 이상한 점이 보일 수도 있으니 잠시 시간을 두고 살펴보세요 뭔가 이상한 06:03.070 --> 06:04.540 점이 보이나요? 06:06.070 --> 06:09.910 한 가지 이상하게 생각하실 만한 건 이 역사 매개 변수를 06:09.910 --> 06:12.430 실제로 아무것도 안 한다는 거예요 06:12.520 --> 06:14.440 완전히 무시해요 06:14.440 --> 06:19.570 우리가 그걸 무시하는 이유는 랭 체인이 이미 역사를 다루기 때문이죠 06:19.570 --> 06:26.820 그래디오에 채팅 UI가 있어서 사용자 인터페이스에서 대화 기록을 유지하고 매번 전체 06:26.820 --> 06:30.570 대화 기록과 함께 호출되지만 말이에요 06:30.600 --> 06:36.540 랭이 이미 우리에게 메모리를 줬기 때문에 지금까지의 대화를 06:36.570 --> 06:38.430 기록하고 있어요 06:38.460 --> 06:41.730 새 메시지와 새 답만 알면 돼요 06:42.570 --> 06:45.180 어쨌든 이 감방을 다시 찍고 있어요 06:45.210 --> 06:47.970 사실 이미 재실행했는데 메모리를 지우려고 재실행 중이에요 06:47.970 --> 06:50.190 완전히 새롭게 시작하는 거죠 06:50.220 --> 06:55.230 이걸 불러오면 이제 채팅할 수 있어요 06:55.500 --> 06:56.340 안녕하세요 06:57.780 --> 06:58.380 안녕하세요 06:58.380 --> 06:59.700 무엇을 도와드릴까요? 07:00.060 --> 07:02.520 보험이 뭐죠? 07:02.640 --> 07:03.090 네 07:08.490 --> 07:09.150 됐어요 07:09.180 --> 07:10.560 놀랍지도 않네요 07:10.680 --> 07:13.230 이제 몰래 뭔가 할 수 있어요 07:13.260 --> 07:14.970 이런 식으로요 07:15.030 --> 07:19.470 에이버리는 뭘 했죠? 07:20.100 --> 07:25.260 제가 이 얘기를 꺼낸 이유는 이런 질문에서 몇 가지 짚고 넘어가고 싶은 07:25.290 --> 07:26.490 게 있어서예요 07:26.490 --> 07:34.030 먼저, 무력을 이용한 해결책이 명확합니다 장난감 버전 래그에서는 랭커스터를 성으로 07:34.030 --> 07:38.860 보고 문서에서 검색할 수 없었지만 가망이 없었죠 07:38.860 --> 07:41.560 새장이라는 단어를 쓰면 안 돼요 07:41.560 --> 07:45.160 여기서 시도하는 건 당연히 흥미롭죠 07:45.190 --> 07:50.470 둘째, aviery를 소문자 a로 썼어요. 왜냐하면 07:50.470 --> 07:56.770 a는 철자가 다르기 때문에 텍스트로 검색하면 틀릴 테니까요. 07:56.770 --> 08:02.620 그래서 우리가 제대로 된 케이스를 사용하지 않았다는 사실을 감당할 수 있을지 보는 것도 흥미로울 거예요 08:02.620 --> 08:07.540 세 번째는 메모리라는 개념을 이용하는 거예요 그녀가 전에 했던 걸 말하는 08:07.540 --> 08:08.380 거니까요 08:08.410 --> 08:11.920 엘름에 설립하기 전에 뭘 했는지 묻는 거예요 08:11.920 --> 08:18.220 모델이 현재 상황을 잘 파악하고 맥락을 유지하는지 볼 거예요 조류 새장에 08:18.220 --> 08:22.780 관한 정보와 이전 행동을 둘 다 검색할 수 있는지요 08:22.810 --> 08:25.000 직원 기록에서 찾아봐야 해요 08:25.120 --> 08:29.350 그리고 일관성 있게 질문에 대답하세요 08:29.350 --> 08:30.310 어디 보죠 08:33.420 --> 08:38.670 쇼어햄에 입사하기 전 에이버리 랭커스터는 이노베이트 보험 솔루션스의 수석 제품 관리자로 일했습니다 08:38.670 --> 08:40.620 혁신적인 보험을 개발한 곳이죠 08:40.980 --> 08:43.830 그 전에는 시장 경향에 초점을 맞춘 사업 분석가였죠 08:43.860 --> 08:49.860 그래서 여러분이 에이버리의 직원 기록을 확인하시도록 08:49.860 --> 09:01.200 남겨둘게요 그리고 에이버리의 신원을 제대로 파악하고 있는지 확인하세요 재미있는 실험이니까요 09:01.320 --> 09:05.850 물론 다른 어려운 질문들도 시도해 보세요 09:06.000 --> 09:10.200 무슨 뜻이죠? 09:12.960 --> 09:13.140 네 09:13.140 --> 09:13.860 어디 보죠 09:13.890 --> 09:20.730 침착하게가 그 차의 제품이었어요 09:21.210 --> 09:21.390 네 09:21.420 --> 09:24.420 아니면 다르게 물어보죠 09:24.420 --> 09:35.650 자동차 보험 회사에서 자동차에 제품을 공급하나요? 09:36.550 --> 09:38.770 까다로운 문제를 내 보죠 09:39.040 --> 09:40.570 다 됐어요 09:40.600 --> 09:40.960 네 09:40.990 --> 09:44.530 자동차 보험 회사들을 위한 포털인 안정감을 주는 보험이죠 09:44.530 --> 09:53.020 그래서 제가 진정이나 자동차라는 단어를 사용하지 않는데도 관련 문서와 관련 09:53.020 --> 09:58.060 덩어리를 찾아 정확한 답변을 할 수 있죠 09:58.540 --> 10:03.160 랙으로 하는 첫 실험이었군요 10:03.190 --> 10:04.930 이제 이걸 드셔 보세요 10:04.930 --> 10:10.450 여러분이 수사하고 어려운 질문을 해서 그걸 깨뜨리거나 잘못된 정보를 제공할 수 있는지 알아내길 10:10.450 --> 10:15.190 바랍니다 아니면 선을 벗어나 한계까지 밀어붙여 보세요 get it get it 10:15.220 --> 10:21.340 다음 시간엔 몇 가지 다른 걸 포함해 방법 몇 가지를 다루겠습니다 이런 종류의 프롬프트와 관련해 10:21.340 --> 10:26.260 공통된 문제 몇 가지와 어떻게 디버그 하고 Get up 밑에서 무슨 일이 있는지 10:26.260 --> 10:28.180 알아내는 방법도요 10:28.210 --> 10:36.670 하지만 쇼어햄에 있는 우리 가상 보험 기술 회사를 위해 만든 래그 파이프라인을 즐겁게 보셨길 10:36.670 --> 10:37.540 바라요 10:37.600 --> 10:38.620 다음에 봐요