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.
514 lines
13 KiB
514 lines
13 KiB
WEBVTT |
|
|
|
00:00.680 --> 00:05.900 |
|
LM에 도구를 장착하기 위한 프로젝트를 계속하죠 |
|
|
|
00:05.900 --> 00:12.200 |
|
우리 함수를 설명하기 위해 이 코드를 만들었죠 이제 실행할게요 |
|
|
|
00:12.200 --> 00:20.930 |
|
다음 단계는 도구라는 걸 만드는 겁니다 도구 목록이죠 |
|
|
|
00:20.960 --> 00:22.340 |
|
우리는 한 마리밖에 없어요 |
|
|
|
00:22.340 --> 00:24.560 |
|
한 가지 요소 유형은 함수예요 |
|
|
|
00:24.560 --> 00:28.460 |
|
함수는 바로 이거예요 |
|
|
|
00:28.460 --> 00:31.880 |
|
그게 도구 목록에 있어요 |
|
|
|
00:32.840 --> 00:38.630 |
|
이제 LM을 줄 차례입니다 GPT를요 |
|
|
|
00:38.660 --> 00:41.570 |
|
많은 사람이 이 도구를 사용하죠 |
|
|
|
00:41.570 --> 00:43.190 |
|
어떻게 그럴 수 있죠? |
|
|
|
00:43.190 --> 00:48.710 |
|
비트 박스를 만드는 건 좀 성가신 일이에요 미리 경고하는데 성가신 일에 대비하세요 |
|
|
|
00:48.710 --> 00:51.980 |
|
아주 친숙한 것부터 시작하죠 |
|
|
|
00:51.980 --> 00:54.680 |
|
이건 일반적인 채팅 함수예요 |
|
|
|
00:54.680 --> 00:55.760 |
|
잘 아시네요 |
|
|
|
00:55.760 --> 01:03.290 |
|
여러분이 아는 역사적 메시지를 오픈AI로 보내는 데 사용하죠 |
|
|
|
01:03.320 --> 01:05.930 |
|
미묘한 차이가 있어요 |
|
|
|
01:05.930 --> 01:06.950 |
|
뭔가 변했어요 |
|
|
|
01:06.950 --> 01:08.360 |
|
뭔가 추가됐어요 |
|
|
|
01:08.570 --> 01:10.880 |
|
당신이 알아차릴 때까지 잠시 기다릴게요 |
|
|
|
01:10.910 --> 01:16.220 |
|
일단 눈에 띄면 아주 명확하지만 추가로 넣은 부분이 있어요 |
|
|
|
01:16.220 --> 01:19.070 |
|
직접 보셨다면 아주 좋았겠죠 |
|
|
|
01:19.070 --> 01:20.720 |
|
안 했으면 뻔하죠 |
|
|
|
01:20.720 --> 01:21.500 |
|
여기 있네요 |
|
|
|
01:22.370 --> 01:23.870 |
|
도구를 전달하죠 |
|
|
|
01:23.870 --> 01:27.350 |
|
API는 채팅방 .완성 .Create와 정확히 동일해요 |
|
|
|
01:27.380 --> 01:31.520 |
|
모델과 메시지를 주고 도구도 주죠 |
|
|
|
01:31.520 --> 01:34.970 |
|
즉, 이 객체를 여기에 주는 거죠 |
|
|
|
01:35.270 --> 01:44.420 |
|
챗GPT, 아니 오픈AI가 프롬프트를 구축할 때 전송되는 토큰은 GPT |
|
|
|
01:44.420 --> 01:52.250 |
|
4개 LLM으로 전송됩니다 이 토큰을 토큰 시리즈로 변환해서 |
|
|
|
01:52.250 --> 01:55.700 |
|
함수를 설명하죠 |
|
|
|
01:55.700 --> 02:02.810 |
|
이 영어를 사용해 뭘 하는지 말할 거예요 LLM에게 이게 호출 가능한 |
|
|
|
02:02.810 --> 02:05.180 |
|
함수라는 걸 알려주죠 |
|
|
|
02:05.210 --> 02:10.910 |
|
그 이유는 많은 예제들과 함께 훈련되었기 때문입니다 토큰을 이용해서 |
|
|
|
02:10.940 --> 02:14.120 |
|
LLM에게 그 기능을 주기 위해서요 |
|
|
|
02:14.690 --> 02:21.080 |
|
그래서 다음에 일어날 일을 보면 마법 같은 일이 사라지게 되죠 |
|
|
|
02:22.430 --> 02:28.430 |
|
기억하시는 LLM에서 돌아온 건 응답 선택에서 0이죠 |
|
|
|
02:28.430 --> 02:35.450 |
|
그 최종 이유가 이 도구 호출인지 아닌지 알아내는 거죠 |
|
|
|
02:35.450 --> 02:41.300 |
|
GPT 4가 알려 줄 때 발생하는 현상이죠 아직 답은 못 드렸어요 |
|
|
|
02:41.300 --> 02:48.410 |
|
대신에, 멈추겠습니다 여러분이 가진 도구 중 하나를 호출해 결과물을 제공해 주세요 |
|
|
|
02:48.470 --> 02:56.240 |
|
그런 일이 발생하면 GPT 4로부터 메시지를 수집해야 하죠 |
|
|
|
02:56.450 --> 03:00.800 |
|
응답 선택 .Message가 수집되죠 |
|
|
|
03:00.860 --> 03:07.970 |
|
보내진 게 뭐든 포함하고 있어요 도구를 실행해 달라는 요청이 되겠죠 |
|
|
|
03:08.180 --> 03:13.390 |
|
그 비트를 다시 풀려면 할 일이 좀 있어요 |
|
|
|
03:13.450 --> 03:15.820 |
|
뭘 원하는지 알아내서 행동으로 옮기죠 |
|
|
|
03:15.820 --> 03:17.710 |
|
모든 걸 별도의 함수에 넣었어요 Put |
|
|
|
03:17.710 --> 03:18.370 |
|
속임수를 썼어요 |
|
|
|
03:18.370 --> 03:21.400 |
|
여기에다 다 넣으면은 좀 많이 지저분해지거든요, Put it up |
|
|
|
03:21.610 --> 03:23.350 |
|
그래서 그걸 분리했어요 |
|
|
|
03:23.350 --> 03:25.810 |
|
이제 곧 보게 될 거예요 |
|
|
|
03:25.810 --> 03:32.440 |
|
이 함수는 GPT 40으로부터 메시지를 풀어낼 겁니다 필요하다면 필요할 |
|
|
|
03:32.440 --> 03:33.250 |
|
거고요 |
|
|
|
03:33.250 --> 03:37.060 |
|
도구를 호출하고 그 도구의 결과를 반환하죠 |
|
|
|
03:37.060 --> 03:44.530 |
|
GPT 40으로 돌아가거나 도시로 가면 메시지 |
|
|
|
03:44.530 --> 03:49.180 |
|
목록에 두 행을 추가해야 해요 |
|
|
|
03:49.210 --> 03:53.410 |
|
우리 메시지에 사용자 비서가 있는 걸 기억하세요 |
|
|
|
03:53.410 --> 03:56.320 |
|
이제 두 개의 새로운 행을 추가할 거예요 |
|
|
|
03:56.320 --> 04:04.840 |
|
그 중 하나는 메시지입니다 도구를 호출하라는 GPT 40에서 받은 |
|
|
|
04:04.870 --> 04:07.600 |
|
것 그 이상은 아니죠 |
|
|
|
04:07.600 --> 04:12.400 |
|
가장 먼저 추가할 것은 도구를 실행하라는 보조예요 |
|
|
|
04:12.400 --> 04:19.840 |
|
그걸 메시지 목록에 넣고 그 다음에 입력할 것은 함수를 |
|
|
|
04:19.870 --> 04:23.740 |
|
호출한 결과예요. |
|
|
|
04:23.950 --> 04:32.620 |
|
이 메시지 목록에 있는 건 사용자 비서가 실행 도구를 명령한다는 |
|
|
|
04:32.620 --> 04:33.340 |
|
거죠 |
|
|
|
04:33.340 --> 04:35.710 |
|
이게 도구 결과예요 |
|
|
|
04:35.980 --> 04:40.420 |
|
이제 오픈AI로 다시 보낼 거예요 |
|
|
|
04:40.450 --> 04:41.920 |
|
이해하셨길 바라요 |
|
|
|
04:41.950 --> 04:47.470 |
|
아니라면, print문을 여기에 넣으면 됩니다 실행할 때 제가 말한 그대로죠 |
|
|
|
04:47.470 --> 04:51.400 |
|
메시지를 인쇄해 보면 더 명확해질 거예요 |
|
|
|
04:51.430 --> 04:56.170 |
|
그 모든 게 메시지에 나타나죠 |
|
|
|
04:57.160 --> 05:04.060 |
|
그리고 마지막에 늘 그렇듯 달 착륙선에서 최종 답변이 오죠 |
|
|
|
05:04.270 --> 05:09.670 |
|
이 말씀을 드려야 할 것 같은데 저는 도구를 두 번 전달하지 않기로 결정했습니다 왜냐하면 우리 |
|
|
|
05:09.670 --> 05:14.500 |
|
도구를 두 번 실행할 수는 없으니까요 하지만 저기에 넣는다고 해가 될 것은 없죠 |
|
|
|
05:14.500 --> 05:20.370 |
|
하지만 사용하진 않을 겁니다 마지막 비트는 여기에 함수를 써야 한다는 |
|
|
|
05:20.370 --> 05:25.950 |
|
거죠 이건 다른 사람보다 좀 더 복잡하지만 여러분 프로젝트에서 |
|
|
|
05:25.950 --> 05:28.740 |
|
그대로 사용할 수 있어요 |
|
|
|
05:28.770 --> 05:30.780 |
|
그냥 알아두면 좋을 것 같아서요 |
|
|
|
05:30.930 --> 05:36.510 |
|
GPT 4에서 메시지가 왔어요 네 |
|
|
|
05:36.930 --> 05:43.740 |
|
이제 패키지를 풀어서 어떤 툴을 호출하려는지 알아보죠 |
|
|
|
05:43.770 --> 05:48.330 |
|
우리는 어떤 도구를 호출하는지 압니다. 왜냐하면 우리는 하나의 도구만 가지고 있고 가격을 get get |
|
|
|
05:48.360 --> 05:49.380 |
|
할 수 있기 때문이죠. |
|
|
|
05:49.410 --> 05:53.370 |
|
어떻게 작동하는지 보여드리려고 여기 넣어뒀어요 |
|
|
|
05:53.430 --> 05:59.850 |
|
여기서 해야 할 건 도구 호출이 get 티켓 가격과 같으면 이렇게 하는 거죠 |
|
|
|
05:59.880 --> 06:05.700 |
|
그러니까 만약이나 일종의 일련의 스위치가 있어야 해요 |
|
|
|
06:05.730 --> 06:10.290 |
|
가능한 모든 호출을 요청할 수 있는 스위치요 |
|
|
|
06:10.290 --> 06:12.330 |
|
하지만 이 경우엔 도구가 하나뿐이죠 |
|
|
|
06:12.330 --> 06:13.560 |
|
그런 거였군요 |
|
|
|
06:13.830 --> 06:18.570 |
|
그럼 호출하고자 하는 인수를 로드할 수 있어요 |
|
|
|
06:18.570 --> 06:23.520 |
|
이 도구 호출에는 . 함수라는 도구가 있어요 |
|
|
|
06:23.550 --> 06:28.710 |
|
.인수는 어떤 매개 변수를 선택했는지 말해주죠 |
|
|
|
06:28.920 --> 06:31.770 |
|
JSON 형태로 다시 나타나요 |
|
|
|
06:31.770 --> 06:32.880 |
|
문자열 하나면 돼요 |
|
|
|
06:32.880 --> 06:38.670 |
|
Json을 사용해야 해요 사전을 변환하기 위해 Loadstring 함수를 로드해요 |
|
|
|
06:38.670 --> 06:44.880 |
|
그리고 우리의 유일한 논점을 찾아냅니다 바로 목적지 도시예요 |
|
|
|
06:44.910 --> 06:48.420 |
|
그걸 찾아 변수 도시에 Put it 했어요 |
|
|
|
06:48.420 --> 06:52.020 |
|
이제 도구와 인수를 풀었는데요 |
|
|
|
06:52.020 --> 06:56.190 |
|
이제 남은 건 이 선이에요 |
|
|
|
06:56.190 --> 06:59.670 |
|
저 대사는 별로 기발하지 않아요 |
|
|
|
06:59.670 --> 07:04.890 |
|
이 라인은 get 티켓 가격 함수를 호출하고 있어요 |
|
|
|
07:04.890 --> 07:11.790 |
|
실행할 수 있는 도구로 설정했습니다 도시를 뽑고 함수를 호출하죠 |
|
|
|
07:12.000 --> 07:14.340 |
|
그리고 대응을 구축하죠 |
|
|
|
07:14.340 --> 07:15.990 |
|
이게 그 대답이에요 |
|
|
|
07:15.990 --> 07:20.910 |
|
Get it은 메시지 맨 밑에 놓이게 돼요 |
|
|
|
07:20.910 --> 07:21.420 |
|
됐어요 |
|
|
|
07:21.420 --> 07:24.920 |
|
Get이 그 안에 박히면 이런 반응을 보이죠 |
|
|
|
07:24.950 --> 07:29.060 |
|
각 행은 역할과 콘텐츠를 가지고 있어요 |
|
|
|
07:29.390 --> 07:35.600 |
|
과거에는 그 역할이 사용자일 수도 있고 시스템 사용자일 수도 있고 비서가 될 수도 있었죠 시스템 사용자 비서요 |
|
|
|
07:35.600 --> 07:36.470 |
|
사용자 비서요 |
|
|
|
07:36.470 --> 07:38.090 |
|
다른 방법도 있어요 |
|
|
|
07:38.120 --> 07:39.590 |
|
이 툴이 되겠죠 |
|
|
|
07:39.590 --> 07:43.100 |
|
이 경우엔 응답 도구에 입력했어요 |
|
|
|
07:43.100 --> 07:47.630 |
|
문자열에 입력한 콘텐츠는 이거예요 Put |
|
|
|
07:47.660 --> 07:52.280 |
|
이 사전은 JSON 덤프 문자열 함수를 이용해 문자열로 변했어요 |
|
|
|
07:52.280 --> 07:55.220 |
|
그래서 목적지 도시와 가격을 입력했어요. TUT D. |
|
|
|
07:55.220 --> 08:04.670 |
|
이 도구 호출 ID도 메시지에 추가해야 합니다 이 응답을 바로 전에 온 요청에 |
|
|
|
08:04.670 --> 08:08.180 |
|
링크하는 방법이죠 |
|
|
|
08:08.180 --> 08:17.270 |
|
메시지를 넣는군요 도구요 id를 입력해 이 둘을 볼 때 이 요청과 |
|
|
|
08:17.270 --> 08:20.990 |
|
관련 있다는 걸 완전히 이해하게 되죠 |
|
|
|
08:20.990 --> 08:23.990 |
|
그게 다인 거죠 |
|
|
|
08:24.260 --> 08:27.480 |
|
하지만 이번에는 양이 꽤 많았어요 |
|
|
|
08:27.510 --> 08:29.370 |
|
배울 게 많아요 |
|
|
|
08:29.580 --> 08:34.710 |
|
하지만 앞서 말했듯이 print문을 넣으면 작동하죠 |
|
|
|
08:34.710 --> 08:38.070 |
|
채팅방에서 이걸 꺼내면 어떻게 되는지 보죠 |
|
|
|
08:39.720 --> 08:40.800 |
|
안녕하세요 |
|
|
|
08:44.550 --> 08:45.270 |
|
안녕하세요 |
|
|
|
08:45.270 --> 08:46.500 |
|
무엇을 도와드릴까요? |
|
|
|
08:46.530 --> 08:49.920 |
|
런던에 가고 싶어요 |
|
|
|
08:51.600 --> 08:52.170 |
|
네 |
|
|
|
08:52.170 --> 08:53.460 |
|
얼마인지 알고 싶어요? |
|
|
|
08:53.490 --> 08:54.390 |
|
네 |
|
|
|
08:55.770 --> 08:59.520 |
|
런던 왕복 비행기 표는 7달러예요 99살요 |
|
|
|
08:59.520 --> 09:00.900 |
|
가격도 적당했고요 |
|
|
|
09:00.900 --> 09:05.850 |
|
이제 주피터 실험실로 돌아가면 우리가 만든 도구의 이름이 |
|
|
|
09:05.850 --> 09:08.490 |
|
인쇄된 걸 볼 수 있을 거예요 |
|
|
|
09:08.490 --> 09:11.370 |
|
그렇게 될 거라고 확신하지만 한번 보죠 |
|
|
|
09:11.400 --> 09:15.210 |
|
툴 get 푯값으로 런던에 가야 해요 |
|
|
|
09:15.240 --> 09:16.740 |
|
계속하죠 |
|
|
|
09:17.220 --> 09:22.620 |
|
파리는 어때요? |
|
|
|
09:25.320 --> 09:27.870 |
|
899와 도쿄요 |
|
|
|
09:30.710 --> 09:34.130 |
|
도쿄까지 왕복 티켓은 1,400페소예요 |
|
|
|
09:34.760 --> 09:35.930 |
|
베를린도요 |
|
|
|
09:37.280 --> 09:38.660 |
|
베를린은 우리가 추가한 거예요 |
|
|
|
09:38.690 --> 09:39.530 |
|
그게 있는지 보죠 |
|
|
|
09:39.560 --> 09:41.480 |
|
네, 499 |
|
|
|
09:41.510 --> 09:46.850 |
|
팀북2도 잘 작동하는 것 같고요 |
|
|
|
09:48.710 --> 09:53.420 |
|
죄송하지만 팀북2 티켓 가격은 저도 몰라요 |
|
|
|
09:53.810 --> 09:55.520 |
|
어디 보죠 |
|
|
|
09:55.520 --> 09:58.940 |
|
일련의 도구들이 보이죠 |
|
|
|
09:58.940 --> 10:02.720 |
|
팀북2를 호출했을 때 미상이라는 응답이 왔어요 |
|
|
|
10:02.720 --> 10:07.910 |
|
그 결과 시스템 프롬프트에서 모른다는 걸 알려줬기 때문에 모른다는 게 꽤 |
|
|
|
10:07.910 --> 10:08.960 |
|
명확했어요 |
|
|
|
10:09.680 --> 10:12.530 |
|
그래서 많은 일이 벌어졌죠 |
|
|
|
10:12.530 --> 10:13.910 |
|
감이 있으면 좋겠네요 |
|
|
|
10:13.910 --> 10:18.560 |
|
사실 이건 강력한 기능성 조각이에요 |
|
|
|
10:18.560 --> 10:28.580 |
|
달 착륙선에 더 많은 힘을 주는 강력한 기술이지만 그 이면에는 마법이 없어요 |
|
|
|
10:28.580 --> 10:34.990 |
|
정말 많은 if문과 복잡한 메시지 투 프롤로예요 그래서 LLM이 뭔가에 대한 |
|
|
|
10:34.990 --> 10:38.770 |
|
더 많은 정보가 필요하다고 알려주도록 하죠 |
|
|
|
10:38.770 --> 10:40.990 |
|
이불 속에서는 그렇게 작동해요 |
|
|
|
10:40.990 --> 10:42.850 |
|
그게 이해가 되셨으면 좋겠네요 |
|
|
|
10:42.850 --> 10:45.610 |
|
여러분의 프로젝트에서 사용할 수 있길 바라요 |
|
|
|
10:45.610 --> 10:47.350 |
|
확장하는 방법으로요 |
|
|
|
10:47.350 --> 10:54.340 |
|
더 많은 종류의 도구를 추가할 수 있습니다 비행의 가능성에 대해 말해주는 |
|
|
|
10:54.340 --> 10:56.710 |
|
도구 같은 거요 |
|
|
|
10:56.710 --> 10:58.510 |
|
도구를 더 많이 쓸 수 있죠 |
|
|
|
10:58.510 --> 11:03.640 |
|
더 대담하게 하고 싶다면 비행기 예약을 위한 도구를 추가하세요 |
|
|
|
11:03.640 --> 11:07.120 |
|
다시 호출될 때 뭔가를 프린트하거나 파일에 뭔가를 쓰거나 |
|
|
|
11:07.120 --> 11:08.170 |
|
할 수 있는 도구죠 |
|
|
|
11:08.170 --> 11:14.890 |
|
그러면 LLM이 두 번째 도구로 호출해 사용자가 요청할 때 비행기를 |
|
|
|
11:14.890 --> 11:16.390 |
|
예약할 수 있죠 |
|
|
|
11:16.390 --> 11:21.100 |
|
그래서 재미있었겠죠 그리고 날짜 같은 걸로 많이 싸웠을 거예요 |
|
|
|
11:21.100 --> 11:28.810 |
|
그러니 한 번 해보시고 그게 끝날 때쯤엔 도구 작성하는 방법에 아주 능숙해지실 겁니다 소프트웨어에서 |
|
|
|
11:28.810 --> 11:35.560 |
|
실행되는 액션을 수행하기 위해 LLM을 장비하는 방법에도요
|
|
|