묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)
[실습을 위한 환경 설정 방법] 자료가 없습니다.
자료 다운로드를 해도 toml파일만 있고 resaurant_wine.txt등의 파일들이 다 없는데 어디서 찾는걸까요..m2사용하고있습니다
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
같은 소스를 서로 다른 pc에서 실행시 정답률 차이가 생겨요
@tool def retriever_tool(query: str) -> str: """사용자의 질문에 기반하여 벡터 스토어에서 회사 HR 문서를 검색합니다. 이 도구는 RAG(Retrieval Augmented Generation) 방식을 사용하여: 가장 적합한 문서를 찾아냅니다. Args: query (str): 사용자의 질문 (미리 정의된 질문이 사용됨) Returns: str: 문서 내용 """ _response = _retriever.invoke(query) return _response _research_tools = [retriever_tool] _research_agent = create_react_agent( llm, tools=_research_tools, state_modifier='당신은 HR 담당자 입니다. 의견이 아닌 사실만 제공하세요' ) def _db_research_node(state: MainState) -> Command[Literal["supervisor_node"]]: """ HR 조사 node입니다. 주어진 State를 기반으로 HR 조사 에이전트를 호출하고, 결과를 supervisor node로 전달합니다. Args: state (MainState): 현재 메시지 상태를 나타내는 객체입니다. Returns: Command: supervisor node로 이동하기 위한 명령을 반환합니다. """ result = _research_agent.invoke({"messages" : state["messages"]}) print(f" db result : {result}") return Command( update={'messages': [HumanMessage(content=result['messages'][-1].content, name='db_research')]}, goto='supervisor_node' )이런 간단한 create_react_agent를 이용한 agent를 pip 버전이 약간다른 서로다른 pc에서 실행을 하였습니다. 첫 번째 피시에서는 LLM이 대답을 정말잘하지만 두 번째 피시에서는 전혀 엉뚱한 답변을 하며 정답률이 0%에 가깝게 나옵니다. from langgraph.prebuilt import create_react_agent이런 패키지 버전에 따라서 LLM의 추론 생각 능력 차이가 있나요? LLM과 vectordb, embedding 모델, 소스는 동일합니다. 피시 사양도 똑같고 langraph 패키지 버전차이만 존재합니다.
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
langgraph 이미지 표시 관련 draw_mermaid_png() TimeoutError 관련
안녕하세요.. langgraph 에서 graph_builder를 이용하여 노드와 엣지를 추가한 후에 compile한 후에 생성된 구조를 이미지로 표현하는 부분에서 오류가 발생합니다.혹시 이 오류가 왜 발생하는지, 어떻게 수정해야 하는지 알려주시면 좋겠습니다from IPython.display import Image, displaydisplay(Image(graph.get_graph().draw_mermaid_png()))이 부분을 실행하게 되면 다음과 같은 오류가 발생합니다.TimeoutError Traceback (most recent call last) File ~/Workspace/pythonprj/langgraphtutorial/.venv/lib/python3.12/site-packages/urllib3/connectionpool.py:534, in HTTPConnectionPool._make_request(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)533 try: --> 534response = conn.getresponse() 535 except (BaseSSLError, OSError) as e:.......ValueError: Failed to reach https://mermaid.ink/ API while trying to render your graph after 1 retries.이미지를 생성하는데 다른 사이트로 요청을 하는 것 같은데..timeout 오류가 발생하네요..
-
해결됨실리콘밸리 엔지니어와 함께하는 랭체인(LangChain)과 랭그래프(LangGraph) 그리고 MCP
MCP 서버 관련 질문이있습니다.
안녕하세요! 강의 잘 보고있습니다. MCP 관련해서 질문이 두 개 있습니다.# 1MCP튜토리얼과 이 강의, 유투브를 보고 MCP 서버를 개발중입니다.https://github.com/snaiws/DART-mcp-serverDART api연동하는 서버고 api가 83종류가 있습니다.FastMCP 사용하니 메인 스크립트에 함수를 매우 많이 적어야해서 팩토리클래스를 만들고, docstring을 따로 관리하고싶어 함수와 docstring을 분리해서 팩토리클래스에서 조립했습니다. 그런데 이렇게 만들고보니 FastMCP 개발방식 말고 from mcp.server import Server를 통해 좀 더 로우레벨로 만드는 방식도 있는 것 같았습니다. https://github.com/modelcontextprotocol/python-sdk여기의 Low-Level부분입니다.혹시 Low-level관련 영상도 업로드예정이 있으신가요?# 2MCP 서버에 툴을 83개나 만들면 tool calling하는데 헷갈려할 것 같은데 맞는지... 그리고 어떻게 대처가 가능할지 조언부탁드립니다 감사합니다.
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
2.2 PDF 전처리 강의에서 PDF 변환처리 관련해서..
안녕하세요.. 2.2 PDF 전처리 강의를 따라서 진행하고 있습니다. 동일한 openai 모델을 이용하고, pyzerox를 사용했는데, 강사님이 보여주시는 결과와는 다른 내용이 나와서, pyzerox 사용시 추가설정 부분이 빠졌는지 궁금하네요..제가 사용한 세법 pdf는 다음과 같이 표가 구성되어 있습니다. 이 테이블을 알려주신 pyzerox 패키지로 실행하고 나온 md 파일을 text로 변환했는데 다음과 같이 나옵니다.| 과세표준 | 세 율 ||------------------------------|------------------------------------------|| 1,400만원 이하 | 과세표준의 6번세트 || 1,400만원 초과 | 84만 원 + (1,400만원을 초과하는 금액의 15번세트) || 5,000만원 이하 | 624만 원 + (5,000만원을 초과하는 금액의 24번세트) || 8,800만원 이하 | 1,536만원 + (8,800만원을 초과하는 금액의 35번세트) || 8,800만원 초과 | 3,706만원 + (1,500만원을 초과하는 금액의 38번세트) || 3,000만원 초과 | 9,406만원 + (3,000만원을 초과하는 금액의 40번세트) || 5,000만원 초과 | 1,406만원 + (5,000만원을 초과하는 금액의 42번세트) || 10,000만원 초과 | 3,406만원 + (10,000만원을 초과하는 금액의 45번세트) |퍼센트가 번세트로 인식되어서 나오고, 각행도 두줄이 제대로 변환안되고 있는 상태이면서, 추출된 글도 틀립니다. 후반으로 갈 수록 테이블 값이 엄청나게 틀린데,. 이런 상태로는 원하는 RAG를 제대로 할 수 없을 것 같습니다. 이를 해결할 수 있는 방법을 자세히 알려주시면 좋겠습니다.
-
미해결RAG를 활용한 LLM Application 개발 (feat. LangChain)
배포 시 오류 (Chroma sqlite3 버전 오류)
안녕하세요 강사님.마지막 Streamlit Cloud 배포 후 버전 오류가 발생해서 질문 납깁니다!Python은 3.10.17 버전 사용하고 있습니다.retriever에 pinecone 사용하지 않고 Chroma 를 사용했고요, requirements.txt 에 버전은 langchain-chroma==0.2.3chromadb==0.6.3로 들어가 있습니다.오류는 unsupported version of sqlite3. Chroma requires sqlite3 >= 3.35.0.라고 뜨는 걸 보면 chromadb 에서 sqlite3 를 사용하고 그 버전 오류인 것 같은데요.. 어떻게 조치를 할지 검색해도 잘 모르겠어서 질문 남깁니다. 감사합니다.
-
해결됨AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)
최근 안내해주신 수강생 이벤트 관련 문의입니다.
최근 안내해주신 수강생 이벤트 관련 문의입니다.안녕하세요, 강사님.📌 AI에이전트 강의 수강생 특별 혜택이미 AI에이전트 강의를 수강 중이신가요? GraphRAG 강의 구매 시 <RAG 입문> 70% 할인쿠폰을 드립니다!이라고 이벤트 안내 주셨는데요.1. 여기서 언급하신 GraphRAG 강의는 "graphRAG - Neo4J로 구현하는 지식 그래프 기반 RAG 시스템 (feat. LangChain)"(정가 143,000원) 이 맞나요?2. 또한 여기서 언급하신 <RAG 입문> 70% 할인쿠폰은 RAG 마스터: 기초부터 고급기법까지 (feat. LangChain)(정가 121,000원) 이 맞나요?확인 후 추가로 수강신청 하려고 합니다. 답변 부탁드립니다. 감사합니다.
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
병렬 처리 질문 있습니다.
graph_builder.add_edge('get_tax_base_equation', 'calculate_tax_base') graph_builder.add_edge('get_tax_deduction', 'calculate_tax_base') graph_builder.add_edge('get_market_ratio', 'calculate_tax_base')2.7 병렬 처리를 통한 효율 개선 (feat. 프롬프트 엔지니어링).ipynb 에서 질문 있습니다.3개가 병렬로 실행된다면 분명 먼저 끝나는 노드가 있을 거고 그러면 완료 노드 순서에 맞게 calculate_tax_base를 실행해야 하지만 결과를 보면 calculate_tax_base를 한번만 실행하더라고요. 그러면 어떠한 조작 없이도 ranggraph에서 add_edge를 사용한 노드라면 자동으로 병렬 처리 완료 상태를 보관하고 3개가 전부 종료 된 후 실행된다고 이해했는데 맞을 까요? 제가 이해한게 맞다면 add_edge를 사용하지 않은 노드(Comand 명령어 사용한 노드)들의 병렬 처리에서 스레드 동기화 처리가 자동으로 안되기 때문에 반드시 add_edge를 반드시 사용해야하나요?이런 질문을 드리는 이유는 Command를 병렬로 처리해보고 있는데 궁금증이 생겨서 그렇습니다.! messages = [ {"role": "system", "content": system_prompt}, ] + state["messages"] response = llm.with_structured_output(Routers).invoke(messages) datasources = [router['next'] for router in response['nexts']] print(datasources) # FINISH를 analyst_node로 변환 goto_nodes = [ "analyst_node" if ds == "FINISH" else ds for ds in datasources ] # 병렬 실행을 위해 전체 리스트 반환 return Command(goto=goto_nodes)
-
미해결AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)
AI 에이전트로 구현하는 RAG 시스템 수강생입니다.
공지사항보고 메세지 남깁니다.AI 에이전트로 구현하는 RAG 시스템 수강생인데70퍼 쿠폰은 어떻게받을수있을까요?
-
미해결RAG를 활용한 LLM Application 개발 (feat. LangChain)
3.2.1 Upstage 로 embedding 하실때에 typeError..
3.2.1 OpenAIEmbeddings 대신 UpstageEmbeddings를 활용하는 방법 으로 실습 예제 하고 있는데요기존 예제로 하면 chain_type 이 없이 동영상자료에서는 그대로 실행되었는데, 실제로 해보니 chain_type 이 2번째로 와야 하는데 없어서 오류가 뜨더라구요,...아래는 동영상에서 실행되는 코드 입니다.from langchain.chains import RetrievalQA qa_chain = RetrievalQA.from_chain_type( llm, retriever=database.as_retriever(), chain_type_kwargs={"prompt": prompt} ) TypeError Traceback (most recent call last) Cell In[17], line 3 1 from langchain.chains import RetrievalQA ----> 3 qa_chain = RetrievalQA.from_chain_type( 4 llm, 5 database.as_retriever(), 6 chain_type_kwargs={"prompt":prompt} 7 )가 뜨게 되는데 확인해 보니, from langchain.chains import RetrievalQA qa_chain = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", # 기본 체인 타입 (원하면 "map_reduce"도 가능) retriever=database.as_retriever(), chain_type_kwargs={"prompt": prompt} ) chain_type 이 빠져서 안돌아 가더라구요..chain_type 을 넣어주면 잘 돌아갑니다. 혹시나 저처럼 헤메이실 분을 위해 올려둡니다. OpenAI 유료결제 안하는 바람에 Upstage로 따라해보려고 하는데...앞으로의 강의는 OpenAI 로 작성되는것 같아서 유료결제를 해야 할까요...??그리고 로컬 Ollama 로 하는 영상도 시간 나시면 올려주시면 좋겠어요~^^덕분에 langChain 의 l 도 모르던 제가 따라하게 되네요 좋은 영상 감사합니다.
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
supervisor_node에 messages 설명해주세요
3.7 찐 Multi-Agent System (feat. create_react_agent) 에 구현하신 def supervisor_node안에 messages = [ {"role": "system", "content": system_prompt}, ] + state["messages"]해당 소스 Message에 system을 이렇게 선언하는게 맞는지 이해가 가질 않습니다. 선생님 설명에서는 analyst_node안에 invoke할 때 supervisor_node안에 넣었던 systemprompt는 불필요해서 아래 소스처럼 result = analyst_chain.invoke({'messages': state['messages'][1:]})[1:]를 하신다고 설명하셨는데 analyst_node 안에서 state['messages']를 print함수로 확인해 봤더니 systemmessage가 들어있지 않았습니다. messagestatas에 messages에 system메세지를 추가하기 위해서 고민하다 systemMessage를 넣었더니 선생님 설명대로 됐지만 무슨 차이인지 잘 모르겠습니다. 아마 예상하기에는 MessageState가 SystemMessage, AIMessage, HumanMessage 밖에 허용을 안 하는 것 같은데 맞나요? 어떤게 올바른 방법인가요? messages = [ SystemMessage(content=system_prompt), ] + state["messages"]
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
income_tax_collection 폴더와 첨부 파일도 git에 있으면 좋겠습니다
2.2의 크로마 생성하는 부분, 리트리벌 설정하는 부분에서 계속 에러가 발생하여서 크로마 생성이 잘 안됩니다... 2.3에서는 생성된 크로마 기반으로 이어지는데 진행할수가 없습니다 ㅠㅠ git 에 올려주시면 감사드리겟습니다
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
markdown 스플리터에서 에러발생
from langchain_community.document_loaders import UnstructuredMarkdownLoader markdown_path = "./documents/income_tax.md" loader = UnstructuredMarkdownLoader(markdown_path) document_list = loader.load_and_split(text_splitter)위 코드를 주피터에서 실행하였는데 아래와 같은 nltk 에러가 나옵니다.... [nltk_data] Error loading averaged_perceptron_tagger_eng: <urlopen [nltk_data] error [SSL: CERTIFICATE_VERIFY_FAILED] certificate [nltk_data] verify failed: unable to get local issuer certificate [nltk_data] (_ssl.c:1028)> [nltk_data] Error loading punkt_tab: <urlopen error [SSL: [nltk_data] CERTIFICATE_VERIFY_FAILED] certificate verify failed: [nltk_data] unable to get local issuer certificate (_ssl.c:1028)> 몇번을 시도해봐도 같은 에러가 발생하는데 어떻게 해결해야하나요
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
zerox를 이용한 pdf 파일 전처리 부분
openai model = gpt-4o-mini 를 사용중입니다. 주피터노트북 실행을 하였는데 아래와 같은 에러코드가 나와서 해결방법 질문을 드립니다 ERROR:root:Error converting PDF to images: Unable to get page count. Is poppler installed and in PATH?
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
uv sync 설치후 vs code 에서 .venv 커널에서 pip 치 오류
안녕하세요 uv sync 로 해서 패키지 설치후에 vs code로 노트북 커널 설정이 아래와 같은 오류가 나옵니다. 해결방법이 궁금합니다.
-
미해결하루만에 끝내는 생성형 AI 핵심 정리
Missing optional dependency 'tabulate'
pip install tabulateuninstall , install 을 시행해도 되지 않습니다.아래의 메시지만 나오고 있습니다. 해결책을 제시 부탁드립니다.ImportError: Missing optional dependency 'tabulate'. Use pip or conda to install tabulate.
-
미해결하루만에 끝내는 생성형 AI 핵심 정리
[warning 무시하고 하기] from langchain_openai import OpenAI
from langchain_openai import OpenAI -> from langchain_community.llms import OpenAI 소스 변경함이 어떨까 의견 드립니다.pip install 한다고 시간 보내는데요.warning 무시하고 아래 명령어로 실행이 되긴합니다. 코린이라 오해없으시길 바랍니다.streamlit run '.\8. 랭체인-텍스트 요약 앱 만들기.py'
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
mcp 실행 관련하여 질문드립니다.
아래 코드 파일을(example2.py) 실행하는데 에러가 발생합니다from mcp.server.fastmcp import FastMCP mcp = FastMCP("Demo") @mcp.tool() def add(a: int, b: int) -> int: return a + b if __name__=="__main__": mcp.run(transport='stdio') 1.mcv dev로 실행하는 경우 mcp_stdio_server.py를 실행해도 아래와 같은 에러가 발생합니다 2. python으로 실행하는 경우-빈 화면으로만 뜸-mcp_stdio_server.py를 실행하면 아래처럼 뜨는데 해당 링크를 클릭하면 연결할 수 없습니다 라고 나옵니다 uv run으로 실행하는 경우
-
미해결graphRAG - Neo4J로 구현하는 지식 그래프 기반 RAG 시스템 (feat. LangChain)
Text2Cypher 기법에서 Llm이 작성하는 cypher 코드의 오타 발생 문제
안녕하세요 강사님 수업 도중 openai의 llm 모델이 아니라 개인적으로 ChatOllama를 이용해 gemma3 모델로 실습을 해 보고 있었는데, 스키마가 제대로 전달이 되었는데도 불구하고 llm이 서치를 위해 작성한 cypher 코드 상에서 오타가 나는 것을 발견했습니다. 우선 위와 같이 전달 되는 스키마는 제대로 [:DIRECTED] 로 작성되어 있음을 확인할 수 있고요. 반면 크리스토퍼 놀란이 감독한 영화를 찾기 위해 작성한 쿼리에서는 Llm이 [:DORECTED]로 오타를 내고 있습니다. (참고로 다른 예제에서는 정상적으로 동작하였습니다.) 이처럼 llm이 쿼리 작성 시에 오타를 내는 문제가 종종 발생하는 일인지그렇다면 이 문제를 어떻게 해결 혹은 완화할 수 있는지 궁급합니다! 그냥 좀 더 똑똑한 모델을 쓰면 대체적으로 해결되는 문제인가요?
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
human-in-the-loop질문드립니다
강사님 안녕하세요! 엣지 연결 마치고 계속 테스트하는데 중간에 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을 안한거라고 보면 될까요?