# 목적
1. 사용자의 Query 를 Agent 가 판단하여 대답을 생성한다.
2. 도구가 필요하지 않는 답변의 경우 llm 이 즉시 답변한다
3. 만약 도구 사용시 query 와 도구로 생성한 데이터간 연관성을 검사하고 연관성이 떨어지는경우 쿼리를 교정하여 성능을 향상 시킨다.
4. 연관성이 높은 경우 llm 에 넣어 최종 답변을 사용한다.
# 구성도
# 핵심
Tool : Agent 가 활용할 도구들 ( pdf_retriever ,web search, mcp 등등)
https://python.langchain.com/docs/integrations/tools/
Tools | 🦜️🔗 LangChain
Tools are utilities designed to be called by a model: their inputs are designed to be generated by models, and their outputs are designed to be passed back to models.
python.langchain.com
Agent : 사용자의 요구에 따라 tool 사용 여부를 결정한다.
Agent 가 도구를 사용할 수 있도록 LLM 또한 학습이 되어있어야한다.
예시)
query= '삼성전자 개발 AI'
llm = get_gemini()
llm_with_tools=llm.bind_tools(tools)
messages = llm_with_tools.invoke(query)
print(messages)
결과)
content='' additional_kwargs={'function_call': {'name': 'pdf_search', 'arguments': '{"query": "\\uc0bc\\uc131\\uc804\\uc790 \\uac1c\\ubc1c AI"}'}} response_metadata={'prompt_feedback': {'block_reason': 0, 'safety_ratings': []}, 'finish_reason': 'STOP', 'model_name': 'gemini-2.5-flash-lite', 'safety_ratings': []} id='run--1aa78b07-3d34-426a-87b4-b1fedc36d6fd-0' tool_calls=[{'name': 'pdf_search', 'args': {'query': '삼성전자 개발 AI'}, 'id': 'f9da38fa-121b-4caa-bbca-eb2918bcc3cc', 'type': 'tool_call'}] usage_metadata={'input_tokens': 52, 'output_tokens': 18, 'total_tokens': 70, 'input_token_details': {'cache_read': 0}}
tool_call가 존재하면 tool 을 사용하겠다는 의미로 판단함
# 앞으로
현재는 기본 내장된 패키지를 활용하여 분기처리, agent 판단을 진행하였는데 앞으로는 직접 만들어 판단을 내리는 방법으로 구현 예정