From the uDemy course on LLM engineering.
https://www.udemy.com/course/llm-engineering-master-ai-and-large-language-models
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
571 lines
15 KiB
571 lines
15 KiB
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 |
|
이제 슬라이드로 돌아가죠
|
|
|