AI 관련 직군이 아니더라도 AI에 대한 능력을 가지고 있어야 하는 추세같은데 여기서 말하는 AI에 대한 능력이 무엇을 말하는 것일까요? n8n을 사용해서 AI를 도입한다던지,, 필요시 랭체인 개발을 할 수 있는 능력이라던지,, AI지식이 없어 추상적으로 여쭤보는 점 죄송합니다.
안녕하세요. 해당 챕터에서 강의 내용과 실행 결과 간 매치가 잘 안되는 듯 느껴져 문의드립니다. from langchain_core.messages import HumanMessage for chunk in graph.stream({'messages': [HumanMessage('3에다 5를 더하고 거기에 8을 곱하면?')]}, stream_mode='values'): chunk['messages'][-1].pretty_print() 강의 화면에서 위와 같은 query 에 대해 노드 단위로 출력한 결과를 보면, 첫 번째 Ai Message 는 Tool Calls 로 add 과 multiply 두 툴에 대한 요청을 함께 생성하고 다음 Tool Message 로 multiply 의 결과 64 를 반환, 두 번째 Ai Message 는 Tool Calls 로 multiply 만 생성하고 다음 Tool Message 로 결과 64를 반환하고 있습니다. 근데 강의에서는 첫 번째 Ai Message 에 대해 "먼저 덧셈을 실시합니다. 그러니까 multiply(?) 라는 툴이 64를 주고, 근데 task 가 두 개니까 task 에서 도구 호출을 또 하는 겁니다. 그런 다음에 64라는 답이 나오고..." 라고 녹화되어 있는데... 이게 무슨 얘기인지 잘 와닿지가 않네요.. 녹화 당시의 실행 결과와 상관없이 add 한 번 호출 후 multiply 한 번 호출에 대한 설명인 걸까요? 아니면 병렬 도구 호출에 대한 설명인 걸까요? 감사합니다.
안녕하세요!! n8n으로 데이터 자동화 워크플로를 만들고 있는데 데이터 전처리 작업을 어떻게 구성하는 게 좋을지 고민이 됩니다. 실무에서는 보통 n8n 내부 Python 노드로 어느 정도 수준까지 전처리를 하고 복잡한 전처리가 필요한 경우에 외부 Python 환경과 연동하는 좋은 방법이 있을까요? n8n과 Python을 함께 쓰는 효율적인 구조가 있다면 조언 부탁드립니다.
실무에서 Text-to-SQL 시스템을 구축하면서 고민이 생겼습니다. 현재 상황: 간단한 단일 테이블 조회는 잘 동작하는데, 실제 업무 데이터로 넘어가니 여러 도메인을 JOIN해야 하는 복잡한 쿼리에서 정확도가 많이 떨어집니다. 고려 중인 해결 방안: 도메인별로 AI 모델을 분리하는 구조를 생각하고 있습니다. 사용자 질문이 들어오면 라우터가 적절한 도메인 모델로 연결하고, 해당 모델이 쿼리를 생성하는 방식입니다. 이렇게 하면 각 도메인에 특화되어 정확도가 올라갈 것 같습니다. 걸림돌: 문제는 여러 도메인(예: A, B, C)의 데이터를 함께 조회해야 하는 경우입니다. 예를 들어 "지난 분기 매출 상위 고객들의 최근 주문 배송 현황"처럼 매출(A), 고객(B), 배송(C) 도메인이 모두 엮인 질문이 들어오면 어떻게 처리해야 할까요? 질문: 이런 크로스 도메인 쿼리는 실무에서 보통 어떻게 해결하나요? 도메인별 분리 구조가 맞는 방향인지, 아니면 전체를 아우르는 통합 모델이 나은지 조언 부탁드립니다.
안녕하십니까 강사님! 덕분에 강의 너무 유익하게 잘 들었습니다! 강의 들으면서 궁금했던 점을 질문 드립니다. 1. 워크플로우와 에이전트 혹은 커스텀 도구 등 선택 기준에 대하여는 명확한 기준이 있다기보다는 성능 비교를 통해 정확도, 토큰 사용량, 시간 등 이러한 지표들을 테스트 해가며 적절한 에이전트 혹은 워크플로우로 구축하면 될까요? 아니면 사용하는 호출 모델을 이해하여 그 모델에 맡게 최적화를 해야할까요? 이러한 부분들이 강의 들으면서 궁금했습니다! 2. 학사 졸업생 및 신입으로 프롬포트 엔지니어링 등 이러한 분야로 취업 준비를 한다면 기업들이 원하는 인재상은 어떤지도 궁금합니다! RAG기술을 어느정도 이해하고 구축하며 또 추가적으로 도움될 기술이 있는지 궁긍합니다. 수준 높은 강의를 듣게 되어 영광입니다. 앞으로도 강사님의 강의 많이 참고하겠습니다. 감사합니다!!
안녕하세요! human-in-the-loop에 대해서 질문드립니다. 랭그래프에서 워크플로우를 정의할 때, LLM응답 후 reivew 작업을 노드에 추가하여 human-in-the-loop를 구현할 수 있다고 이해하였습니다. 이때, LLM응답이라는 작업이 끝나지 않아도(응답이 stream으로 생성되는 도중에도) 사람이 review할 수 있도록 구현할 수 있을까요? 생성되던 응답을 일시 정지 시키고, 응답 history를 토대로 tool이나 args를 변경시킬수 있을지 궁금합니다.
프로젝트 소스 코드의 개발 히스토리 또는 문서화를 위해 도움을 줄 수 있는 모델을 생성 할 수 있을까요? 코드에 주석을 다는 것이 아닌 개발 중인 프로젝트 코드에 특정 시간 또는 날짜를 기준으로 개발 히스토리를 개별 자동 생성 및 관리화 해서 추후에 개발자가 문서화를 위해 참고 할 수 있는 정보를 얻고 싶어요
안녕하세요 강사님, 강의 잘 보고 있습니다. "n8n API와 Streamlit으로 만드는 이메일 작성 봇" 강의 중 9분 04초쯤 AI Agent 노드의 Memory(Simply Memory) 설정 부분에서 질문이 있습니다. 강의 초반에는 " When chat message received " 노드를 사용하셨는데, 이 경우 워크플로우가 지속적으로 실행되면서 세션이 유지되므로 AI Agent가 이전 대화 내용을 기억할 수 있습니다. 그런데 강의 후반부에서 "When chat message received" 노드를 " Webhook " 노드로 변경하셨습니다(Streamlit 사용을 위해). Webhook을 사용하면 사용자의 각 질문마다 워크플로우가 새롭게 실행되고, 실행이 끝나면 세션이 종료되는 것 으로 알고 있습니다. 이런 구조에서는 Simple Memory가 각 Webhook 호출 간 대화 내용을 유지하지 못해, AI Agent가 이전 대화를 참고할 수 없는 것 아닌가요? Webhook 방식에서도 대화 맥락을 유지하려면 Simple Memory 대신 Redis Chat Memory나 Postgres Chat Memory 같은 영구 저장소 기반 메모리를 사용해야 하는 것이 맞는지 궁금합니다. 감사합니다.
안녕하세요. 강의 잘 듣고 있습니다. 강사님 혹시 이런 이슈 만난 적 있으신가요? n8n 에서 pdf 파일을 binary 형식으로 supabase vector store 입력 중 생기는 에러 입니다. 어떤 pdf 파일은 되고 어떤 pdf 파일은 에러 발생으로 멈춥니다. binary 를 json 으로 변경 후 DB table 쪽 jsonb 컬럼에 입력 할 항목 스캔하면 '\x00' 문자들이 몇개 있습니다. python 직접 코딩 streamlit, LangChain 으로 같은 로직, 같은 파일을 supabase vector store로 입력하면 문제 없이 임베딩 처리 후 입력이 됩니다. Issues: Error inserting: unsupported Unicode escape sequence 400 Bad Request
답변이 hallucinated인지 판별하는 노드에서 max_tokens를 100으로 설정했을 때는 올바르게 판단이 됐습니다. 그렇다면, 답변의 길이가 너무 길어서 모델이 hallucination 여부를 제대로 판별하지 못했다고 보신 건가요? 다만 이런 경우라면, 답변의 길이를 조정하기보다는 hallucination 여부를 판별하는 모델 자체를 조정하는 게 더 적절하지 않을까요? 실무 환경에서도 이런 상황이 발생할 수 있을 것 같은데, 보통은 답변 생성 모델을 판별 모델에 맞추는 게 일반적인지, 아니면 판별 모델을 답변 생성 모델에 맞추는 게 더 낫다고 보는지 궁금합니다.
안녕하세요 강사님 강의 잘보고있습니다. 다름이 아니라, 광고일을 하고있어서 n8n으로 네이버대용량보고서 api를 불러온 후, 다운 -> 빅쿼리에 데이터 적재 -> 루커스튜디오시각화 위 과정으로 자동화워크플로우를 짜고있는데요, 현재 대용량보고서 다운로드 단계에서 막혀서, 혹시 이 부분에 대해서 도움을 받을 수 있을지 문의드립니다.
노드에게 데이터를 전달하려고 하는데요. 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를 통과하여 데이터를 전달할 수는 없나요?
안녕하세요 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을 사용해야 할까요? 혹은 적합한 다른 구조가 있을까요?
안녕하세요. Windows, VSC, Jupyter notebook 환경에서 stdio 기반 MCP 서버들을 테스트할 때 아래와 같은 에러가 발생하네요. unix 계열 OS 에서는 발생하지 않는 건가요? io.UnsupportedOperation: fileno .py 파일로 작성해서 실행할 때는 문제 없이 동작합니다.