본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
*_1. 학습 인증샷 4장 이상 포함
*_① 오늘자 날짜, 공부 시작 시각 포함 사진 1장
② 오늘자 날짜, 공부 종료 시각 포함 사진 1장
③ 1개 클립 수강 인증 사진 (강의장 목록 캡쳐, 강의 내용이 담긴 수강화면이 보이지 않도록) 1장
④ 학습 인증샷 1장 이상 (ex. 필기 촬영, 작업물, 등)
2. 학습 후기 700자 이상 (공백 제외)
ReACT 에이전트 Vs. Function Calling 에이전트 비교
- Function Calling은 CoT(생각 과정)이 없는 도구 호출 에이전트
- 이전에 ReACT 에이전트로 구현되었던 많은 프로젝트가 Function Calling으로 전환되고 있음
- 이유는 CoT라는 선 과정이 토큰 소모와 느린 답변 속도에 영향을 미친다는 점
- 현재는, 모델 성능이 좋아지면서 CoT 없이도 도구 호출이 정확하게 가능한 경우가 많아졌기 때문
- 하지만 반대로 Function Calling이 파인 튜닝 후에도 잘 동작하지 않는다면, 성능을 올리기 위해 다시 CoT를 추가하여 ReACT 에이전트로 변경하는 것을 고려하기도 함
- CoT는 문제를 풀기 전 생각 과정을 추가하여 성능을 올리는 방법 중 하나
장점
- ReACT 에이전트 대비 적은 토큰 필요. 답변 시 CoT가 없기 때문
- ReACT는 기본적으로 CoT를 하기 때문에 답변 속도가 느림
- CoT를 하는 동안에 시간은 계속 흐르고, CoT가 끝나야만 답변이 가능하기 때문
- Function Calling은 더 빠른 답변을 얻을 수 있다.
단점
- CoT가 없기 때문에 제대로 작동하지 않을 경우 프롬프트 변경 등을 통한 커스터마이징이 쉽지 않음
- Function Calling은 도구 설명 정도밖에 수정을 하지 못함
- 반면, ReACT 에이전트는 CoT라는 도구 호출 전 생각 과정이 있기 때문에 해당 생각 부분에 대한 프롬프트 엔지니어링이 가능함
오픈 모델 파인 튜닝
- 파인 튜닝이 가능한 상황이라면 특정 시나리오에 대해서 특정 함수를 호출하도록 학습하여 해당 도메인 특화 에이전트를 개발하는 것이 가능함
- 또한, 파인 튜닝이 가능하다면 ReACT 에이전트보다는 CoT가 없는 Function Calling으로 성능을 먼저 보는 것을 권장하며 (토큰 절약, 인퍼런스 속도를 감안하면 Function Calling이 더 낫기 때문.) 이후 성능이 오르지 않을 경우에 CoT를 추가하여 ReACT 형식으로 개조하는 방향으로 진행하는 것을 권함
import json
from langchain\_openai import ChatOpenAI
from langchain.schema import HumanMessage, AIMessage, ChatMessage, FunctionMessage
from langchain.tools import MoveFileTool, format\_tool\_to\_openai\_function
model = ChatOpenAI(model="gpt-4o")
# StockPriceTool를 랭체인이 사용하는 도구에 등록
tools = \[StockPriceTool()\]
# 도구를 OpenAI에서 이해할 수 있는 형식으로 서술 등록
functions = \[format\_tool\_to\_openai\_function(t) for t in tools\]
# GPT-4o와 함수의 연결: Function Calling
# GPT-4o에게 위의 '함수 명세'와 '사용자의 질의'를 입력
ai\_message = model.predict\_messages(\[HumanMessage(content="구글 주식의 가격을 알려줘")\], functions=functions)
# 결과로 나오는 것은 LLM의 답변이 아니라 어떤 함수를 어떤 파라미터로 호출해야 할 것인지를 알려준다.
ai\_message
# GPT-4o가 제안한 파라미터 값을 문자열로 추출
ai\_message.additional\_kwargs\['function\_call'\].get('arguments')
# GPT-4o가 제안한 파라미터 값이 현재 문자열 타입이므로 파이썬의 Dictionary 형태로 읽는다.
args = json.loads(ai\_message.additional\_kwargs\['function\_call'\].get('arguments'))
# 함수 호출
tool\_result = tools[0](args)
# 함수 호출 결과를 문자열로 변환
tool\_result = str(tool\_result)
# 함수 호출 결과를 최종 답변에 활용하기 위해서 랭체인의 형식으로 변환
FunctionMessage(name='get\_stock\_ticker\_price', content=tool\_result)
final\_message = model.predict\_messages(\[HumanMessage(content='구글 주식의 가격을 알려줘'), # 사용자의 질문
ai\_message, # GPT-4o가 결정한 함수와 파라미터의 값
FunctionMessage(name='get\_stock\_ticker\_price',content=tool\_result)\], # 함수 호출 결과
functions=functions) #함수의 명세
print(final\_message.content)
url : https://abit.ly/lisbva
'스타트업 투자 > 데이터 + 테크' 카테고리의 다른 글
패스트캠퍼스 환급챌린지 17일차 : 문제정의능력 (0) | 2025.04.17 |
---|---|
패스트캠퍼스 환급챌린지 16일차 : 에이전트 사례 (0) | 2025.04.16 |
패스트캠퍼스 환급챌린지 14일차 : ReAct 에이전트 (0) | 2025.04.14 |
패스트캠퍼스 환급챌린지 13일차 : 랭체인을 이용한 RAG파이프라인 (0) | 2025.04.13 |
패스트캠퍼스 환급챌린지 12일차 : 거대 언어 모델의 답변 (0) | 2025.04.12 |
댓글