묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결RAG 마스터: 기초부터 고급기법까지 (feat. LangChain)
과거 채팅이력을 LLM에 줄때 포멧
안녕하세요. 강의에서 정의하신 아래의 함수에서 final_answer에 입력값을 넣는것이 결국 리스트 형태의 데이터고, 리스트는 HumanMessage와 AIMessage가 번갈아가면서 저장되어 있을텐데 llm모델에 이렇게 리스트 형태로 HumanMessage, AIMessage의 객체들을 상관없이 대입해도 괜찮은가요? langchain에서 사용하는 invoke라는 매서드가 내부적으로 이런 타입들을 처리하는 로직을 실행하나요? 감사합니다. def answer_invoke(message, history): history_langchain_format = [] for human, ai in history: history_langchain_format.append(HumanMessage(content=human)) history_langchain_format.append(AIMessage(content=ai)) history_langchain_format.append(HumanMessage(content=message)) # 현재 메시지에 대해 RAG 체인 실행 rag_response = run_route_rag_chain(message) # 답변 생성 모델에게 현재 메시지에 대한 답변 요청 final_answer = answer_llm.invoke( history_langchain_format[:-1] + [AIMessage(content=rag_response)] + [HumanMessage(content=message)] ) return final_answer.content
-
미해결RAG 마스터: 기초부터 고급기법까지 (feat. LangChain)
OpenAIEmbeddings모델이 사용하는 토크나이저는 뭘까요?
안녕하세요. 강의 잘 듣고 있습니다. OpenAIEmbedding모델을 이용해서 텍스트를 벡터화 하는 것까지는 이해가 되었는데, 텍스트를 임베딩모델에 넣을 때, 토크나이징을 한 결과를 input으로 사용하는지, 그렇다면 어떤 토크나이징 모델을 사용하는지 궁금합니다.아니면 토크나이징 없이 바로 임베딩 모델에 대입하는건가요?
-
미해결RAG 마스터: 기초부터 고급기법까지 (feat. LangChain)
ChatPromptTemplate의 from_messages로 메세지를 구성할 때 system은 어떻게 설정해야하나요?
안녕하세요.. ChatPromptTemplate의 from_messages로 메세지를 구성할 때 system값과, user값이 있는데 각 값의 역할과 어떻게 구성해야 하는지 알 수 있나요? 감사합니다
-
미해결RAG 마스터: 기초부터 고급기법까지 (feat. LangChain)
create_retrieval_chain에서 context는 지정된 인자인가요?
아래 코드에서 create_retrieval_chain에 인자로 combine_docs_chain을 사용하는데요, retrieval_qa_chat_prompt에서 정의한 {context}는 프롬프트에 고정적으로 있어야 하는 부분인가요? 내부적으로 context라는 이름으로 정해져있는 것인지 궁금합니다.retrieval_qa_chat_prompt = ChatPromptTemplate.from_template(""" 다음 컨텍스트를 바탕으로 질문에 답변해주세요. 컨텍스트에 관련 정보가 없다면, "주어진 정보로는 답변할 수 없습니다."라고 말씀해 주세요. 컨텍스트: {context} 질문: {input} 답변: """) # 체인 생성 combine_docs_chain = create_stuff_documents_chain(llm, retrieval_qa_chat_prompt) rag_chain = create_retrieval_chain(retriever, combine_docs_chain) # 체인 실행 query = "테슬라 창업자는 누구인가요?" response = rag_chain.invoke({"input": query})
-
미해결RAG 마스터: 기초부터 고급기법까지 (feat. LangChain)
vectorstore의 as_retriever와 similarity_search는 같은 로직인가요?, 사용되는 검색 알고리즘은 뭔가요?
안녕하세요. 강의 잘 듣고 있습니다. 제목이 곧 질문인데요.Chroma로 생성한 vectorstore객체의 as_retriever매서드와 similarity_search는 내부적으로 같은 알고리즘 혹은 로직을 사용하나요? 그렇다면 이 두가지 매서드의 차이점은 langchain을 사용할 때 편의성 차원에서 as_retriever가 더 좋다 이렇게 알고있으면 되는걸까요? 또한 내부에서 사용되는 검색 알고리즘은 어떤건지 알 수 있을까요? 감사합니다.
-
미해결맞춤형 LLM 만들기 : 처음 시작하는 분을 위한 RAG 기초 개념부터 멀티모달·Agent 실습까지
test.pdf
첨부파일이 어딧죠 실습데이터 셋 안 열리는데
-
미해결AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)
모델의 성능에 따라서 선택하는 도구가 많이 차이 나나요?
현재 섹션 2.16번 강의 학습 중에 있습니다.ollma를 통해서 gpt-oss:20b 모델을 로컬로 연결해서 학습하고 있는데, search_web 도구로만 응답을 하더라구요. 아무리 쿼리를 바꿔도 wiki_summary, wiki_search 와 같은 도구를 호출해서 응답을 작성하지 않습니다. 혹시 제가 놓치고 있는게 있을까요?
-
해결됨회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
뉴스 스크랩시 content를 가져오는 대신 더 효율적인 방안은 무엇일까요?
안녕하세요. 네이버 뉴스 스크립 시 content를 그대로 사용하니 불필요한 정보가 너무 많아서 LLM이 이를 처리하는데 시간도 오래 걸리고, 토큰 비용도 불필요하게 소모되는 것 같은데 혹시 범용적으로 사용 가능한 대안이 있다면 무엇일까요?웹 지식이 부족해서 반복 시청하며 공부 중인데 저 부분에 대해 조언 주시면 감사하겠습니다!
-
미해결맞춤형 LLM 만들기 : 처음 시작하는 분을 위한 RAG 기초 개념부터 멀티모달·Agent 실습까지
섹션 1 퀴즈 2번 문제 리포팅
섹션 1 퀴즈 2에 정답이 2개 검색기, 생성기지만 선택이 하나만 되는 문제가 있습니다.멀티플 초이스가 안되고 생성기만 선택하면 오답으로 반응함.
-
미해결RAG를 활용한 LLM Application 개발 (feat. LangChain)
Langchain을 활용한 실습 주제 추천해주실 수 있으신가요?
안녕하세요 강사님! 이번에 처음 langchain 입문해서 강사님 기초 강의부터 쭉 수강했습니다개념 이해와 실습까지 함께 할 수 있어서 정말 좋았습니다! 다름이 아니구 혹시 실무에서 경험해볼수있는 실습 주제를 몇가지 추천해주실 수 있으신가요..? 아무래도 처음이다 보니 한번에 감이 잡히진 않아서요!! 감사합니다!
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
tax_with_markdown 파일 내용 오류
안녕하세요:)퀄리티 높은 강의 만들어주셔서 감사합니다! 실습을 따라하면서 제 소득세 답변과 병진님의 소득세 답변이 달라서 (금액이 다름) 왜 그런가 이유를 찾아보았는데요. 올려주신 tax_with_markdown.docx 자료에서 기존 이미지의 금액과 다른 것을 확인하였습니다. (아래 빨간색 박스) 기존 이미지의 금액으로 변경해서 다시 pinecone에 index 올린 후에 채팅을 하니까 그제서야 병진님과의 답변과 똑같아졌네요! 자료 파일 다시 한번 확인해주시면 감사하겠습니다:)
-
해결됨회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
Route 53에서 도메인과 로드밸런스 연결 부분
n8n AWS로 배포하기 (정석버전)강의에서는 aws에서 산 도메인이라 Hosted zone에 뜨는것으로 추측되는데, 외부 도메인에 ACM 인증서까지 적용하여 어플리케이션 로드밸런스를 AWS에 만든 상태입니다. 위의 이미지 과정을 외부 도메인에서는 어떻게 로드밸런스와 연결하는지 궁금합니다.
-
미해결graphRAG - Neo4J로 구현하는 지식 그래프 기반 RAG 시스템 (feat. LangChain)
neo4j의 장점
지금 영화 추천하는 강의 보고 있습니다.질문 있습니다. 일반적인 sql 쿼리를 써도 해당 내용으로 추천 내용 다 작성 할 수 있을 것 같은데 neo4j 랑 사이퍼 쿼리를 쓰는 이유는해당 데이터를 노드화 해서 연결 함으로써검색 속도가 빨라지는 장점이 있을까요? 감사합니다.
-
해결됨회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
ACM에서 staus가 pedding
ACM에서 staus가 pedding validation입니다.도메인은 강의에서 나온 도메인으로 설정했는데, 제가 따로 도메인을 구매해야하나요?ACM이 pendding 상태라 ALB에서 ACM 선택이 불가능합니다.
-
해결됨회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
강의와 다르게 API_KEY 일부만 넣으면 인증 오류가 발생하는 현상
n8n에서 Header Auth Account에 Authorization이라는 이름을 넣고 value 값을 입력한 뒤, 실제로는 __n8n_BLANK_VALUE_e5362baf-~ 이런 식으로 표시되는 것을 확인했습니다.그래서 저는 e5362baf- 부분을 API_KEY로 넣어줬는데 계속 인증 오류(Authorization data is wrong!%)가 발생했습니다.그런데 실제로 넣어준 value 전체를 그대로 사용했을 때는 정상적으로 {"message":"Workflow was started"}% 응답이 왔습니다.다만 강의에서는 e5362baf- 값만 넣어줘도 {"message":"Workflow was started"}% 응답이 나오던데, 제 경우에는 전체 value를 넣어야만 동작했습니다.무슨 차이일까요? 저도 e5362baf 값으로 넣어서 하고 싶은데..어떻게 해야될까요?
-
미해결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일 이상의 거소를 둔 개인을 의미합니다.'}
-
해결됨회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
Streamlit으로 만든 것 Dockerfile 만들어주실 수 있을까요?
UV로 패키지가 관리되고 있는데요. 이거 간단하게 Docker로 올려보려고 하는데요.혹시 Dockerfile 샘플로 올려주실 수 있을까요? :)
-
해결됨회사에서 바로 쓰는 업무자동화 AI 에이전트 (w. n8n, LangGraph)
Gamil Trigger 관련 이슈
Gmail Trigger가 Naver에서 받은 이메일에는 반응하지 않네요? 의도한건지 이슈인지 모르겠지만 저는 당연히 해당 이메일 계정으로 온 모든 메일에 대해 반응할 거라 생각했는데 아니라서 당황했네요. 다른 분들 참고하시라고 글 남깁니다!