LM에 도구를 장착하기 위한 프로젝트를 계속하죠
우리 함수를 설명하기 위해 이 코드를 만들었죠 이제 실행할게요
다음 단계는 도구라는 걸 만드는 겁니다 도구 목록이죠
우리는 한 마리밖에 없어요
한 가지 요소 유형은 함수예요
함수는 바로 이거예요
그게 도구 목록에 있어요
이제 LM을 줄 차례입니다 GPT를요
많은 사람이 이 도구를 사용하죠
어떻게 그럴 수 있죠?
비트 박스를 만드는 건 좀 성가신 일이에요 미리 경고하는데 성가신 일에 대비하세요
아주 친숙한 것부터 시작하죠
이건 일반적인 채팅 함수예요
잘 아시네요
여러분이 아는 역사적 메시지를 오픈AI로 보내는 데 사용하죠
미묘한 차이가 있어요
뭔가 변했어요
뭔가 추가됐어요
당신이 알아차릴 때까지 잠시 기다릴게요
일단 눈에 띄면 아주 명확하지만 추가로 넣은 부분이 있어요
직접 보셨다면 아주 좋았겠죠
안 했으면 뻔하죠
여기 있네요
도구를 전달하죠
API는 채팅방 .완성 .Create와 정확히 동일해요
모델과 메시지를 주고 도구도 주죠
즉, 이 객체를 여기에 주는 거죠
챗GPT, 아니 오픈AI가 프롬프트를 구축할 때 전송되는 토큰은 GPT
4개 LLM으로 전송됩니다 이 토큰을 토큰 시리즈로 변환해서
함수를 설명하죠
이 영어를 사용해 뭘 하는지 말할 거예요 LLM에게 이게 호출 가능한
함수라는 걸 알려주죠
그 이유는 많은 예제들과 함께 훈련되었기 때문입니다 토큰을 이용해서
LLM에게 그 기능을 주기 위해서요
그래서 다음에 일어날 일을 보면 마법 같은 일이 사라지게 되죠
기억하시는 LLM에서 돌아온 건 응답 선택에서 0이죠
그 최종 이유가 이 도구 호출인지 아닌지 알아내는 거죠
GPT 4가 알려 줄 때 발생하는 현상이죠 아직 답은 못 드렸어요
대신에, 멈추겠습니다 여러분이 가진 도구 중 하나를 호출해 결과물을 제공해 주세요
그런 일이 발생하면 GPT 4로부터 메시지를 수집해야 하죠
응답 선택 .Message가 수집되죠
보내진 게 뭐든 포함하고 있어요 도구를 실행해 달라는 요청이 되겠죠
그 비트를 다시 풀려면 할 일이 좀 있어요
뭘 원하는지 알아내서 행동으로 옮기죠
모든 걸 별도의 함수에 넣었어요 Put
속임수를 썼어요
여기에다 다 넣으면은 좀 많이 지저분해지거든요, Put it up
그래서 그걸 분리했어요
이제 곧 보게 될 거예요
이 함수는 GPT 40으로부터 메시지를 풀어낼 겁니다 필요하다면 필요할
거고요
도구를 호출하고 그 도구의 결과를 반환하죠
GPT 40으로 돌아가거나 도시로 가면 메시지
목록에 두 행을 추가해야 해요
우리 메시지에 사용자 비서가 있는 걸 기억하세요
이제 두 개의 새로운 행을 추가할 거예요
그 중 하나는 메시지입니다 도구를 호출하라는 GPT 40에서 받은
것 그 이상은 아니죠
가장 먼저 추가할 것은 도구를 실행하라는 보조예요
그걸 메시지 목록에 넣고 그 다음에 입력할 것은 함수를
호출한 결과예요.
이 메시지 목록에 있는 건 사용자 비서가 실행 도구를 명령한다는
거죠
이게 도구 결과예요
이제 오픈AI로 다시 보낼 거예요
이해하셨길 바라요
아니라면, print문을 여기에 넣으면 됩니다 실행할 때 제가 말한 그대로죠
메시지를 인쇄해 보면 더 명확해질 거예요
그 모든 게 메시지에 나타나죠
그리고 마지막에 늘 그렇듯 달 착륙선에서 최종 답변이 오죠
이 말씀을 드려야 할 것 같은데 저는 도구를 두 번 전달하지 않기로 결정했습니다 왜냐하면 우리
도구를 두 번 실행할 수는 없으니까요 하지만 저기에 넣는다고 해가 될 것은 없죠
하지만 사용하진 않을 겁니다 마지막 비트는 여기에 함수를 써야 한다는
거죠 이건 다른 사람보다 좀 더 복잡하지만 여러분 프로젝트에서
그대로 사용할 수 있어요
그냥 알아두면 좋을 것 같아서요
GPT 4에서 메시지가 왔어요 네
이제 패키지를 풀어서 어떤 툴을 호출하려는지 알아보죠
우리는 어떤 도구를 호출하는지 압니다. 왜냐하면 우리는 하나의 도구만 가지고 있고 가격을 get get
할 수 있기 때문이죠.
어떻게 작동하는지 보여드리려고 여기 넣어뒀어요
여기서 해야 할 건 도구 호출이 get 티켓 가격과 같으면 이렇게 하는 거죠
그러니까 만약이나 일종의 일련의 스위치가 있어야 해요
가능한 모든 호출을 요청할 수 있는 스위치요
하지만 이 경우엔 도구가 하나뿐이죠
그런 거였군요
그럼 호출하고자 하는 인수를 로드할 수 있어요
이 도구 호출에는 . 함수라는 도구가 있어요
.인수는 어떤 매개 변수를 선택했는지 말해주죠
JSON 형태로 다시 나타나요
문자열 하나면 돼요
Json을 사용해야 해요 사전을 변환하기 위해 Loadstring 함수를 로드해요
그리고 우리의 유일한 논점을 찾아냅니다 바로 목적지 도시예요
그걸 찾아 변수 도시에 Put it 했어요
이제 도구와 인수를 풀었는데요
이제 남은 건 이 선이에요
저 대사는 별로 기발하지 않아요
이 라인은 get 티켓 가격 함수를 호출하고 있어요
실행할 수 있는 도구로 설정했습니다 도시를 뽑고 함수를 호출하죠
그리고 대응을 구축하죠
이게 그 대답이에요
Get it은 메시지 맨 밑에 놓이게 돼요
됐어요
Get이 그 안에 박히면 이런 반응을 보이죠
각 행은 역할과 콘텐츠를 가지고 있어요
과거에는 그 역할이 사용자일 수도 있고 시스템 사용자일 수도 있고 비서가 될 수도 있었죠 시스템 사용자 비서요
사용자 비서요
다른 방법도 있어요
이 툴이 되겠죠
이 경우엔 응답 도구에 입력했어요
문자열에 입력한 콘텐츠는 이거예요 Put
이 사전은 JSON 덤프 문자열 함수를 이용해 문자열로 변했어요
그래서 목적지 도시와 가격을 입력했어요. TUT D.
이 도구 호출 ID도 메시지에 추가해야 합니다 이 응답을 바로 전에 온 요청에
링크하는 방법이죠
메시지를 넣는군요 도구요 id를 입력해 이 둘을 볼 때 이 요청과
관련 있다는 걸 완전히 이해하게 되죠
그게 다인 거죠
하지만 이번에는 양이 꽤 많았어요
배울 게 많아요
하지만 앞서 말했듯이 print문을 넣으면 작동하죠
채팅방에서 이걸 꺼내면 어떻게 되는지 보죠
안녕하세요
무엇을 도와드릴까요?
런던에 가고 싶어요
네
얼마인지 알고 싶어요?
네
런던 왕복 비행기 표는 7달러예요 99살요
가격도 적당했고요
이제 주피터 실험실로 돌아가면 우리가 만든 도구의 이름이
인쇄된 걸 볼 수 있을 거예요
그렇게 될 거라고 확신하지만 한번 보죠
툴 get 푯값으로 런던에 가야 해요
계속하죠
파리는 어때요?
899와 도쿄요
도쿄까지 왕복 티켓은 1,400페소예요
베를린도요
베를린은 우리가 추가한 거예요
그게 있는지 보죠
네, 499
팀북2도 잘 작동하는 것 같고요
죄송하지만 팀북2 티켓 가격은 저도 몰라요
어디 보죠
일련의 도구들이 보이죠
팀북2를 호출했을 때 미상이라는 응답이 왔어요
그 결과 시스템 프롬프트에서 모른다는 걸 알려줬기 때문에 모른다는 게 꽤
명확했어요
그래서 많은 일이 벌어졌죠
감이 있으면 좋겠네요
사실 이건 강력한 기능성 조각이에요
달 착륙선에 더 많은 힘을 주는 강력한 기술이지만 그 이면에는 마법이 없어요
정말 많은 if문과 복잡한 메시지 투 프롤로예요 그래서 LLM이 뭔가에 대한
더 많은 정보가 필요하다고 알려주도록 하죠
이불 속에서는 그렇게 작동해요
그게 이해가 되셨으면 좋겠네요
여러분의 프로젝트에서 사용할 수 있길 바라요
확장하는 방법으로요
더 많은 종류의 도구를 추가할 수 있습니다 비행의 가능성에 대해 말해주는
도구 같은 거요
도구를 더 많이 쓸 수 있죠
더 대담하게 하고 싶다면 비행기 예약을 위한 도구를 추가하세요
다시 호출될 때 뭔가를 프린트하거나 파일에 뭔가를 쓰거나
할 수 있는 도구죠
그러면 LLM이 두 번째 도구로 호출해 사용자가 요청할 때 비행기를
예약할 수 있죠
그래서 재미있었겠죠 그리고 날짜 같은 걸로 많이 싸웠을 거예요
그러니 한 번 해보시고 그게 끝날 때쯤엔 도구 작성하는 방법에 아주 능숙해지실 겁니다 소프트웨어에서
실행되는 액션을 수행하기 위해 LLM을 장비하는 방법에도요