묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)
LLM 모델의 Tool calling 성능비교 결과 문의
선생님 안녕하세요, LLM 모델의 Tool calling 성능비교를 해봤는데요.# 도구 호출이 필요한 LLM 호출을 수행 query = "스테이크와 어울리는 와인을 추천해주세요." ai_msg = llm_with_tools.invoke(query)아래 2개 LLM 모델로 성능비교를 해봤습니다. 그런데 (2) 모델의 경우 Content 와 tool_calls 모두 나오는데요. 그러면 (1), (2) 모델 중에 무엇이 더 좋은 성능인가요? 그리고 Content 와 tool_calls 동시에 나오는 경우는 왜 그런건가요?(1) gpt-4o-2024-05-13----------------------------------------------------------------------------------------------------''----------------------------------------------------------------------------------------------------[{'args': {'query': 'best wine to pair with steak'}, 'id': 'call_p7PJFCZUWXEwyCmK4nzLjx9g', 'name': 'search_web', 'type': 'tool_call'}]----------------------------------------------------------------------------------------------------(2) claude-3-7-sonnet-20250219----------------------------------------------------------------------------------------------------[{'text': '스테이크와 어울리는 와인에 대한 정보를 찾아보겠습니다.', 'type': 'text'}, {'id': 'toolu_01Uc2BwXXyW26n7L78zZ6wGf', 'input': {'query': '스테이크와 어울리는 와인 추천'}, 'name': 'search_web', 'type': 'tool_use'}]----------------------------------------------------------------------------------------------------[{'args': {'query': '스테이크와 어울리는 와인 추천'}, 'id': 'toolu_01Uc2BwXXyW26n7L78zZ6wGf', 'name': 'search_web', 'type': 'tool_call'}]----------------------------------------------------------------------------------------------------
-
미해결RAG 마스터: 기초부터 고급기법까지 (feat. LangChain)
이전 대화 내용 기억하기
안녕하세요.강의를 듣고 추가적으로 공부를 하려고 하는데예를 들어Q. 테슬라의 창업자는 누구야A. 테슬라의 창업자는 OOO입니다.이러한 대화 바로 다음 OOO에 관련한 추가 질문을 하려고합니다.예시) Q. 그렇다면 그 사람에 대해서 간단하게 설명해줘.위 질문을 하려면 LLM이 이전대화내용을 기억해야하는데 그것에 대해서 공부하려합니다.키워드를 뭐라고 잡아야할까요?
-
미해결RAG 마스터: 기초부터 고급기법까지 (feat. LangChain)
re-rank score 관련 아래 질문입니다.
학습 관련 질문이 있으시면, 상세하게 남겨주세요.문제가 발생한 부분의 코드를 함께 올려주세요.수업 영상 몇 분/초 구간인지 알려주세요.
-
미해결RAG 마스터: 기초부터 고급기법까지 (feat. LangChain)
ㄱ
from langchain.retrievers.document_compressors import DocumentCompressorPipeline from langchain_community.document_transformers import EmbeddingsRedundantFilter # 중복 문서 제거 redundant_filter = EmbeddingsRedundantFilter(embeddings=embeddings_model) # 쿼리와 관련성이 높은 문서만 필터링 relevant_filter = EmbeddingsFilter(embeddings=embeddings_model, similarity_threshold=0.5) # Re-ranking re_ranker = LLMListwiseRerank.from_llm(llm, top_n=2) pipeline_compressor = DocumentCompressorPipeline( transformers=[redundant_filter, relevant_filter, re_ranker] ) pipeline_compression_retriever = ContextualCompressionRetriever( base_compressor=pipeline_compressor, base_retriever=chroma_db.as_retriever() ) question = "테슬라 회장은 누구인가요?" compressed_docs = pipeline_compression_retriever.invoke(question) print(f"쿼리: {question}") print("검색 결과:") for doc in compressed_docs: print(f"- {doc.page_content} [출처: {doc.metadata['source']}]") print("-"*100) print()`(4) DocumentCompressorPipeline` - 여러 압축기를 순차적으로 결합하는 방식 - BaseDocumentTransformers를 추가하여, 문서를 더 작은 조각으로 나누거나 중복 문서를 제거하는 등의 작업도 가능여기에서 result = chain.invoke() 로 받아서 result의 데이터를 보면, context = result['context'][i] query_similarity_score = context.state['query_similarity_score']이렇게 similarity_score 처럼 rerank score같은거 보고싶은데,# 크로스 인코더를 사용하여 유사성 점수를 계산합니다. sentence_pairs = [[query, prediction]] similarity_scores = cross_encoder_model.predict(sentence_pairs)이런식으로 계산을 해야하나요? 추출하고 싶은데 방법을 잘 모르겠습니다.
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
답변 관련 질문
3.4 벡터 데이터베이스로 pinecone 설정하는 강의를 듣고 있는데 최종 답변이 아래와 같이 나왔습니다.처음에는 답변이 잘 나오다가 어느 순간부터 관련 정보가 없다고 나오는데 혹시 그 이유에 대해 알 수 있을까요?{'query': '연봉 5천만원인 거주자의 종합소득세는?', 'result': '죄송합니다. 제공된 문서에 구체적인 소득세율이나 계산 방법에 대한 정보가 없어서, 연봉 5천만원인 거주자의 종합소득세를 정확하게 계산할 수 없습니다.'}
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
윈도우 환경 pip install langchain-chroma 오류
안녕하세요 윈도우환경에서pip install langchain-chroma 시 아래와 같은 오류가 발생하였습니다 chatGpt에 물어보니 Visual Studio Build Tools 2022 - "C++를 사용한 데스크탑 개발" 을설치하면 된다고 해서 설치했는데도 같은 오류가 발생합니다혹시 원인을 해결법을 있을까요??(new_env) PS D:\00-git\LLMS\rag> pip install langchain-chromaCollecting langchain-chromaUsing cached langchain_chroma-0.2.2-py3-none-any.whl.metadata (1.3 kB)Collecting langchain-core!=0.3.0,!=0.3.1,!=0.3.10,!=0.3.11,!=0.3.12,!=0.3.13,!=0.3.14,!=0.3.2,!=0.3.3,!=0.3.4,!=0.3.5,!=0.3.6,!=0.3.7,!=0.3.8,!=0.3.9,<0.4.0,>=0.2.43 (from langchain-chroma)Using cached langchain_core-0.3.45-py3-none-any.whl.metadata (5.9 kB)Collecting numpy<2.0.0,>=1.26.2 (from langchain-chroma)Using cached numpy-1.26.4.tar.gz (15.8 MB)Installing build dependencies ... doneGetting requirements to build wheel ... doneInstalling backend dependencies ... donePreparing metadata (pyproject.toml) ... errorerror: subprocess-exited-with-error× Preparing metadata (pyproject.toml) did not run successfully.│ exit code: 1╰─> [12 lines of output]+ D:\00-git\LLMS\rag\new_env\Scripts\python.exe C:\Users\son\AppData\Local\Temp\pip-install-w42pka3_\numpy_b7703e22acb64ae9bde7b4f773c9579f\vendored-meson\meson\meson.py setup C:\Users\son\AppData\Local\Temp\pip-install-w42pka3_\numpy_b7703e22acb64ae9bde7b4f773c9579f C:\Users\son\AppData\Local\Temp\pip-install-w42pka3_\numpy_b7703e22acb64ae9bde7b4f773c9579f\.mesonpy-js85t3mm -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md --native-file=C:\Users\son\AppData\Local\Temp\pip-install-w42pka3_\numpy_b7703e22acb64ae9bde7b4f773c9579f\.mesonpy-js85t3mm\meson-python-native-file.iniThe Meson build systemVersion: 1.2.99Source dir: C:\Users\son\AppData\Local\Temp\pip-install-w42pka3_\numpy_b7703e22acb64ae9bde7b4f773c9579fBuild dir: C:\Users\son\AppData\Local\Temp\pip-install-w42pka3_\numpy_b7703e22acb64ae9bde7b4f773c9579f\.mesonpy-js85t3mmBuild type: native buildProject name: NumPyProject version: 1.26.4 ..\meson.build:1:0: ERROR: Compiler cl cannot compile programs. A full log can be found at C:\Users\son\AppData\Local\Temp\pip-install-w42pka3_\numpy_b7703e22acb64ae9bde7b4f773c9579f\.mesonpy-js85t3mm\meson-logs\meson-log.txt[end of output]note: This error originates from a subprocess, and is likely not a problem with pip.[notice] A new release of pip is available: 24.3.1 -> 25.0.1[notice] To update, run: python.exe -m pip install --upgrade piperror: metadata-generation-failed× Encountered error while generating package metadata.╰─> See above for output.note: This is an issue with the package mentioned above, not pip.hint: See above for details.(new_env) PS D:\00-git\LLMS\rag>
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
tax-with-markdown 관련 문의
query = '연봉 5천만원인 직장인의 소득세는 얼마인가요?'의 쿼리는 다음과 같이 답변합니다.제공된 문맥에는 연봉 5천만 원인 직장인의 소득세가 구체적으로 정의되어 있지 않습니다. 근로소득에 대한 기본세율이 적용된다고 언급되어 있지만, 기본세율의 구체적인 수치는 제공되지 않았습니다. 따라서 필요한 정보가 부족하여 소득세의 정확한 금액을 계산할 수 없습니다.query = '연봉 5천만원의 소득세를 구체적으로 계산하고, 세율 및 공제 내용을 포함해 설명해 주세요.'의 쿼리에서 연봉이 5천만 원일 경우, 소득세를 계산하기 위해서는 종합소득 과세표준에 적용되는 세율을 사용해야 합니다. 1,400만 원 초과 5,000만 원 이하 구간에 해당하므로 세율은 84만 원 + (1,400만 원을 초과하는 금액의 15%)입니다. 따라서 소득세는 84만 원 + (3,600만 원 * 0.15) = 624만 원이 됩니다.쿼리 내용에 따라 다르게 답변하는데, 왜 그런건지 알수 있나요? 코드 첨부합니다.# 질문 설정#query = '연봉 5천만원인 직장인의 소득세는 얼마인가요?'query = '연봉 5천만원의 소득세를 구체적으로 계산하고, 세율 및 공제 내용을 포함해 설명해 주세요.'import pprint# LLM 설정from langchain_openai import ChatOpenAIllm = ChatOpenAI(model='gpt-4o')from langchain import hubfrom langchain.chains import RetrievalQAprompt = hub.pull("rlm/rag-prompt")retriever = database.as_retriever()#pprint.pprint(retriever.invoke(query))qa_chain = RetrievalQA.from_chain_type( llm, retriever=database.as_retriever(), chain_type_kwargs={"prompt": prompt})import pprint#pprint.pprint(retriever.invoke(query))# LLM 실행ai_message = qa_chain.invoke(query)# 딕셔너리 형태의 응답에서 "answer" 또는 "result" 키 값만 출력if isinstance(ai_message, dict): answer = ai_message.get("answer") or ai_message.get("result") or "응답 없음" print(answer)else: print(ai_message)
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
openai 429 에러 문의
위와 같이 충전도 했고 사용한 current usage도 0 달러인데 429 에러가 뜹니다. 혹시 이유가 뭘까요?
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
UpstageEmbeddings 를 사용하여 RAG를 구성하던 도중 Error...
import os # 기존 환경 변수 확인 print("OPENAI_API_KEY:", os.getenv("OPENAI_API_KEY")) print("UPSTAGE_API_KEY:", os.getenv("UPSTAGE_API_KEY")) # OpenAI API 키 삭제 (Upstage API만 사용하도록 설정) if "OPENAI_API_KEY" in os.environ: del os.environ["OPENAI_API_KEY"] # Upstage API 키 직접 설정 os.environ["UPSTAGE_API_KEY"] = "up_kh9mX7uA129qfCuzmcf6COX4HUabn"처음에 OpenAI API 키랑 Upstage API 키 간의 충돌이 일어났구나 싶어, 위와 같이 코드를 작성한 후에 다시 크로마 DB에 임베딩을 시켜보는 데도 계속 똑같습니다 ㅠㅠ 심지어 API 키를 계속 새로 발급받아도 이래요 ㅠㅠ어디가 문제일까요...?
-
미해결RAG 마스터: 기초부터 고급기법까지 (feat. LangChain)
faiss-gpu 설치법 질문입니다.
pip install faiss-gpu 커맨드 입력하면 아래와 같은 오류가 뜹니다. (langchain) <username>:~/projects/langchain$ pip install faiss-gpuERROR: Could not find a version that satisfies the requirement faiss-gpu (from versions: none)ERROR: No matching distribution found for faiss-gpu
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
dictionary 데이터 관련 질문있습니다!
안녕하세요 dictionary chain을 구성할때 궁금한 점이 있습니다. dictionary = ["사람을 나타내는 표현 -> 거주자"] 으로 수업중에 진행한 것을 봤습니다! 다만 다양한 단어 사전이 필요할 수 있을 것 같은데 구조를 어떻게 하면 좋을지 고민되어 여쭤봅니다.1. 리스트 형태dictionary = [ "사람 -> 거주자", "학생 -> 학습자", "교수 -> 강사", "회사원 -> 직장인" ]2. 완전 비정형 텍스트dictionary = """ 사람 -> 거주자, 학생 -> 학습자, 교수 -> 강사, 회사원 -> 직장인 """혹시 이럴때도 팁같은게 좀 있을까요??
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
파인콘 연결이 안됩니다. ㅠ
3.4강을 보고 따라하고있습니다. 현재 test.ipynb에서 진행중이고 .env는 api key가 입력되어있습니다.먼저 첫 셀을 실행하고 두 번째 셀로 연결을 하려는데 잘 되지 않네요. ㅠ 오류메세지는 다음과 같습니다. 파인콘 API키도 재발급 받아봤고pc = Pinecone(api_key="pinecone_api_key")이런식으로 직접 문자열로도 해봤는데 안되네요 ㅠㅠ 왜이런걸까요? 일단 API 키 인식을 못하길래직접 이렇게 넣었는데도 안되네요; ㅠ 왜이런걸까요? 혹시 해결에 도움될 만한 추가 필요 자료가 있다면 이야기하시면 더 드리도록하겠습니다. ( 환경 pip 라던가.. ) 아래 공식 사이트에 가서https://python.langchain.com/docs/integrations/vectorstores/pinecone/직접적인 환경변수를 넣으면 잘됩니다. 어째서일까요? 해결 :커널을 재시작하니 잘됩니다. 모두들 기본에 충실하시길;;
-
해결됨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[ ]:
-
미해결AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)
향후 로컬LLM을 사용하는 강의가 나올 수 있을까요?
커머셜이나 금융 얘기해주셨는데전자는 권리 문제 후자는 보안문제때문에강의에 사용된 openAI 모델은 사용하기 힘듭니다.양쪽 문제를 해결할 수 있는게 로컬AI라고 생각하는데요. 현재는 LLAMA3이 나와있고, LLAMA4가 상반기에 출시된다고 들었는데 해당 70b~8b 모델 정도로 실무에 적용가능한 현실적인 강의도 있을 수 있는지 궁금합니다.
-
미해결AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)
실습 환경을 google colab + 파이토치로도 가능한가요?
RAG 강의랑 수강해놓고 아직 듣지못하고 있는데실습 환경을 RAG 강의와 더불어colab + 파이토치로 해도 동일하게 실습할수 있나요?
-
해결됨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)
작성해주신 코드를 볼 수 있는 곳이 있을까요?
작성해주신 코드를 볼 수 있는 곳이 있을까요? 대화 기록을 남기는 법, 채이닝을 이용하는 법을 코드를 보면서 따라가고 싶습니다
-
미해결모두를 위한 대규모 언어 모델 LLM Part 5 - LangGraph로 나만의 AI 에이전트 만들기
"Airline Red Teaming Korean" 데이터 클론시 에러가 발생합니다.
강사님 강의 잘 듣고 있습니다. 강사님 강의 4개째 입니다.Airline Red Teaming Korean 를 랭스미스에서 클론할 때 권한 오류(401)가 발생합니다. 물론 재 API 설정도 다 했고, 랭스미스도 설정한 상태에서 에러가 발생합니다.답변 부탁드립니다.
-
해결됨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는 이런 문제가 발생하나요..?