묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결프로젝트로 배우는 Python 챗봇 & RAG - LangChain, Gradio 활용
휴..
근데 도대체 제주_코스별_여행지 이 pdf 파일은 어디있나요..?기본으로 줘야되는거 아닌가요?
-
해결됨OpenAI를 활용한 나만의 AI 에이전트 만들기 (Agent Builder, GPT-5, Chatkit, Cloudflare, MCP, Fine Tuning, CoT 등)
open AI 플랫폼에서 MCP Server선택시 무한로딩표시만.
https://platform.openai.com/chat/edit?models=gpt-5-nano여기에서tools > add 선택, MCP Server를 선택하면, Add Connector 팝업이 뜨는데, 계속 무한로딩되면서 화면에 아무것도 뜨지가 않습니다. 검색해보니 맥os는 시스템설정 > 보안에 가면 MCP관련해서 설정을 열어줘야 한다는데 관련 내용도 보이질 않네요. 혹시 무엇이 문제일까요? ==> 다음날 어떤 작업도 하지 않았는데 저절로 해결이 되었습니다. 어떤 이유로 해결되었는지 모르겠습니다.
-
미해결RAG 마스터: 기초부터 고급기법까지 (feat. LangChain)
rag 와 랭체인
강의를 들었을때 , 랭체인 사용하게 되면 , 약간 프레임워크의 형태였고,간단하고 구조화를 제법 잘 할수있을것 같은데,필요하다면 파인튜닝만 해도 제법 괜찮겠는데 생각이 들었습니다그럼에도 불구하고 rag 로 구현하는 이유가 현실적으로 어떤경우가 있을까요 ??
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
hub.pull 이슈
아래 코드, hub.pull 안되실 경우from langchain import hub prompt = hub.pull("rlm/rag-prompt") 아래와 같이 변경해 보세요.저는 LANGSMITH_API_KEY 를 직접 넣었지만,환경변수에 등록해서 사용하시는게 나을것 같네요.from langsmith import Client LANGSMITH_API_KEY = "ls...." client = Client(api_key=LANGSMITH_API_KEY) prompt = client.pull_prompt("rlm/rag-prompt", include_model=True)
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
2.2 강의 질문(markdown 생성관련)
선생님 안녕하세요좋은 강의 감사합니다. 바로 아래 질문 올린 수강생입니다. 강의에 나온대로 openai api를 사용해서 pdf 파일을 markdown으로 변환하는데, 아래와 같은 오류(?) 메시지가 뜨다가, 맨 마지막에는 결과물이 나오긴 합니다.import nest_asyncio nest_asyncio.apply() from pyzerox import zerox import os import json import asyncio kwargs = {} ## Vision 모델에 사용할 시스템 프롬프트 custom_system_prompt = None model = "gpt-4o-mini" # os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY") # 메인 비동기 진입점을 정의합니다 async def main(): file_path = "./documents/income_tax.pdf" ## 로컬 파일 경로 및 파일 URL 지원 ## 일부 페이지 또는 전체 페이지를 처리 select_pages = None ## 전체는 None, 특정 페이지는 int 또는 list(int) 페이지 번호 (1부터 시작) output_dir = "./documents" ## 통합된 마크다운 파일을 저장할 디렉토리 result = await zerox(file_path=file_path, model=model, output_dir=output_dir, custom_system_prompt=custom_system_prompt, select_pages=select_pages, **kwargs) return result # 메인 함수를 실행합니다: result = asyncio.run(main()) # 마크다운 결과를 출력합니다 print(result)에러 메시지(실제는 이런게 여러번 반복이 됨)Give Feedback / Get Help: https://github.com/BerriAI/litellm/issues/newLiteLLM.Info: If you need to debug this error, use `litellm._turn_on_debug()'.ERROR:root:Failed to process image Error: Error in Completion Response. Error: litellm.RateLimitError: RateLimitError: OpenAIException - Rate limit reached for gpt-4o-mini in organization org-ZlBA2iz8ZXx6PbxDnPFaTYOK 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. Please check the status of your model provider API status. ERROR:root:Failed to process image Error: Error in Completion Response. Error: litellm.RateLimitError: RateLimitError: OpenAIException - Rate limit reached for gpt-4o-mini in organization org-ZlBA2iz8ZXx6PbxDnPFaTYOK 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. Please check the status of your model provider API status. ERROR:root:Failed to process image Error: Error in Completion Response. Error: litellm.RateLimitError: RateLimitError: OpenAIException - Rate limit reached for gpt-4o-mini in organization org-ZlBA2iz8ZXx6PbxDnPFaTYOK 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. Please check the status of your model provider API status.Give Feedback / Get Help: https://github.com/BerriAI/litellm/issues/newLiteLLM.Info: If you need to debug this error, use litellm._turn_on_debug()'. Give Feedback / Get Help: https://github.com/BerriAI/litellm/issues/new LiteLLM.Info: If you need to debug this error, use litellm._turn_on_debug()'. Give Feedback / Get Help: https://github.com/BerriAI/litellm/issues/newLiteLLM.Info: If you need to debug this error, use `litellm._turn_on_debug()'.ERROR:root:Failed to process image Error: Error in Completion Response. Error: litellm.RateLimitError: RateLimitError: OpenAIException - Rate limit reached for gpt-4o-mini in organization org-ZlBA2iz8ZXx6PbxDnPFaTYOK 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. Please check the status of your model provider API status.Give Feedback / Get Help: https://github.com/BerriAI/litellm/issues/newLiteLLM.Info: If you need to debug this error, use `litellm._turn_on_debug()'.ERROR:root:Failed to process image Error: Error in Completion Response. Error: litellm.RateLimitError: RateLimitError: OpenAIException - Rate limit reached for gpt-4o-mini in organization org-ZlBA2iz8ZXx6PbxDnPFaTYOK 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. Please check the status of your model provider API status.- 결과물 : ZeroxOutput(completion_time=69952.953, file_name='income_tax', input_tokens=626909, output_tokens=17668, pages=[Page(content='# 소득세법\n[시행 2025. 1. 1.] [법률 제20615호, 2024. 12. 31., 일부개정]\ (이후 생략)--> 근데 생성된 markdown 파일을 보니 18조 정도밖에 생성이 안되어있고, 그 이후 내용은 모두 없더라고요. 이건 그냥 token의 문제 때문에 openai api가 너무 큰 pdf파일을 처리하지 못하면서 발생하는 문제인가요?강의에서는 아무런 문제 없이 변환이 되는데, 갑자기 안되는 이유가 있을까요? 강의 소스코드에 제공된 파일의 markdown 파일에는 소득세법의 전 내용이 들어가있던데, 그걸 사용하면 강의 따라가는데는 문제가 없어보입니다. 맞나요?
-
미해결RAG를 활용한 LLM Application 개발 (feat. LangChain)
[3.3 강의] Upstage를 사용한 RAG 구현 성공기 공유
안녕하세요.시간 가는줄도 모를 만큼 강의를 재밌게 들으며 배워가고 있는 수강생입니다.강의를 듣던 중 Upstage API 연동이 잘 되지 않아 QnA 게시판을 보았는데, 저를 비롯한 많은 분들께서 Upstage API를 사용하고 있다는 것을 알게되었고 연동 관련해서 어려움을 느끼시는 것 같아 제가 해결한 과정을 같이 공유해보고자 글을 적었습니다.저도 배워가는 과정인지라 표현이 서툴거나 잘못된 내용이 있을 수 있어 강사님의 피드백도 같이 공유 받을 수 있다면 더욱 좋을 것 같습니다..!제가 해결한 방법을 결론 먼저 말씀드리면 chunk_list 길이를 찍었을 때 100개 이내인 경우에는 코드가 정상 동작했다는 것입니다. (대부분의 코드는 강사님께서 작성하신 내용을 그대로 따라했습니다.)# 에러 (chunk_list의 length가 100개 이상인 경우) # chunk_list = split_text(full_text, 1500) # 작동 (chunk_list의 length가 100개 미만인 경우) chunk_list = split_text(full_text, 1700)위와 같이 split_text에서 1500으로 인자를 주었던 것을 1700으로 변경하면 chunk_list의 길이는 100개 미만이 되며, 이를 초과할 경우 400 ERROR 또는 add 작업 중 중간에 멈추며 에러가 발생했습니다.따라서 저는 이러한 문제의 원인을 아래 내용이라고 추정하며 해결했습니다.강의 촬영 당시 사용된 법률안에 비해 현재는 개정 등으로 인해 늘어난 문자열 수1로 인해 인자값을 1500으로 주었을 때 강의 촬영 당시 대비 커져버린 chunk_list의 크기2로 인해 chromaDB에 add 할 수 있는 개수가 100개 이상 초과하면 발생되는 오류전체 코드 참고하실 분들은 아래 링크에서 참고하시면 좋을 것 같습니다.https://github.com/C0deH4ter/langchain-basics/blob/main/3.3%20Upstage%20Challenge/rag_without_langchain_chroma(w.Upstage).ipynb
-
미해결RAG 마스터: 기초부터 고급기법까지 (feat. LangChain)
score 기반 서치
안녕하세요, score 기반 서치를 할 때 특정 유사도 미만이면 결과를 출력해주지 않았는데요 물론.... 프로젝트의 종류, 성질에 따라 다르지겠지만,보통 스코어가 0.X 이상일 때 부터 그나마 관련이 있는 문서여서 사용자에게 보여줘도 된다 ! 라는 그런 수치가 혹시 있을까요? 본 강의에서는 0.6이라고 정의를 하셨는데 실제 도입할 때는 몇으로 하는지 궁금합니다
-
해결됨<밑바닥부터 만들면서 배우는 LLM> 해설 강의
7장 3절 이후는 언제 올리나요?
곧 7장을 들어가는데 7장 2절까지만 강의가 있고 그 이후에는 아직 없는 것 같아서 7장 2절 이후의 강의는 언제 올리는 지 궁금해서 문의 드립니다
-
해결됨<밑바닥부터 만들면서 배우는 LLM> 완독 챌린지
해설강의 쿠폰 가능할까요??
안녕하세요.저도 본강의를 수강하다 놓치게 되어 연락드렸습니다. 혹시 가능하다면 감사하겠습니다!
-
미해결RAG를 활용한 LLM Application 개발 (feat. LangChain)
RAG 문서 관리 방법
추가 질문 드립니다! 현재 업무지침 원본 문서에 챗봇용 추가 정보(예: 부연설명 등)를 직접 삽입하여 feeding 하고 있습니다.다만, 업무지침이 매년 개정되다 보니, 개정 시마다 챗봇용으로 추가한 정보들을 새로운 버전에 다시 반영해야 하는 어려움이 있습니다. 특히 이런 문서 관리는 개발팀이 아닌 현업에서 해야 하는 부분이라 현업 관점에서 문서 버전 관리나 갱신을 보다 효율적으로 할 수 있는 방법이 있을지 조언을 구하고 싶습니다.감사합니다.
-
미해결RAG를 활용한 LLM Application 개발 (feat. LangChain)
챗봇 답변 일관성 및 RAG 검색 우선순위 설정 관련
안녕하세요, 질문드립니다.사내 업무 챗봇을 만드는 과정에서 질문 드립니다.답변의 일관성 관련현재 챗봇 테스트 중인데, 동일한 질문임에도 답변이 조금씩 달라집니다. 서비스 운영 시에도 직원들이 한 질문에 대해 일관된 답변을 받아야 문제점을 정확히 파악할 수 있을 것 같아, 같은 질문에는 동일한(유사한) 답변이 나오도록 설정하고 싶습니다. 다만 현재 history_aware_retriever를 사용하고 있어서, 이전 대화 맥락이 다르면 동일한 질문이라도 검색되는 문서와 답변이 달라질 수 있다는 점을 확인했습니다. 이때 이전 대화 맥락이 있더라도 질문이 동일하면 동일한(비슷한) 문서가 검색되도록 하거나 답변의 편차를 최소화하는 방법이 있을지 궁금합니다.RAG 검색 우선순위 관련현재 2개 문서(A, B)에 대해서 RAG를 적용하고 있습니다. 이때 A문서에서 가장 유사한 chunk를 먼저 검색하고, 유사한 chunk가 없는 경우 B문서에서 chunk를 찾도록 하고 싶습니다. 제가 생각한 방법은 2개인데, 어떤 접근이 더 좋을지 또는 더 나은 방법 있을지 문의드립니다.1안) 단일검색 + A문서 우선랭킹A와 B를 동시에 검색한 후, 뽑힌 문서 중 A결과를 먼저 선택하는 방법 (k=2 예정)후보: [A1, B1, B2, A2] → 최종: [A1, A2]후보: [A1, B1, B2, B3] → 최종: [A1, B1]2안) 계단식 검색1차로 A만 검색 후 임계치 미달 시 B문서 검색하는 방식입니다. 다만 임계치를 결정하는 것이 어려울 것 같고, langchain 만으로 구현이 가능할지 모르겠습니다. langgraph를 사용하면 쉽게 할 수 있는 방법이 있을까요?감사합니다!
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
2.2 강의 질문
안녕하세요? 2.2 강의에서 강의내용과 노트북에 차이가 있어 질문드립니다. 강의에서는 openai api key를 쓰셨는데, 노트북은 azure로 되어있더라고요 강의대로 openai api key를 써서 했는데 아래와 같은 오류가 납니다. 혹시 어떤 것 때문일까요? from pyzerox import zerox import os import json import asyncio ### 모델 설정 (Vision 모델만 사용) 참고: https://docs.litellm.ai/docs/providers ### ## 일부 모델에 필요할 수 있는 추가 모델 kwargs의 자리 표시자 kwargs = {} ## Vision 모델에 사용할 시스템 프롬프트 custom_system_prompt = None # model = "azure/gpt-4o-2024-11-20" model = "gpt-4o-mini" os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY") # os.environ["AZURE_API_KEY"] = os.getenv("AZURE_OPENAI_API_KEY") # os.environ["AZURE_API_BASE"] = os.getenv("AZURE_OPENAI_ENDPOINT") # os.environ["AZURE_API_VERSION"] = "2024-08-01-preview" # "2023-05-15" # 메인 비동기 진입점을 정의합니다 async def main(): file_path = "./documents/income_tax.pdf" ## 로컬 파일 경로 및 파일 URL 지원 ## 일부 페이지 또는 전체 페이지를 처리 select_pages = None ## 전체는 None, 특정 페이지는 int 또는 list(int) 페이지 번호 (1부터 시작) output_dir = "./documents" ## 통합된 마크다운 파일을 저장할 디렉토리 result = await zerox(file_path=file_path, model=model, output_dir=output_dir, custom_system_prompt=custom_system_prompt, select_pages=select_pages, **kwargs) return result # 메인 함수를 실행합니다: result = asyncio.run(main()) # 마크다운 결과를 출력합니다 print(result) (오류내용 아래부분만) TypeError: 'NoneType' object is not iterable2. 강의내용과 노트북을 다르게 하신 이유가 있으실까요? azure openai api key, azure openai endpoint 값들은 chatgpt에 검색해서 나오는 방법으로 받으면 되는건가요? 아니면 다른 방법이 있나요?
-
미해결입문자를 위한 LangChain 기초
RAG 강의 prompt 질문
학습 관련 질문이 있으시면, 상세하게 남겨주세요.문제가 발생한 부분의 코드를 함께 올려주세요.수업 영상 몇 분/초 구간인지 알려주세요. 10분 56초 부분에서 prompt 작성코드를 보면text형식으로 작성되어있고 ChatPromptTemplate을 사용하고 있는데지난 강의에서는 ChatPromptTemplate 은 message list형식으로 작성한다고 하셨었습니다.ChatPromptTemplate은 그냥 PromptTemplate과 달리 from_template을 사용하면 일반 text 형식 prompt도 처리가 가능한 구조인건가요? 그런거라면 굳이 PromptTemplate을 사용해야하는 이유가 있나요? ChatModel 이 아니라 LLM 일 경우는 ChatPromptTemplate.from_template으로 작성한 prompt는 동작하지 않는 건가요? RAG는 LLM이 아니라 ChatModel을 사용해야하는 이유가 뭔가요? LLM과 ChatModel의 차이를 multi-turn 처리 가능 여부로 보면 될까요?
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
[문의] query에 대한 응답을 못찾을때 해결하는 방안
강의에서 "연봉 5천만원 직장인의 소득세는?" 이라는 (직장인이라는)단어를 문서에서 찾지 못해서 응답을 받지 못했다고 하는데 보통 사용자가 질문할때는 정확한 단어를 입력할 확률이 적을것으로 생각되서 이 경우 쿼리에 대해 llm 이나 다른 방법을 통해 알아서 잘(?) 질문에 대해서 llm이 해석 할 수 있도록 해줄 필요가 있을 것 같다고 생각이 드는데, 혹시 이런 경우에 있어서 해결방안이나 팁이 있으신가요?
-
미해결Spring AI 실전 가이드: RAG 챗봇 만들기
429 에러 발생합니다
https://platform.openai.com/docs/guides/error-codes/api-errors 여기서 할당량 초과 에러 코드라는데, ChatGpt plus 구독중인데 따로 결제를 해야되는건가요?
-
해결됨<밑바닥부터 만들면서 배우는 LLM> 해설 강의
2.2 텍스트 토큰화 하기 강의 질문
영상 초반에서 말씀하시는 "이전 영상"이 어떤 영상인지 궁금합니다.
-
해결됨<밑바닥부터 만들면서 배우는 LLM> 완독 챌린지
해설강의 쿠폰 놓쳤는데, 재발급 가능할까요?
챌린지 본 강의만 보다보니..해설강의 쿠폰을 놓쳤네요. 혹시 재발행 가능할까요?고객센터에 문의해도 답이 없어서 게시판 찾아서 질문 남겨봅니다.확인 부탁드립니다.
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
프로젝트 조언 요청드립니다.
안녕하십니까! 강병진 강사님! 강의를 수강하고 인터뷰도 보면서 많은 에너지와 영향을 받았습니다. 정말 감사드립니다!강병진님의 langchain강의 커리큘럼에서 n8n을 제외하고 모두 수강하였습니다.덕분에 RAG를 어떻게 구성하고 어떤식으로 정확도를 향상시킬 수 있는지도 배웠습니다.다름이 아니라 저는 현재 대학교 3학년으로써 프로젝트를 진행하고 싶은데 강병진님 같은 훌륭하신 선배 개발자님께서 좋게 보실 만한 프로젝트가 어떤 프로젝트인지 조언을 구하고 싶습니다.단순 챗봇을 구현해보기에는 기업에서 이러한 것이 많이 중요할까? 라는 걱정도 있습니다.기업에서는 어떤식으로 RAG를 사용하고 원하는 경험이 무엇일까 궁금합니다.저는 실무에서 RAG를 어떤식으로 사용하는지도 잘 모르고 선배님들께서 이러한 기술로 어떤 업무들을 하시는지도 잘 모릅니다. 그래서 어떤 방향성으로 준비해야 할지 잘 모르겠습니다.만약 강병진님께서 같이 일할 주니어를 뽑으신다면 어떤 프로젝트 경험이 있는 주니어를 뽑으실 지 가능하신다면 조언 한번만 부탁드리고 싶습니다!현재 사용할 수 있는 기술은 알려주신 langchain관련 기술과 fastapi로 백엔드 구현이 가능합니다.도메인마다 원하는 방향성이 다르겠지만 프로젝트 기획하는 단계로써 좋은 출발을 하고 싶어서 질문드립니다!계신 시간대로 저녁일거라 예상되는데 좋은 저녁 보내시길 바랍니다ㅎㅎ 감사합니다!
-
해결됨<밑바닥부터 만들면서 배우는 LLM> 완독 챌린지
<CH 4.1> "LLM구조 구현하기" 장 마지막의 Logits 차원에 대한 문의
제 4장 강의를 듣다 보면 강사님께서 강조하시는 말씀 중에 "입력 차원과 출력 차원은 같아야 하고 768차원이다"라는 게 있습니다."4.1장. 구조 구현하기"에 나오는 예제 코드의 마지막 부분을 보면 아래와 같이 나와 있습니다.torch.manual_seed(123) model = DummyGPTModel(GPT_CONFIG_124M) logits = model(batch) print("출력 크기:", logits.shape) print(logits)차원을 살펴보면 마지막 차원이 768차원이 아니라 50257로 나오는데요(즉, [2 , 4, 50257]).txt1 = "Every effort moves you" txt2 = "Every day holds a"토크나이저에서 위 텍스트를 인덱싱한 후 DummyGPTModel 클래스의 인스턴스에 넘겨주면 768차원이 나와야 하는 게 아닌 지 궁금합니다.참고로, 3장 끝 부분 "멀티헤드어텐션" 전까지는 수월하게 강의를 한 번만 듣고 책으로 복습해도 수월하게 이해 됐는데, 점차 어려워지네요^^;;;
-
해결됨<밑바닥부터 만들면서 배우는 LLM> 완독 챌린지
CH3의 맨 처음에 등장하는 '임베딩 입력 시퀀스' 텐서 값은 임의의 숫자인가요?
지난 주에 질문을 했었는데, 제가 인프런 시스템에 익숙하지 않다보니 엉뚱한 게시판에다 질문을 한 것 같아요. 이 Q&A 게시판은 강사님께 질문 드리는 것 맞는지요? 맞는다면 아래 내용을 질문 드리고 싶습니다.제 3장("어텐션 메커니즘 구현하기")의 거의 맨 앞 부분에 다음과 같은 문구와 코드가 등장합니다.다음처럼 3차원 벡터로 임베딩한 입력 시퀀스가 있다고 가정.import torchinputs = torch.tensor( [[0.43, 0.15, 0.89], # Your (x^1) [0.55, 0.87, 0.66], # journey (x^2) [0.57, 0.85, 0.64], # starts (x^3) [0.22, 0.58, 0.33], # with (x^4) [0.77, 0.25, 0.10], # one (x^5) [0.05, 0.80, 0.55]] # step (x^6))이 값들은 토크나이저에서 그냥 임의로 마구잡이로 부여하는 실수 값인가요?아니면 각 토큰 별로 이미 유사도나 거리 개념까지 다 계산 되어서 나온 실수 값인가요?아!! 단순하게 이 교재에서 이해를 돕기 위해 3차원 값으로 예를 든 저 실수들만을 말하는 게 아니고요실제로 LLM에서 입력 시퀀스의 각 토큰에 부여된 텐서 값들을 말하는 겁니다.만약 아무런 연관성이 없이 그냥 임의로 토크나이저에서 만들어진 실수 값일 뿐이라면,단순히 한 입력 원소와 다른 모든 입력 원소의 점곱 등의 연산을 통해 산출된 문맥 벡터가 무슨 의미가 있는 것인 지 이해가 잘 되지 않아서요.즉, 그냥 아무런 연관성 없는 임의의 값들끼리 접곱했는데 의미를 가진 문맥 벡터가 나온다는 게 언뜻 이해가 되질 않습니다.아니면,처음에는 토크나이저에서 아무런 연관성 없이 그냥 임의로 실수 값들을 각 토큰에 부여했다 하더라도,"훈련 가능한 가중치를 가진 멀티 헤드 어텐션" 알고리즘을 수행하게 되면 어텐션 가중치가 갱신 되면서이런 모든 의구심이 해소 되는 것인가요?