묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결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를 통과하여 데이터를 전달할 수는 없나요?
-
미해결회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
노션 파일 업로드가 가능한가요?
안녕하세요. 노션 연동까지 잘 들었습니다.노션 API를 통해 파일을 업로드할 수 있을까요?노션 페이지에 텍스트 작성은 잘 되는데 파일 첨부가 안되네요.레딧 보니까 되는것 같던데, 며칠동안 고민해도 안되네요.
-
미해결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을 사용해야 할까요? 혹은 적합한 다른 구조가 있을까요?
-
미해결회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
24강 io.UnsupportedOperation: fileno 에러 (stdio MCP 사용)
안녕하세요.Windows, VSC, Jupyter notebook 환경에서 stdio 기반 MCP 서버들을 테스트할 때 아래와 같은 에러가 발생하네요. unix 계열 OS 에서는 발생하지 않는 건가요?io.UnsupportedOperation: fileno.py 파일로 작성해서 실행할 때는 문제 없이 동작합니다.
-
미해결회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
22. 슬랙봇으로 연결하는 Test-to-SQL 강의, query string newline
안녕하세요.슬랙에 표시될 때 가끔 Query 가 줄바꿈 없이 표시됩니다. query 생성 LLM 이 개행문자 '\n' 없이 출력해 주는 경우가 있네요.대부분은 아래와 같이 표시되지만요.
-
미해결회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
22. 슬랙봇으로 연결하는 Test-to-SQL 강의에서 Request URL 설정
안녕하세요.로컬에 n8n 설치해 강의 실습하고 있습니다. (localhost:5678)22강의 Event Subscriptions 과정에서 Request URL 로의 request 가 실패하고 있습니다. response 가 오긴 하는 거 같은데 challenge 파라미터 값이 없다고.. localhost 일 때는 추가 조치가 필요할까요?
-
미해결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
-
해결됨회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
강의 실습 코드를 깃허브 정리
안녕하세요, 병진님. 현재 n8n 강의 잘 수강하고 있습니다. 다름이 아니라,강의를 보면서 따라한 코드를 제 깃허브 학습 및 정리 차원에서 업로드하고 싶은데, 혹시 이러한 방식으로 업로드해도 될지 괜찮을지 여쭤봅니다.만약 허용되지 않은 부분이 있다면 말씀 하신대로 따르겠습니다!늘 좋은 강의 감사드립니다!
-
미해결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 때문일까요? 아니면 다른 부분에 있는 걸까요?
-
미해결AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)
모델의 성능에 따라서 선택하는 도구가 많이 차이 나나요?
현재 섹션 2.16번 강의 학습 중에 있습니다.ollma를 통해서 gpt-oss:20b 모델을 로컬로 연결해서 학습하고 있는데, search_web 도구로만 응답을 하더라구요. 아무리 쿼리를 바꿔도 wiki_summary, wiki_search 와 같은 도구를 호출해서 응답을 작성하지 않습니다. 혹시 제가 놓치고 있는게 있을까요?
-
해결됨회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
뉴스 스크랩시 content를 가져오는 대신 더 효율적인 방안은 무엇일까요?
안녕하세요. 네이버 뉴스 스크립 시 content를 그대로 사용하니 불필요한 정보가 너무 많아서 LLM이 이를 처리하는데 시간도 오래 걸리고, 토큰 비용도 불필요하게 소모되는 것 같은데 혹시 범용적으로 사용 가능한 대안이 있다면 무엇일까요?웹 지식이 부족해서 반복 시청하며 공부 중인데 저 부분에 대해 조언 주시면 감사하겠습니다!
-
미해결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 을 맞추려고 해야 되는건지... 요런 부분들이 궁금합니다! 긴 글 읽어주셔서 감사합니다!
-
해결됨회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
Route 53에서 도메인과 로드밸런스 연결 부분
n8n AWS로 배포하기 (정석버전)강의에서는 aws에서 산 도메인이라 Hosted zone에 뜨는것으로 추측되는데, 외부 도메인에 ACM 인증서까지 적용하여 어플리케이션 로드밸런스를 AWS에 만든 상태입니다. 위의 이미지 과정을 외부 도메인에서는 어떻게 로드밸런스와 연결하는지 궁금합니다.
-
해결됨회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
ACM에서 staus가 pedding
ACM에서 staus가 pedding validation입니다.도메인은 강의에서 나온 도메인으로 설정했는데, 제가 따로 도메인을 구매해야하나요?ACM이 pendding 상태라 ALB에서 ACM 선택이 불가능합니다.
-
해결됨회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
강의와 다르게 API_KEY 일부만 넣으면 인증 오류가 발생하는 현상
n8n에서 Header Auth Account에 Authorization이라는 이름을 넣고 value 값을 입력한 뒤, 실제로는 __n8n_BLANK_VALUE_e5362baf-~ 이런 식으로 표시되는 것을 확인했습니다.그래서 저는 e5362baf- 부분을 API_KEY로 넣어줬는데 계속 인증 오류(Authorization data is wrong!%)가 발생했습니다.그런데 실제로 넣어준 value 전체를 그대로 사용했을 때는 정상적으로 {"message":"Workflow was started"}% 응답이 왔습니다.다만 강의에서는 e5362baf- 값만 넣어줘도 {"message":"Workflow was started"}% 응답이 나오던데, 제 경우에는 전체 value를 넣어야만 동작했습니다.무슨 차이일까요? 저도 e5362baf 값으로 넣어서 하고 싶은데..어떻게 해야될까요?
-
미해결AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)
Fan-in 시 여러개 노드에서 하나로 병합되는 과정에서 질문 입니다.
Fan in 되면서 3개 노드에서 1개 노드로 병합되는 과정에서, 그 1개 노드는 3개 노드가 전부 연산을 끝낼때까지 기다린 후 실행 되는건가요??
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
yfinance 의 응답 (char 0)
안녕하세요 강의 잘 듣고 있습니다 ^^강의 진행중 yfinance. 의 응답이 (char 0) 이 나오는데요, 구글링 해보니 같은 경우가 과거에도 있었더라구요.해당 api. 서버가 죽은건지, 무엇인지 알수가 없네요대채 할수 있는 방법이 있을까요?
-
해결됨회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
Streamlit으로 만든 것 Dockerfile 만들어주실 수 있을까요?
UV로 패키지가 관리되고 있는데요. 이거 간단하게 Docker로 올려보려고 하는데요.혹시 Dockerfile 샘플로 올려주실 수 있을까요? :)
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
window 11 환경 셋팅
안녕하세요! langraph를 업무에 사용예정이여서 강의 수강중입니다.윈도우 환경셋팅이 필요해서 다음 에러를 해결해서 개발환경 셋팅을 완료했습니다.앞으로 강의를 수강하는데 다음 uvloop 패키지가 없어도 괜찮을까요? chroma-hnswlib 도 무시하고 설치로 해도 괜찮은지 궁금합니다.가능하다면 윈도우 환경에서의 패키지 모듈 관리도 되면 좋을 것 같습니다 🙂 uvloop window 환경에서는 무시하고 설치하도록 변경'uvloop; sys_platform != "win32"', # ⬅ Windows에서는 설치 안 함chroma-hnswlibVisual C++ Build Tools 설치
-
해결됨회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
Gamil Trigger 관련 이슈
Gmail Trigger가 Naver에서 받은 이메일에는 반응하지 않네요? 의도한건지 이슈인지 모르겠지만 저는 당연히 해당 이메일 계정으로 온 모든 메일에 대해 반응할 거라 생각했는데 아니라서 당황했네요. 다른 분들 참고하시라고 글 남깁니다!