inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

human-in-the-loop질문드립니다

해결됨

LangGraph를 활용한 AI Agent 개발 (feat. MCP)

강사님 안녕하세요! 엣지 연결 마치고 계속 테스트하는데 중간에 interrupt가 되지 않고 'attention is all you need'논문을 바로 긁어와서 요약을 합니다 ㅜ def should_continue(state: MessagesState): """ 주어진 state에 따라 다음 단계로 진행할지를 결정합니다. Args: state (AgentState): 메시지와 도구 호출 정보를 포함하는 state. Returns: Literal['tools', 'summarize_messages']: 다음 단계로 'tools' 또는 'summarize_messages'를 반환합니다. """ # state에서 메시지를 가져옵니다. messages = state['messages'] # 마지막 AI 메시지를 확인합니다. last_ai_message = messages[-1] # 마지막 AI 메시지가 도구 호출을 포함하고 있는지 확인합니다. if last_ai_message.tool_calls: # 도구 호출이 있으면 'tools'를 반환합니다. print('도구 호출이 있습니다 human_review로 이동합니다') return 'human_review' print('도구 호출이 없습니다 summarize_messages로 이동합니다') # 도구 호출이 없으면 'summarize_messages'를 반환합니다. return 'summarize_messages' 프린트 찍어보니 도구호출이 없습니다 로 바로 들어갑니다 그래서 쿼리를 '동탄역 맛집을 알려주세요' 하니 도구 호출이 있습니다. 하고 interrupt가 되더라구요 저 논문에 대한 정보를 LLM에서 이미 갖고있어서 Tool call을 안한거라고 보면 될까요?

  • 프롬프트엔지니어링
  • llm
  • ai-agent
  • langgraph
JAY probio 댓글 1 좋아요 0 조회수 116

수업 자료 문의

미해결

AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)

법률 문서 PDF 3개가 '자료 다운로드'를 하였을 때 압축파일 안에 존재하지 않습니다.

  • llm
  • langchain
  • rag
  • ai-agent
  • langgraph
신웅 댓글 3 좋아요 0 조회수 207

py-zerox 설치 관련 이슈

해결됨

LangGraph를 활용한 AI Agent 개발 (feat. MCP)

안녕하세요, py-zerox 설치 이슈와 관련하여 문의드립니다. https://github.com/jasonkang14/inflearn-langgraph-agent 를 git clone한 후 pip install -r requirements.txt를 통해 설치를 시도하면 아래와 같은 에러가 발생합니다. 버전을 명시하지 않고 pip install을 시도해도 마찬가지로 에러가 발생하고 있습니다. https://www.piwheels.org/project/py-zerox/ 에서 확인을 해보니 아래와 같이 나오는데 지금 패키지 자체에 문제가 있는 걸까요?

  • 프롬프트엔지니어링
  • llm
  • ai-agent
  • langgraph
gymoon10 댓글 1 좋아요 0 조회수 174

pdf -> md 변환 이후 결과

해결됨

LangGraph를 활용한 AI Agent 개발 (feat. MCP)

안녕하십니까!! 기존 Pdf파일에서 제55조(세율) 표를 보면 이러합니다. 이후 pdf -> .md로 변환하면 ( 강사님께서 올려주신 .md 된 파일도 확인하였습니다.) 1,400만원 초과 5,000만원 이하 5,000만원 초과 8,800만원 이하 의 결과가 아닌 5,000만원이 생략이 되어있습니다. 특이한점으론 a초과 b이하 에서 a만 생략된다던지 혹은 b만 생략되는 것이 아닌 a, b 중 아무거나 생략이 되고 있습니다. md 으로 변환하면서 이렇게 몇몇 글들이 생략이되게 되면 이후 정확도에 문제가 생기지 않는지? 추가적으로 py-zerox, gpt-4o-mini 를 사용하면서 생기는 문제인지, 아니면 일반적으로 한글 pdf -> md로 변환하는 과정에 대부분 이러한 문제가 생기는지 궁금합니다.

  • 프롬프트엔지니어링
  • llm
  • ai-agent
  • langgraph
rhsnqk 댓글 2 좋아요 0 조회수 251

pyzerox ModuleNotFoundError: No module named 'enterprise'

해결됨

LangGraph를 활용한 AI Agent 개발 (feat. MCP)

안녕하십니까! 강의 잘 듣고 있습니다. pyzerox를 gpt-4o-mini 모델을 사용하하는 중 아래와 같은 에러가 발생을 합니다. ``` ModuleNotFoundError Traceback (most recent call last) Cell In[13], line 1----> 1 from pyzerox import zerox 2 import asyncio 4 ### Model Setup (Use only Vision Models) Refer: https://docs.litellm.ai/docs/providers ### 56 ## placeholder for additional model kwargs which might be required for some models File ~/desktop/langgraph/.venv/lib/python3.12/site-packages/pyzerox/__init__.py:1----> 1 from .core import zerox 2 from .constants.prompts import Prompts 4 DEFAULT_SYSTEM_PROMPT = Prompts.DEFAULT_SYSTEM_PROMPT File ~/desktop/langgraph/.venv/lib/python3.12/site-packages/pyzerox/core/__init__.py:1----> 1 from .zerox import zerox 3 all = [ 4 "zerox" , 5 ] File ~/desktop/langgraph/.venv/lib/python3.12/site-packages/pyzerox/core/zerox.py:1310 from ..constants import PDFConversionDefaultOptions 12 # Package Imports ---> 13 from ..processor import ( 14 convert_pdf_to_images, ... 12 ) 13 from litellm.caching import InMemoryCache 14 from litellm.litellm_core_utils.litellm_logging import Logging as LiteLLMLoggingObj ModuleNotFoundError : No module named 'enterprise' ``` !uv pip install py-zerox from pyzerox import zerox import asyncio ### Model Setup (Use only Vision Models) Refer: https://docs.litellm.ai/docs/providers ### ## placeholder for additional model kwargs which might be required for some models kwargs = {} ## system prompt to use for the vision model custom_system_prompt = None # to override # custom_system_prompt = "For the below PDF page, do something..something..." ## example ###################### Example for OpenAI ###################### model = "gpt-4o-mini" ## openai model # Define main async entrypoint async def main(): file_path = "./income_tax.pdf" ## local filepath and file URL supported ## process only some pages or all select_pages = None ## None for all, but could be int or list(int) page numbers (1 indexed) output_dir = "./documents" ## directory to save the consolidated markdown file result = await zerox(file_path=file_path, model=model, output_dir=output_dir, custom_system_prompt=custom_system_prompt,select_pages=select_pages, **kwargs) return result # run the main function: result = asyncio.run(main()) # print markdown result print(result) 코드는 위와 같습니다. pyzerox 가 수업 중 litellm 을 사용한다고 하셨는데 (py-zerox 설치시 1.67.4 버전으로 같이 설치됨) Enterprise용 littellm을 사용하면서 생긴 문제인 것 같은데요 기존 설치된 littellm 을 upgrade 하니 다른 오류인 ModelAccessError : Your provided model can't be accessed. Please make sure you have access to the model and also required environment variables are setup correctly including valid api key(s). Refer: https://docs.litellm.ai/docs/providers (Extra Info: {'model': 'gpt-4o-mini'}) 이런 오류가 발생합니다. 현재 사용중인 OPENAI_API_KEY 를 이용해 llm.invoke 시 응답이 잘 오는 걸 봐서는 해당 모델을 사용하는데 문제는 없는 것으로 보입니다. 혹시 지금까지 어떤 문제점이 있는지 알 수 있을지요?

  • 프롬프트엔지니어링
  • llm
  • ai-agent
  • langgraph
rhsnqk 댓글 2 좋아요 0 조회수 255

node 함수관련 초보적인 질문하나만 드리겠습니다!

해결됨

LangGraph를 활용한 AI Agent 개발 (feat. MCP)

강사님 안녕하세요! 하단의 generate함수는 파라미터로 AgentState를 받고 AgentState를 리턴하는데 함수의 리턴값이 "context"를 key로 가지는 딕셔너리형태인데, 어떻게 AgentState가 되는지 궁금합니다.. ㅠㅠ class AgentState(TypedDict): query: str context: List[Document] answer: str def retrieve(state: AgentState) -> AgentState: """ 사용자의 질문에 기반하여 벡터 스토어에서 관련 문서를 검색합니다. Args: state (AgentState): 사용자의 질문을 포함한 에이전트의 현재 state. Returns: AgentState: 검색된 문서가 추가된 state를 반환합니다. """ query = state['query'] docs = retriever.invoke(query) return {'context': docs}

  • 프롬프트엔지니어링
  • llm
  • ai-agent
  • langgraph
JAY probio 댓글 1 좋아요 0 조회수 113

docker 환경에서 해당 서비스를 구성해보는 건 어떤가요?

미해결

AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)

시작 부분에 가상환경 구현이 있는데, 포티(conda) 가상환경 vs Docker 컨테이너 docker 컨테이너로 초기 환경을 구성하면 제약사항이 있을까요?

  • llm
  • langchain
  • rag
  • ai-agent
  • langgraph
이호준 댓글 2 좋아요 0 조회수 198

numpy 설치 에러

해결됨

AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)

강의 시점: 섹션1 > 실습을 위한 환경 설정 방법에서 약 1분 16초 내용: 제공해주신 pyproject.toml에서 저는 파이썬 3.13 버전으로 설치되어 이 부분만 수정해 install하였습니다. 그랬더니 아래와 같이 numpy 설치 에러 문구가 뜨는데 왜 그런걸까요? 해결 방법이 있을까요? 에러 메시지 - Installing numpy (1.26.4): Failed PEP517 build of a dependency failed Backend subprocess exited when trying to invoke build_wheel Note: This error originates from the build backend, and is likely not a problem with poetry but one of the following issues with numpy (1.26.4) - not supporting PEP 517 builds - not specifying PEP 517 build requirements correctly - the build requirements are incompatible with your operating system or Python version - the build requirements are missing system dependencies (eg: compilers, libraries, headers). You can verify this by running pip wheel --no-cache-dir --use-pep517 "numpy (==1.26.4)".

  • llm
  • langchain
  • rag
  • ai-agent
  • langgraph
정다연 댓글 1 좋아요 0 조회수 556

The onnxruntime python package is not installed.

미해결

AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)

'벡터 저장소(Vector Store)를 도구로 변환하기' 강의에서 'from langchain_chroma import Chroma' 부분 실행 시 아래와 같은 오류가 발생합니다. ValueError: The onnxruntime python package is not installed. Please install it with pip install onnxruntime pip install을 수행해도 에러는 동일하게 발생합니다. 구글 검색으로 Microsoft Visual C++ Redistributable 설치도 시도해 보았으나 여전히 동일합니다. 어떻게 해결해야할까요? 필요한 정보가 있다면 알려주세요.

  • llm
  • langchain
  • rag
  • ai-agent
  • langgraph
hipyohip 댓글 1 좋아요 0 조회수 244

섹션 5, 사용자 정의 조건부 엣지 관련 질문입니다.

미해결

AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)

from langgraph.graph import MessagesState, StateGraph, START, END from langchain_core.messages import HumanMessage, SystemMessage from langgraph.prebuilt import ToolNode from IPython.display import Image, display # LangGraph MessagesState 사용 class GraphState(MessagesState): pass # 노드 구성 def call_model(state: GraphState): system_message = SystemMessage(content=system_prompt) messages = [system_message] + state['messages'] response = llm_with_tools.invoke(messages) return {"messages": [response]} def should_continue(state: GraphState): last_message = state["messages"][-1] # 도구 호출이 있으면 도구 실행 노드로 이동 if last_message.tool_calls: return "execute_tools" # 도구 호출이 없으면 답변 생성하고 종료 return END # 그래프 구성 builder = StateGraph(GraphState) builder.add_node("call_model", call_model) builder.add_node("execute_tools", ToolNode(tools)) builder.add_edge(START, "call_model") builder.add_conditional_edges( "call_model", should_continue, { "execute_tools": "execute_tools", END: END } ) builder.add_edge("execute_tools", "call_model") graph = builder.compile() # 그래프 출력 display(Image(graph.get_graph().draw_mermaid_png())) # 그래프 실행 inputs = {"messages": [HumanMessage(content="스테이크 메뉴의 가격은 얼마인가요?")]} messages = graph.invoke(inputs) 위 코드는 강사님께서 제공해주신 코드를 가져온 것입니다. 제가 궁금한 것은 Tool 노드를 사용하고 다시 call_model 노드로 왔을 때 SytemMessage가 중복되지 않을까? 라는 생각을 했습니다. 예를 들어 message : [유저 인풋] 가 처음으로 그래프에 들어오게된다면 def call_model(state: GraphState): system_message = SystemMessage(content=system_prompt) messages = [system_message] + state['messages'] response = llm_with_tools.invoke(messages) return {"messages": [response]} message : SystemMessage + [유저 인풋] 이 될것입니다. 그 이후 response를 호출하여 message : SystemMessage + [유저 인풋] + toolMessage 이 되어 상태를 업데이트 하고, 그리고 tool 콜이 있어서 툴노드를 마무리 한 이후 돌아왔을 땐 GraphState에 있는 message는 SystemMessage + [유저 인풋] + toolMessage + [툴이보낸 메세지] 일테니 call model 노드에서 SystemMessage + SystemMessage + [유저 인풋] + toolMessage + [툴이보낸 메세지] 가 적용되어 툴 콜 할때마다 SytemMessage가 쌓이는 구조가 되지 않을까 생각이 들었는데 맞을까요?

  • llm
  • langchain
  • rag
  • ai-agent
  • langgraph
이성규 댓글 1 좋아요 0 조회수 149

강사님의 LLM 모델의 버전이 어떻게 되나요?

해결됨

AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)

안녕하세요, 강사님 Azure OpenAI API를 사용해 봤는데요. gpt-4o-mini-2024-07-18 입니다. Structured output을 하는 경우 다음과 같은 애러가 발생해요. 모델 버전 문제일 것 같기는 한데요. BadRequestError: Error code: 400 - {'error': {'code': 'BadRequest', 'message': 'response_format value as json_schema is enabled only for api versions 2024-08-01-preview and later'}} 강사님의 LLM 모델의 버전이 어떻게 되나요?

  • llm
  • langchain
  • rag
  • ai-agent
  • langgraph
SPAGGY 댓글 1 좋아요 0 조회수 246

Agent RAG 구현에서 '정보 추출 및 평가' 노드 결과 애러

미해결

AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)

안녕하세요, 강사님. 강의 마지막 섹션 Agent RAG 시스템을 그래프로 구현 에서 # 4. Agent RAG 구현 부분에서 LLM 모델에 따라 결과 다르게 나오는 것 같습니다. 참고로, 저는 ANTHROPIC claude-3-7-sonnet-20250219 모델을 사용하는데요. 다음과 같이, '정보 추출 및 평가' 노드에서 애러가 발생합니다. 안정적인 결과를 얻기 위해서는 어떤 방안이 좋을지 의견을 부탁 드립니다. ---정보 추출 및 평가--- ValidationError: 2 validation errors for ExtractedInformation strips Input should be a valid list [type=list_type, input_value='[\n {\n "content": "...="query_relevance">0.95', input_type=str] For further information visit https://errors.pydantic.dev/2.10/v/list_type query_relevance Field required [type=missing, input_value={'strips': '[\n {\n "..."query_relevance">0.95'}, input_type=dict] For further information visit https://errors.pydantic.dev/2.10/v/missing 수업 영상 몇 분/초 구간인지 알려주세요.

  • llm
  • langchain
  • rag
  • ai-agent
  • langgraph
SPAGGY 댓글 2 좋아요 0 조회수 146

메시지 그래프/피드백 루프 활용하기에서 질문

미해결

AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)

12:20 에서 grade, num_generation 필드값으로 상태값이 덮어 써진다고 하셨는데요. 그러면 기존 상태에 있던 "messages"와 "documents"가 사라지는 건가요? 4:07에서 rag_chain.invoke함수에 string 타입의 query가 들어가면 "context"와 "question"에 모두 입력으로 들어가게 되는건가요?

  • llm
  • langchain
  • rag
  • ai-agent
  • langgraph
junghyun_kwon3 댓글 1 좋아요 0 조회수 135

STORM 아키텍쳐

미해결

모두를 위한 대규모 언어 모델 LLM Part 5 - LangGraph로 나만의 AI 에이전트 만들기

Structured output과 regex pattern 설정 충돌 quries["raw"].toll_calls 가 빈 리스트로 반환됨 두 문제 모두 langchain_openai==0.2.4 에서는 정상적으로 동작

  • llm
  • langchain
  • rag
  • openai-api
  • ai-agent
  • langgraph
강경준 댓글 2 좋아요 0 조회수 149

에이전틱 루프에서의 병렬 노드 구현 문의

미해결

AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)

안녕하세요, 강사님 워크플로우가 아닌 에이전틱 루프에서 병렬 노드 구현이 가능한지 문의드립니다. 구체적으로 다음과 같은 두 가지 시나리오에 대한 가능 여부가 궁금합니다 쿼리에 따라 1, 2번 작업을 순차적으로 진행한 후, 그 결과를 aggregate하여 3번으로 전달하는 방식 1, 2, 3번 작업을 동시에 병렬로 수행한 후 한 번에 취합하는 방식 어떤 방식이 가능한지 조언 부탁드립니다. 감사합니다

  • llm
  • langchain
  • rag
  • ai-agent
  • langgraph
젓인 댓글 2 좋아요 0 조회수 153

[공유] llama3-groq 모델명 수정 필요

미해결

AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)

"LLM 모델의 Tool Calling 성능 비교(OpenAI, Gemini, Llama 70B)" 파트 강의 중 1:48초 부터 llama3-groq-70b-8192-tool-use-preview 모델을 불러와 Tool Call의 성능 비교를 진행합니다. 2025-04-03 기준 해당 모델명이 변경되어 더 이상 로드가 불가능 합니다. 따라서 "llam3-70b-8192" 모델명을 변경하여 사용하는 것이 좋을 것 같습니다. 수정 전 코드 llm_groq = ChatGroq(model="llama3-groq-70b-8192-tool-use-preview", temperature=0) 수정 후 코드 llm_groq = ChatGroq(model="llama3-70b-8192", temperature=0) 감사합니다.

  • llm
  • langchain
  • rag
  • ai-agent
  • langgraph
왈왈 댓글 1 좋아요 0 조회수 209

수업자료 문의

미해결

AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)

실습환경 및 도구설정에서 법률문서 pdf 파일들이 수업자료에 없는데 어디있을까요?

  • llm
  • langchain
  • rag
  • ai-agent
  • langgraph
런던베이글 댓글 2 좋아요 1 조회수 221

서브그래프로 구성된 워크플로우 설계 조언을 듣고 싶습니다

미해결

AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)

안녕하세요 선생님 위 이미지처럼 추후 서브그래프로 들어갈 CSV 관련 코드 작성 및 실행 워크플로우를 구성했는데, 테스트를 통해서 동작은 확인했습니다 그런데 마지막 execute_node가 python_repl로 실행만 하는 노드라서 실패했을 때 워크플로우가 중간에 다시 돌아갈 때 원인이 전달되지 않아서 수정이 잘 될지가 걱정됩니다. 에러까지 넘겨야 할지, 아니면 code_gen node에서 agentexecutor api로 tool_call로 python_repl을 연결한 다음 validation 노드를 타는 게 더 나을지 고민 중인데, 이렇게 하면 코드 실행 실패할 때마다 그래프 시각화가 여러 번 나올 것 같아서 어떤 접근법이 좋을지 조언 부탁드립니다 감사합니다

  • llm
  • langchain
  • rag
  • ai-agent
  • langgraph
젓인 댓글 1 좋아요 0 조회수 140

subgraph와 add_conditional_edges 질문

미해결

AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)

안녕하세요 강사님, 서브 그래프 관련 질문입니다! subgraph에서 routing 코드를 보고 있는데, add_conditional_edges 문법이 좀 헷갈려서 질문드립니다. search_builder.add_conditional_edges( "analyze_question", route_datasources_tool_search, ["search_menu", "search_web", "search_wine"] ) 위 코드에서 세 번째 매개변수인 ["search_menu", "search_web", "search_wine"] 가 어떻게 작동하는지 궁금합니다. 제가 이해한 바로는 route_datasources_tool_search 함수에서 return되는 값의 key 값에 따라 다음 노드로 라우팅되는 것 같은데요. 그냥 저렇게 함수들을 나열하면 알아서 key 값과 네임이 일치하는 함수로 넘어가는 건가요? 혹시 시간 되실 때 설명 부탁드립니다! 감사합니다.

  • llm
  • langchain
  • rag
  • ai-agent
  • langgraph
젓인 댓글 1 좋아요 0 조회수 148

uv sync 시에 에러가 발생합니다.

미해결

LangGraph를 활용한 AI Agent 개발 (feat. MCP)

아래처럼 에러가 발생해요 (uv add -dev ipykerenel 역시) uv sync Resolved 227 packages in 1ms × Failed to build chroma-hnswlib==0.7.6 ├─ ▶ The build backend returned an error ╰─ ▶ Call to setuptools.build_meta.build_wheel failed (exit status: 1) [stdout] running bdist_wheel running build running build_ext clang++ -fno-strict-overflow -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -O3 -Wall -I/Users/hyungseok/.cache/uv/builds-v0/.tmprx1Zqg/include -I/opt/homebrew/opt/python@3.13/Frameworks/Python.framework/Versions/3.13/include/python3.13 -c /var/folders/yh/wqs1mg612sd3vr49_0qbbvtm0000gn/T/tmp95qf8z8x.cpp -o var/folders/yh/wqs1mg612sd3vr49_0qbbvtm0000gn/T/tmp95qf8z8x.o -std=c++14 clang++ -fno-strict-overflow -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -O3 -Wall -I/Users/hyungseok/.cache/uv/builds-v0/.tmprx1Zqg/include -I/opt/homebrew/opt/python@3.13/Frameworks/Python.framework/Versions/3.13/include/python3.13 -c /var/folders/yh/wqs1mg612sd3vr49_0qbbvtm0000gn/T/tmpjouomjdk.cpp -o var/folders/yh/wqs1mg612sd3vr49_0qbbvtm0000gn/T/tmpjouomjdk.o -fvisibility=hidden building 'hnswlib' extension clang++ -fno-strict-overflow -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -O3 -Wall -I/Users/hyungseok/.cache/uv/builds-v0/.tmprx1Zqg/lib/python3.13/site-packages/pybind11/include -I/Users/hyungseok/.cache/uv/builds-v0/.tmprx1Zqg/lib/python3.13/site-packages/numpy/_core/include -I./hnswlib/ -I/Users/hyungseok/.cache/uv/builds-v0/.tmprx1Zqg/include -I/opt/homebrew/opt/python@3.13/Frameworks/Python.framework/Versions/3.13/include/python3.13 -c ./python_bindings/bindings.cpp -o build/temp.macosx-15.0-arm64-cpython-313/python_bindings/bindings.o -O3 -stdlib=libc++ -mmacosx-version-min=10.7 -DVERSION_INFO=\"0.7.6\" -std=c++14 -fvisibility=hidden [stderr] ./python_bindings/bindings.cpp:1:10: fatal error: 'iostream' file not found 1 | #include <iostream> | ^~~~~~~~~~ 1 error generated. error: command '/usr/bin/clang++' failed with exit code 1 hint: This usually indicates a problem with the package or the build environment. help: chroma-hnswlib (v0.7.6) was included because inflearn-langgraph-lecture (v0.1.0) depends on chroma-hnswlib

  • 프롬프트엔지니어링
  • llm
  • ai-agent
  • langgraph
hyungseok.lee 댓글 4 좋아요 0 조회수 450

인기 태그

인프런 TOP Writers

주간 인기글