묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)
강의 46에서 노드의 병렬 수행시 Thread-Safety 문제는 없을까요?
강의 46 듣고 질문드립니다.여러 노드가 병렬로 수행 되면서 동일한 ToolSearchState를 접근해서 데이터를 수정하게 되면 thread-safety 문제가 발생할 텐데 이런 부분에 대한 설명이 명시적이지 않아서 어떻게 처리 되는 건지 궁금합니다. Langchain에서 State 클래스는 이미 thread-safety를 보장하는 것인가요? 아니면 강의 예제에는 없었지만 실 구현시에는 사용자가 직접 thread-safety에 대한 고려를 해서 코딩해야 하는 건가요?
-
미해결AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)
similarity_search 후 왜 다시 LLM을 통해 grade를 측정 하나요?
안녕하세요.Self RAG 에이전트 구현하기 강좌에 대한 질문이 있습니다. 중간 중간에 결과 평가하는 것 중 검색된 문서와 질문에 대한 관련성을 평가하는 부분이 있는데요, 검색 자체를 embedding된 vector에서 similarity search를 하여 뽑아 낸 것들이고, 이 방식 자체가 질문과 유사한 문서를 뽑아 내는 기술인데 굳이 LLM으로 하여 다시 평가를 하게 하는 이유는 뭘까요? 벡터 embedding 과 유사도 검색에 대한 기술이 LLM에 맏기는 것 보다 유사도 검색에 있어 더 정확해야 하는 것이 아닌가 하는 생각이 들어서요. LLM이 하는 유사도 평가가 더 정확하다면 굳이 벡터 embedding 같은 기술을 쓸 필요가 있을까 싶어서 질문 드립니다.
-
미해결AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)
agent_executor 실행시 JSONDecodeError에러가 발생해요.
문제가 발생하는 코드 ㄴ LLM모델만 gemini-2.5-pro로 사용하고 있고 다른 부분은 다른게 없는데 아래의 에러가 발생하네요...혹시 도와주실 수 있을까요? # AgentExecutor 실행 query = "시그니처 스테이크의 가격과 특징은 무엇인가요? 그리고 스테이크와 어울리는 와인 추천도 해주세요." agent_response = agent_executor.invoke({"input": query})에러로그 Entering new AgentExecutor chain... Invoking: search_menu with {'query': 'Signature Steak'} [Document(metadata={'menu_name': '시그니처 스테이크', 'menu_number': 1, 'source': './data/restaurant_menu.txt'}, page_content='1. 시그니처 스테이크\n • 가격: ₩35,000\n • 주요 식재료: 최상급 한우 등심, 로즈메리 감자, 그릴드 아스파라거스\n • 설명: 셰프의 특제 시그니처 메뉴로, 21일간 건조 숙성한 최상급 한우 등심을 사용합니다. 미디엄 레어로 조리하여 육즙을 최대한 보존하며, 로즈메리 향의 감자와 아삭한 그릴드 아스파라거스가 곁들여집니다. 레드와인 소스와 함께 제공되어 풍부한 맛을 더합니다.'), Document(metadata={'menu_name': '안심 스테이크 샐러드', 'menu_number': 8, 'source': './data/restaurant_menu.txt'}, page_content='8. 안심 스테이크 샐러드\n • 가격: ₩26,000\n • 주요 식재료: 소고기 안심, 루꼴라, 체리 토마토, 발사믹 글레이즈\n • 설명: 부드러운 안심 스테이크를 얇게 슬라이스하여 신선한 루꼴라 위에 올린 메인 요리 샐러드입니다. 체리 토마토와 파마산 치즈 플레이크로 풍미를 더하고, 발사믹 글레이즈로 마무리하여 고기의 풍미를 한층 끌어올렸습니다.')] Invoking: search_wine with {'query': 'steak'} [Document(metadata={'menu_name': '사시카이아 2018', 'menu_number': 3, 'source': './data/restaurant_wine.txt'}, page_content='3. 사시카이아 2018\n • 가격: ₩420,000\n • 주요 품종: 카베르네 소비뇽, 카베르네 프랑, 메를로\n • 설명: 이탈리아 토스카나의 슈퍼 투스칸 와인입니다. 블랙베리, 카시스의 강렬한 과실향과 함께 허브, 가죽, 스파이스 노트가 복잡성을 더합니다. 풀바디이지만 우아한 타닌과 신선한 산도가 균형을 잡아줍니다. 오크 숙성으로 인한 바닐라, 초콜릿 향이 은은하게 느껴집니다.'), Document(metadata={'menu_name': '샤토 디켐 2015', 'menu_number': 9, 'source': './data/restaurant_wine.txt'}, page_content='9. 샤토 디켐 2015\n • 가격: ₩800,000 (375ml)\n • 주요 품종: 세미용, 소비뇽 블랑\n • 설명: 보르도 소테른 지역의 legendary 디저트 와인입니다. 아프리콧, 복숭아, 파인애플의 농축된 과실향과 함께 꿀, 사프란, 바닐라의 복잡한 향이 어우러집니다. 놀라운 농축도와 균형 잡힌 산도, 긴 여운이 특징이며, 100년 이상 숙성 가능한 와인으로 알려져 있습니다.')]--------------------------------------------------------------------------- JSONDecodeError Traceback (most recent call last) Cell In[163], line 4 1 # AgentExecutor 실행 3 query = "시그니처 스테이크의 가격과 특징은 무엇인가요? 그리고 스테이크와 어울리는 와인 추천도 해주세요." ----> 4 agent_response = agent_executor.invoke({"input": query}) File c:\Users\jangi\AppData\Local\pypoetry\Cache\virtualenvs\langgraph-agent-AGzdf7hx-py3.11\Lib\site-packages\langchain\chains\base.py:170, in Chain.invoke(self, input, config, kwargs) 168 except BaseException as e: 169 run_manager.on_chain_error(e) --> 170 raise e 171 run_manager.on_chain_end(outputs) 173 if include_run_info: File c:\Users\jangi\AppData\Local\pypoetry\Cache\virtualenvs\langgraph-agent-AGzdf7hx-py3.11\Lib\site-packages\langchain\chains\base.py:160, in Chain.invoke(self, input, config, kwargs) 157 try: 158 self._validate_inputs(inputs) 159 outputs = ( --> 160 self._call(inputs, run_manager=run_manager) 161 if new_arg_supported 162 else self._call(inputs) 163 ) 165 final_outputs: Dict[str, Any] = self.prep_outputs( 166 inputs, outputs, return_only_outputs 167 )... 339 if end != len(s): --> 340 raise JSONDecodeError("Extra data", s, end) 341 return obj JSONDecodeError: Extra data: line 1 column 29 (char 28)Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings...
-
미해결프로젝트로 배우는 Python 챗봇 & RAG - LangChain, Gradio 활용
poetry add python-dotenv langchain langchain-openai gradio 설치 안 되요
패키지 설치:poetry add python-dotenv langchain langchain_openai gradio위를 입력하는데, 아래 처럼 같은 에러가 수십번 납니다 PS D:\mypersonal\myprojects\LANGCHAIN\qa-bot> poetry add python-dotenv langchain langchain-openai gradioUsing version ^1.1.1 for python-dotenvUsing version ^0.3.26 for langchainUsing version ^0.3.27 for langchain-openaiUsing version ^5.35.0 for gradioUpdating dependenciesResolving dependencies... (1.1s)The current project's supported Python range (>=3.10) is not compatible with some of the required packages Python requirement: - langchain-text-splitters requires Python <4.0,>=3.9, so it will not be installable for Python >=4.0Because no versions of langchain match >0.3.26,<0.4.0 and langchain (0.3.26) depends on langchain-text-splitters (>=0.3.8,<1.0.0), langchain (>=0.3.26,<0.4.0) requires langchain-text-splitters (>=0.3.8,<1.0.0).Because langchain-text-splitters (0.3.8) requires Python <4.0,>=3.9 and no versions of langchain-text-splitters match >0.3.8,<1.0.0, langchain-text-splitters is forbidden.Thus, langchain is forbidden.So, because qa-bot depends on langchain (^0.3.26), version solving failed. * Check your dependencies Python requirement: The Python requirement can be specified via the python or markers properties For langchain-text-splitters, a possible solution would be to set the python property to ">=3.10,<4.0"
-
미해결모두를 위한 대규모 언어 모델 LLM Part 5 - LangGraph로 나만의 AI 에이전트 만들기
비동기 방식으로 agent를 구성할 필요성이 궁금합니다.
안녕하세요, 강의 감사히 잘 보고 있습니다.Plan-and-Execute 강의 코드 보다가 궁금한 점이 있는데요,다른 agent 구성에서는 동기 방식으로 def를 정의했었는데,여기에서는 async와 await, .ainvoke의 비동기 방식으로 agent를 정의하는 것 같아 왜 여기서는 비동기 방식으로 정의하는지 여쭤봅니다.plan -> execute -> replan 자체도 순차적으로 실행되는 것 같은데(RAG와 같이), 비동기 방식이 어떤 이유로 필요한 것인지 질문드립니다.감사합니다.
-
미해결RAG를 활용한 LLM Application 개발 (feat. LangChain)
안녕하세요 답변 길이에 관한 질문을 좀 드리고 싶은데
안녕하세요 답변 길이에 관한 질문을 좀 드리고 싶은데 llm에 넘긴건 문서 1,2장 정도 되는 길이로 보내는데 답변은 3,4 줄 밖에 안 나오는데 답변의 길이나 퀄리티를 좋게 해달라는 문구를 넣어도 그대로인 부분은 개선이 불가능한걸까요??
-
미해결모두를 위한 대규모 언어 모델 LLM Part 5 - LangGraph로 나만의 AI 에이전트 만들기
Structured outputs ppt 강의자료 다운로드 가능 위치 문의
안녕하세요, 강의 잘 듣고 있습니다.강의자료 관련하여Structured outputs 관련 자료는 '강의 슬라이드 다운로드'를 통한 다운로드에도 포함되어 있지 않고 강의 화면에서 아래로 스크롤을 내려서도 확인할 수 없는데,어디서 받을 수 있는지 답변주시면 감사드리겠습니다.
-
미해결AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)
툴의 숫자가 많을때 동작
안녕하세요.강의들 듣다가 질문이 생겨서 문의 드립니다. 첫번째, 툴이 너무 많은경우 어떤 식으로 처리해야 하나요? 즉, 사용할수 있는 툴이 천개 정도 된다면 LLM 호출시 마다 모든 툴에 대한 description 등을 같이 보내서 알맞은 툴을 선택하라고 할 수 없을 것 같은데 좋은 방법이 있을 까요?두번째, 툴들 중 비슷한 역할을 하거나 중복되는 툴이 있을 때는 어떻게 처리해야 하나요? 사용자 정의 툴들을 등록하다 보면 기존에 있었던 것과 동일하지만 이름만 다르거나 아예 중복되는 툴들이 생길 수 있는데 이럴때 처리 방법이 궁금합니다.
-
미해결RAG를 활용한 LLM Application 개발 (feat. LangChain)
Elasticsearch 를 벡터 데이터베이슬 활용가능한가요
여러 벡터 데이터베이스가 나왔는데 혹시 Elasticsearch 를 docker로 설치하고 사용하는 경우도 있는지 궁금합니다. Elasticsearch 도 벡터 데이터베이스를 지원한다는 글을 읽은바가 있고, 검색엔진 분야에서는 Open 소스로 많이 활동되다는 점에서 활용성이 좋아보여서 질문 드립니다.
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
엄....이거 java, kotlin 개발자는 어떻게 이해를 해야 할까 대게 고민에 빠지네요
그래도 눈치가 제법 빠른편인데 notebook 이나 파이썬...이거 모르겠는데 어떻하나 걱정되는데요? 일단 임베디드와 기존의 LLM의 차이는 뭔가요
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
llm의 응답에 대해서 언어 설정도 가능한가요??
llm의 응답에 대해서 언어 설정도 가능한가요??어떤 질문을 했을 때 한국어로 나오게 한다거나, 일본어로 나오게 한다거나, 영어로 나오게도 가능한가요??
-
미해결AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)
안녕하세요 후속강의 듣고 싶은데, 비용이 부담되어서..
혹시 할인계획이 있으신지요?
-
미해결graphRAG - Neo4J로 구현하는 지식 그래프 기반 RAG 시스템 (feat. LangChain)
AuraDB 연동 안되는 현상 질문
vscode에서 uv로 가상환경 생성후 .env 파일에서# Neo4J 설정 - AuraDB NEO4J_URI=neo4j+s://{id}.databases.neo4j.io NEO4J_USERNAME=neo4j NEO4J_PASSWORD={PASSWORD} NEO4J_DATABASE=neo4j해당 방식 적용 후, AuraDB 연동을 해도 적용이 안되고 아래와 같이 에러가 뜹니다. ValueError: Could not connect to Neo4j database. Please ensure that the url is correct 해결책 문의 드립니다. P.S colab에서는 올려주신 KG_P1_01_neo4j_Introduction.ipynb 실행하니 동작하네요. 왜 저의 로컬에서는 이런 현상이 일어나는 걸까요?
-
미해결RAG를 활용한 LLM Application 개발 (feat. LangChain)
챗봇 생성시 에러
안녕하세요, gemini를 이용해서 챗봇 생성중에 있습니다.그런데 하기와 같이 챗봇을 llm과 연동하는 중에 에러가 계속 발생합니다.gpt한테 계속 물어가면서 에러잡고있는데 계속 동일한 에러만 나오네요. ㅠ어떻게 개선할 수 있을까요? 조언부탁드립니다. 감사합니다.코드)import streamlit as st from langchain import hub from dotenv import load_dotenv from langchain_google_genai import GoogleGenerativeAIEmbeddings from langchain_pinecone import PineconeVectorStore from langchain_google_genai import ChatGoogleGenerativeAI from langchain.chains import RetrievalQA from langchain.prompts import ChatPromptTemplate st.set_page_config(page_title="영향분석 챗봇", page_icon="★") st.title("영향분석 챗봇") st.caption("System 변경 영향 분석") load_dotenv() # 세션 상태에 메시지 리스트가 없으면 초기화 if 'message_list' not in st.session_state: st.session_state.message_list = [] # 이전 메시지 출력 for message in st.session_state.message_list: with st.chat_message(message["role"]): st.write(message["content"]) def get_ai_message(user_message): try: # 입력 메시지 확인 if not isinstance(user_message, str) or not user_message.strip(): return "질문이 비어 있습니다. 유효한 질문을 입력해 주세요." print(f"user_message: {user_message}") # user_message의 내용 출력 print(f"user_message length: {len(user_message)}") # 문자열 길이 출력 print(f"user_message type: {type(user_message)}") # 타입 출력 # Google Generative AI Embeddings 모델 초기화 embedding = GoogleGenerativeAIEmbeddings(model='models/gemini-embedding-exp-03-07') index_name = 'uml-index' database = PineconeVectorStore.from_existing_index(index_name=index_name, embedding=embedding) llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash") prompt_template = hub.pull("rlm/rag-prompt") retriever = database.as_retriever(search_kwargs={'k': 4}) # RetrievalQA 인스턴스 생성 qa_chain = RetrievalQA.from_chain_type(llm, retriever=retriever, chain_type_kwargs={"prompt": prompt_template}) dictionary = ["External Entity -> actor"] prompt = ChatPromptTemplate.from_template(f""" 사용자의 질문을 보고, 우리의 사전을 참고해서 사용자의 질문을 변경해주세요. 만약 변경할 필요가 없다고 판단된다면, 사용자의 질문을 변경하지 않아도 됩니다. 그런 경우에는 질문만 리턴해주세요. 사전 : {dictionary} 질문 : {{question}} """) dictionary_chain = prompt | llm uml_chain = {"query": dictionary_chain} | qa_chain ai_message = uml_chain.invoke({"question": user_message}) return ai_message except Exception as e: print(f"오류 발생: {repr(e)}") # 오류 메시지 출력 print(f"입력된 user_message: {user_message}") # 오류 발생 시 입력된 메시지 출력 return f"오류가 발생했습니다: {repr(e)}" # 사용자 입력 처리 if user_question := st.chat_input(placeholder="CR 내용을 첨부해주세요"): with st.chat_message("user"): st.write(f"사용자 질문: {user_question}") st.session_state.message_list.append({"role": "user", "content": user_question}) ai_message = get_ai_message(user_question) with st.chat_message("AI"): st.write(ai_message) st.session_state.message_list.append({"role": "AI", "content": ai_message}) 에러)user_message: 시스템에 연결된 External Entity를 알려주세요user_message length: 31user_message type: <class 'str'>오류 발생: GoogleGenerativeAIError('Error embedding content: bad argument type for built-in operation')입력된 user_message: 시스템에 연결된 External Entity를 알려주세요
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
pinecone 임포트 부분이 에러가발생합니다
파이썬 버전 3.10.11입니다윈도우 vscode에서 테스트해보고 있어요
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
PineconeApiException 어떻게 해결하나요?
13번째 동영상 들으면서 따라하는 중이고 OpenAI API 사용 중인데, 아래 코드만 돌리면,PineconeApiException HTTP response body: {"code":11,"message":"Error, message length too large: found 15431073 bytes, the limit is: 4194304 bytes","details":[]} 이러한 에러가 뜹니다.이를 해결하기 위해서, chunk_size = 10, chunk_overlap=0 으로 줄였는데도 계속 에러가 떠요.어떻게 하면 해결할 수 있나요? database = PineconeVectorStore.from_documents( document_list, embedding, index_name=index_name )
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
gemini 오류관련 질문드립니다.
안녕하세요, 강의 반복중에 있습니다.이번에는 gemini로 RAG를 구축해보려고 하는데,API Key를 활성화했음에도 계속 하기와 같은 에러가 뜹니다.ㅠ 제가 놓친 부분이 있을까요?from langchain_google_genai import ChatGoogleGenerativeAI llm = ChatGoogleGenerativeAI( model="gemini-2.0-flash", temperature=0, max_tokens=None, timeout=None, max_retries=2, # other params... ) llm.invoke("인프런에 어떤 강의가 있나요?") --------------------------------------------------------------------------- PermissionDenied Traceback (most recent call last) Cell In[2], line 1 ----> 1 llm.invoke("인프런에 어떤 강의가 있나요?") File c:\Users\yunjeong2.lee\Desktop\VenvWorkspace\myenv\Lib\site-packages\langchain_google_genai\chat_models.py:1255, in ChatGoogleGenerativeAI.invoke(self, input, config, code_execution, stop, **kwargs) 1250 else: 1251 raise ValueError( 1252 "Tools are already defined." "code_execution tool can't be defined" 1253 ) -> 1255 return super().invoke(input, config, stop=stop, **kwargs) File c:\Users\yunjeong2.lee\Desktop\VenvWorkspace\myenv\Lib\site-packages\langchain_core\language_models\chat_models.py:372, in BaseChatModel.invoke(self, input, config, stop, **kwargs) 360 @override 361 def invoke( 362 self, (...) 367 **kwargs: Any, 368 ) -> BaseMessage: 369 config = ensure_config(config) 370 return cast( 371 "ChatGeneration", --> 372 self.generate_prompt( 373 [self._convert_input(input)], 374 stop=stop, 375 callbacks=config.get("callbacks"), ... metadata { key: "method" value: "google.ai.generativelanguage.v1beta.GenerativeService.GenerateContent" } ] Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings...
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
LLM 애플리케이션과 AI Agent 차이점이 뭐에요?
개념상 똑같은거 같아요.예를들어 세무 전용 Agent 서비스가 있다고하면 결국 그게 LLM 서비스이고, LLM 애플리케이션이자, RAG 솔루션 아니에요? AI Agent = LLM 서비스 = LLM 애플리케이션 = RAG 솔루션 다같은말이에요?? 너무헷갈려요
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
데이터 전처리 관련 질문드립니다
"3.5 Retrieval 효율 개선을 위한 데이터 전처리" 강의에서 세율 데이터를 표로 LLM에 전달하다가마크다운으로 변경했는데 데이터를 읽어오지 못합니다표로 데이터를 전달했을 때는 데이터를 잘 읽어갔는데 왜 그런 걸까요?
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
langsmith 사용하지 않고 개발 가능한가요?
안녕하세요현재 유료 결제나 외부로 API를 연동하는 것이 사내 보안 규정 상 어려운 상황입니다.강의에 나온 대로 langchain-core 라이브러리를 활용하는 경우 core 내부에 langsmith를 쓰는 import 가 있어 langsmith를 반드시 사용 해야하는 상황입니다. langsmith가 유료로 변경되면 API 키가 필요한 상황이라 현재 사내에서는 사용이 어려울 것 같습니다.이런 경우 langsmith를 사용하지 않고 유사하게 기능을 구현하는 방법이 있는지 궁금합니다.