묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
3.2.1 LangChain과 Chroma를 활용한 RAG 구성_결과 관련
3.2.1 LangChain과 Chroma를 활용한 RAG 구성 + Upstage Embeddings.ipynb 파일을 .py로 변환하여 실행시켰는데, 결과가 제대로 나오지 않습니다.한번인가 정확하게 나왔던것 같습니다.무슨 문제 인지 궁금합니다.--------------------------------%runfile /home/sjhappy/downloads/source_code/LLM/inflearn-lim-application/3_2_2.py --wdir/home/sjhappy/anaconda3/envs/LLM_EN/lib/python3.9/site-packages/langsmith/client.py:253: LangSmithMissingAPIKeyWarning: API key must be provided when using hosted LangSmith API warnings.warn({'query': '연봉 3천만원인 직장인의 소득세는 얼마인가요?', 'result': '질문에서 제공된 정보로는 정확한 소득세를 계산할 수 없습니다. 소득세는 근로소득 외에 다른 소득, 세액공제 및 감면액 등에 따라 달라질 수 있습니다. 따라서, 더 자세한 정보를 제공해주시면 소득세를 계산해드릴 수 있습니다.'}------------------# coding: utf-8# # 1. 패키지 설치# In[1]:# # 2. Knowledge Base 구성을 위한 데이터 생성## - [RecursiveCharacterTextSplitter](https://python.langchain.com/v0.2/docs/how_to/recursive_text_splitter/)를 활용한 데이터 chunking# - split 된 데이터 chunk를 Large Language Model(LLM)에게 전달하면 토큰 절약 가능# - 비용 감소와 답변 생성시간 감소의 효과# - LangChain에서 다양한 [TextSplitter](https://python.langchain.com/v0.2/docs/how_to/#text-splitters)들을 제공# - chunk_size 는 split 된 chunk의 최대 크기# - chunk_overlap은 앞 뒤로 나뉘어진 chunk들이 얼마나 겹쳐도 되는지 지정# In[1]:from langchain_community.document_loaders import Docx2txtLoaderfrom langchain_text_splitters import RecursiveCharacterTextSplittertext_splitter = RecursiveCharacterTextSplitter(chunk_size=1500,chunk_overlap=200,)loader = Docx2txtLoader('./tax.docx')document_list = loader.load_and_split(text_splitter=text_splitter)# In[2]:from dotenv import load_dotenvfrom langchain_upstage import UpstageEmbeddings# 환경변수를 불러옴load_dotenv()# OpenAI에서 제공하는 Embedding Model을 활용해서 chunk를 vector화embedding = UpstageEmbeddings(model="solar-embedding-1-large") # In[7]: from langchain_chroma import Chroma # 데이터를 처음 저장할 때database = Chroma.from_documents(documents=document_list, embedding=embedding, collection_name='chroma-tax', persist_directory="./chroma") # 이미 저장된 데이터를 사용할 때# database = Chroma(collection_name='chroma-tax', persist_directory="./chroma", embedding_function=embedding) # # 3. 답변 생성을 위한 Retrieval## - Chroma에 저장한 데이터를 유사도 검색(similarity_search())를 활용해서 가져옴 # In[8]: query = '연봉 3천만원인 직장인의 소득세는 얼마인가요?' # k 값을 조절해서 얼마나 많은 데이터를 불러올지 결정retrieved_docs = database.similarity_search(query, k=4) # In[9]: retrieved_docs # # 4. Augmentation을 위한 Prompt 활용## - Retrieval된 데이터는 LangChain에서 제공하는 프롬프트("rlm/rag-prompt") 사용 # In[10]: from langchain_upstage import ChatUpstage llm = ChatUpstage() # In[11]: from langchain import hub prompt = hub.pull("rlm/rag-prompt") # # 5. 답변 생성## - [RetrievalQA](https://docs.smith.langchain.com/old/cookbook/hub-examples/retrieval-qa-chain)를 통해 LLM에 전달# - RetrievalQA는 [create_retrieval_chain](https://python.langchain.com/v0.2/docs/how_to/qa_sources/#using-create_retrieval_chain)으로 대체됨# - 실제 ChatBot 구현 시 create_retrieval_chain으로 변경하는 과정을 볼 수 있음 # In[12]: from langchain.chains import RetrievalQA qa_chain = RetrievalQA.from_chain_type(llm,retriever=database.as_retriever(),chain_type_kwargs={"prompt": prompt}) # In[13]: ai_message = qa_chain({"query": query}) # In[14]: # 강의에서는 위처럼 진행하지만 업데이트된 LangChain 문법은 .invoke() 활용을 권장ai_message = qa_chain.invoke({"query": query}) # In[15]: print(ai_message) # In[ ]:
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
3.3 Langchain 없이 Upstage RAG 구성
안녕하세요 강사님. 🙂 질문 내용3.3 강의를 듣던 중 chatGPT 말고 upstage로 구성하는 방법은 없을까? 하고 스스로 방법을 찾아봤습니다. https://github.com/openai/tiktoken/blob/main/tiktoken/model.py 현재 tiktoken에서 제공되는 model 중 upstage의 solar 모델이 없는 것 같습니다. upstage 로 RAG를 구성하는 방법도 배울 수 있을까요..?
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
chroma vector db 생성에서 오류
안녕하세요. 지금 Chroma.from_documents(documents=document_list, embedding=embedding) 이 부분에서 에러가 나서 질문 드립니다. 개발 환경은 vscode에서 jupyter notebook 가상환경 만들어서 사용 중입니다. 사내에서 공부 중이라 drm으로 인해 txt 파일로 변경을 했고, ollama를 사용해서 embedding model을 생성했습니다. mxbai-embed-large 이 모델을 사용했고요. 일단 소요 시간이 너무 오래 걸립니다. 그리고 1시간이 넘어가고는 canceled future for execute_request message before replies were done 이 에러가 뜨더라고요. 그래서 python으로 작성을 했더니 2시간 정도 걸리니까 생성은 되더라고요. 이건 좀 아닌 거 같아서 질문 드립니다. 혹시 왜 이런지 아실까요?
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
작성해주신 코드를 볼 수 있는 곳이 있을까요?
작성해주신 코드를 볼 수 있는 곳이 있을까요? 대화 기록을 남기는 법, 채이닝을 이용하는 법을 코드를 보면서 따라가고 싶습니다
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
upstage api 연결
안녕하세요 강사님 🙂 저는, 이번 강의를 통해 ipynb로 처음 실습을 해봅니다.실습 중 처음부터 막히는 부분이 발생해서 질문을 남깁니다. 실습환경Mac OSPython 3.13pyenv virtualenv 작성한 코드%pip install langchain-upstage python-dotenv발생한 오류Collecting langchain-upstage Using cached langchain_upstage-0.6.0-py3-none-any.whl.metadata (3.3 kB) Requirement already satisfied: python-dotenv in /Users/dot/.pyenv/versions/3.10/envs/inflearn-llm-application/lib/python3.13/site-packages (1.0.1) Requirement already satisfied: langchain-core<0.4.0,>=0.3.29 in /Users/dot/.pyenv/versions/3.10/envs/inflearn-llm-application/lib/python3.13/site-packages (from langchain-upstage) (0.3.34) Requirement already satisfied: langchain-openai<0.4,>=0.3 in /Users/dot/.pyenv/versions/3.10/envs/inflearn-llm-application/lib/python3.13/site-packages (from langchain-upstage) (0.3.4) Collecting pypdf<5.0.0,>=4.2.0 (from langchain-upstage) Using cached pypdf-4.3.1-py3-none-any.whl.metadata (7.4 kB) Requirement already satisfied: requests<3.0.0,>=2.31.0 in /Users/dot/.pyenv/versions/3.10/envs/inflearn-llm-application/lib/python3.13/site-packages (from langchain-upstage) (2.32.3) Collecting tokenizers<0.20.0,>=0.19.1 (from langchain-upstage) Using cached tokenizers-0.19.1.tar.gz (321 kB) Installing build dependencies ... Getting requirements to build wheel ... Preparing metadata (pyproject.toml) ... error: subprocess-exited-with-error × Preparing metadata (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [6 lines of output] Checking for Rust toolchain.... Cargo, the Rust package manager, is not installed or is not on PATH. This package requires Rust and Cargo to compile extensions. Install it through the system's package manager or via https://rustup.rs/ [end of output] ... note: This is an issue with the package mentioned above, not pip. hint: See above for details. Note: you may need to restart the kernel to use updated packages. Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings...문제 해결제가 영어를 못해서 claude한테 질문해보니까, Rust와 Cargo가 설치되어 있지 않다고 하더군요.curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source "$HOME/.cargo/env"해당 명령어로 rust를 설치 한 뒤, 수행하면 될거라고 하는데... 너무 번거로워서 다른 방법으로 빌드된 버전을 미리 설치하도록 수행했습니다.%pip install --only-binary :all: langchain-upstage python-dotenv궁금한 점langchain-openai를 설치할 때는 문제가 없던데, 왜 langchain-upstage는 이런 문제가 발생하나요..?
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
챗봇 성능 테스트를 하기에 좋은 플랫폼이 있을까요?
현재 개인정보 배우미 챗봇을 다 만들고 테스트 중에 있습니다.문서는 총 78개를 넣었고, 문서에서 관련 내용을 잘 찾아서 응답하고 있는데, 실제 문서와 응답을 대조해서 1차로 사람이 확인하는 방법 이외에 langsmith와 같이 성능을 측정하기 위한 플랫폼이 있는지 궁금 합니다. langsmith의 경우 챗봇 속도를 확인하고 각 항목당 어떻게 처리하는지 확인이 가능하나, 질문에 대한 정확도나 유사도를 보기 쉽게 확인하기는 조금 부족한것 같더라구요.. huggingface의 evaluate를 써봤으나, 단어, 구문 구조가 다르면 0점으로 평가될 가능성이 높아 적합하지 않아보입니다.. 혹 추천해주실 만한 플랫폼이 있으실까요?
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
hub.pull시에 API KEY가 필요하다고 경고가 나옵니다.
다른 분도 마찬가지로 질문 남겨주셨는데 hub,pull 시에 에러가 발생합니다.정책이 바뀐 것 같다는 답변을 보고, langSmith 에서 카드를 등록하고 'Developer' Plan 을 선택도 했고, API KEY 도 발급 후.env 파일에 아래와 같이 설정해도 에러가 발생합니다.LANGCHAIN_TRACING_V2=true LANGCHAIN_API_KEY=<API_KEY> Failed to get info from https://api.smith.langchain.com: LangSmithConnectionError('Connection error caused failure to GET /info in LangSmith API. Please confirm your internet connection. SSLError(MaxRetryError("HTTPSConnectionPool(host=\'api.smith.langchain.com\', port=443): Max retries exceeded with url: /info (Caused by SSLError(SSLCertVerificationError(1, \'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1007)\')))"))\nContent-Length: None\nAPI Key: lsv2_********************************************06') window 환경이고 local 환경에서 구동 중이라 별도 방화벽은 설정이 되어있지 않았는데 해결 방안 공유 부탁드립니다.
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
회사보안 문제로 허깅페이스 hub.pull 이 불가능한데
혹시 다른 방법으로 prompt를 생성할 방법이 있을까요?
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
안녕하세요 모델 관련해서 질문드립니다.
외부에 오픈할 토이프로젝트를 진행하려고 무료 API를 찾다보니,Amazon Lex 모델이 1년간 매일 일정량을 무료로 제공하고 있더라구요. AI를 처음 사용해보는거라 OPEN AI 처럼 강의 예시인 소득세법 챗봇을 구현하는게 가능한 모델인지 모르겠어서 강사님 의견을 여쭤보고싶습니다!
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
채팅 히스토리 관련
안녕하세요Azure OpenAI 기반 챗봇 개발 중에, 사용자와 챗봇의 채팅 히스토리를 기록하려 합니다.ex) 챗봇의 문맥 파악, 채팅 로그 분석 등 이 때에 채팅 히스토리를 저장하는 합리적인 방법이 어떤게 있을까요?(현재 테스트 단계에서는 인메모리를 사용하고있습니다.) 감사합니다, 새해 복 많이 받으세요.
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
추가 질문입니다. pinecone class
강의를 통해 개인정보배우미 챗봇을 만드는 중pinecone의 init 에 대한 이슈가 발생됩니다 ㅠㅠ서칭해보니 pinecone 자체 업데이트를 한것 같은데요.... 혹시 아래 장애 관련해서 이슈사항을 고칠 수 있는 방법이 있을까요?
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
Usage Limit 관련해서 질문이 있습니다!
만약에 openai api를 사용해서 챗봇 서비스를 프로덕션 환경에서 배포해서 사용자들이 사용할 수 있도록 한 경우, 만약 많은 사용자로 인해 Usage Limit이 초과 되면 어떻게 해야할까요? Usage Tier 1 기준 gpt-4o-mini 모델의 한도:RPM(분당 요청): 500RPD(일당 요청): 10000TPM(분당 토큰): 200000gpt-4o-mini 모델을 사용한 챗봇을 배포했다고 가정했을 때 많은 사용자로 인해 요청 횟수를 넘어가게 되면 어떻게 해야할까요?사용자 별로 제한을 둬야하는 걸까요? 분당 몇 번, 하루에 몇 번 질문 가능 이런식으로..?
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
embedding에 upstage를 사용하려 하는데 chroma 과정에서 에러가 납니다
openai말고 upstage를 사용하려고 하고 있는데 embedding쪽에서 에러가 발생합니다.RemoteProtocolError라고 뜨는데 왜 그런걸까요?3.1.2강의에서 알려주신 upstage를 이용한 chat은 정상적으로 동작하였습니다. from langchain_upstage import UpstageEmbeddings embedding = UpstageEmbeddings(api_key="oooooooo", model="embedding-passage") from langchain_chroma import Chroma database = Chroma.from_documents(documents=document_list, embedding=embedding, collection_name='chroma-tax', persist_directory='./chroma') --------------------------------------------------------------------------- RemoteProtocolError Traceback (most recent call last) .... APIConnectionError: Connection error.
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
SSLCertVerificationError 오류 관련
안녕하세요 수강 중에 아래와 같이 관련된 오류가 계속 노출되어 진행이 되지 않아 질문 드립니다.from langchain import hub prompt = hub.pull('rlm/rag-prompt') 를 호출 시 아래와 같이 SSLCertVerificationError 가 나타나고 있습니다. Failed to get info from https://api.smith.langchain.com: LangSmithConnectionError('Connection error caused failure to GET /info in LangSmith API. Please confirm your internet connection. SSLError(MaxRetryError("HTTPSConnectionPool(host=\'api.smith.langchain.com\', port=443): Max retries exceeded with url: /info (Caused by SSLError(SSLCertVerificationError(1, \'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:992)\')))"))\nContent-Length: None\nAPI Key: ')내용을 보면 api.smith.langchain.com 에 연결 시 인증서 문제로 접속이 불가하다라는 내용 같은데요, 해당 관련하여 비슷한 오류를 겪으신 분들 어떻게 해결하셨는지 궁금합니다. 답변 부탁 드리겠습니다. 감사합니다
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
소득세법 파일
처음에 어떤프로그램으로 열고 다시 세이브할때 어떻게 하나요?word 읽기기능만 있도록 해서 리드했는데 다시 세이브 기능은 비활성화 됩니다.
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
단순히 LLM에 여러번 질문 하는데에도 Langchain이 도움이 될까요?
현재 대화를 분석하는 프로젝트를 진행하면서 LLM을 사용중인데 답변 퀄리티를 높이기 위한 방법을 모색하다 강의를 보게 되었습니다 ! 강의 내용이 대부분 제가 모르고 있던 것들이어서 많은 도움이 되었습니다. 그런데 제가 해결해야할 상황은 강의 내용과 다르게 참고할만한 특정 정보가 있는 것이 아닌 일상적인 여러 상황의 대화를 분석하는 프로젝트이다보니 Langchain이나 Chroma 또는 Pinecone 까지 사용해야 할지가 의문입니다. 지금 생각중인 흐름은답변 작성 규칙 과 대화 텍스트를 LLM 에 전달해서 답변을 전달 받고답변과 유저 질문을 함께 다시 LLM 에 전달해서 답변 내용을 토대로 유저 질문에 답변이 구조를 생각중인데, 이렇게 LLM에 질문, 답변받은 내용을 가지고 다시 질문 하는데에도 Langchain이나 embedding을 사용하는 것이 답변 퀄리티 향상에 도움을 주는지 궁금합니다 ! 강의 잘 들었습니다. 감사합니다.
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
pinecone 에 document 가 중복으로 저장이 되나요?
document list 를 pinecone 에 넣는 코드를 실행해서 콘솔에 변경된 것을 확인했습니다.그다음에 document 추가하는 코드를 주석하는 것을 까먹고, 한번 더 실행했는데, 이러면 동일 데이터가 추가로 저장 되는 건가요?감사합니다.
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
RetrievalQA is Deprecated
RetrievalQA 가 0.1.17 버전 이후로 Deprecated 되었다고 마이그레이션 가이드를 보고 다음과 같이 바꿨습니다.from langchain import hub from langchain.chains import create_retrieval_chain from langchain.chains.combine_documents import create_stuff_documents_chain retrieval_qa_chat_prompt = hub.pull("langchain-ai/retrieval-qa-chat") combine_docs_chain = create_stuff_documents_chain(llm, retrieval_qa_chat_prompt) rag_chain = create_retrieval_chain(database.as_retriever(), combine_docs_chain) rag_chain.invoke({"input": query})위 예시는 잘 작동하는데, rml/rag-prompt 를 사용하면,KeyError: "Input to ChatPromptTemplate is missing variables {'question'}. Expected: ['context', 'question'] Received: ['input', 'context']\nNote: if you intended {question} to be part of the string and not a variable, please escape it with double curly braces like: '{{question}}'.\nFor troubleshooting, visit: https://python.langchain.com/docs/troubleshooting/errors/INVALID_PROMPT_INPUT "가 발생하는데, template 의 placeholder 의 형태가 달라서인것 같은데, 어떻게 키값을 설정해야 하나요?
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
chatbot에 이전 답변 내역이 나타나지 않을 때 어떻게 해야할까요?
강의를 따라서 만들어 봤는데요..ㅠㅠ이전 질문한 항목의 답변이 남질 않는데 어떻게 해야할까요?여러가지 시도해보다가 강사님 코드로 붙여넣기해서 다시 한번 돌려봤는데도 문제가 동일하게 발생합니다..
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
LangSmith Evaluator로 Ollama 모델 설정
강의 전반을 개인 데스크탑에 도커를 설치하여 Ollama에 한국어로 파인튜닝된 llama3.2 모델을 사용하였었습니다.streamlit으로 만든 프로젝트도 문제없이 돌아갔었는데,Langsmith에서 Evaluator로 해당 모델을 설정하니 아래와 같은 에러가 나옵니다.langsmith에서는 ollama 모델로 평가를 할 수 없는건가요?ollama._types.ResponseError: llama3.2-ko does not support tools Error running evaluator <DynamicRunEvaluator answer_hallucination_evaluator> on run 38c51823-def2-4eb1-8347-c019874622eb: KeyError('contexts') Traceback (most recent call last): File "E:\PythonProject\rag_streamlit\.venv\Lib\site-packages\langsmith\evaluation\_runner.py", line 1573, in _run_evaluators evaluator_response = evaluator.evaluate_run( ^^^^^^^^^^^^^^^^^^^^^^^ File "E:\PythonProject\rag_streamlit\.venv\Lib\site-packages\langsmith\evaluation\evaluator.py", line 331, in evaluate_run result = self.func( ^^^^^^^^^^ File "E:\PythonProject\rag_streamlit\.venv\Lib\site-packages\langsmith\run_helpers.py", line 617, in wrapper raise e File "E:\PythonProject\rag_streamlit\.venv\Lib\site-packages\langsmith\run_helpers.py", line 614, in wrapper function_result = run_container["context"].run(func, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\user\AppData\Local\Temp\ipykernel_10064\4107259675.py", line 12, in answer_hallucination_evaluator contexts = run.outputs["contexts"] ~~~~~~~~~~~^^^^^^^^^^^^ KeyError: 'contexts' Error running evaluator <DynamicRunEvaluator answer_evaluator> on run 4a5e6612-1a97-4efc-9da4-ee0b4f113b70: ResponseError('llama3.2-ko does not support tools') # Prompt # hallucination 판단을 위한 프롬프트 grade_prompt_hallucinations = prompt = hub.pull("langchain-ai/rag-answer-hallucination") def answer_hallucination_evaluator(run, example) -> dict: """ hallucination 판단을 위한 Evaluator """ # 데이터셋에 있는 질문과, LLM이 답변을 생성할 때 사용한 context를 활용 input_question = example.inputs["input_question"] contexts = run.outputs["contexts"] # LLM의 답변 prediction = run.outputs["answer"] # LLM Judge로 사용될 LLM llm = ChatOllama( model="llama3.2-ko", base_url=os.getenv("LLM_BASE_URL"), temperature=0 ) # LLM 응답을 위한 LCEL 활용 # 3.6 `dictionary_chain`의 `prompt | llm | StrOutputParser()`` 의 구조와 유사함 answer_grader = grade_prompt_hallucinations | llm # Evaluator 실행 score = answer_grader.invoke({"documents": contexts, "student_answer": prediction}) score = score["Score"] return {"key": "answer_hallucination", "score": score}코드는 llm 부분만 ChatOllama를 사용하고 나머지 부분은 모두 동일합니다