묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Claude + IntelliJ로 TodoList 개발하기 - MCP 완전 정복
spring initializr generate문의
1강 2:59 와 3:56 같은 내용인가요? 중복되는 것 같은데요. demo를 두 번 만드시는건지 헷갈립니다.
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
강의 완강 후기 및 질문
안녕하십니까 강사님! 덕분에 강의 너무나도 잘 들었습니다.수강하게 된 계기가 파이썬 기반 백엔드 신입으로 취업 준비를 할 때 어떻게 하면 자바보다 차별화해서 준비할 수 있을까? 라는 생각으로 시작했습니다. 강의를 수강하고 나니 확실히 RAG기술은 강하다고 느꼈습니다. 하지만 저번에 답변을 해주셨을 때 프롬포트 엔지니어링만으로는 취업을 준비하기 불안정하다 라는 의견에 굉장히 동의합니다!혹시 실례가 안된다면 질문을 드리고 싶습니다! 만약에 답변이 조금 어려우시면 답변 안해주셔도 됩니다!- 파이썬 기반 백엔드 신입으로 취업 준비를 할 때 현재 저는 was와 db구현해보기 + rag기술 다루어보기 정도의 기술 스택을 가지고 있는데 강사님이 보시기에는 어떠한지 궁금합니다. 올바른 방향으로 준비를 하고 있는지 아니면 시장에서 원하는 방향이 아닌건지 궁금합니다!현재는 학부 3학년으로써 조언을 해주신다면 정말 감사하겠습니다.질문 읽어주셔서 감사합니다!
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
3.3 langgraph 의 tool 호출 관련 질문
안녕하세요. 해당 챕터에서 강의 내용과 실행 결과 간 매치가 잘 안되는 듯 느껴져 문의드립니다.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 한 번 호출에 대한 설명인 걸까요? 아니면 병렬 도구 호출에 대한 설명인 걸까요? 감사합니다.
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
병렬처리에서 한부분에서 에러가 나거나하는 경우는 아직 고려하지않아도 되는걸까요?
2.7 병렬 처리를 통한 효율 개선 (feat. 프롬프트 엔지니어링)수업을 보다 생긴 궁금증 질문드립니다.병렬처리 작업 중에 어떤 부분이 에러가 발생하거나 했을때의 처리는 보통 어떻게 하시나요?
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
워크플로우와 에이전트 비교 및 앞으로의 방향성에 대한 질문드립니다!
안녕하십니까 강사님! 덕분에 강의 너무 유익하게 잘 들었습니다!강의 들으면서 궁금했던 점을 질문 드립니다.1. 워크플로우와 에이전트 혹은 커스텀 도구 등 선택 기준에 대하여는 명확한 기준이 있다기보다는 성능 비교를 통해 정확도, 토큰 사용량, 시간 등 이러한 지표들을 테스트 해가며 적절한 에이전트 혹은 워크플로우로 구축하면 될까요? 아니면 사용하는 호출 모델을 이해하여 그 모델에 맡게 최적화를 해야할까요? 이러한 부분들이 강의 들으면서 궁금했습니다!2. 학사 졸업생 및 신입으로 프롬포트 엔지니어링 등 이러한 분야로 취업 준비를 한다면 기업들이 원하는 인재상은 어떤지도 궁금합니다! RAG기술을 어느정도 이해하고 구축하며 또 추가적으로 도움될 기술이 있는지 궁긍합니다.수준 높은 강의를 듣게 되어 영광입니다. 앞으로도 강사님의 강의 많이 참고하겠습니다.감사합니다!!
-
미해결[Sionic MCP 시리즈 1] Model Context Protocol 을 이용하여 IntelliJ 와 코딩해보자!
연결 안되는 이유 모르겠습니다 ㅠㅠ
Jetbrains 러닝이라로 뜨는데, 허용하겠습니다 라는 안내문구는 안뜹니다. 그리고 연결이 안됩니다혹시 pc방에서는 안되는 건가요? node.js 최신버전, 인텔리제이 최신, 플로그인 설치, json 변경 했습니다
-
미해결모르면 야근하는 AI 마케팅 노하우
실습자료 공유문의
수강내용에 공유드린 노션페이지를 보라는데도통 어디에 있는지 찾을수가 없습니다.커리큘럼에서도 찾을수가 없고 영상하단 링크 공유될수도 있다고 하길래 찾아봐도 없고저만 못찾는건가요?빠른 답변 부탁드립니다.수업에 상당한 지장을 초래합니다.제가 못찾고 있으면 캡쳐사진 부탁드립니다.
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
2.4 생성된 답변을 여러번 검증하는 Self-RAG 강의 에서 질문드립니다.
답변이 hallucinated인지 판별하는 노드에서 max_tokens를 100으로 설정했을 때는 올바르게 판단이 됐습니다.그렇다면, 답변의 길이가 너무 길어서 모델이 hallucination 여부를 제대로 판별하지 못했다고 보신 건가요?다만 이런 경우라면, 답변의 길이를 조정하기보다는 hallucination 여부를 판별하는 모델 자체를 조정하는 게 더 적절하지 않을까요?실무 환경에서도 이런 상황이 발생할 수 있을 것 같은데, 보통은 답변 생성 모델을 판별 모델에 맞추는 게 일반적인지,아니면 판별 모델을 답변 생성 모델에 맞추는 게 더 낫다고 보는지 궁금합니다.
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
langGraph를 쓰는 이유
langChain으로도 rewrite generate 이런거 구현이 가능한데 복잡하고 코드가 많이 늘어나고 AI 호출도 많이 일어나니 langGraph를 쓰는거라고 이해했는데 맞을까요?
-
미해결모르면 야근하는 AI 마케팅 노하우
미션 관련 질문입니다.
수강평 작성 후 제출까지 했는데, 수강평 캡쳐와 자료 받을 이메일 주소를 어디에 남기는건가요?혹시 몰라 여기에도 캡쳐본과 이메일 남겨봅니다.jcjoyful@hanmail.net미션에서 수정해야 하는거라면 방법 알려주세요~
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
가상환경 설정방법 문의
안녕하세요, 가상환경 설정 관련 문의드립니다.아래를 실행하면 가상환경이 실행되지 않습니다.Dayeaui-MacBook-Pro:~ dayeayim$ cd streamlit-finance-newDayeaui-MacBook-Pro:streamlit-finance-new dayeayim$ pyenv local inflearn-streamlit아래 코드를 실행해야만 가상환경이 실행되는데요, 해결방법이 있을까요?export PYENV_ROOT="$HOME/.pyenv"export PATH="$PYENV_ROOT/bin:$PYENV_ROOT/shims:$PATH"eval "$(pyenv init -)"eval "$(pyenv virtualenv-init -)"이것저것 시도하다가 zprofile과 zshrc 파일을 수정하고 그랬는데 꼬여버린 것 같습니다. 가이드 부탁드리겠습니다! 감사합니다~
-
미해결모르면 야근하는 AI 마케팅 노하우
smithery.ai 오류 문제 해결 방법 문의드립니다.
smithery.ai 로그인 후 계속 아래와 같은 오류 메시지가 뜹니다.브라우저를 바꿔봐도 동일한 메시지가 뜨고요.어떻게 해결해야 할까요? 애플리케이션 오류: smithery.ai를 로드하는 동안 클라이언트 측 예외가 발생했습니다 ( 자세한 내용은 브라우저 콘솔을 참조하세요).
-
미해결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를 통과하여 데이터를 전달할 수는 없나요?
-
미해결[VLM101] 파인튜닝으로 멀티모달 챗봇 만들기 (feat.MCP)
좋은 강의 감사합니다. 궁금한게 있어 질의 드립니다.
# 모델을 로드하는 코드 model_id = "/work/checkpoints/hf/Qwen2.5-VL-3B-Instruct" # 사용할 모델 경로 지정 model_org = Qwen2_5_VLForConditionalGeneration.from_pretrained( model_id, # 모델 경로로부터 모델 불러오기 device_map="auto", # 자동으로 장치 설정 (예: GPU 사용) torch_dtype=torch.bfloat16, # 모델의 데이터 타입을 bfloat16으로 설정 (메모리 최적화) ) processor = AutoProcessor.from_pretrained(model_id) # 모델에 맞는 processor 불러오기 ==> 질문 사항 (2개) 질문1) 위 코드에 동일한 모델을 model_org 와 processor 로 정의한 거 같은데 왜 이렇게 정의한 이유는 무엇인가요? 질문2) datacollator 는 모델마다 정의하는 방법이 다른 거 같은데 현재 샘플로 주신 모델은 어디를 참고해야 하나요?
-
미해결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을 사용해야 할까요? 혹은 적합한 다른 구조가 있을까요?
-
미해결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
-
미해결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 때문일까요? 아니면 다른 부분에 있는 걸까요?
-
해결됨Claude + IntelliJ로 TodoList 개발하기 - MCP 완전 정복
Notion 주소?
노션 주소가 어떻게 되나요?
-
미해결대세는 바이브 코딩과 MCP_Cursor AI로 시작하기
PRD 문서를 ChatGPT에서 왜 하는건가요?
현재 지극한 초보자입니다. 질문이 제대로 질문을 못 할 수도 있는점 양해 부탁드립니다. PRD 관련 문의처음 기획명세서를 만들때 왜 Chatgpt에서하고 이후 cursor로 와서 작업을 하는데, 처음 부터 cursor로 하는것과 틀린점이 있는것인가요 ?대략적인 코드가 만들어진 후 개선코드가 필요하여 사용시 PRD는 어떻게 사용하는 방법이 따로 있나요?테스크 메니저, 투두, 여러개가 많은데 사용할 필요가 없을까요? ( 단순무식 커서 사용자 이며, 초보입니다, 여기 강좌에서 Rule의 필요성은 지각했읍니다)기타관련모델을 구지 생각없이 커서를 사용 해 왔읍니다. 모델을 특성 어떻게 알아 볼수 있는 사이트 정보가 있을까요? (초보자는 구지 구별 할 필요 없이 사용해도 되겠죠?)User, Project Rules에 대하여 좀 더 정보를 얻을수 없을까요? ( 초보자중심으로)Docs 는 계속해서 만들어 놓으면 문제가 없는건가요?-- 감사 합니다 -- 2번 답변을 제일 원합니다...
-
미해결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 을 맞추려고 해야 되는건지... 요런 부분들이 궁금합니다! 긴 글 읽어주셔서 감사합니다!