LangChain&LangGraph (31) 썸네일형 리스트형 RNN RNN : RNN의 은닉층에 과거 정보를 압축해 저장하는 역할을 하고, 이 정보가 다음 시간 단계로 다시 입력되어 순환되므로 연속된 데이터를 통해 음성, 텍스트, 시계열과 같이 순서가 중요한 데이터에서 시간에 따른 문맥과 패턴 파악 RNN 문제점 :RNN이 먼 과거의 데이터를 제대로 기억하지 못하고 주로 최신 데이터에만 반응하며, 전통적인 역전파 방식은 가중치 크기에 따라 커지거나( Exploding Gradient )사라지는( Vanishing Gradient ) 문제가 존재함. 이로 인해 긴시간, 오랜 학습을 수행하면 문제가 발생 Vanishing Gradient 문제 이유역전파 과정에 사용되는 활성화 함수가 sigmoid or tahn 함수인데 이의 미분값이 0~1이기때문에 반복할수 지수적.. Vertical AI Prototype # Vertical AI Prototype기업 DB 기반 데이터 조회, 시각화 및 분석을 지원하는 Vertical AI 프로토타입 비전문가도 자연어와 대화형 인터페이스로 쉽게 데이터에 접근하도록 설계되었습니다.---## 📝 프로젝트 개요### 프로젝트 배경기업 내부 또는 클라이언트의 DB 데이터를 효율적으로 활용하기 위한 AI 기반 시각화 어플리케이션입니다. 비전문가가 SQL 등 데이터베이스 언어를 알지 못해도, 자연어로 질의하고 대화처럼 분석 및 시각화할 수 있습니다.### 해결하려는 문제- 기업 내 방대한 데이터 활용의 진입장벽- 데이터 분석에 대한 비전문가의 사용성 부족 - 복잡한 SQL 및 쿼리 작성 한계 - 자연어를 통한 손쉬운 데이터 접근과 분석 제공---## ✨ 주요 기능- **St.. 디버깅 - #4 중간 메시지 변경 중간 메시지 변경특정 단계의 메시지를 변경한 후 replay 를 수행하여 답변의 차이를 검증 간능하다 원본 시나리오 Human > 1+10 은?AI > tool calls ( 1+10) Tool > 1+ 10 = 11AI > 11 입니다 메시지 변경 시나리오Human > 1+10 은?AI > tool calls ( 100+1000)Tool > 100+ 1000 = 1100AI > 1100 입니다 핵심 코드@tooldef sum_tools(a:int, b:int)->int: """ get a, b two number add""" return a+b **************중간 생략********** # 그래프 상태 스냅샷 생성snapshot = graph.get_state(con.. 디버깅 - #3 replay https://programmerk.tistory.com/93 디버깅 - #2 interruptinterrupt :LangGraph의 진행을 특정 단계에서 중지 기능 구성도chatbot 역할 : 사전 llm.bind_tools 로 제공된 tools 을 사용할지 결정하는 역할tools : 웹 검색 도구 제공,chatbot에서 tool_calls 호출시 사용되는 tooprogrammerk.tistory.com 인터럽트 before 로그https://smith.langchain.com/public/25c69e3d-26ce-4862-834c-b77ab3496fa5/r LangSmith smith.langchain.com 인터럽트 구간부터 이어서 하기 예제events = graph.stream(None, con.. 디버깅 - #2 interrupt interrupt :LangGraph의 진행을 특정 단계에서 중지 기능 구성도chatbot 역할 : 사전 llm.bind_tools 로 제공된 tools 을 사용할지 결정하는 역할tools : 웹 검색 도구 제공,chatbot에서 tool_calls 호출시 사용되는 tools 를 가지고 있는 노예제 코드########## 1. 상태 정의 ##########class State(TypedDict): # 메시지 목록 주석 추가 messages: Annotated[list, add_messages]########## 2. 노드 추가 ##########def chatbot(state: State): # 메시지 호출 및 반환 tavily_tool = get_tavily_tool() .. 디버깅 - #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)**: 사용자 질문과 가장 관련성이 높은.. 이전 1 2 3 4 다음