묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결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 을 맞추려고 해야 되는건지... 요런 부분들이 궁금합니다! 긴 글 읽어주셔서 감사합니다!
-
미해결맞춤형 LLM 만들기 – LoRA & QLoRA 파인튜닝 실습 입문
추가 강의는 언제 올라오나요?
안녕하세요.8월 중으로 추가 강의가 올라온다고 되어있는데언제쯤 볼 수 있을까요?답변 부탁드립니다. 감사합니다.
-
미해결맞춤형 LLM 만들기 : 처음 시작하는 분을 위한 RAG 기초 개념부터 멀티모달·Agent 실습까지
섹션 1 퀴즈 2번 문제 리포팅
섹션 1 퀴즈 2에 정답이 2개 검색기, 생성기지만 선택이 하나만 되는 문제가 있습니다.멀티플 초이스가 안되고 생성기만 선택하면 오답으로 반응함.
-
미해결RAG를 활용한 LLM Application 개발 (feat. LangChain)
Langchain을 활용한 실습 주제 추천해주실 수 있으신가요?
안녕하세요 강사님! 이번에 처음 langchain 입문해서 강사님 기초 강의부터 쭉 수강했습니다개념 이해와 실습까지 함께 할 수 있어서 정말 좋았습니다! 다름이 아니구 혹시 실무에서 경험해볼수있는 실습 주제를 몇가지 추천해주실 수 있으신가요..? 아무래도 처음이다 보니 한번에 감이 잡히진 않아서요!! 감사합니다!
-
미해결[입문/초급] 다양한 예제를 통한 추천 시스템 구현
강의 pdf
안녕하세요~!강의 pdf 파일 받을 수 있을까요? 강의 듣고 복습하는데 pdf 파일로 복습하려고 하거든요!
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
tax_with_markdown 파일 내용 오류
안녕하세요:)퀄리티 높은 강의 만들어주셔서 감사합니다! 실습을 따라하면서 제 소득세 답변과 병진님의 소득세 답변이 달라서 (금액이 다름) 왜 그런가 이유를 찾아보았는데요. 올려주신 tax_with_markdown.docx 자료에서 기존 이미지의 금액과 다른 것을 확인하였습니다. (아래 빨간색 박스) 기존 이미지의 금액으로 변경해서 다시 pinecone에 index 올린 후에 채팅을 하니까 그제서야 병진님과의 답변과 똑같아졌네요! 자료 파일 다시 한번 확인해주시면 감사하겠습니다:)
-
미해결graphRAG - Neo4J로 구현하는 지식 그래프 기반 RAG 시스템 (feat. LangChain)
neo4j의 장점
지금 영화 추천하는 강의 보고 있습니다.질문 있습니다. 일반적인 sql 쿼리를 써도 해당 내용으로 추천 내용 다 작성 할 수 있을 것 같은데 neo4j 랑 사이퍼 쿼리를 쓰는 이유는해당 데이터를 노드화 해서 연결 함으로써검색 속도가 빨라지는 장점이 있을까요? 감사합니다.
-
미해결AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)
Fan-in 시 여러개 노드에서 하나로 병합되는 과정에서 질문 입니다.
Fan in 되면서 3개 노드에서 1개 노드로 병합되는 과정에서, 그 1개 노드는 3개 노드가 전부 연산을 끝낼때까지 기다린 후 실행 되는건가요??
-
미해결프로젝트로 배우는 Python 챗봇 & RAG - LangChain, Gradio 활용
환경설정 질문
질문이 있습니다.선생님께서 설정된 toml 파일은 캐럿(^)을 포함한 버전이 설정되어 있는데, 제가 프로젝트를 생성하고 toml을 확인할 경우 명시적으로 범위가 설정되어져 있습니다. 물론 큰 차이는 없겠지만 나중에 실질적인 업무나 개인적인 프로젝트를 진행할 때 영향도가 있을까요?? 만약 있다면 선생님처럼 버전을 지정해서 등록할 수 있는 설정이 따로 있을까요??
-
미해결RAG를 활용한 LLM Application 개발 (feat. LangChain)
dictionary chain 생성 시 적절치 않은 변환
%pip install --upgrade langchain-text-splitters langchain-upstage from langchain_community.document_loaders import Docx2txtLoader from langchain_text_splitters import RecursiveCharacterTextSplitter text_splitter = RecursiveCharacterTextSplitter( chunk_size=500, chunk_overlap=100 ) #loader = Docx2txtLoader('./tax_with_table.docx') loader = Docx2txtLoader('./tax_with_markdown.docx') documents_list = loader.load_and_split(text_splitter=text_splitter) documents_list1=documents_list[len(documents_list)//2:] documents_list2=documents_list[:len(documents_list)//2] from langchain_upstage import UpstageEmbeddings from dotenv import load_dotenv load_dotenv() embedding = UpstageEmbeddings(model="solar-embedding-1-large") import os from pinecone import Pinecone from langchain_pinecone import PineconeVectorStore pinecone_api_key = os.environ.get("PINECONE_API_KEY") pc = Pinecone(api_key=pinecone_api_key) index_name = "tax-markdown-index" vector_store = PineconeVectorStore.from_documents(documents_list1, embedding, index_name=index_name) vector_store.add_documents(documents_list2) query = "연봉 5천만원인 직장인의 소득세는 얼마인가요?" #retrieved_docs = database.similarity_search(query) from langchain_upstage import ChatUpstage llm = ChatUpstage() # prompt = f""" # - 당신은 최고의 한국 소득세 전문가입니다 # - [Context]를 참고해서 아용자의 질문에 답변해주세요 # [Context] # {retrieved_docs} # Question: {query} # """ # ai_message = llm.invoke(prompt) from langchain import hub prompt = hub.pull("rlm/rag-prompt") # retriever = vector_store.as_retriever() # retriever.invoke("연봉 5천만원인 거주자의 소득세는 얼마인가요?") from langchain.chains import RetrievalQA qa_chain = RetrievalQA.from_chain_type( llm=llm, retriever=vector_store.as_retriever(), chain_type_kwargs={"prompt": prompt} ) query = "연봉 5천만원인 직장인의 소득세는 얼마인가요? 2024년도 소득 기준으로 하고 인적공제는 혼자고 공제항목은 평균정도로 잡아봐." ai_message = qa_chain({"query":query}) ai_message from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate dictionary = ["사람을 나타내는 표현 -> 거주자"] prompt = ChatPromptTemplate.from_template(f""" 사용자의 질문을 보고 우리의 사전을 참고해서 사용자의 질문을 변경해주세요. 만약 변경할 필요가 없다고 판단된다면 사용자의 질문을 변경하지 않아도 됩니다. 사전 : {dictionary} """) dictionary_chain = prompt | llm | StrOutputParser() dictionary_chain.invoke({"question": "연봉 5천만원인 직장인의 소득세는 얼마인가요?"}) tax_chain = {"query": dictionary_chain} | qa_chain ai_response = tax_chain.invoke({"question": "연봉 5천만원인 직장인의 소득세는 얼마인가요?"}) ai_response 이 상황에서 dictionary_chain.invoke({"question":"연봉 5천만원인 직장인의 소득세는 얼마인가요?"})를 했을때 직장인을 거주자로 바꾸는게 아니라 답변을 아래와같이줍니다 ㅜㅜ'사용자의 질문을 사람을 나타내는 표현을 우리의 사전을 참고하여 "거주자"로 변경해보겠습니다. 그러나 사용자가 질문을 아직 제출하지 않았으므로, 가상의 질문을 만들어 변경해보겠습니다.\n\n가상의 사용자 질문: "사람들이 자주 방문하는 관광지는 어디인가요?"\n\n변경된 질문: "거주자들이 자주 방문하는 관광지는 어디인가요?"\n\n만약 사용자의 질문이 이미 적절하거나 변경이 필요하지 않다고 판단되면 질문을 변경하지 않습니다. 실제 사용자 질문을 알려주시면 그에 맞게 도움을 드리겠습니다.' 그 결과 최종 response도 아래와같이 나와버리네요 ㅠㅠ ['e9f858cf-0c76-4887-9556-22c5f32eadf4', '40a151b4-ee72-4f3c-ab61-055114344dd9', '6072bcb7-4ea0-4fbc-8828-e74cb883d162', 'a6a9fc0d-eb7a-482d-8b9d-e12073ea6dce', '9d16b74e-557b-475d-b536-8f37e77306a8', '5ad3b09f-8afa-42b6-8cec-a77a525e6f4b', 'a678eb3b-1b5d-4106-888f-bdf3302ac84c', '57a9b7e1-9511-4a34-822d-7f2a0ae710fc', '4ecd54b8-fac0-459b-ae14-4985f2dd0a20', 'bc50c84a-4770-4756-a8d4-06985387f03b', '65a1116f-93c3-4a5b-8a17-3018ccbd26b0', 'cfde5547-ee30-417c-b2dd-ed0c7f7a602d', '5f9a45e2-0279-4363-bb7c-b0fe85cc0595', '907860e1-e1c4-410d-8fa2-8eb82808f008', '682389cf-f2ad-45df-9db8-a1b6b046f43d', '76395c00-dffa-4d26-9f5e-fd910228538c', '136528f9-c253-406f-a5c8-c8fcd4fad21f', '5f6c5158-cd35-4b74-ae75-ec1f34c35394', 'b8cb52ec-e324-48c1-83a1-31c02e4d202d', '98dfe4bc-c0de-4f7e-996e-bf20416915dc', 'c9018194-109e-443c-8dd0-af5607de3c6f', '2120a161-f0f4-4c91-9759-5bb0aebb995d', '96948c3b-5937-44c1-ad84-04ed923e695b', '490a568c-d378-4cbb-aa69-bf195e41371b', '14e8fcec-7c2c-45d6-ac7b-14c009a6acc5',... '84802efa-23df-4a84-b311-577933f09c51', 'a22be767-fa83-4325-a605-498647daa19e', '879e0a7f-50ed-4cf1-8b6e-f4dbd2a498fc', 'e275ec53-9664-4a18-a813-d40b0e130a23', 'fbde51af-1fbb-445b-8c59-68d61b9bfa2d']Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings.../Users/arang/.pyenv/versions/3.13.2/envs/inflearn-llm-application/lib/python3.13/site-packages/langsmith/client.py:272: LangSmithMissingAPIKeyWarning: API key must be provided when using hosted LangSmith API warnings.warn({'query': '연봉 5천만원인 직장인의 소득세는 얼마인가요? 2024년도 소득 기준으로 하고 인적공제는 혼자고 공제항목은 평균정도로 잡아봐.', 'result': '연봉 5천만원의 직장인의 경우, 2024년도 소득 기준으로 산출세액은 552만원입니다. 여기에 근로소득세액공제 29만원을 적용하면, 최종 소득세는 523만원이 됩니다.'}{'query': '사용자의 질문이 "사람을 나타내는 표현은 무엇인가요?"라면, 우리의 사전을 참고하여 질문을 변경하면 다음과 같습니다: "거주자를 나타내는 표현은 무엇인가요?" \n\n만약 사용자의 질문이 다른 주제나 내용을 다루고 있다면, 해당 질문에 맞게 사전을 참고하여 변경할 수 있습니다. 만약 질문이 이미 명확하고 변경할 필요가 없다고 판단된다면, 질문을 그대로 유지할 수 있습니다.', 'result': '사용자의 질문이 "사람을 나타내는 표현은 무엇인가요?"라면, 우리의 사전을 참고하여 질문을 변경하면 다음과 같습니다: "거주자를 나타내는 표현은 무엇인가요?" 사전에서 "거주자"는 국내에 주소를 두거나 183일 이상의 거소를 둔 개인을 의미합니다.'}
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
yfinance 의 응답 (char 0)
안녕하세요 강의 잘 듣고 있습니다 ^^강의 진행중 yfinance. 의 응답이 (char 0) 이 나오는데요, 구글링 해보니 같은 경우가 과거에도 있었더라구요.해당 api. 서버가 죽은건지, 무엇인지 알수가 없네요대채 할수 있는 방법이 있을까요?
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
window 11 환경 셋팅
안녕하세요! langraph를 업무에 사용예정이여서 강의 수강중입니다.윈도우 환경셋팅이 필요해서 다음 에러를 해결해서 개발환경 셋팅을 완료했습니다.앞으로 강의를 수강하는데 다음 uvloop 패키지가 없어도 괜찮을까요? chroma-hnswlib 도 무시하고 설치로 해도 괜찮은지 궁금합니다.가능하다면 윈도우 환경에서의 패키지 모듈 관리도 되면 좋을 것 같습니다 🙂 uvloop window 환경에서는 무시하고 설치하도록 변경'uvloop; sys_platform != "win32"', # ⬅ Windows에서는 설치 안 함chroma-hnswlibVisual C++ Build Tools 설치
-
미해결노코드 자동화 입문부터 실전까지: n8n 완전정복 (한국 최초 n8n 앰버서더 직강)
강의 자료
안녕하세요 첨부 되어 있는 강의 PDF의 순서와 강의 순서가 맞지 않고, 누락된 부분도 있는데 ... 강의 하시는 자료와 일치하는 강의 PDF를 다시 받을 수 있을까요 .. 왔다 갔다 하면서 어떻게 강의는 듣는데, 없는 부분도 있어서 수업 듣는데 어려움이 존재 합니다. 감사합니다.
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
2.8 Multi-Agent 시스템과 RouteLLM 강의에서
from langchain_core.prompts import ChatPromptTemplate from pydantic import BaseModel, Field from typing import Literal class Route(BaseModel): target: Literal["income_tax", "llm", "real_estate_tax"] = Field( description="The target for the query to answer" ) router_system_prompt = """ You are an expert at routing a user's question to 'income_tax', 'llm', or 'real_estate_tax'. 'income_tax' contains information about income tax up to December 2024. 'real_estate_tax' contains information about real estate tax up to December 2024. if you think the question is not related to either 'income_tax' or 'real_estate_tax'; you can route it to 'llm'.""" router_prompt = ChatPromptTemplate.from_messages( [("system", router_system_prompt), ("user", "{query}")] ) structured_router_llm = small_llm.with_structured_output(Route) def router(state: AgentState) -> Literal["income_tax", "real_estate_tax", "llm"]: """ 주어진 state에서 쿼리를 기반으로 적절한 경로를 결정합니다. Args: state (AgentState): 현재 에이전트의 state를 나타내는 객체입니다. Returns: Literal['income_tax', 'real_estate_tax', 'llm']: 쿼리에 따라 선택된 경로를 반환합니다. """ query = state["query"] router_chain = router_prompt | structured_router_llm route = router_chain.invoke({"query": query}) return route.target 안녕하세요 강병진 강사님:) 혹시 위 코드에서 router_prompt없이 Route class의 Field에만 프롬프트 지침을 넣어도 문제가 없을까요? 테스트 결과는 잘 나왔습니다. 아래는 수정 코드입니다.class Route(BaseModel): target: Literal["real_estate_tax", "llm", "income_tax"] = Field(description = """ 당신은 사용자의 질문을 보고 적절한 라우터를 연결해주는 전문가입니다. 부동산에 관련된 질문은 real_estate_tax라우터를, 소득세에 관한 질문은 income_tax라우터를, 그 외의 질문은 llm라우터로 연결해주세요. """) def router(state: AgentState): query = "역삼역 떡볶이 맛집을 알려주세요 " router_llm = llm.with_structured_output(Route) response = router_llm.invoke(query) return response.target print(router({})) >> 'llm'
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
tool의 Output Size 관련 질문
MCP Server 나 langgraph 나 모두 tool 입니다. 만약 tool 에서 결과 값이 너무 많이 나오는 경우 어떻게 처리 해야 할까요?예1) MCP Server의 "우리 회사 고객 정보중 매출 얼마 이상 되는 정보를 보여줘?" 라고 고객이 입력 했는데, 그 고객 정보가 10만명이 나와서 tool 의 결과가 너무 커 버리는 예)DB의 Limit 등으로 어떻게 하더라도 다음 호출을 LLM이 잘 못해주는 경우가 있음.예2) 슬랙의 채널을 보여줘 했을 때, 슬랙의 채널이 너무 많은 경우 ... 결국 전부다 예3) 소스코드를 분석해 줘소스코드가 1만 - 2만 라인 되었을 경우 Tool 의 결과라도 양이 많으면 Summary를 하면서 계속 돌려야 하는게 효과 적일까요? 아니면 페이지 1, 2 등을 호출할 수 있게 어떻게 하던 LLM 에게 권한을 주는게 효과 적일까요?더 괜찮은 방법이나 좋은 prompt 등이 있으시면 답변 부탁 드립니다.감사합니다.
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
public 모델 사용시 주의점
안녕하세요 좋은 수업제공해주셔서 많은 도움을 받고있습니다. langChain에 public 모델을 사용할때 개인정보 관련해서 질문이 있는데요예를 들어 챗봇이나 자동 상담 기능에 적용을 한다고하면 입력이 매우 자유로울거같은데 개인정보에대해서는 어떻게 처리를 해야할까요? 기본적으로는 정규식으로 전처리를 하는데 100%보장된 작업은 아니라 현업에서는 어떻게 처리하는지 궁금합니다. 만약 개인정보 처리가 매우 중요하다면 public 모델(ex. chatGPT, gemini)은 사용 못하고 private 한 환경에 오픈소스로 운영할수밖에는 없을까요?
-
미해결Spring WebFlux + LLM 실전 구현
안녕하세요 혹시 강의 내용 소스코드를 제공 받을수 있을까요?
안녕하세요 혹시 강의 내용 소스코드를 제공 받을수 있을까요?
-
해결됨RAG 성능의 한계를 뚫는 인지 부하 관리 기술
42. 수업 7.6 다중 프롬프트 전략과 CoT 영상 오류
42. 수업 7.6 다중 프롬프트 전략과 CoT 영상 오류입니다.
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
문서 전처리에 관한 질문
안녕하십니까 강사님. 제공해주신 고품질의 강의 너무 잘 보고 있습니다.3.6의 강의 내용 중 문서의 표에 대한 마크다운 전처리를 추천해주셨습니다. 만약 실시간으로 크롤링하는 데이터를 바탕으로 RAG 챗봇을 만든다고 했을 때, 크롤링된 문서를 자동적으로 전처리하는 로직은 따로 없을까요? 사용자가 수동적으로 해야하는 부분일까요? 감사합니다.
-
해결됨Spring WebFlux + LLM 실전 구현
기본적 동작과정에 대한 이해가 부족해 질문드립니다.
안녕하세요일단 제가 생각은컨트롤러에서 Mono 나 Flux 를 반환하고 webflux 가 이를 구독할 때 실행된다. 인데 어쨌든 구독하는 동작도 이벤트 루프 스레드가 하는 거라고 생각합니다.그렇다면 구독에서부터 Mono 또는 Flux 실행까지 같은 이벤트 루프 스레드가 이어서 동작하는 건가요?만약 제가 생각하는 게 맞다면 컨트롤러에서 수행하는 것과 구독후 수행하는 것의 순서만 다를 뿐 성능 차이를 모르겠는데 제가 어떤 부분을 잘못생각하고있는 걸까요? 개념이 잡히지 않아 질문이 좀 이상한 거 같아 죄송합니다.