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"]
openai model = gpt-4o-mini 를 사용중입니다. 주피터노트북 실행을 하였는데 아래와 같은 에러코드가 나와서 해결방법 질문을 드립니다 ERROR:root:Error converting PDF to images: Unable to get page count. Is poppler installed and in PATH?
pip install tabulate uninstall , install 을 시행해도 되지 않습니다. 아래의 메시지만 나오고 있습니다. 해결책을 제시 부탁드립니다. ImportError : Missing optional dependency 'tabulate'. Use pip or conda to install tabulate.
from langchain_openai import OpenAI -> from langchain_community.llms import OpenAI 소스 변경함이 어떨까 의견 드립니다. pip install 한다고 시간 보내는데요. warning 무시하고 아래 명령어로 실행이 되긴합니다. 코린이라 오해없으시길 바랍니다. streamlit run '.\8. 랭체인-텍스트 요약 앱 만들기.py '
아래 코드 파일을(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)
안녕하세요 강사님 수업 도중 openai의 llm 모델이 아니라 개인적으로 ChatOllama를 이용해 gemma3 모델로 실습을 해 보고 있었는데, 스키마가 제대로 전달이 되었는데도 불구하고 llm이 서치를 위해 작성한 cypher 코드 상에서 오타가 나는 것을 발견했습니다. 우선 위와 같이 전달 되는 스키마는 제대로 [:DIRECTED] 로 작성되어 있음을 확인할 수 있고요. 반면 크리스토퍼 놀란이 감독한 영화를 찾기 위해 작성한 쿼리에서는 Llm이 [:DORECTED]로 오타를 내고 있습니다. (참고로 다른 예제에서는 정상적으로 동작하였습니다.) 이처럼 llm이 쿼리 작성 시에 오타를 내는 문제가 종종 발생하는 일인지 그렇다면 이 문제를 어떻게 해결 혹은 완화할 수 있는지 궁급합니다! 그냥 좀 더 똑똑한 모델을 쓰면 대체적으로 해결되는 문제인가요?
강사님 안녕하세요! 엣지 연결 마치고 계속 테스트하는데 중간에 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을 안한거라고 보면 될까요?
안녕하세요, 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/ 에서 확인을 해보니 아래와 같이 나오는데 지금 패키지 자체에 문제가 있는 걸까요?
안녕하십니까!! 기존 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로 변환하는 과정에 대부분 이러한 문제가 생기는지 궁금합니다.
안녕하십니까! 강의 잘 듣고 있습니다. 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 시 응답이 잘 오는 걸 봐서는 해당 모델을 사용하는데 문제는 없는 것으로 보입니다. 혹시 지금까지 어떤 문제점이 있는지 알 수 있을지요?
강사님 안녕하세요! 하단의 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}
안녕하세요 강사님 강의가 거의 대부분 이해가 될 듯 말듯합니다. 강의코드를 다 잘 아시니까, 이게 이런거고 저게저런거다라고 쭈욱 빠르게 얘기해주시는데, 이해시키기보단 강사님이 아시는걸 설명하시는 느낌이에요. 근데, 반쯤 이해되는 상태이고, 코드 따라 안써봐도 되겠죠? 커서로 짜주는 코드를 해석하는 능력을 기르는게 중요하다고 하셨으니까요..!! 일단 정주행해도 될지, 아니면 제가 방향을 잘못잡고있는지 궁금해서 질문남겼습니다!! 열의있게 강의해주셔서 감사합니다.
안녕하세요 강사님 정해져있는 문서를 Rag로 가져오는것이 아닌 openAPI에서 필요한 정보를 호출해서 가져오도록 만들고 싶습니다. openAPI에 requests로 호출해서 데이터를 가져오는 부분까지 완성했습니다. 수업중에 llm에게 dictionary 지정해주는것처럼 openAPI에서 호출한 정보를 rag로 가져오도록 하는 방법을 가르쳐주세요 감사합니다