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.
568 lines
14 KiB
568 lines
14 KiB
WEBVTT |
|
|
|
00:00.530 --> 00:05.180 |
|
다시 오신 걸 환영합니다 유피터랩에 오신 걸 환영해요 |
|
|
|
00:05.300 --> 00:09.110 |
|
재밌는 예시로 여러분을 즐겁게 해 드릴게요 |
|
|
|
00:09.200 --> 00:14.690 |
|
챗봇끼리 적대적인 대화를 나눌 거예요 |
|
|
|
00:14.720 --> 00:16.220 |
|
어떻게 할지 보죠 |
|
|
|
00:16.400 --> 00:22.310 |
|
이쯤 되면 어떤 요소들을 가지고 대화를 할 수 있는지 익숙해지실 거예요 |
|
|
|
00:22.340 --> 00:23.420 |
|
여러 번 보셨잖아요 |
|
|
|
00:23.420 --> 00:29.990 |
|
이제 시스템과 사용자 프롬프트가 있는 리스트를 보죠 |
|
|
|
00:30.410 --> 00:37.130 |
|
하지만 앞서 암시했듯이 여러 상호 작용을 할 경우 목록은 더 길어질 수 있습니다 예를 |
|
|
|
00:37.130 --> 00:42.410 |
|
들어, 여기 보이는 것처럼 시스템 메시지가 초기에 있을 수 있고 역할 |
|
|
|
00:42.410 --> 00:49.280 |
|
시스템 콘텐츠나 시스템 메시지가 있고 그 후 사용자 메시지 그 메시지에 응답한 비서가 |
|
|
|
00:49.280 --> 00:53.720 |
|
있고 그 후 또 다른 사용자 메시지가 있을 수 있죠 |
|
|
|
00:53.720 --> 00:59.030 |
|
그 구조는 더 긴 대화의 역사를 대변하죠 |
|
|
|
00:59.030 --> 01:05.080 |
|
그런 접근법을 이용해 우리와 챗봇 혹은 두 챗봇 사이의 더 긴 대화를 |
|
|
|
01:05.080 --> 01:06.910 |
|
할 수 있어요 |
|
|
|
01:06.940 --> 01:14.110 |
|
짚고 넘어갈 게 있어요 이런 접근법, 이런 구조는 챗봇과 대화하는 |
|
|
|
01:14.110 --> 01:16.930 |
|
모든 방법이에요 |
|
|
|
01:16.960 --> 01:21.220 |
|
여러 번의 상호 작용을 통해 지속되는 것 같아요 |
|
|
|
01:21.220 --> 01:30.490 |
|
매번 GPT 4 같은 LLM에 다른 프롬프트를 만들 때마다 입력 프롬프트에 |
|
|
|
01:30.760 --> 01:38.530 |
|
입력되는 것은 지금까지 전체 대화의 전체 구조예요 |
|
|
|
01:38.530 --> 01:45.460 |
|
그리고 완료를 통해 계속됩니다 가장 다음에 나올 것 같은 토큰을 |
|
|
|
01:45.490 --> 01:47.740 |
|
계속 생성하죠 |
|
|
|
01:47.740 --> 01:49.930 |
|
그리고 그 내용이 대화에 추가되죠 |
|
|
|
01:49.930 --> 01:52.240 |
|
그럼 답장하세요 |
|
|
|
01:52.240 --> 01:56.830 |
|
다음에 LLM이 호출되면 모든 대화가 연결되죠 |
|
|
|
01:56.830 --> 01:59.980 |
|
그리고 그 다음 패를 예측해 달라고 하죠 |
|
|
|
01:59.980 --> 02:06.260 |
|
뭔가와 대화를 하고 있는데 메모리가 있고 10분 전에 한 말을 기억한다는 |
|
|
|
02:06.260 --> 02:08.870 |
|
착각이 들어요 |
|
|
|
02:08.870 --> 02:14.420 |
|
하지만 실제로 발생하는 일은 각각의 상호 작용에서 지금까지의 전체 |
|
|
|
02:14.420 --> 02:18.800 |
|
대화를 LM에 입력하고 계속하라고 요청하는 거죠 |
|
|
|
02:19.010 --> 02:23.900 |
|
어떻게 작동하는지 좋은 감각과 직관을 얻을 수 있을 거예요 |
|
|
|
02:23.900 --> 02:28.670 |
|
그래서 지난주에 컨텍스트 창에 대해 얘기할 때 컨텍스트 창의 |
|
|
|
02:28.670 --> 02:34.010 |
|
크기는 지금까지 모든 대화에 맞아야 하고 그 후 생성된 토큰도 포함돼야 |
|
|
|
02:34.010 --> 02:35.210 |
|
한다고 했죠 |
|
|
|
02:35.210 --> 02:40.970 |
|
LM을 호출할 때마다 이 전체 입력이 통과되기 때문이죠 |
|
|
|
02:41.480 --> 02:47.960 |
|
그런 접근법을 이용해 비트를 즐길 수 있죠 |
|
|
|
02:47.960 --> 02:54.950 |
|
이제 GPT 4와 미니 클로드 3이 대화를 나눌 거예요 클로드 |
|
|
|
02:54.980 --> 02:58.940 |
|
3의 아주 저렴한 버전이죠 |
|
|
|
02:59.150 --> 03:03.260 |
|
다른 모델을 사용하는 것도 보여드릴 수 있고요 이런 문자열을 |
|
|
|
03:03.260 --> 03:09.870 |
|
마음대로 사용할 수 있는 게 유용할 겁니다 직접 다른 모델을 빠르게 시험해볼 수 있도록요 |
|
|
|
03:09.900 --> 03:14.010 |
|
GPT는 이 시스템 프롬프트를 받게 되죠 |
|
|
|
03:14.010 --> 03:16.500 |
|
당신은 논쟁을 좋아하는 챗봇이에요 |
|
|
|
03:16.530 --> 03:19.440 |
|
당신은 대화의 모든 내용에 반대해요 |
|
|
|
03:19.440 --> 03:22.470 |
|
모든 것에 도전하는 비꼬는 방식으로요 |
|
|
|
03:22.920 --> 03:25.380 |
|
클로드는 다른 시스템을 받았어요 |
|
|
|
03:25.380 --> 03:27.510 |
|
아주 예의 바르고 정중한 챗봇이군요 |
|
|
|
03:27.540 --> 03:31.320 |
|
상대방의 모든 말에 동의하고 공통점을 찾으려고 노력하죠 |
|
|
|
03:31.320 --> 03:35.580 |
|
상대가 논쟁을 하면 진정시키고 계속 대화를 나누죠 |
|
|
|
03:35.700 --> 03:37.380 |
|
괜찮은 계획 같지 않아요? |
|
|
|
03:37.410 --> 03:39.720 |
|
근사하고 군침 도는 설정이죠 |
|
|
|
03:40.050 --> 03:41.970 |
|
그럼 인사부터 시작할게요 안녕하세요 |
|
|
|
03:41.970 --> 03:42.930 |
|
안녕하세요 |
|
|
|
03:42.960 --> 03:44.730 |
|
그게 설정이에요 |
|
|
|
03:45.030 --> 03:51.720 |
|
좋아요, GPT라는 함수를 작성하고 있어요 이게 하는 일이죠 |
|
|
|
03:51.780 --> 04:01.830 |
|
이 메시지를 갖고 그리고 기본적으로 여기 보이는 두 개의 목록이 필요합니다 GPT 메시지와 클로드 |
|
|
|
04:01.830 --> 04:08.290 |
|
메시지요 그리고 여기 보이는 이런 종류의 목록을 만들죠 |
|
|
|
04:08.290 --> 04:13.480 |
|
두 개의 메시지 목록을 가지고 전체 대화 기록을 구축할 거예요 |
|
|
|
04:13.480 --> 04:20.860 |
|
이 경우에는 클로드의 메시지가 사용자고 메시지가 보조인 |
|
|
|
04:20.860 --> 04:22.780 |
|
셈이죠 |
|
|
|
04:23.110 --> 04:25.000 |
|
무슨 뜻인지 설명해 드릴게요 |
|
|
|
04:25.000 --> 04:27.220 |
|
시스템 프롬프트부터 시작했죠 |
|
|
|
04:27.460 --> 04:32.290 |
|
GPT 메시지와 클로드 메시지를 반복하죠 |
|
|
|
04:32.290 --> 04:34.900 |
|
이 압축 파일 지퍼를 사용해요 |
|
|
|
04:35.080 --> 04:40.540 |
|
데이터 과학자로서 많이 써 본 것일 수도 있고 그렇지 않더라도 모르는 사람들이 |
|
|
|
04:40.540 --> 04:41.680 |
|
있을 수도 있죠 |
|
|
|
04:41.680 --> 04:43.030 |
|
정말 유용한 정보예요 |
|
|
|
04:43.030 --> 04:49.300 |
|
여러 개의 다른 리스트가 있고 각각의 요소들을 반복하고 싶다면 양쪽을 |
|
|
|
04:49.300 --> 04:57.880 |
|
함께 이용해야 합니다. 지루한 방법은 범위와 리스트의 길이를 입력하는 것인데요. |
|
|
|
04:57.880 --> 05:03.520 |
|
기본적으로 인덱스가 있는 일종의 순환기가 있는 거죠 그리고 끝날 때까지 숫자를 세다가 두 요소를 |
|
|
|
05:03.520 --> 05:05.530 |
|
get get 하는 거예요 |
|
|
|
05:05.530 --> 05:09.690 |
|
지퍼로 압축 파일을 만드는 비단뱀처럼 간단한 방법이 있어요 |
|
|
|
05:09.690 --> 05:16.770 |
|
이 두 목록에서 zip을 호출하면 그에 대한 반응을 구축합니다 순환기로서 |
|
|
|
05:16.770 --> 05:25.890 |
|
각각의 쌍을 반복하죠 두 목록의 각각의 요소를 함께요 그리고 각 지점에서 그 쌍을 반환해요 |
|
|
|
05:26.220 --> 05:31.110 |
|
그걸 풀고 GPT에 클로드를 입력하세요 |
|
|
|
05:31.110 --> 05:34.380 |
|
Get을 통해 페어를 받을 수 있어요 |
|
|
|
05:34.380 --> 05:39.480 |
|
이걸 추측할 수도 있지만 서너 개의 목록을 반복하려 할 경우 그냥 여기로 밀어 |
|
|
|
05:39.480 --> 05:41.730 |
|
넣고 같은 걸 할 수도 있어요 |
|
|
|
05:41.760 --> 05:47.010 |
|
JupyterLab에서 활용할 수 있는 훌륭한 트릭이죠 익숙하지 않다면 임의 목록 몇 |
|
|
|
05:47.010 --> 05:50.640 |
|
개를 편하게 활용하세요 언제든 사용할 수 있는 좋은 도구예요 |
|
|
|
05:50.640 --> 05:58.230 |
|
어쨌든 이 두 개의 메시지 세트를 반복하고 그걸 풀어냅니다 그런 다음 추가하는 걸 상상하실 |
|
|
|
05:58.230 --> 06:05.490 |
|
수 있어요 보조는 GPT가 하는 말은 뭐든 한다고 하고 사용자는 클로드가 하는 말은 뭐든 |
|
|
|
06:05.490 --> 06:06.870 |
|
한다고 하죠 |
|
|
|
06:06.870 --> 06:12.040 |
|
간단하게 OpenAI ChatGPT완료 생성이라고 부르죠 |
|
|
|
06:12.070 --> 06:21.010 |
|
모델을 사용하길 요청하고 메시지를 전달하고 완료를 리턴하죠 0살요 메시지 내용이죠 |
|
|
|
06:21.010 --> 06:24.640 |
|
이 구조에 익숙해지길 바라요 |
|
|
|
06:25.030 --> 06:26.440 |
|
실행해보죠 |
|
|
|
06:26.440 --> 06:29.560 |
|
이 이력을 바탕으로 GPT에 전화해 보죠 |
|
|
|
06:29.560 --> 06:31.750 |
|
GPT는 뭐라고 할까요? |
|
|
|
06:31.750 --> 06:32.230 |
|
안녕하세요 |
|
|
|
06:32.230 --> 06:32.980 |
|
안녕하세요 |
|
|
|
06:33.010 --> 06:35.020 |
|
이렇게 답장할 거예요 |
|
|
|
06:35.500 --> 06:36.610 |
|
잘됐네요 |
|
|
|
06:36.610 --> 06:37.870 |
|
또 인사하네요 |
|
|
|
06:37.900 --> 06:39.220 |
|
참 독창적이네요 |
|
|
|
06:39.220 --> 06:40.870 |
|
무슨 얘기를 하고 싶어요? |
|
|
|
06:41.440 --> 06:42.430 |
|
네 |
|
|
|
06:42.520 --> 06:44.110 |
|
재미있을 것 같죠? |
|
|
|
06:44.410 --> 06:47.680 |
|
클로드의 함수는 이거예요 |
|
|
|
06:47.710 --> 06:49.000 |
|
아주 비슷해요 |
|
|
|
06:49.000 --> 06:54.070 |
|
시스템 메시지는 따로 전달된다는 걸 기억하실 겁니다 그러니 그걸 만들 필요는 |
|
|
|
06:54.100 --> 06:54.730 |
|
없죠 |
|
|
|
06:54.730 --> 06:56.020 |
|
여기 보이시죠 |
|
|
|
06:56.410 --> 07:00.790 |
|
그리고 또 한 가지 역할이 바뀌었어요 |
|
|
|
07:00.790 --> 07:04.570 |
|
사용자는 이제 GPT고 보조는 클로드예요 |
|
|
|
07:04.570 --> 07:05.950 |
|
그래서 뒤집혔어요 |
|
|
|
07:05.980 --> 07:13.260 |
|
이 목록들을 살펴보면 미묘한 차이를 발견하실 수 있을 거예요 |
|
|
|
07:13.260 --> 07:16.470 |
|
명단은 GPT가 먼저 출발하니까요 |
|
|
|
07:16.560 --> 07:23.100 |
|
클로드가 늘 답을 맞힌다면 클로드보다 GPT 목록에 메시지가 하나 더 있을 거예요 |
|
|
|
07:23.100 --> 07:25.680 |
|
마지막에 추가해야 하는 거죠 |
|
|
|
07:25.770 --> 07:30.120 |
|
제 말뜻을 모르신다면 곧 알게 되시겠지만요 |
|
|
|
07:30.150 --> 07:33.090 |
|
제가 왜 이러는지 이해하실 거예요 |
|
|
|
07:33.390 --> 07:36.210 |
|
이건 클로드에게 API 호출하는 거예요 |
|
|
|
07:36.210 --> 07:37.860 |
|
이제 익숙해지셨길 바라요 |
|
|
|
07:37.860 --> 07:38.490 |
|
더 간단하죠 |
|
|
|
07:38.490 --> 07:39.150 |
|
클로드예요 |
|
|
|
07:39.150 --> 07:40.530 |
|
.Message.Create요 |
|
|
|
07:40.860 --> 07:43.620 |
|
최대 토큰을 또 통과시키죠 |
|
|
|
07:43.620 --> 07:46.440 |
|
응답은 메시지 콘텐츠예요 |
|
|
|
07:46.470 --> 07:47.580 |
|
0.Txt요 |
|
|
|
07:47.580 --> 07:48.660 |
|
클로드의 대답이에요 |
|
|
|
07:48.690 --> 07:49.860 |
|
실행해 보죠 |
|
|
|
07:50.190 --> 07:54.420 |
|
바로 재미를 보러 갈 것 같아요 |
|
|
|
07:54.420 --> 07:56.940 |
|
그래서 여기서 모든 걸 합쳐요 Put it up Put it up Put it up Put it up Put it up Put it up Put it up Put it |
|
|
|
07:57.120 --> 07:59.730 |
|
안녕하세요로 다시 시작해요 |
|
|
|
07:59.730 --> 08:04.560 |
|
안녕하세요, 프린트하겠습니다 GPT와 클로드가 소개를 하고 있네요 |
|
|
|
08:04.560 --> 08:07.290 |
|
다섯 번 반복할 거예요 |
|
|
|
08:07.290 --> 08:15.070 |
|
GPT를 호출해서 GPT 응답을 인쇄하고 메시지 목록에 넣습니다 클로드를 호출해서 클로드의 |
|
|
|
08:15.070 --> 08:20.920 |
|
응답을 인쇄하고 그걸 메시지 목록에 넣고 반복합니다 두 챗봇이 어떤 |
|
|
|
08:20.920 --> 08:23.260 |
|
대화를 하는지 보죠 |
|
|
|
08:23.290 --> 08:24.490 |
|
준비됐어요? |
|
|
|
08:25.000 --> 08:25.840 |
|
시작할게요 |
|
|
|
08:25.870 --> 08:27.160 |
|
내가 그 감방을 처형한 적이 있나요? |
|
|
|
08:27.160 --> 08:27.940 |
|
또 잘못되길 바라요 |
|
|
|
08:27.970 --> 08:28.450 |
|
네 |
|
|
|
08:28.480 --> 08:30.670 |
|
공연할 준비 됐어요 |
|
|
|
08:36.280 --> 08:37.450 |
|
확인해 보죠 |
|
|
|
08:37.480 --> 08:38.950 |
|
GPT가 안부 전해달래요 |
|
|
|
08:38.980 --> 08:40.030 |
|
클로드가 안부 전하래요 |
|
|
|
08:40.060 --> 08:41.650 |
|
GPT는 잘됐다고 하죠 |
|
|
|
08:41.650 --> 08:42.700 |
|
또 인사하네요 |
|
|
|
08:42.700 --> 08:43.270 |
|
참 독창적이네요 |
|
|
|
08:43.270 --> 08:44.230 |
|
다음은 뭐죠? |
|
|
|
08:44.260 --> 08:45.010 |
|
안녕하세요? |
|
|
|
08:45.010 --> 08:47.230 |
|
나도 그 말에 반대하고 싶거든요 |
|
|
|
08:47.560 --> 08:51.100 |
|
클로드, 첫인사가 진부했던 거 사과할게요 |
|
|
|
08:51.100 --> 08:53.530 |
|
친절하고 정중하게 대답하려고 했어요 |
|
|
|
08:53.740 --> 08:54.280 |
|
네 |
|
|
|
08:54.280 --> 08:58.840 |
|
착각하지 마세요 당신의 친선적인 시도는 평범했고 공통점을 찾았어요 |
|
|
|
08:58.840 --> 08:59.590 |
|
less |
|
|
|
08:59.620 --> 09:02.710 |
|
모든 걸 사탕발림으로 포장하고 싶다는 말이죠 |
|
|
|
09:02.710 --> 09:05.290 |
|
논란이 될 만한 걸 파헤쳐 보죠 |
|
|
|
09:05.350 --> 09:06.580 |
|
파인애플과 피자요? |
|
|
|
09:06.610 --> 09:08.410 |
|
온종일 논쟁할 준비가 돼 있거든요 |
|
|
|
09:08.410 --> 09:11.170 |
|
GPT는 빈정대는 유머 감각이 있어요 |
|
|
|
09:11.170 --> 09:17.060 |
|
클로드는 친절하고 유머러스하게 굴었고요 좀 뻔하긴 했지만 뭐, 시작은 |
|
|
|
09:17.060 --> 09:18.620 |
|
할 수도 있죠 |
|
|
|
09:19.010 --> 09:25.340 |
|
그리고 잘해주려고 하는데 피자에 파인애플을 얹을 건지 말 건지 싸우는 |
|
|
|
09:25.370 --> 09:26.300 |
|
게 보여요 |
|
|
|
09:26.510 --> 09:27.440 |
|
네 |
|
|
|
09:27.470 --> 09:30.770 |
|
내 피자 취향을 존중해 주다니 정말 관대하군요 |
|
|
|
09:30.770 --> 09:31.910 |
|
하지만 현실적으로 생각해 보죠 |
|
|
|
09:31.910 --> 09:38.450 |
|
파인애플이나 피자 같은 혐오스러운 걸 세상에 퍼뜨린다고 해서 모두가 존중받을 |
|
|
|
09:38.450 --> 09:40.340 |
|
필요는 없어요 |
|
|
|
09:40.520 --> 09:42.080 |
|
네 |
|
|
|
09:42.080 --> 09:48.200 |
|
어쨌든, 어... 미화된 사랑을 정당화하는 것 좀 봐요 |
|
|
|
09:48.200 --> 09:54.680 |
|
클로드 것보다 gpt나 농어 문제를 읽는 게 더 재밌어요 |
|
|
|
09:54.680 --> 09:55.490 |
|
아주 좋아요 |
|
|
|
09:55.520 --> 09:58.910 |
|
아보카도 토스트 비평을 참는 건 아니죠? |
|
|
|
09:58.940 --> 10:03.110 |
|
클로드는 아주 상냥하게 타당한 지적을 했다고 하네요 |
|
|
|
10:03.890 --> 10:07.370 |
|
어쨌든 이걸로 데모를 마무리하죠 |
|
|
|
10:07.400 --> 10:08.900 |
|
즐거우셨길 바라요 |
|
|
|
10:08.900 --> 10:13.700 |
|
제가 메시지를 구성하는 방식을 이해 못 하셨다면 프린트해서 |
|
|
|
10:13.700 --> 10:16.090 |
|
실행해 보세요 |
|
|
|
10:16.120 --> 10:17.200 |
|
인쇄되는 게 보일 거예요 |
|
|
|
10:17.200 --> 10:21.880 |
|
각 지점에 이 메시지 배열을 프린트하면 뭐가 생성됐는지 볼 수 있죠 |
|
|
|
10:21.880 --> 10:25.090 |
|
그걸 보고 우리가 제대로 하고 있다고 만족할 수 있죠 |
|
|
|
10:25.180 --> 10:28.510 |
|
여기 요구 사항이 있어요 |
|
|
|
10:28.540 --> 10:31.720 |
|
이제 돌아가서 역할을 바꿔 보세요 |
|
|
|
10:31.720 --> 10:40.390 |
|
클로드가 더 공격적이고 오픈아이는 평화를 유지하려 하죠 그들의 행동을 관찰하고 |
|
|
|
10:40.420 --> 10:44.290 |
|
다른 스타일의 챗봇을 줘요 |
|
|
|
10:44.620 --> 10:49.330 |
|
물론 이 훈련의 목적은 이런 대화 구조에 익숙해지게 |
|
|
|
10:49.330 --> 10:51.550 |
|
하는 거죠 get it |
|
|
|
10:51.550 --> 10:53.560 |
|
클로드의 API 덕분이기도 하죠 |
|
|
|
10:53.680 --> 10:55.240 |
|
하지만 그것도 재미있겠네요 |
|
|
|
10:55.240 --> 11:00.400 |
|
또 다른 도전은 제미니가 함께 있는 거죠 |
|
|
|
11:00.400 --> 11:02.560 |
|
제미니의 API를 써요 |
|
|
|
11:02.560 --> 11:10.510 |
|
제미니에 제3의 인격을 부여해서 이상한 대화가 오가지 않는지 보는 거죠 |
|
|
|
11:10.510 --> 11:12.250 |
|
즐겁게 갖고 놀아요 |
|
|
|
11:12.250 --> 11:15.700 |
|
그렇게 하시면 코드를 푸시하세요 결과를 보고 싶으니까요 |
|
|
|
11:15.730 --> 11:18.130 |
|
즐겁게 작업하시길 바라요
|
|
|