최근 안내해주신 수강생 이벤트 관련 문의입니다. 안녕하세요, 강사님. 📌 AI에이전트 강의 수강생 특별 혜택 이미 AI에이전트 강의를 수강 중이신가요? GraphRAG 강의 구매 시 <RAG 입문> 70% 할인쿠폰을 드립니다! 이라고 이벤트 안내 주셨는데요. 1. 여기서 언급하신 GraphRAG 강의는 "graphRAG - Neo4J로 구현하는 지식 그래프 기반 RAG 시스템 (feat. LangChain)"(정가 143,000원) 이 맞나요? 2. 또한 여기서 언급하신 <RAG 입문> 70% 할인쿠폰은 RAG 마스터: 기초부터 고급기법까지 (feat. LangChain)(정가 121,000원) 이 맞나요? 확인 후 추가로 수강신청 하려고 합니다. 답변 부탁드립니다. 감사합니다.
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)
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?
아래 코드 파일을(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으로 실행하는 경우
강사님 안녕하세요! 엣지 연결 마치고 계속 테스트하는데 중간에 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}