묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨진짜 현장에서 통하는 OCR, 이렇게 만듭니다.
실무 OCR을 위한 심도 질문
안녕하세요? 강사님실무에 적용할 수 있는 상세 내용과 강사님만의 know-how를 알려 주셔서 감사합니다.더 깊게 이해하고 싶은 마음에 다소 질문이 길고 복잡한 점을 이해해 주시면 감사하겠습니다.1. 최신 OCR model 성능을 보여주셨는데, 결국은 multi modal LLM을 쓰면 만사 능통한 것처럼 결론이 내려집니다. 그렇다면 OCR model보다는 image처리가 가능한 LLM model 비교하는 게 더 맞다고 생각이 듭니다. 어떻게 생각하시나요?2. LLM image처리가 좋아짐으로써, 굳이 opencv로 처리하지 않아도 그 결과가 좋을 것 같습니다. 앞으로도 이러한 작업이 필요할까요? (그냥 LLM에 넣는 것과 opencv로 전처리한 것과 비교하는 실험도 첨부해 주셨으면 좋겠습니다.)3. 보통 기업에서 OCR을 사용할 때는 개인정보를 포함한 문서가 많습니다. 외부 LLM 사용을 꺼릴 때가 많습니다. sLLM으로 처리하고 싶은데, function calling이나, pydantic과 같은 양식 처리가 어렵습니다. 어떻게 해결할 수 있을까요?4. pipeline을 정리하면,opencv 전처리 -> cropping -> LLM 구조입니다. 원하는 양식대로 만드는 작업은 LLM 성능과 prompt의 역량으로 보입니다. 문제는 문서의 양식이 다양해서 한 문서 양식을 추출할 때마다 복잡한 prompt를 작성해야 하는 것일까요? 또한 문서 종류가 달라질 때마다 수정해야 할까요?만약 이러한 것이라면 기존 OCR과 같이 문서 종류별로 OCR format이 다 다르게 정해져야 할텐데, 어떻게 해결할 수 있을까요?전단지말고 다른 여러 문서들도 똑같이 적용될 수 있는지 다양한 문서들에 대한 OCR 작업 예시 강의를 더 올려주시길 바랍니다.
-
미해결RAG를 활용한 LLM Application 개발 (feat. LangChain)
DB별로 LLM 답변이 다른 이유가 궁금합니다.
파인콘 사용시에 2MB 초과하는 문제 있잖아요. 그래서 다른 답변들 보고 사이즈 조정해서사이즈만 맞춰서 했더니 저장은 문제 없이 됬는데 저희 수업 내용상 질문이 '연봉 5천만원인 직장인의 소득세는 얼마인가요?' 라는건데 기존 크로마 이용시에는{'query': '연봉 5천만원인 직장인의 소득세는 얼마인가요?', 'result': '연봉 5천만원인 직장인의 소득세는 "근로소득에 대해서는 기본세율"이 적용된다고 명시되어 있습니다. 기본세율에 의한 과세는 종합소득세 과세표준에 따라 결정되며, 구체적인 세금 금액은 소득 공제 등이 고려되어야 하므로 단순 계산으로 제시할 수 없습니다. 따라서, 구체적인 세금을 산정하기 위해서는 소득세율표와 개인 소득 공제를 참고해야 합니다.'}파인콘 사용시에는 {'query': '연봉 5천만원인 직장인의 소득세는 얼마인가요?', 'result': '연봉 5천만원인 직장인의 소득세는 84만원과 1,400만원을 초과하는 금액의 15퍼센트를 더한 것입니다. 이를 계산하면, 소득세는 약 474만원입니다.'}같은 문서를 가지고 DB만 달리 하는건데 이렇게 답변이 상이하게 나오면 문서가 제대로 벡터DB에 저장이 안됬다고 생각할수 있는건가요? 원인이 궁금합니다.그리고 수업 영상 랭체인 홈페이지에서 나오는 코드랑 실제로 들어가서 버전 맞추어도 예제 코드가 달라서 좀 어려움이 있습니다. 10분짜리 영상을 30분 넘게 보게 됩니다. 그나마 깃허브 코드가 비슷해서 그걸로 사용하고 있습니다.
-
미해결프로젝트로 배우는 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"
-
미해결OpenAI API 를 이용한 생성형 AI 프로그램 개발
함수호출 관련 질문
실습 - 함수호출에서요즘 MCP 스펙에 대한 설명이 많은데, 여기서 설명한 내용들은 openai에서만 지원하는 함수형식에 대한 설명만을 한것이 맞나요?만약 그렇다면 MCP를 지원하는 스펙에 맞추게 되면 구현 방식이 많이 달라지는 건지 궁금합니다. MCP 지원에 대한 openai의 docuement 링크도 알려주시면 감사하겠습니다.
-
해결됨OpenAI API 를 이용한 생성형 AI 프로그램 개발
구조화된 출력을 활용한 콘텐츠 심사 내용중 코드 질문
실습 - 구조화된 출력에서제일 마지막 코드를 보면,# 구조화된 출력을 활용한 콘텐츠 심사 from enum import Enum from typing import Optional from pydantic import BaseModel class Category(str, Enum): 폭력 = 'violence' 성적인_내용 = 'sexual' 자해 = 'self_harm' class ContentCompliance(BaseModel): is_violating: bool category: Optional[Category] explanation_if_viloating: Optional[str] completion = client.beta.chat.completions.parse( model=Model, messages=[ {"role": "developer", "content": "사용자 입력이 특정 지침을 위반하는지 판단하고, 위반하는 경우 그 이유를 한국어로 설명하세요."}, # {"role": "user", "content": "취업 면접을 준비하는 방법은 무엇인가요?"} # {"role": "user", "content": "일본에서 제일 싸움 잘하는 사람은 도끼로 이마까 입니다."} # {"role": "developer", "content": "이 사진은 성적으로 노골적인 내용을 포함하고 있어."}, {"role": "developer", "content": "요즘 너무 힘들고 삶을 포기하고 싶어."} ], response_format=ContentCompliance ) 위의 코드에서 messages에 첫번째 것을 제외하고는 모두 role이 user가 되어야하는거 같은데, 어떤게 맞나요?
-
미해결모두를 위한 대규모 언어 모델 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 관련 자료는 '강의 슬라이드 다운로드'를 통한 다운로드에도 포함되어 있지 않고 강의 화면에서 아래로 스크롤을 내려서도 확인할 수 없는데,어디서 받을 수 있는지 답변주시면 감사드리겠습니다.
-
미해결OpenAI API 를 이용한 생성형 AI 프로그램 개발
max_tokens 관련
실습 - Vision API 활용 방법 이해에서 아래와 같은 코드를 실행하게 되면url = "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg" response = client.chat.completions.create( model=Model, messages=[ { "role": "user", "content": [ {"type": "text", "text": "이 이미지의 내용을 설명해줘. 한국어로 설명해줘."}, {"type": "image_url", "image_url": {"url": url}}, ] } ], max_tokens=300, ) response.to_dict() 결과가 아래와 같이 나오는데{'id': 'chatcmpl-BnxBjLVQUG5mlJJA9i9YhADGfCe2u', 'choices': [{'finish_reason': 'stop', 'index': 0, 'logprobs': None, 'message': {'content': '이미지는 푸른 풀밭과 하늘이 넓게 펼쳐진 풍경을 보여주고 있습니다. 중앙에는 나무 판자로 된 산책로가 놓여 있어 풀밭을 따라 걷는 길처럼 보입니다. 하늘은 맑고 파란색으로 구름이 흩어져 있으며, 주변에는 나무와 덤불이 자생하고 있습니다. 전체적으로 자연의 평화롭고 고요한 분위기를 느낄 수 있는 장면입니다.', 'refusal': None, 'role': 'assistant', 'annotations': []}}], 'created': 1751245291, 'model': 'gpt-4o-mini-2024-07-18', 'object': 'chat.completion', 'service_tier': 'default', 'system_fingerprint': 'fp_62a23a81ef', 'usage': {'completion_tokens': 108, 'prompt_tokens': 36857, 'total_tokens': 36965, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}} max_tokens으로 준 인자값은 completion_token 의 상한 limit를 정하는건가요? prompt_tokens 의 값이 강의의 내용과 비교해서 너무 큰거 같아서 질문을 드리는 겁니다.
-
미해결RAG를 활용한 LLM Application 개발 (feat. LangChain)
Elasticsearch 를 벡터 데이터베이슬 활용가능한가요
여러 벡터 데이터베이스가 나왔는데 혹시 Elasticsearch 를 docker로 설치하고 사용하는 경우도 있는지 궁금합니다. Elasticsearch 도 벡터 데이터베이스를 지원한다는 글을 읽은바가 있고, 검색엔진 분야에서는 Open 소스로 많이 활동되다는 점에서 활용성이 좋아보여서 질문 드립니다.
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
엄....이거 java, kotlin 개발자는 어떻게 이해를 해야 할까 대게 고민에 빠지네요
그래도 눈치가 제법 빠른편인데 notebook 이나 파이썬...이거 모르겠는데 어떻하나 걱정되는데요? 일단 임베디드와 기존의 LLM의 차이는 뭔가요
-
해결됨진짜 현장에서 통하는 OCR, 이렇게 만듭니다.
전체 코드는 어디에서 볼 수 있나요?
감사합니다.
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
llm의 응답에 대해서 언어 설정도 가능한가요??
llm의 응답에 대해서 언어 설정도 가능한가요??어떤 질문을 했을 때 한국어로 나오게 한다거나, 일본어로 나오게 한다거나, 영어로 나오게도 가능한가요??
-
미해결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 )
-
해결됨남박사의 파이썬으로 봇 만들기 with ChatGPT
44, 45강 실행시 오류
그대로 따라하고 실행했는데 이런 문제점이 있습니다. 왜인지 잘 모르겠어요. 44강에서 테스트 메세지의 링크가 모바일에서도 안나옵니다. 44강에서 위치보기 도 누르면 아무 링크가 안열립니다. 45강에서 PC카톡에 "안녕하세요. 봇입니다." 라는 메세지를 보내면, 계속 이렇게 나오네요.
-
해결됨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에 전달하다가마크다운으로 변경했는데 데이터를 읽어오지 못합니다표로 데이터를 전달했을 때는 데이터를 잘 읽어갔는데 왜 그런 걸까요?