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

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을 장비하는 방법에도요