안녕하세요! LangChain 관련 강의를 수강하고 있습니다. 다름이 아니라 응답 속도에 관해서 질문드리고싶은데요. LLM(e.g., OpenAI)에 입력(질문)한다. OpenAI의 API Call이 수행된다. OpenAI에서 응답이 BE로 전달된다. 이 순서가 될텐데. 이 때, 강의를 보면 AIMessage가 금방 도출이 되는데. 질문의 길이가 길고, 전문적이게 된다면 응답의 속도가 느려지는건지 궁금합니다.
안녕하세요 좋은 강의 감사드립니다. 강의에서 이해가 안되는 부분이 생겨 질문드립니다. 2.4 답변을 검증하는 self rag 에서, hallucination을 판단하는 부분에 대한 질문입니다. node가 hallucination을 잘 판단하지 못하자, 강의에서는 크게 3가지 조치를 취하셨는데요 hallucination prompt 직접 작성 hallucination_llm의 temperature = 0 으로 설정 generate_llm의 max_completion_tokens를 100, 50 으로 감소 근데 저는 강의대로 따라해도, 계속 hallucinated, not hallucinated가 번갈아가면서 나오더라고요. max_completion_tokens을 100 --> 70, 50으로 감소시켜도, test하는 셀을 여러번 돌리면 hallucinated, not hallucinated가 번갈아가면서 나옵니다. 답변 내용을 보면, 저의 answer는 5천만원에 대한 소득세를 624만원으로 잘 계산을 하는데 check_hallucination만 판단을 잘 못하는것 같았습니다. 답변을 "소득세는 624만원입니다." 이런 식으로만 짧게 대답을 하다보니, hallucination에 대한 판단을 잘 못하는것 같다는 느낌을 받았습니다. 그래서 chatgpt의 도움을 받아서 아래와 같이 수정을 하니 hallucination에 대한 판단은 일관되게 not hallucinated로 판단하더라고요. generate_llm의 max_completion_tokens를 200, 300 정도로 증가 generate_prompt를 직접 작성하면서, 작성할때 답변에 대한 근거 도 같이 제시하라고 지시 아마도 답변에 대한 근거가 같이 제시되면서 hallucination에 대한 판단에 도움을 준 것 같습니다. 그런데 문제가 있습니다 ㅠ 소득세 계산을 잘 못합니다. 수업 코드로 하면 소득세 계산은 624만원으로 매번 잘 계산을 하지만, 이렇게 바꾸는 경우 소득세 계산이 맞을때도 있고 틀릴때도 있습니다. 그럼 현실에서는 max_completion_tokens 을 150, 100 이렇게 조절해가면서 중간의 타협점?을 찾는 것이 방법인지요? 아니면 제 방법이 틀린 것인지, 다른 방법이 있는 것인지 코멘트 해주시면 감사하겠습니다.
앞 텍스트들로 다음 단어 하나를 예측한다고 했는데, 왜 슬라이딩 윈도에서는 입력과 타깃이 겹쳐져있는건가요? 또한 앞 텍스트부터 누적한 다음, 타깃 한 단어만 예측하는 것으로 이해했습니다. 왜 4개씩 나누는 것인지 궁금합니다. 왜 갑자기 슬라이딩 윈도우로 넘어간것인지 그 중간단계가 이해되지 않습니다.
from langchain.chains.combine_documents import create_stuff_documents_chain 이 부분에서 에러가 납니다 TypeError: Fields of type "<class 'langchain_core.runnables.base.Runnable'>" are not supported.,
선생님 안녕하세요 좋은 강의 감사합니다. 강의를 보며 소스코드를 실행하고 있는데, 3.6 강의에서 수업에 나온 영상과 다르게 코드가 작동하는 부분이 있어서 질문드립니다. agent가 제시한 도구는 그대로 사용하되, args를 바꾸는 경우 수업에서는 아래 코드를 쓰면 바로 요약된 AIMessage가 작성되도록 진행이 되는데, for chunk in graph.stream( Command(resume={"action": "update_args", 'data' : {'query' : "Large Language Model : A Survey 논문의 내용을 검색해서 요약해주세요"}},), config, stream_mode="updates", # values가 아니다. 수정할때는 updates ): print(f'chunk == {chunk}') 저는 아래와 같이 나옵니다. 여기에서 continue를 해도 계속 같은 메시지가 무한반복이 되어버리는 현상이 나옵니다; agent가 제시한 도구를 바꾸는 경우 이 경우에도 위에 처럼 continue를 했음에도 불구하고 계속 "이렇게 진행하면 될까요?" 를 물어보는 현상이 나옵니다. 계속 continue를 해도 같은 현상이 반복되고요 혹시 선생님도 같은 오류가 발생하는지 확인이 가능하실까요? 혹시 이런 오류는 어떤 이유때문에 발생하는 것인지도 답변이 가능하시면 정말 감사하겠습니다. llm 모델을 small_llm이 아니라 일반 llm으로 하니 정상적으로 나오네요. small_llm의 한계 때문에 다음 단계로 못넘어가는 것일까요? 다음 단계로 넘어가는건 비교적 쉬운 task 같은데 small llm의 어떤 부분? 때문에 이런 무한 loop 오류가 발생하는 것인지도 궁금합니다. 답변이 가능하신 선에서 말씀해주시면 감사하겠습니다.
메이드 인 RAG(로컬 LLM Q&A시스템) With Docker + ollama + R2R
강의 내용대로 설정하여 http://localhost:7273/documents 페이지에서 문서를 업로드하였는데, 아래와 같은 메시지가 표시되면서 업로드가 실패하였습니다. Upload Failed Status 500: An error "500: Error during ingestion: OpenAl credentials not configured but openai/ model prefix used' occurred during create_document 내용 확인 부탁드립니다. 감사합니다.
안녕하십니까! 강사님! 항상 질문에 대한 답변을 잘 해주심에 감사드립니다! 목표는 학교 정보 챗봇이고 강사님의 강의 수강을 바탕으로 그래프 구현해보고 있습니다. 현재 에이전트로는 1) 웹 크롤링 하고 임베딩 시킨 정보를 바탕으로 답변해주는 에이전트(학사일정, 장학금, 휴학 등) 2) 의도와 다른 질문이 왔을 때 답변해주는 기본 llm 현재 이렇게 있습니다 여기다가 에이전트를 하나 더 추가해서 멀티 에이전트로 라우팅해서 사용하거나 툴콜링 기법을 연습해보려 하는데 추가 계획중인 에이전트는 다음과 같습니다. 3) 웹 사이트 공지사항에 대한 정보를 기반으로 답변해주는 에이전트 공지사항은 실시간성과 특정 기간에 대한 정보가 강하기 때문에 에이전트를 분리해야한다고 생각했습니다. 위의 해당 내용을 구현하기 위해서는 공지사항 크롤링 자동화 파이프라인을 구축한 후 이를 실시간으로 계속 임베딩을 시켜야할지 아니면 임베딩 기법이 아닌 다른 방법으로 구현하는게 좋을지에 대한 의문이 있습니다. 경험이 많으신 강사님께서의 노하우가 궁금합니다! 또한 위처럼 구현하게 될 경우 1번 에이전트와 3번 에이전트를 라우터 할때 시스템 프롬포트가 애매하다고 생각됩니다. 강사님이라면 어떻게 하실지 노하우에 대한 조언을 듣고 싶습니다!! 지식이 부족해서 깔끔하게 질문을 드리지 못함에 죄송합니다..! 감사합니다
문제 상황: 모듈을 불러오는 과정 중 에러 발생. (langchain 1.1.0 버전 사용 중) from langchain.chains import RetrievalQA 이유: langchain 최신 버전에서 chains 모듈이 langchain-classic 패키지로 분리되었다고 합니다. 해결 방법: pip install langchain-classic 패키지 설치 후 아래와 같이 코드 작성. from langchain_classic.chains import RetrievalQA
graphRAG - Neo4J로 구현하는 지식 그래프 기반 RAG 시스템 (feat. LangChain)
from langchain_neo4j import Neo4jGraph from dotenv import load_dotenv import os #환경 변수 로드 load_dotenv() #neo4j 연결 설정 NEO4J_URI = os.getenv("NEO4J_URI") NEO4J_USERNAME = os.getenv("NEO4J_USERNAME") NEO4J_PASSWORD = os.getenv("NEO4J_PASSWORD") #그래프 객체 생성 graph = Neo4jGraph( url=NEO4J_URI, username=NEO4J_USERNAME, password=NEO4J_PASSWORD ) def main(): print("Hello from neo4j-graphrag!") if __name__ == "__main__": main()
안녕하세요-! 늦게 챌린지 공부 시작했지만 할 수 있는 만큼 하고 싶어 인프런 강의 열심히 들었습니다. 해설강의 공지를 매우 늦게 확인해 이메일을 확인해보니 스팸함, 다 확인해봐도 메일은 못 받았습니다ㅠ 그럼에도 공지를 확인했어야 했는데, 제가 확인이 늦어 제 잘못이기는 하나 혹 가능하다면 해설 강의 저도 듣고 싶습니다..!! 복습하면서 부족한 부분 채우며 공부하고 싶은데 혹시혹시 가능한 방법이 있을지 문의드립니다ㅠ! 감사합니다!
목차별 내용 요약 및 만점 노트 생성 시 Gemini를 먼저 사용한 이유 에 대해 명확히 답변드리겠습니다. 가장 큰 이유는 '후처리 효율성' 때문입니다. NotebookLM은 답변의 출처(Source) 를 반드시 명시(인용)하도록 설계되어 있습니다. 이 때문에 복습용 만점 노트를 Markdown 형식으로 생성하여 Notion 등에 복사해 붙여넣을 때, 불필요한 인용 구문이나 주석이 함께 포함 되어 깔끔하게 편집하기 어렵습니다. 반면, Gemini는 출처를 제거 하고 오직 순수한 Markdown 형식의 텍스트 만 출력하도록 프롬프트 명령을 내릴 수 있습니다. 즉, 저희 시스템은 '만점 노트의 후편집 및 보관의 용이성' 을 최우선으로 고려했기 때문에, 구조 생성 단계(만점 노트) 에서는 Gemini를, 인출 연습 단계(퀴즈) 에서는 NotebookLM을 사용하도록 분리한 것입니다.
안녕하세요 좋은 강의 감사드립니다. 3.3 강의를 듣고 있는데 코드에 오류가 발생해서 질문드립니다. chatgpt에도 물어봤는데 오류가 해결되지 않네요 tool_node.invoke({'messages': [ai_message]}) 부분에서 아래와 같은 오류가 발생합니다. --------------------------------------------------------------------------- ValueError Traceback (most recent call last) Cell In[10], line 4 1 # tool_node를 직접 invoke 하는 경우 이런 형식으로 해야 하고, ai message가 가장 마지막에 들어가야 한다. 2 # ai message는 반드시 tool_calls 값을 가지고 있어야 한다. ----> 4 tool_node.invoke({ 'messages' : [ai_message], 'tools' : tool_list}) File c:\Users\user\miniconda3\envs\langgraph-agent-inf\Lib\site-packages\langgraph\_internal\_runnable.py:368 , in RunnableCallable.invoke (self, input, config, **kwargs) 366 if kw_value is MISSING: 367 if default is inspect.Parameter.empty: --> 368 raise ValueError( 369 f"Missing required config key ' {runtime_key} ' for ' { self.name } '." 370 ) 371 kw_value = default 372 kwargs[kw] = kw_value ValueError : Missing required config key 'N/A' for 'tools'. 혹시 몰라서 아래와 같이 해봤는데도 같은 오류가 발생합니다. tool_node.invoke({'messages': [ai_message], 'tools' : tool_list}) 기존 코드에서 바꾼것은 없고, 다만 azurechatopenai 대신 chatopenai를 직접 사용해서 llm, small_llm을 이렇게 정의했습니다. llm = ChatOpenAI(model='gpt-4o') small_llm = ChatOpenAI(model='gpt-4o-mini') 어디가 오류의 원인인걸까요 ㅠ?
모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
안녕하세요. LLM 관련 강의 잘 듣고 있습니다. 실무 적용에 많은 도움이 되고 있어 감사드립니다. 강의 내용과 직접적인 연계는 아니지만, 강의를 듣는 중 궁금한 점이 생겨 문의드립니다. 현재 문서 분류 강의를 들으며 생각해본 부분인데, LLM을 이용해 문서 분류가 가능한 것처럼, 퍼지 해시(Fuzzy Hashing)처럼 문서 간 유사도를 하나의 점수 형태(예: 0~100, 혹은 정규화된 점수 등)로 산출하는 것이 가능한지 궁금합니다. 점수가 의미론적 유사도이든, 어떤 방식이든 상관없이, LLM이 두 문서를 입력받아 정량적 점수(Scoring Output)를 생성할 수 있는지 알고 싶습니다. 만약 가능하다면, 어떤 방식으로 접근하는 것이 적절한지(예: 모델 형태, 프롬프트 전략, 파인튜닝 여부, 평가 기준 등), 방향성을 조언해주시면 도움이 될 것 같습니다. 참고로 제가 언급한 퍼지 해시(Fuzzy Hashing) 는 다음 개념을 의미합니다. 퍼지 해시는 일반적인 해시 함수와 달리, 입력 데이터가 일부 변형되더라도 서로 유사한 해시 값을 생성하여 문서 또는 파일 유사도를 비교하기 위한 기술입니다. 조언 주시면 감사하겠습니다. 좋은 강의 계속 기대하겠습니다. 감사합니다.