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.
445 lines
12 KiB
445 lines
12 KiB
WEBVTT |
|
|
|
00:01.040 --> 00:07.820 |
|
다시 주피터 연구실입니다 프런티어 모델을 사용할 준비가 됐어요 전문 지식을 |
|
|
|
00:07.820 --> 00:10.460 |
|
구축하는 곳으로 보고 싶네요 |
|
|
|
00:10.460 --> 00:12.320 |
|
아주 자연스러울 거예요 |
|
|
|
00:12.710 --> 00:18.470 |
|
늘 그렇듯 시스템 프롬프트와 모델을 어떻게 프롬프트할지 심사숙고하며 시작하죠 |
|
|
|
00:18.800 --> 00:25.610 |
|
모델에게 하는 말은 목록에서 가장 자세한 5가지 항목을 골라 요약하라는 |
|
|
|
00:25.610 --> 00:32.990 |
|
겁니다 가장 자세하고, 잘 묘사되고 가장 확실한 가격이 있는 걸 선택해서요 |
|
|
|
00:32.990 --> 00:37.820 |
|
JSON에 대응하세요 |
|
|
|
00:37.910 --> 00:42.740 |
|
가장 중요한 건 5건의 거래에 가장 자세한 제품 설명이 있는 거예요 |
|
|
|
00:42.740 --> 00:44.810 |
|
조건은 중요하지 않아요 |
|
|
|
00:45.110 --> 00:49.940 |
|
그리고 여기 JSON 구조도 배치해뒀어요 |
|
|
|
00:49.940 --> 00:54.020 |
|
꼭 필요한 것은 아니라는 것을 말씀드리고 싶네요. 구조화된 출력물들을 |
|
|
|
00:54.020 --> 01:01.070 |
|
사용할 것이기 때문입니다. 하지만 저는 이것을 또 다른 기회로 사용하고 싶습니다. 각각의 것에 대해 더 많은 방향을 제시할 수 |
|
|
|
01:01.070 --> 01:01.940 |
|
있도록요. |
|
|
|
01:02.120 --> 01:04.650 |
|
실험해 볼 수 있는 거예요 |
|
|
|
01:04.650 --> 01:08.700 |
|
엄밀히 말하면 JSON을 그렇게 지정할 필요는 없어요 |
|
|
|
01:09.420 --> 01:11.640 |
|
그게 제 시스템 프롬프트예요 |
|
|
|
01:11.670 --> 01:16.740 |
|
사용자 프롬프트는 이 목록에서 가장 유망한 거래 5건에 응답하라고 하죠 |
|
|
|
01:16.740 --> 01:17.700 |
|
그걸 선택하는 거죠 |
|
|
|
01:17.730 --> 01:18.510 |
|
어쩌고저쩌고 말이죠 |
|
|
|
01:18.540 --> 01:19.470 |
|
읽어 보게 해 줄게요 |
|
|
|
01:19.470 --> 01:20.610 |
|
하지만 이런 건 잘 아시죠 |
|
|
|
01:20.610 --> 01:30.780 |
|
딜을 적고 나열한 다음 딜닷컴을 호출해요 각각에 대해서요 |
|
|
|
01:31.410 --> 01:31.800 |
|
네 |
|
|
|
01:31.830 --> 01:32.310 |
|
간단해요 |
|
|
|
01:32.310 --> 01:36.660 |
|
사용자 프롬프트의 시작을 프린트하겠습니다 꽤 길군요 |
|
|
|
01:36.660 --> 01:39.720 |
|
사용자 프롬프트의 처음 2천 글자를 프린트할게요 |
|
|
|
01:39.720 --> 01:41.310 |
|
Get it 하면 감이 오죠 |
|
|
|
01:41.340 --> 01:42.270 |
|
여기 있네요 |
|
|
|
01:42.270 --> 01:43.290 |
|
한번 보죠 |
|
|
|
01:43.290 --> 01:48.270 |
|
사용자 프롬프트 응답에 어쩌고저쩌고 라음이 있네요 |
|
|
|
01:48.270 --> 01:50.370 |
|
그럼 이렇게 하죠 |
|
|
|
01:50.370 --> 01:58.500 |
|
이게 설명이에요 설명 메서드 전에 봤던 설명 함수에서 |
|
|
|
01:58.500 --> 02:00.960 |
|
가져온 거죠 |
|
|
|
02:00.960 --> 02:10.010 |
|
본질적으로 GPT 4에 할당하는 작업은 이 목록의 거래를 파악하는 겁니다 목록에서 선택 선택하기 |
|
|
|
02:10.040 --> 02:12.650 |
|
50개가 될 거예요 |
|
|
|
02:12.650 --> 02:19.220 |
|
가장 명확한 묘사와 가격을 나타내는 5개를 고르세요 |
|
|
|
02:19.250 --> 02:24.950 |
|
가장 명확한 방식으로 가격을 분석하세요 |
|
|
|
02:25.100 --> 02:29.240 |
|
물론 그런 건 좀 모호한 문제라 생각을 해야 하죠 |
|
|
|
02:29.240 --> 02:33.680 |
|
1, 2년 전이었다면 상상할 수 없을 정도로 힘들었을 거예요 |
|
|
|
02:33.770 --> 02:38.180 |
|
어떻게 믿을만한 방법으로 할 수 있을까요? 엔지니어링 코드를 이용해서요 |
|
|
|
02:38.180 --> 02:44.990 |
|
개척자 모델에 딱 맞는 문제입니다. 그런 미묘한 차이를 이해하고 어떤 것에 이르는 건 가격이라는 |
|
|
|
02:44.990 --> 02:52.190 |
|
걸 깨달을 수 있으니까요. 하지만 어떤 것에 이르는 것과 무언가를 잃는 건 가격이 아니에요. |
|
|
|
02:52.190 --> 02:54.620 |
|
그런 논리는 정말 어려워요 |
|
|
|
02:54.620 --> 03:00.680 |
|
하지만 개척자 모델은 그걸 아주 효과적으로 이해하고 이런 표정의 |
|
|
|
03:00.680 --> 03:05.630 |
|
의미를 이해해서 지능적으로 결과물을 만들어내죠 |
|
|
|
03:05.630 --> 03:12.950 |
|
이 프롬프트들을 기반으로 이렇게 말할 수 있죠 get 추천을 불러와 |
|
|
|
03:12.950 --> 03:18.290 |
|
이제 다른 API를 보게 될 겁니다 구조화된 출력을 사용하고 있으니까요 |
|
|
|
03:18.710 --> 03:23.300 |
|
추천서 get 완료 함수는 OpenAI예요 |
|
|
|
03:23.300 --> 03:24.800 |
|
비트가 좀 다르죠? |
|
|
|
03:24.800 --> 03:31.160 |
|
적어도 지금 이 순간만큼은 오픈라이의 베타 제공이죠 |
|
|
|
03:31.190 --> 03:34.310 |
|
하지만 곧 완전히 생산될 거예요 |
|
|
|
03:34.310 --> 03:39.110 |
|
오픈나이 베타라고 하나요? 미국에선 베타죠 |
|
|
|
03:39.170 --> 03:44.870 |
|
오픈아이 베타, 닷챗 닷 완성, 닷 파세예요 |
|
|
|
03:44.960 --> 03:52.520 |
|
그렇게 부르는 게 맞겠죠 그리고 평소처럼 모델을 제공해요 |
|
|
|
03:52.520 --> 03:57.620 |
|
이것은 GPT4와 미니, 프런티어 버전 2 GPT4가 지원하죠 |
|
|
|
03:57.770 --> 04:02.120 |
|
늘 그렇듯 메시지는 그냥 말하지도 않을 거예요 |
|
|
|
04:02.120 --> 04:02.870 |
|
잘 아시네요 |
|
|
|
04:02.870 --> 04:04.100 |
|
말 안 해도 알잖아요 |
|
|
|
04:04.130 --> 04:07.310 |
|
이게 차이점이에요 |
|
|
|
04:07.310 --> 04:12.440 |
|
과거엔 이 응답 형식을 JSON이 돌아오길 요구하는 방법으로 |
|
|
|
04:12.470 --> 04:14.000 |
|
사용했었죠 |
|
|
|
04:14.030 --> 04:16.700 |
|
이번엔 JSON이라고 안 해요 |
|
|
|
04:16.730 --> 04:20.900 |
|
우리가 하는 일은 거래 선택반이라는 반에서 통과시키는 거예요 |
|
|
|
04:20.900 --> 04:25.490 |
|
방금 살펴본 클래스가 그거예요 스크래피 JSON을 했던 거죠 |
|
|
|
04:25.520 --> 04:30.020 |
|
응답 포맷으로 그 클래스를 넘겨요 |
|
|
|
04:30.500 --> 04:35.810 |
|
결과를 얻을 때 일반적인 API 호출을 하지 않아요 |
|
|
|
04:35.810 --> 04:43.340 |
|
완료는 보통 0이라고 하죠 .Mession이요 그리고 content가 아니라 .파싱이라고 해요 |
|
|
|
04:43.340 --> 04:49.970 |
|
응답을 취해 딜 선택 인스턴스로 구문 분석을 하죠 |
|
|
|
04:50.000 --> 04:52.100 |
|
그렇게 돌아올 거예요 |
|
|
|
04:52.400 --> 04:54.710 |
|
빌드 업을 한 후 반환하는 게 좋아요 |
|
|
|
04:54.740 --> 04:59.780 |
|
코드를 실행해 어떻게 되는지 get get이 뭔지 보죠 |
|
|
|
04:59.780 --> 05:05.150 |
|
GPT는 0으로 호출하고 미니도 GPT로 호출할게요 |
|
|
|
05:05.180 --> 05:09.830 |
|
특정 구조의 출력 형식을 지정하고 있어요 |
|
|
|
05:09.830 --> 05:10.820 |
|
돌아왔군요 |
|
|
|
05:10.850 --> 05:17.390 |
|
어떤 유형이 돌아왔는지 프린트해 볼까요? 유형 결과요 |
|
|
|
05:17.390 --> 05:19.520 |
|
어떤 객체가 돌아왔는지 보죠 |
|
|
|
05:19.520 --> 05:23.210 |
|
에이전트가 거래 상대를 고르는 거예요 |
|
|
|
05:23.210 --> 05:26.150 |
|
Get up! Get up! Get up! 바로 저런 게 우리가 되찾고 싶었던 객체죠 |
|
|
|
05:26.150 --> 05:31.760 |
|
실제로 어떻게 생겼는지 보는 게 좋겠어요 |
|
|
|
05:31.790 --> 05:34.490 |
|
세트로 만들 거예요 |
|
|
|
05:34.610 --> 05:38.780 |
|
거래 선택에 한 가지 분야가 포함돼 있어요 |
|
|
|
05:38.780 --> 05:39.350 |
|
기억하신다면요 |
|
|
|
05:39.380 --> 05:40.850 |
|
거래는 우리가 정한 거예요 |
|
|
|
05:40.850 --> 05:42.140 |
|
이렇게 하죠 |
|
|
|
05:42.140 --> 05:45.830 |
|
그럼 거래를 얼마나 따냈는지 알아보죠 |
|
|
|
05:46.460 --> 05:49.730 |
|
다섯 건의 거래를 성사시켰으면 좋겠어요 |
|
|
|
05:50.000 --> 05:50.870 |
|
어디 보죠 |
|
|
|
05:50.900 --> 05:53.870 |
|
정말 다섯 건의 거래를 성사시켰어요 Get it |
|
|
|
05:53.870 --> 05:57.020 |
|
그 거래 중 첫 번째를 인쇄하죠 |
|
|
|
05:57.020 --> 06:02.780 |
|
그리고 탑클래스 스마트워치 삼성 갤럭시 워치 울트라를 구입했어요. |
|
|
|
06:02.960 --> 06:06.710 |
|
요약본을 준비해 봤어요 |
|
|
|
06:06.710 --> 06:10.010 |
|
보다시피 아주 잘 되고 있어요 |
|
|
|
06:10.010 --> 06:14.150 |
|
요약본처럼 보이네요 가격을 입력해서 가격을 |
|
|
|
06:14.150 --> 06:22.250 |
|
추정할 때 사용할 수 있겠어요 GPT for 미니가 가격과 URL을 꺼냈네요 |
|
|
|
06:22.250 --> 06:26.060 |
|
물론 그 URL을 클릭하면 그 거래가 열리죠 |
|
|
|
06:26.060 --> 06:27.020 |
|
저기 있네요 |
|
|
|
06:27.020 --> 06:28.160 |
|
좋아요 |
|
|
|
06:28.310 --> 06:32.690 |
|
그래서 잘 되고 있어요 |
|
|
|
06:32.960 --> 06:34.790 |
|
네 |
|
|
|
06:34.820 --> 06:46.850 |
|
마지막으로 보여드릴 것은 스캐너 에이전트를 가져올 건데요 |
|
|
|
06:46.850 --> 06:51.380 |
|
다시 한 번 해볼게요. 1-2분 정도 걸릴 것 같아요. |
|
|
|
06:51.770 --> 06:57.950 |
|
실행되는 동안 스캐너 에이전트가 뭔지 보여드릴게요 |
|
|
|
06:57.950 --> 07:01.370 |
|
스캐너 에이전트는 여기 있어요 |
|
|
|
07:01.640 --> 07:08.180 |
|
이건 코드 뭉치인데 전에 봤던 코드와 아주 비슷할 거예요 |
|
|
|
07:08.540 --> 07:15.920 |
|
방금 작성한 건데 논평도 있고 구조도 더 나아져서 생산 품질로 |
|
|
|
07:15.920 --> 07:18.620 |
|
평가할 수 있어요 |
|
|
|
07:18.620 --> 07:18.620 |
|
보세요 |
|
|
|
07:18.890 --> 07:21.710 |
|
하지만 방금 본 프롬프트가 있어요 |
|
|
|
07:21.710 --> 07:28.880 |
|
우리가 살펴본 사용자 프롬프트가 있는데 5건의 거래로 응답하라고 하네요 |
|
|
|
07:28.880 --> 07:33.890 |
|
그러면 init 메서드를 설정하고 OpenAI에 연결할 수 있죠 |
|
|
|
07:33.920 --> 07:41.000 |
|
페치 거래는 방금 살펴본 방법인데 긁힌 거래 목록을 얻어요 긁힌 거래 |
|
|
|
07:41.300 --> 07:45.020 |
|
페치라고 부르면 예상대로죠 |
|
|
|
07:45.050 --> 07:52.820 |
|
여기서 하는 또 다른 일은 잠재적으로 메모리 객체를 갖는 겁니다 URL의 |
|
|
|
07:52.820 --> 08:00.200 |
|
목록이죠 기억되는 건 이전 검색에서 이미 나타났어요 |
|
|
|
08:00.200 --> 08:05.030 |
|
그래야 새로운 거래를 성사시킬 수 있어요 이미 검토한 거래가 아니라요 |
|
|
|
08:05.030 --> 08:10.850 |
|
물론 메모리는 에이전트 프레임워크를 구축하는 한 측면인데 미래에 |
|
|
|
08:10.850 --> 08:12.860 |
|
더 주목할 부분이죠 |
|
|
|
08:13.790 --> 08:20.510 |
|
사용자 프롬프트를 만들고 나서 전에 했던 것과 같은 코드를 만들고요 |
|
|
|
08:20.510 --> 08:25.100 |
|
스캔은 우리가 방금 본 바로 그 함수예요 |
|
|
|
08:25.130 --> 08:30.920 |
|
사용자 프롬프트에서 OpenAI 베타.챗 .완료 .파스를 호출해요 |
|
|
|
08:30.920 --> 08:32.390 |
|
모델을 통과시키죠 |
|
|
|
08:32.390 --> 08:39.260 |
|
응답 형식이 딜 선택 클래스여야 한다고 지정합니다 그걸 반환할 것을 |
|
|
|
08:39.260 --> 08:43.250 |
|
알고 결과로 구문 분석을 할 수 있도록요 |
|
|
|
08:43.250 --> 08:46.130 |
|
Get it가 바로 여기죠 |
|
|
|
08:46.340 --> 08:53.000 |
|
그때 가장 먼저 계약을 파기해요 |
|
|
|
08:53.000 --> 08:57.860 |
|
가격이 0보다 크지 않으면 0달러짜리 거래를 반환하고 싶지 않아요 |
|
|
|
08:58.010 --> 09:00.020 |
|
그 결과를 반환하죠 |
|
|
|
09:00.020 --> 09:05.180 |
|
만약 거래를 못 따내면... 이미 모든 걸 드러냈을 수도 있으니까요 그럼 하나도 못 |
|
|
|
09:05.180 --> 09:05.750 |
|
따내요 |
|
|
|
09:05.750 --> 09:08.930 |
|
상단에 선택 사항이 있는 게 그걸 나타내죠 |
|
|
|
09:08.990 --> 09:10.640 |
|
그게 수업 내용이에요 |
|
|
|
09:10.670 --> 09:13.340 |
|
그럼 3일 차 얘기를 해 보죠 |
|
|
|
09:13.340 --> 09:16.790 |
|
결과가 어떻게 나올지 봐야죠 |
|
|
|
09:17.900 --> 09:22.190 |
|
제가 알고 있는 것 중 하나는 제가 이걸 할 때 눈치챘을 |
|
|
|
09:22.190 --> 09:27.020 |
|
수도 있지만 저는 얘기하면서 생각을 하느라 바빴어요 |
|
|
|
09:27.020 --> 09:36.230 |
|
모델에서 실수를 본 것 같아요 가격이 350달러라고 되어 있네요 삼성 갤럭시 워치와 관련해서요 |
|
|
|
09:36.230 --> 09:45.860 |
|
하지만 이 웹사이트가 나왔을 때∙∙∙ 이걸 닫죠 트레이드 인과 함께 350까지 오퍼라고 돼 있어요 |
|
|
|
09:45.860 --> 09:48.830 |
|
다른 장치가 있으면 350까지 저축할 수 있어요 |
|
|
|
09:48.860 --> 09:55.280 |
|
프론티어 모델이 이런 걸 얼마나 잘하는지 보여드렸더니 모델이 실제로 |
|
|
|
09:55.280 --> 10:01.850 |
|
저지른 실수의 예가 이런 겁니다 350달러라고 생각하는데 사실은 350달러나 |
|
|
|
10:01.850 --> 10:03.530 |
|
싸요 |
|
|
|
10:03.530 --> 10:06.020 |
|
내가 한 말 취소할게요 |
|
|
|
10:06.020 --> 10:07.940 |
|
Get it은 사실 잘못됐어요 |
|
|
|
10:07.940 --> 10:09.620 |
|
재미있을 거예요 |
|
|
|
10:09.650 --> 10:13.400 |
|
그런 걸 배우고 목격해서 유용하죠 |
|
|
|
10:13.670 --> 10:20.630 |
|
시스템 프롬프트에 추가해 성능을 향상시킬 수 있는지 볼게요 |
|
|
|
10:20.630 --> 10:23.360 |
|
이제 그런 실수가 가능하다는 걸 알게 됐죠 |
|
|
|
10:23.360 --> 10:27.380 |
|
그럼 슬라이드는 다음에 보도록 하죠
|
|
|