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