14. 유튜브 요약 챗봇 만들기: 텔레그램 인터랙션과 n8n으로 구현하는 AI 자동화 장에서 012-youtube-transcript-telegram-callbak 만들때 텔레그램 노드를 사용하려고 하니, 아래 그림과 같이 Credential to connect with 부분에서 "Due to Telegram API limitations, you can use just one Telegram trigger for each bot at a time " 와 같이 표시되면서 테스트가 실패되네요. 어떻게 해야 할까요?
안녕하세요, 그간 여러 질문을 올렸었는데 친절하고 정확하게 안내해 주셔서 잘 해결해 나가고 있어서 감사드립니다. 006-gmail-email 에서 궁금한 점인데요. Test workflow를 실행하면 두개 트리거가 실행되지 않고, 한개 트리거만 실행이 되어서요. 아래 이미지는 Test workflow 후의 모습인데요, NaverMail 만 트리거가 실행되고, Gmail Trigger는 실행이 되지 않았습니다. 무언가 조치를 추가적으로 하지 않아서 생기는 정상적인 상황인지 문의 드립니다.
IMAP 에서 영상을 주욱 따라 하고 있다가 get Many 단계에서 첨부한 이미지 처럼 test step 을 클릭 하니까 오른편과 같이 설정을 하라는 얘기가 나옵니다. 왼편은 가렸지만 내용은 잘 나왔습니다. 뭐가 잘못 된 걸까요?? 그래서 Settings 에 들어가서 Always Output Data 를 켰더니.. 처럼 나옵니다.. 왜 그럴까요??
안녕하세요 남박사님 8. Gmail 연동부터 자동 응답까지: 이메일 AI 에이전트 완전 구축법 21:27 ・ 수업 자료 강의를 듣던 와중에, 강의에서 알려주신 대로 진행해서 지메일 이메일 트리거를 하려고 했으나 2단계 비밀번호를 넣고 "test step" 을 눌렀는데 작업이 끝나질 않습니다... 왜일까요?
안녕하세요 강의 보다가 헷갈리는 부분이 있어서 질문드립니다 질문1. 3.3 LangGraph에서 도구(tool) 활용 방법 아래 agent 함수는 여러번 호출되는데 리턴하는 부분에서 새로운 배열을 만드는것 처럼 보이지만 add_messages에 의해 자동으로 누적되어 멀티턴 대화가 된다고 이해하면 맞을까요? def agent(state: MessagesState) -> MessagesState: """ 에이전트 함수는 주어진 상태에서 메시지를 가져와 LLM과 도구를 사용하여 응답 메시지를 생성합니다. Args: state (MessagesState): 메시지 상태를 포함하는 state. Returns: MessagesState: 응답 메시지를 포함하는 새로운 state. """ # 상태에서 메시지를 추출합니다. messages = state['messages'] # LLM과 도구를 사용하여 메시지를 처리하고 응답을 생성합니다. response = llm_with_tools.invoke(messages) # 응답 메시지를 새로운 상태로 반환합니다. return {'messages': [response]} 질문2. 3.5 Agent의 히스토리를 관리하는 방법 MemorySaver()의 목적은 주피터 노트북 각 블록을 사용하는데 있어 그 전에 실행해서 얻은 message를 메모리에 저장후 다음 요청 (update_query)에 반영하기 위해 사용된게 맞을까요?
from langchain_core.messages import SystemMessage def agent(state: AgentState) -> AgentState: """ 주어진 `state`에서 메시지를 가져와 LLM과 도구를 사용하여 응답 메시지를 생성합니다. Args: state (AgentState): 메시지 기록과 요약을 포함하는 state. Returns: MessagesState: 응답 메시지를 포함하는 새로운 state. """ # 메시지와 요약을 state에서 가져옵니다. messages = state['messages'] summary = state['summary'] # 요약이 비어있지 않으면, 요약을 메시지 앞에 추가합니다. if summary != '': messages = [SystemMessage(content=f'Here is the summary of the earlier conversation: {summary}')] + messages # LLM과 도구를 사용하여 메시지에 대한 응답을 생성합니다. response = llm_with_tools.invoke(messages) # 응답 메시지를 포함하는 새로운 state를 반환합니다. return {'messages': [response]} 부분에 summary = state['summary'] agent시작하자마자 summary를 넣게되는데 해당 소스부분은 몇 번을 질문해도 처음에는 빈값이 들어가는게 맞나요? summary를 연속질문에 처음 시작 부터 적용하기 위해서는 아래처럼 session정보를 받아서 처리해야하는지 궁금합니다. from langchain_core.messages import HumanMessage query = '안녕' for chunk in graph.stream({'messages': [HumanMessage(query)], 'summary': graph.get_state(config).values['summary']}, config=config, stream_mode='values'): chunk['messages'][-1].pretty_print()
안녕하세요, 005-email 쫓아가고 있는 중인데요, Switch 다음의 IMAP (getMailLsList:email) 부분에서 문제가 해결이 안되네요. 위에서 보시는 것처럼 IMAP 셋팅한 후에 Test Step 버튼을 눌러도 OutPut 이 괄호만 나오고 데이터가 나오지 않습니다. 강의에서는 아래와 같이 OutPut 이 나오는 것으로 보이는데요... 여러번 강의를 돌려보며 어디가 문제인지 찾아도 못찾겠습니다. 도와주시면 감사하겠습니다.
모두를 위한 대규모 언어 모델 LLM Part 5 - LangGraph로 나만의 AI 에이전트 만들기
안녕하세요.. 수업노트에 있는 storm colab 파일을 따라 하는데.. import json from langchain_core.runnables import RunnableConfig async def gen_answer( state: InterviewState, config: Optional[RunnableConfig] = None, name: str = "Subject_Matter_Expert", max_str_len: int = 15000, ): swapped_state = swap_roles(state, name) # Convert all other AI messages # 쿼리 생성 queries = await gen_queries_chain.ainvoke(swapped_state) query_results = await search_engine.abatch( queries["parsed"].queries, config, return_exceptions=True ) successful_results = [ res for res in query_results if not isinstance(res, Exception) ] # url와 콘텐츠 추출 all_query_results = { res["url"]: res["content"] for results in successful_results for res in results } # We could be more precise about handling max token length if we wanted to here dumped = json.dumps(all_query_results)[:max_str_len] ai_message: AIMessage = queries["raw"] tool_call = queries["raw"].tool_calls[0] tool_id = tool_call["id"] tool_message = ToolMessage(tool_call_id=tool_id, content=dumped) swapped_state["messages"].extend([ai_message, tool_message]) # Only update the shared state with the final answer to avoid # polluting the dialogue history with intermediate messages generated = await gen_answer_chain.ainvoke(swapped_state) cited_urls = set(generated["parsed"].cited_urls) # Save the retrieved information to a the shared state for future reference cited_references = {k: v for k, v in all_query_results.items() if k in cited_urls} formatted_message = AIMessage(name=name, content=generated["parsed"].as_str) return {"messages": [formatted_message], "references": cited_references} 이 부분에서 궁금한 것이 생겼습니다. 중간에 tool_call = queries["raw"].tool_calls[0] tool_id = tool_call["id"] 중간에 tool_calls 관련 정보를 호출하는데..그럴려면 gen_queries_chain 이 체인에 tool_bind된 llm이 사용되어야 하는 것 아닌가요? duckduckgo 관련 search_engine함수를 @tool을 이용해서 tool로 선언한 것 같은데.. 해당 퉁을 llm에 바인딩하는 것을 못보아서.. tool index 부분에서 Cell In[46], line 30, in gen_answer(state, config, name, max_str_len) 28 dumped = json.dumps(all_query_results)[:max_str_len] 29 ai_message: AIMessage = queries["raw"] ---> 30 tool_call = queries["raw"].tool_calls[0] 31 tool_id = tool_call["id"] 32 tool_message = ToolMessage(tool_call_id=tool_id, content=dumped) IndexError: list index out of range 가 발생하는 것 같습니다. 어떻게 수정하면 되는지 알려주세요..
os: 윈도우10입니다 uv version: uv 0.7.5 (9d1a14e1f 2025-05-16) x Failed to build `uvloop==0.21.0` |-> The build backend returned an error `-> Call to `setuptools.build_meta.build_wheel` failed (exit code: 1) [stderr] Traceback (most recent call last): File "<string>", line 14, in <module> requires = get_requires_for_build({}) File "C:\Users\wyhil\AppData\Local\uv\cache\builds-v0\.tmpwlGSc0\Lib\site-packages\setuptools\build_meta.py", line 331, in get_requires_for_build_wheel return self._get_build_requires(config_settings, requirements=[]) ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\wyhil\AppData\Local\uv\cache\builds-v0\.tmpwlGSc0\Lib\site-packages\setuptools\build_meta.py", line 301, in _get_build_requires self.run_setup() ~~~~~~~~~~~~~~^^ File "C:\Users\wyhil\AppData\Local\uv\cache\builds-v0\.tmpwlGSc0\Lib\site-packages\setuptools\build_meta.py", line 317, in run_setup ~~~~^^^^^^^^^^^^^^^^ File "<string>", line 8, in <module> import setuptools.build_meta as backend ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ RuntimeError: uvloop does not support Windows at the moment hint: This usually indicates a problem with the package or the build environment.
docker 설치 후에 관리자 창에 github-n8n 페이지에서 gpu user용으로 아래 문구를 한줄 씩 입력하라고 하셨는데 실수로 3줄을 한번에 입력하여 enter 를 눌러버렸습니다ㅠㅠ 다시 들어가서 한줄씩 입력해도 이미 존재한다고 뜨고 선생님 화면이랑 다르게 떠서 파일경로를 따로 지정해 줄 수 없는 것 같습니다. 다시 하려면 어떻게 해야 하나요? c드라이브 창에는 아래와 같이 뜹니다 git clone https://github.com/n8n-io/self-hosted-ai-starter-kit.git cd self-hosted-ai-starter-kit docker compose --profile gpu-nvidia up
안녕 하세요. 영상대로 따라 하고 있는데..오류가 발생 합니다. 아래 그림 처럼 test step 을 클릭 해보면 오류가 나는데요. 파라미터를 확인 해보라고 하는데.. 영상 처럼 따라 해서 틀릴 게 없는데..오류가 나네요. 조금 틀린 것은 value 를 넣을때 영상 에서는 value Provided 라고 나오고 By Model 이라고 나오는데 비해..저는 그냥 Value 를 입력 하게끔 나오고 있습니다. 왜 그럴까요??
안녕하세요 강의 잘 듣고 있습니다 실습중에 n8n을 gemini 2.0 모델고 연결하고 simple memory에 연결까는 잘 동작하는것을 확인했습니다 채팅으로 "요즘 인기있는 영화 추천좀 해줘"라고 요청을 보내면 아래와같이 agent가 검색을 사용하지 못하는것으로 보입니다 http request만 따로 요청했을때는 api 호출이 잘 되는것으로 보여집니다 문제 해결에 도움 부탁드리겠습니다 좋은 강의 감사드립니다
Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:5678 -> 127.0.0.1:0: listen tcp 0.0.0.0:5678: bind: An attempt was made to access a socket in a way forbidden by its access permissions. 이라고 뜹니다.