뒤로
연주환
연주환 ·

LLM을 코드 안으로 넣으려는 시도들 (feat. OpenAI Function call API)

10X AI Club 톡방에 올린 내용을 공유합니다!

OpenAI Function Call이 6월13일에 출시된 이후 LLM 개발의 게임체인저가 아닐까 생각했습니다. (6월 13일을 외우고 있는 이유는 모델이름에 0613이 들어가기 때문..)

Function call을 통해서 비정형 데이터를 정형 데이터(JSON)로 변환하고 이를 코드에서 바로 사용할 수 있도록 하는 것이죠.

같은 흐름으로 LLM을 Pythonic 한 파이썬 코드의 일부로 만드려고 하는 시도들이 많았는데, 점점 이렇게 Low Level로 LLM이 프로덕트 안쪽으로 통합되지 않을까 상상해봅니다.

관련해서 재밌게 팔로잉하고 있는 라이브러리 공유드립니다!

https://jxnl.github.io/instructor/

https://github.com/PrefectHQ/marvin

개인적으로 instructor 라이브러리의 개발자 Jason은 제가 트위터에서 좋아하는 분인데 Pydantic을 사용해서 LLM을 코드 안으로 넣으려는 시도를 많이 하시더라고요.

https://twitter.com/jxnlco

10X AI Club 그룹의 글
11

댓글

로그인 후 댓글을 남길 수 있습니다.

한진
한진

유익한 정보 공유... 감사합니다. ^^

Cailyn Yong
Cailyn Yong

왜 function call이 게임체인저 같은지 그 이유를 설명해줄 수 있나요? 비정형 데이터를 정형 데이터로 변환해준다면 LLM 체인의 reasoning이 좀 더 나아질 수 있을 것 같나요?

연주환
연주환

네! 덕분에 agent의 reasoning 측면에서 더 편하게 활용했습니다. function call 이전에는 "LLM이 어떤 함수를 사용할지", "파라미터는 어떤 값을 넣을지"와 같이 함수의 형식을 맞추기 위해서 프롬프트 작업, few-shot 등을 했어야 했죠. 반면에 function call은 "함수선택", "파라미터 설정"을 잘할 수 있도록 파인튜닝된 모델이라 프롬프트 작업이 줄어들었습니다. 랭체인 에이전트는 function call 이전에는 prompting으로, function call 이후에는 파인튜닝을 활용한 것이라고 볼 수 있는 것이죠. 개인적으로 랭체인을 쓰기보다는 직접 scratch 로 만드는 것을 좋아해서 function call 라이브러리를 직접 써서 에이전트를 만들어봤는데요, 제가 정의한 함수를 JSON schema로 표현해서 넘겨주면 LLM이 직접 필요한 함수를 선택하고 거기에 맞는 파라미터를 넘겨주는 방식으로 사용했습니다. 노션 에이전트라면 노션 데이터베이스 불러오기, 노션 글 작성하기 등을 직접 함수로 정의하고 JSON schema로 정의하면 필요한 상황에 맞게 노션과 관련한 함수를 호출하고 파라미터도 잘 맞춰주는 식입니다. 더 자세한 내용을 한번 다뤄봐야겠네요!

박찬진
박찬진

코드로 두 기능의 차이를 비교해 놓으신것 있으시면 구경좀 해보고 싶습니다. :)

Cailyn Yong
Cailyn Yong

오오 더 자세한 내용 공유해주시면 진짜 너무 좋을것같아요!! ㅎㅎ설명해주셔서 감사합니다 :)

Mati
Mati

https://github.com/thmsmlr/instructor_ex 덕분에 재미있는걸 찾았네요 기여하면서 사용해보면 재미있겠네요