본문 바로가기

개발

(102)
디버깅 - #1 llm.bind_tools tool 이란 llm이 스스로 판단하여 사용 가능한 도구를 의미한다도구 생성시 def 로 생성한 메소드에 @tool 데코레이션을 통해 tool로 선언한다 @tooldef get_word_length(word: str) -> int:"""Returns the length of a word.""" return len(word) """Returns the length of a word.""" bind_tools 메소드 :llm 모델에게 다양한 tool을 제공한다.이후 LLM 에게 질의를 할 경우 LLM 이 판단하여 필요한 tool을 선택 하거나 선택하지않을 수 있다.선택을 한 경우 도구 사용 안한 예제 tavily_tool = get_tavily_tool() # 웹검색 tooltools =..
Plan-and-Solve Prompting 논문 리뷰 # introduction - 모델 내부 파라미터에 접근할 수 없는 서비스 형태로 서비스 제공 , 파인튜닝도 어려움- 대신 instruction이나 trigger sentences 통해 문제 해결 유도, 성능 향상 보인- 그럼에도 불구하고 7%의 게산 오류 , 12%의 단계 누락, 27% 의미 이해 오류 발생 하는 한계 - 이러한 문제 해결위해 Plan-and-Solve prompting 제안 ( PS prompting) instruction : " 목적, 방식, 범위 등"trigger sentence : "Let’s think step by step." "Now, devise a plan." "Carry out the plan" # Step 1: Prompting for Reasoning Gener..
plan & execute agent # 목적 1. 사용자의 질의의도를 파악하여 실행 순서를 작성2. 실행순서에 맞게 도구 선택하여 실행3. 실행 결과 최종 취합4. 하나의 리포트 양식등 템플릿에 맞춰 최종 답변 생성 # 구성도# Flow 1. 사용자 질의 : 'RAG 개발의 핵심'2. plan_node : 실행 순서 생성1. RAG 개발의 핵심 요소를 설명합니다.2. 각 핵심 요소에 대한 자세한 내용을 설명합니다.3. RAG 개발의 전반적인 중요성을 강조하며 마무리합니다.3. agent : 질문과 답변 전달Q : step 1. RAG 개발의 핵심 요소를 설명합니다. A : RAG(Retrieval-Augmented Generation) 개발의 핵심 요소는 다음과 같습니다. **검색(Retrieval)**: 사용자 질문과 가장 관련성이 높은..
Meta prompt 생성 Agent # 목적LLM 등에서 사용되는 프롬프트를 대화형 모델을 통해 생성해주는 Agent로 "프롬프트를 만드는 프롬프트" 라고 불린다.프롬프트 안에서 one-shot, few-shot 등을 통해 모델 품질, 구조,최적화 등에 영향을 미친다.프롬프트를 작성하기위하여 사용자의 요구사항을 충분히 수집하고 넘어 가는 것이 중요하다.충분히 수집하고 난 후에 다음단계로 진행하여 원하는 양식의 프롬프트를 LLM 이 생성하도록 한다. # 구성도요구사항이 충족될 때까지 gathering_infomation에서 사용자에게 추가정보를 요청 한다. # 핵심템플릿에서 4가지 타입을 제시하여 정보를 차례대로 수집하라고 제시 ( objective, variables, constraints, requirements )def get_pr..
langGraph 의 라우팅 # 목적사용자의 질의를 풍성하게 하기위하여 Rewrite를 수행한다Rewrite 된 내용을 기반으로 일반 대화인지, 내부 retreiver 를 활용할지, 웹에서 검색할지를 llm 이 판단한다이때 판단하기위하여 baseModel을 활용한다baseModel 은 본래 파이썬에서 클래스나 API 개발시 데이터 모델링에 사용되는 라이브러리로 타입을 정형화하여 타입 검사를 수행함 이를 활용하여 llm 의 with_structured_output 과 같이 활용하면 원하는 답변을 얻을 수 있음 # 구성도 Retriever 활용 로그https://smith.langchain.com/public/3652730b-7b3a-4c62-9e2a-41f883356fe8/r LangSmith smith.langchain.com..
langGraph 활용 Agent_node # 목적1. 사용자의 Query 를 Agent 가 판단하여 대답을 생성한다.2. 도구가 필요하지 않는 답변의 경우 llm 이 즉시 답변한다3. 만약 도구 사용시 query 와 도구로 생성한 데이터간 연관성을 검사하고 연관성이 떨어지는경우 쿼리를 교정하여 성능을 향상 시킨다.4. 연관성이 높은 경우 llm 에 넣어 최종 답변을 사용한다. # 구성도# 핵심Tool : Agent 가 활용할 도구들 ( pdf_retriever ,web search, mcp 등등) https://python.langchain.com/docs/integrations/tools/ Tools | 🦜️🔗 LangChainTools are utilities designed to be called by a model: their inp..
Vectorstores 정의 : 임베딩 된 벡터 데이터를 저장하고 벡터 간 유사도 계산과 빠른 검색을 효율적으로 지원 목적 : 사용자 요청에 따라 벡터간 유사도를 계산 지 유형: FAISS : 로컬 기반, gpu 지원Chroma : 로컬 기반Pinecone : 외부 api , 비용 필요대표 알고리즘 ANN : 고차원 벡터 공간에서 주어진 쿼리 벡터와 가장 가까운 이웃 벡터를 정확히 찾는 것이 아니라, 약간의 정확도 희생을 감수하고 빠르게 "충분히 가까운" 이웃을 찾는 근사 검색 기법KD-Trees : 데이터를 계층적으로 분할하는 트리 구조Locality-Sensitive Hashing (LSH) : 벡터를 특정 해시값으로 변환Annoy : Spotify에서 개발한 ANN 알고리즘HNSW: 최상위 레이어에서 -> 하위 레..
카톡 기반 RAG 프로토타입 성능 개선편-1 이전 구성도이슈 : 1. 뉴스 정보 : mcp 서버에서 받아온 api 호출값이 제목, 본문 요약, 원본 링크 URL 정보로 풍부하지 못함2. 원본 링크 : 다양한 뉴스 채널별로 html 구조가 달라 파싱의 어려움3. 답변 생성 시간 : 카카오톡에서 response 시간 5초 이상시 timeout 됨4. 답변 품질 : 뉴스 정보의 품질 하락으로 인하여 모델에서 생성되는 답변 품질 또한 하락5. 단방향 프로세스 : 모든 질문에 대해 naver 뉴스를 검색하여 처리하려함 개선 된 구성도적용 내용 1. 뉴스 정보 : 네이버에 등록된 원본 뉴스에 대해서 파싱 추가 2. 원본 링크 : langchain WebBaseLoader 활용하여 파싱 예정3. 답변 생성 시간 : 카카오톡에 callback 가능하도록 요청 (..