묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모르면 야근하는 AI 마케팅 노하우
미션 관련 질문입니다.
수강평 작성 후 제출까지 했는데, 수강평 캡쳐와 자료 받을 이메일 주소를 어디에 남기는건가요?혹시 몰라 여기에도 캡쳐본과 이메일 남겨봅니다.jcjoyful@hanmail.net미션에서 수정해야 하는거라면 방법 알려주세요~
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
가상환경 설정방법 문의
안녕하세요, 가상환경 설정 관련 문의드립니다.아래를 실행하면 가상환경이 실행되지 않습니다.Dayeaui-MacBook-Pro:~ dayeayim$ cd streamlit-finance-newDayeaui-MacBook-Pro:streamlit-finance-new dayeayim$ pyenv local inflearn-streamlit아래 코드를 실행해야만 가상환경이 실행되는데요, 해결방법이 있을까요?export PYENV_ROOT="$HOME/.pyenv"export PATH="$PYENV_ROOT/bin:$PYENV_ROOT/shims:$PATH"eval "$(pyenv init -)"eval "$(pyenv virtualenv-init -)"이것저것 시도하다가 zprofile과 zshrc 파일을 수정하고 그랬는데 꼬여버린 것 같습니다. 가이드 부탁드리겠습니다! 감사합니다~
-
미해결모르면 야근하는 AI 마케팅 노하우
smithery.ai 오류 문제 해결 방법 문의드립니다.
smithery.ai 로그인 후 계속 아래와 같은 오류 메시지가 뜹니다.브라우저를 바꿔봐도 동일한 메시지가 뜨고요.어떻게 해결해야 할까요? 애플리케이션 오류: smithery.ai를 로드하는 동안 클라이언트 측 예외가 발생했습니다 ( 자세한 내용은 브라우저 콘솔을 참조하세요).
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
should_continue를 통과하며 데이터 전송
노드에게 데이터를 전달하려고 하는데요. from langgraph.graph import START, END graph_builder.add_edge(START, 'order_detection_agent') graph_builder.add_conditional_edges('order_detection_agent', should_continue_user_info, [END, 'parser_agent']) graph_builder.add_edge('parser_agent', END)구조는 이러한데, def order_detection_agent(state: AgentState) -> AgentState: products = get_products() query = state['question'] rag_chain = order_detection_prompt | llm | StrOutputParser() response = rag_chain.invoke({'query': query, 'products': products}) print("order_agent 주문 판단 여부:", response) print(products['products']) if response.strip().lower() == 'true': state['products'] = products['products'] return 'parser_agent', state return {'message': '주문이 아닌 것으로 판단.'}이 노드에서 return 'parser_agent', state이런식으로 노드별로 데이터 전달이 가능한 것은 확인하였습니다. 다만, should_continue를 통과하게 되면 에러가 나는데 should_continue를 통과하여 데이터를 전달할 수는 없나요?
-
미해결[VLM101] 파인튜닝으로 멀티모달 챗봇 만들기 (feat.MCP)
좋은 강의 감사합니다. 궁금한게 있어 질의 드립니다.
# 모델을 로드하는 코드 model_id = "/work/checkpoints/hf/Qwen2.5-VL-3B-Instruct" # 사용할 모델 경로 지정 model_org = Qwen2_5_VLForConditionalGeneration.from_pretrained( model_id, # 모델 경로로부터 모델 불러오기 device_map="auto", # 자동으로 장치 설정 (예: GPU 사용) torch_dtype=torch.bfloat16, # 모델의 데이터 타입을 bfloat16으로 설정 (메모리 최적화) ) processor = AutoProcessor.from_pretrained(model_id) # 모델에 맞는 processor 불러오기 ==> 질문 사항 (2개) 질문1) 위 코드에 동일한 모델을 model_org 와 processor 로 정의한 거 같은데 왜 이렇게 정의한 이유는 무엇인가요? 질문2) datacollator 는 모델마다 정의하는 방법이 다른 거 같은데 현재 샘플로 주신 모델은 어디를 참고해야 하나요?
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
이전 대화를 기억하고 다시 반환하도록.
안녕하세요 from langchain_core.prompts import PromptTemplate purpose_prompt = PromptTemplate.from_template(""" You are an expert at parsing and extracting delivery addresses and phone numbers from user input. User's input: {query} Instructions: If you can accurately identify both a delivery address and a phone number from the user's input, set the message field to "해당 정보가 맞습니까?" and include the data field with "delivery_address: {{delivery_address}}, phone_number: {{phone_number}}". If only one of the two values (delivery address or phone number) is identified, set the message to request the missing information by saying "배송지를 다시 한 번 입력해주세요." or "연락처를 다시 한 번 입력해주세요." as appropriate. If neither can be identified, set the message to "배송지와 연락처를 다시 한 번 입력해주세요." and return an empty dictionary for the data field. If you have already asked "해당 정보가 맞습니까?" and receive a positive answer from the user (e.g., '맞다', '맞아', 'ㅇㅇ', '네', '예'), set the message to "해당 정보를 저장해두겠습니다." and return to previously parsed delivery address and phone number in the data field as "delivery_address: {{delivery_address}}, phone_number: {{phone_number}}". If you have already asked "해당 정보가 맞습니까?" but the user responds negatively, set the message to "배송지를 다시 한 번 입력해주세요." or "연락처를 다시 한 번 입력해주세요." as appropriate. Return format: {{ "message": {{message}}, "data": {{ "delivery_address": {{delivery_address}}, "phone_number": {{phone_number}} }} }} """) 현재 이런 프롬프트를 사용하고 있습니다. 간단하게, ai와 대화하며 배송지와 연락처 정보를 기억하게 하고 싶은데요. 지금 잘 안되는 부분은 가장 마지막입니다. ai: 이 배송지와, 연락처 정보가 맞습니까? 배송지: ㅂ, 연락처: 3사용자 : 맞아ai: 해당 정보를 저장하겠습니다. 배송지: ㅂ, 연락처: 3 이 부분이 잘 안되고 있는데요. 이전에 대화했던 배송지와 연락처 정보를 못 불러오고 있습니다. 노드나 tool을 사용하지않고 프롬프트로만 해보고 있는데 노드나 tool을 사용해야 할까요? 혹은 적합한 다른 구조가 있을까요?
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
RAG 응답에 대한 커스텀(JSON)
자체 예제를 만들어서 진행해보고 있는데, 사용자가 입력한 정보에서 배송지와 연락처를 추출한다는 상황을 가정하였습니다. 여기서 프롬프트를 from langchain_core.prompts import PromptTemplate purpose_prompt = PromptTemplate.from_template(""" 당신은 사용자의 입력값에 배송지와 연락처가 존재하는지 판단해서, 배송지와 연락처를 정확히 파싱하는 전문가입니다. 예를 들어 입력값이 '판교역로 123번지 23 01022345843'이라면, 배송지는 판교역로 123번지 23이고, 연락처는 01022345843입니다. 만약 배송지와 연락처가 모두 파악되면, message에는 '해당 정보가 맞습니까?'를 입력해주고 data에는 'delivery_address: {{message}}, phone_number: {{phone_number}}'라고 출력하고, 하나만 파악되면, 없는 쪽에 대해 '연락처를 (또는 배송지를) 다시 한 번 입력해주세요.'라고 message에 작성해주세요. 둘 다 파악하지 못했으면 '배송지와 연락처 정보를 다시 한 번 입력해주세요.'라고 message에 출력고 data는 빈 딕셔너리로 반환해주세요. 사용자의 입력값: {{query}} 반환값 포맷: { "message": {{message}}, "data": { "delivery_address": {{delivery_address}}, "phone_number": {{phone_number}} } } """)이런식으로 짰는데 KeyError: '\n "delivery_address"' During task with name 'generate' and id 이런 에러가 납니다. state를from typing_extensions import TypedDict class AgentState(TypedDict): question: str message: str data: dictfrom langchain_core.output_parsers import StrOutputParser def generate(state: AgentState) -> AgentState: """사용자의 입력값을 기반으로 배송지와 연락처 정보를 추출하고, 추출된 결과를 JSON 형식으로 반환합니다.""" query = state['question'] rag_chain = purpose_prompt | llm | StrOutputParser() response = rag_chain.invoke(query) print(response) return {'answer': response} initial_state = {'question': '대왕판교로 1234 201동 앞에 01022384938'} graph.invoke(initial_state)이렇게 구성해봤는데 어디가 문제인지 모르겠습니다.. generate() 중간에 response를 찍어보려해도 더 이전에 에러가 나서 보이지 않는데.. 어디가 문제인지 알 수 있을까요? 또 output_par
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
2.3강 18분 initial_state에서 오류가 납니다
안녕하세요 langchain강의를 듣고 도움이 되어 langgraph 강의도 열심히 수강하고 있습니다! 2.2강의에서 알려주신 langsmith의 hub가 공식문서에는 client로 변경이 되어 그에 맞게 수정을 했습니다.from langsmith import Client from langchain_openai import ChatOpenAI LANGSMITH_API_KEY = os.getenv("LANGSMITH_API_KEY") client = Client(api_key=LANGSMITH_API_KEY) prompt = client.pull_prompt("rlm/rag-prompt", include_model=True) llm = ChatOpenAI(model = 'gpt-4o')같은 방법으로 2.3 강에서도 # Create a LANGSMITH_API_KEY in Settings > API Keys from langsmith import Client from typing import Literal from langchain_core.output_parsers import JsonOutputParser client = Client(api_key=LANGSMITH_API_KEY) doc_relevance_prompt = client.pull_prompt("langchain-ai/rag-document-relevance", include_model=True) def check_doc_relevance(state: AgentState) -> Literal['generate', 'rewrite']: query = state['query'] context = state['context'] print(f'context == {context}') doc_relevance_chain = doc_relevance_prompt | llm #prompt를 활용해서 llm을 호출한다. response = doc_relevance_prompt.invoke({'question': query, 'documents': context}) print(f'doc relevance response: {response}') if response['Score'] == 1: return 'generate' return 'rewrite'이런 식으로 진행하고 있습니다.그래서 그런지 graph.invoke(initial_state)를 하면 이런 오류가 나는데 langsmith의 client 때문일까요? 아니면 다른 부분에 있는 걸까요?
-
해결됨Claude + IntelliJ로 TodoList 개발하기 - MCP 완전 정복
Notion 주소?
노션 주소가 어떻게 되나요?
-
미해결대세는 바이브 코딩과 MCP_Cursor AI로 시작하기
PRD 문서를 ChatGPT에서 왜 하는건가요?
현재 지극한 초보자입니다. 질문이 제대로 질문을 못 할 수도 있는점 양해 부탁드립니다. PRD 관련 문의처음 기획명세서를 만들때 왜 Chatgpt에서하고 이후 cursor로 와서 작업을 하는데, 처음 부터 cursor로 하는것과 틀린점이 있는것인가요 ?대략적인 코드가 만들어진 후 개선코드가 필요하여 사용시 PRD는 어떻게 사용하는 방법이 따로 있나요?테스크 메니저, 투두, 여러개가 많은데 사용할 필요가 없을까요? ( 단순무식 커서 사용자 이며, 초보입니다, 여기 강좌에서 Rule의 필요성은 지각했읍니다)기타관련모델을 구지 생각없이 커서를 사용 해 왔읍니다. 모델을 특성 어떻게 알아 볼수 있는 사이트 정보가 있을까요? (초보자는 구지 구별 할 필요 없이 사용해도 되겠죠?)User, Project Rules에 대하여 좀 더 정보를 얻을수 없을까요? ( 초보자중심으로)Docs 는 계속해서 만들어 놓으면 문제가 없는건가요?-- 감사 합니다 -- 2번 답변을 제일 원합니다...
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
zerox 사용 시 강의에서 사용된 모델로 진행했을 때의 문제점.
안녕하세요 강사님!langchain 강의부터 잘 수강하고 있는 수강생입니다! 이번 강의 수강 중 궁금증이 생겨 질문 드립니다.zerox 라이브러리 사용해 md 파일로 변환하는 과정 중 자주 발생하는 에러가 있습니다.소스 코드는 강의내에서 작성한 코드와 똑같습니다1. ERROR:root:Failed to process image Error: Error in Completion Response. Error: litellm.RateLimitError: RateLimitError: OpenAIException - Error code: 429 - {'error': {'message': 'Rate limit reached for gpt-4o-mini in organization org-dDgP5bwE5XYlEkdzK49V0oM5 on tokens per min (TPM): Limit 200000, Used 200000, Requested 807. Please try again in 242ms. Visit https://platform.openai.com/account/rate-limits to learn more.', 'type': 'tokens', 'param': None, 'code': 'rate_limit_exceeded'}} LiteLLM Retried: 3 times Please check the status of your model provider API status. 2. Give Feedback / Get Help: https://github.com/BerriAI/litellm/issues/new LiteLLM.Info: If you need to debug this error, use litellm.set_verbose=True'. ERROR:root:Failed to process image Error: Error in Completion Response. Error: litellm.RateLimitError: RateLimitError: OpenAIException - Error code: 429 - {'error': {'message': 'Rate limit reached for gpt-4o-mini in organization org-dDgP5bwE5XYlEkdzK49V0oM5 on tokens per min (TPM): Limit 200000, Used 200000, Requested 807. Please try again in 242ms. Visit https://platform.openai.com/account/rate-limits to learn more.', 'type': 'tokens', 'param': None, 'code': 'rate_limit_exceeded'}} Please check the status of your model provider API status.위와 같이 모두 '분당 토큰 수' 제한 에러입니다.저는 처음에는 위 문제를 해결하기 위해 pdf 문서를 chunking 하여 한 번에 처리되는 토큰을 제한하려고 했습니다.=> 예) 총 페이지를 약 5~6개로 나눠 보내는 방법def get_total_pages(path: str) -> int: try: from pypdf import PdfReader except Exception: from PyPDF2 import PdfReader # 호환 return len(PdfReader(path).pages) def make_batches(total_pages: int, size: int): pages = list(range(1, total_pages + 1)) # 1-indexed for i in range(0, total_pages, size): yield pages[i:i + size]total = get_total_pages(PDF_PATH) print(f"Total pages: {total}") merged = [] for pages in make_batches(total, BATCH_SIZE): res = await process_with_backoff(pages) # 여기서 배치로 나눠진 항목들 수행=> 문제점 : zerox는 한 호출에서 처리한 페이지들만 마크다운 파일로 만들어 output_dir에 저장하고, 그 뒤에 만들어지는 파일들은 이어 붙여지지 않고 덮어 씌워집니다.이를 해결하기 위해 비즈니스 로직을 좀 더 구현해야 하나? 했는데.. 이 방법이 맞는지, 시간만 뺏기게 되는게 아닌지 의문이어서 일단 그만두었습니다. 두번째로는 강사님이 사용하신 모델 'gpt-4o-mini' 를 'gpt-4.1-mini' 로 변경하였습니다. 모델을 바꾸니 바로 해결이 되긴 했습니다.여기서 제가 궁금한 점은 현업에서 이런 작업을 진행 하다 보면 이런 데이터 전처리를 많이 하게 될 거 같은데.. 사이즈가 너무 큰 데이터는 어떤 방식으로 limit나 기타 오류(아직 어떤 오류가 빈번한지는 잘 모르는 상태입니다.)들을 해결해야 하는지가 궁금합니다!모델을 바꾸는게 맞는건지, 원본 데이터를 최대한 chunking 해서 제가 맨 위에 오류로 보여드린 200000 TPM 을 맞추려고 해야 되는건지... 요런 부분들이 궁금합니다! 긴 글 읽어주셔서 감사합니다!
-
해결됨Claude + IntelliJ로 TodoList 개발하기 - MCP 완전 정복
inteliJ 와 연결은 되었는데 , Session Out이 자주 발생합니다..
강의를 잘듣고 inteliJ 와 잘 연결을 했는데,한두번 검색하면, 1) 서버 연결이 닫히거나, 혹은 2) 세션을 찾을 수 없다는 에러가 뜹니다 그 이후부터는 클로드코드를 다시 켜야하고, 보통 1~2회만 쓰다가 문제가 생겨버리니까 실제로 사용하는데 큰 제약이 되더라구요..혹시 jet brains가 MCP 호환성이 아직 안좋은건가요, 아니면 저에게만 발생하는건지 궁금합니다. (윈도우를 사용하고 있습니다) 1) 에러2025-09-01T08:35:58.425Z [jetbrains] [info] Server transport closed unexpectedly, this is likely due to the process exiting early. If you are developing this MCP server you can add output to stderr (i.e. console.error('...') in JavaScript, print('...', file=sys.stderr) in python) and it will appear in this log. { metadata: undefined }2025-09-01T08:35:58.426Z [jetbrains] [error] Server disconnected. For troubleshooting guidance, please visit our [debugging documentation](https://modelcontextprotocol.io/docs/tools/debugging) { metadata: { context: 'connection', stack: undefined } }2025-09-01T08:35:58.438Z [jetbrains] [info] Server transport closed { metadata: undefined }2025-09-01T08:35:58.438Z [jetbrains] [info] Client transport closed { metadata: undefined } 2) 에러 2025-09-01T08:32:27.369Z [jetbrains] [info] Message from client: {"jsonrpc":"2.0","method":"notifications/cancelled","params":{"requestId":11,"reason":"McpError: MCP error -32001: Request timed out"}} { metadata: undefined }Error in Socket: java.lang.IllegalStateException: Error POSTing to endpoint (HTTP 404 Not Found): Session not foundError in StdIO: java.lang.IllegalStateException: Error POSTing to endpoint (HTTP 404 Not Found): Session not found
-
해결됨Claude + IntelliJ로 TodoList 개발하기 - MCP 완전 정복
인텔리제이와 mcp서버 연결이 안되네요.
node.js도 잘 설치하여 셋팅했는데, jetbrains 활성화가 전혀 안되네요. 윈도우 환경이라서 그럴까요? 문제 해결 방안은 있을까요?
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
yfinance 의 응답 (char 0)
안녕하세요 강의 잘 듣고 있습니다 ^^강의 진행중 yfinance. 의 응답이 (char 0) 이 나오는데요, 구글링 해보니 같은 경우가 과거에도 있었더라구요.해당 api. 서버가 죽은건지, 무엇인지 알수가 없네요대채 할수 있는 방법이 있을까요?
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
window 11 환경 셋팅
안녕하세요! langraph를 업무에 사용예정이여서 강의 수강중입니다.윈도우 환경셋팅이 필요해서 다음 에러를 해결해서 개발환경 셋팅을 완료했습니다.앞으로 강의를 수강하는데 다음 uvloop 패키지가 없어도 괜찮을까요? chroma-hnswlib 도 무시하고 설치로 해도 괜찮은지 궁금합니다.가능하다면 윈도우 환경에서의 패키지 모듈 관리도 되면 좋을 것 같습니다 🙂 uvloop window 환경에서는 무시하고 설치하도록 변경'uvloop; sys_platform != "win32"', # ⬅ Windows에서는 설치 안 함chroma-hnswlibVisual C++ Build Tools 설치
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
2.8 Multi-Agent 시스템과 RouteLLM 강의에서
from langchain_core.prompts import ChatPromptTemplate from pydantic import BaseModel, Field from typing import Literal class Route(BaseModel): target: Literal["income_tax", "llm", "real_estate_tax"] = Field( description="The target for the query to answer" ) router_system_prompt = """ You are an expert at routing a user's question to 'income_tax', 'llm', or 'real_estate_tax'. 'income_tax' contains information about income tax up to December 2024. 'real_estate_tax' contains information about real estate tax up to December 2024. if you think the question is not related to either 'income_tax' or 'real_estate_tax'; you can route it to 'llm'.""" router_prompt = ChatPromptTemplate.from_messages( [("system", router_system_prompt), ("user", "{query}")] ) structured_router_llm = small_llm.with_structured_output(Route) def router(state: AgentState) -> Literal["income_tax", "real_estate_tax", "llm"]: """ 주어진 state에서 쿼리를 기반으로 적절한 경로를 결정합니다. Args: state (AgentState): 현재 에이전트의 state를 나타내는 객체입니다. Returns: Literal['income_tax', 'real_estate_tax', 'llm']: 쿼리에 따라 선택된 경로를 반환합니다. """ query = state["query"] router_chain = router_prompt | structured_router_llm route = router_chain.invoke({"query": query}) return route.target 안녕하세요 강병진 강사님:) 혹시 위 코드에서 router_prompt없이 Route class의 Field에만 프롬프트 지침을 넣어도 문제가 없을까요? 테스트 결과는 잘 나왔습니다. 아래는 수정 코드입니다.class Route(BaseModel): target: Literal["real_estate_tax", "llm", "income_tax"] = Field(description = """ 당신은 사용자의 질문을 보고 적절한 라우터를 연결해주는 전문가입니다. 부동산에 관련된 질문은 real_estate_tax라우터를, 소득세에 관한 질문은 income_tax라우터를, 그 외의 질문은 llm라우터로 연결해주세요. """) def router(state: AgentState): query = "역삼역 떡볶이 맛집을 알려주세요 " router_llm = llm.with_structured_output(Route) response = router_llm.invoke(query) return response.target print(router({})) >> 'llm'
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
tool의 Output Size 관련 질문
MCP Server 나 langgraph 나 모두 tool 입니다. 만약 tool 에서 결과 값이 너무 많이 나오는 경우 어떻게 처리 해야 할까요?예1) MCP Server의 "우리 회사 고객 정보중 매출 얼마 이상 되는 정보를 보여줘?" 라고 고객이 입력 했는데, 그 고객 정보가 10만명이 나와서 tool 의 결과가 너무 커 버리는 예)DB의 Limit 등으로 어떻게 하더라도 다음 호출을 LLM이 잘 못해주는 경우가 있음.예2) 슬랙의 채널을 보여줘 했을 때, 슬랙의 채널이 너무 많은 경우 ... 결국 전부다 예3) 소스코드를 분석해 줘소스코드가 1만 - 2만 라인 되었을 경우 Tool 의 결과라도 양이 많으면 Summary를 하면서 계속 돌려야 하는게 효과 적일까요? 아니면 페이지 1, 2 등을 호출할 수 있게 어떻게 하던 LLM 에게 권한을 주는게 효과 적일까요?더 괜찮은 방법이나 좋은 prompt 등이 있으시면 답변 부탁 드립니다.감사합니다.
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
public 모델 사용시 주의점
안녕하세요 좋은 수업제공해주셔서 많은 도움을 받고있습니다. langChain에 public 모델을 사용할때 개인정보 관련해서 질문이 있는데요예를 들어 챗봇이나 자동 상담 기능에 적용을 한다고하면 입력이 매우 자유로울거같은데 개인정보에대해서는 어떻게 처리를 해야할까요? 기본적으로는 정규식으로 전처리를 하는데 100%보장된 작업은 아니라 현업에서는 어떻게 처리하는지 궁금합니다. 만약 개인정보 처리가 매우 중요하다면 public 모델(ex. chatGPT, gemini)은 사용 못하고 private 한 환경에 오픈소스로 운영할수밖에는 없을까요?
-
해결됨Claude + IntelliJ로 TodoList 개발하기 - MCP 완전 정복
인텔리제이 메모리가 폭주 합니다.
간단한 프로그램인데 Claude 연동해서 Claude ai가 코드를 작성할 때인텔리제이의 메모리를 16GB로 설정해도 부족하다고...저만 그런가요... 아님 다른 분도 그런가 궁금하네요 인텔리제이 메모리 시스템 사용량 이것 때문에 CPU 사용량이 급격하게 올라가면서 시스템이 넘 느려져서 프로세스 강제로 종료를 몇 번을 해도 똑같네요 그리고 실제 Claude가 작성한 코드는 처음 한 번 외에 늘어나지가 않고...설정은 잘 되고 Claude ai가 프로젝트 인식도 다 잘했는데... 코드를 작성하기 시작하면 이런 문제가 계속 발생합니다.
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
Multi Agent vs Multi tools (강좌 처럼)
뭔가 제가 이해하기로는 Multi Agent의 개념이 Multiple tool로의 개념으로 이번 강의를 이해했는데요 맞을까요 ? 둘의 명시적인 기능의 차이는 없어보이는데 클린 코드 작성 측면에서는 더 Multi tools가 효과적으로 보입니다 다만, 명확히 왜 이렇게했지? 라는 생각이 계속 듭니다. 어떤 점에서 장점이 있다고 이해하면 될까요 ?