자주 공부하지만 매번 토이프로젝트 수준만 공부하게 되는 기술이 langchain, langglaph, RAG, Agent입니다. 누군가 짜논 코드를 약간 수정하고 돌아가는 것만 확인하고 넘어가곤했는데.. 이번에야 말로 뭔가 나만의 프로젝트를 제대로 만들고 싶었습니다.
때마침 '인프런'에서 하는 챌린지 『AI 에이전트 엔지니어링』완독 챌린지를 신청해서 다음주부터 하기로 했고, 도서도 신청해서 배송 중입니다.
대 AI시대, 대 Agent 시대에 나도 뭔가 제대로 된 Agent 한번 만들어 보기 위해 오늘도 열심히 공부하고자 합니다.
이번 2월에는 제대로 나만의 Agent를 만들어 본다는 각오로 빠르게 langchain, langglaph, RAG, Agent에 대해서 복습하고 했습니다.
수강한 강의는 인프런에서 오영재 강사님의 'LangChain version 1.0 을 활용한 생성형 AI 서비스 구축'입니다.
사실 이전에 랭체인과 랭그래프는 구입하고 본 강의만 해도 5개도 넘었지만, 작년 말에 Langchain 1.0도 나왔겠다. 새로운 버전으로 빠르게 복습하고 제대로 Agent를 개발하고자 수강하게 되었습니다.
이번에야 말고 제대로 박살게 주마! Langchain, Langglaph, RAG, Agent!
5. Jupyter Notebook 사용법
저는 VS코드나 Cursor에서 jupyter notebook을 주로 사용하는데 강사님은 기본 jupyter notebook을 이용하시네요.
단축키
Shfit + Enter : 셀실행 + 다음 셀 이동
Esc + A : 위쪽에 Cell 삽입
Esc + B : 아래쪽에 Cell 삽입
Esc + X : Cell 삭제
Esc + Z : Cell 삭제 취소
Esc + M : Cell을 마크다운 타입을 변화
6. 가상환경 생성 및 package 설치
conda env create -f environment.yml
conda activate langchain
jupyter lab
강사님이 가상환경에 강의에 필요한 패키지 정보를 야뮬파일로 만들어 놓았습니다. 가상환경은 자동적으로 langchain으로 설정해놓았네요.
8. OpenAI API Key 생성 및 .env 환경 파일 저장
API key 설정 (Windows 11)
현재 세션에만 설정 방법 setx OPENAI_API_KEY “your-api-key-here”
(* 현재 세션과 단일 프로젝트 .env 중복될 경우 현재 세션이 우선함)
환경 파일로 영구 설정 방법
설정 -> 시스템 -> 정보 -> 고급시스템설정 -> 환경변수 -> 시스템변수 -> 새로만들기-> 변수 이름으로 OPENAI_API_KEY를 입력하고 변수 값으로 API 키를 입력
확인 : echo %OPENAI_API_KEY%
10. LangChain 개요 및 History
LangChain - 원하는 모델 제공자(model provider) 를 사용해 에이전트를 빠르고 손쉽게 구축할수있도록 도와줍니다. • LangGraph - 에이전트의 모든 단계를 세밀하게 제어할 수 있는 저수준 오케스트레이션(low-level orchestration), 메모리(memory), Human-in-the-loop(인간 개입) 기능을 제공
LangChain v1.0 이후부터 : LangGraph는 LangChain 1.0의 기본 런타임구조로 통합되었으며, 모든 에이전트 실행은Graph 기반의 상태(StateGraph)로 처리
11. Langchian 주요 개념
1. Chat models - 메시지의 시퀀스를 입력으로 받아 하나의 메시지를 출력하는채팅 API를 통해 노출되는 LLM을 의미
2. 메시지(Messages) – 채팅 모델의 입력과 출력
3. Chat History (대화 기록) - 사용자 메시지와 모델 응답이 번갈아 가며 나타나는 메시지 시퀀스로 표현된 대화 기록
4. Tools (도구) - 언어 모델에 전달할 호출할 함수 이름(name), 설명(description), 인자(arguments)를 정의하는 스키마를 포함하는 기능
5. 도구 호출(Tool Calling) - 메시지와 함께 도구 스키마를 입력으로 받아, 도구호출 결과를 출력 메시지의 일부로 반환하는 채팅 모델 API 유형
6. 구조화된 출력(Structured Output) - 채팅 모델이 지정된 스키마(JSON 등)에맞는 구조화된 형식으로 응답하도록 하는 기술
7. 메모리(Memory) - 대화의 정보를 저장(Persisted)하여 향후 대화에서 사용할수 있도록 유지
8. 다중 모달리티(Multimodality) - 텍스트, 오디오, 이미지, 비디오 등 다양한형태의 데이터를 처리하는 능력
9. Runnable – invoke, batch, stream method로 실행 가능한 객체(랭체인 고유의 객체)
10. 스트리밍(Streaming) - 결과가 생성되는 즉시 부분적으로 출력
11. Document loaders (문서 로더) - 다양한 소스에서 문서를 불러오는 역할
12. Retrievers (검색기) - 질의(Query)에 대한 관련 문서를 지식 베이스에서반환
13. 검색 증강 생성(Retrieval Augmented Generation, RAG) - 언어 모델이 외부 지식 베이스와 결합하여 성능을 향상시키는 기술 14. 에이전트(Agents) - 언어 모델이 작업 순서를 결정하고 외부 도구와 상호작용하여 목표를 달성
15. Prompt Templates - 사용자 입력을 언어 모델에 전달할 수 있는 형식으로 포맷
16. Output parsers - LLM의 출력을 받아 더 구조화된 형식으로 변환
17. Text splitters (텍스트 분할기) - 문서를 검색에 사용할 수 있는 여러 조각으로나누는 역할
18. Embedding models (임베딩 모델) - 텍스트 조각을 받아 숫자 벡터로 변환
19. Vector stores (벡터 스토어) - 임베딩을 효율적으로 저장하고 검색할 수있는DB
20. Indexing (인덱싱) - 벡터 스토어를 기본 데이터 소스와 동기화 상태로유지하는과정( 의미가 비슷한 데이터들을 미리 정리해 두어서 나중에 질문이 오면 빠르게 찾아주는 준비 작업 )
12. Chat Model 구성 요소
langchain에서 지원하는 LLM
https://python.langchain.com/docs/integrations/chat/
프롬프트의 주요 구성 요소:
• 지시사항(Instruction): 모델이 수행해야 할 작업에 대한 명확한 설명.
• 맥락(Context): 모델이 더 나은 답변을 제공하도록 돕는 배경 정보.
• 입력 데이터(Input Data): 해결하려는 문제나 질문에 대한 구체적인 데이터.
• 출력 지시자(Output Indicator): 원하는 결과물의 형식이나 구조에 대한 명시.
14. LLM의 함수 호출 방법 + Tavily API Key 등록
LLM은 함수 호출(Function Calling) 기능을 통해 외부 도구 및 API와 안정적으로통합될 수 있습니다.
• JSON 기반 함수 호출:
• 모델은 함수 시그니처를 따르는 JSON 객체로 응답합니다.
• 개발자는 함수의 입력 파라미터를 JSON 스키마로 설명합니다.
• 자동 함수 호출 결정:
• 모델은 입력에 따라 적절한 함수를 호출할 시점을 감지합니다.
• 함수 호출 단계
(1) 함수 정보와 함께 LLM 모델 호출
(2) 모델이 함수 호출을 결정 – 함수명과 argument 반환
(3) 함수 호출 – 모델이 만들어준 argument 이용
(4) 함수 호출 결과를 모델에 제공
(5) 모델이 최종 응답 생성
강사님이 함수 호출단계에 대해서 명확히 설명해줘서 좋았습니다.^^
여기서 간과하기 쉬운 사실이 있습니다.
Tool을 실제 작동하는 것은 이미 짜여진 코드에 의해 작동하는 것이지 llm이 직접 수행을 하지 않는다는 것입니다.
1️⃣ LLM은 ‘결정자’지 ‘실행자’가 아님LLM(예: GPT)은 코드를 실행할 수 있는 존재가 아니야.대신 이런 건 잘해:
2️⃣ 도구 호출을 대화로 비유하면이렇게 생각하면 진짜 쉬워져 👇👩💼 LLM = 지시하는 사람🧑🔧 개발자 프로그램 / 에이전트 = 실제로 일하는 사람
3️⃣ 코드 관점에서 무슨 일이 일어나냐면① LLM이 만들어내는 것{ "name": "get_weather", "args": { "location": "Seoul" } }
❌ 실행 아님 ❌ API 호출 아님 ② 실제 실행은 누가 하냐?👉 너의 코드 / 에이전트result = get_weather(location="Seoul")
4️⃣ 왜 이렇게 나눠놨을까?이 구조가 엄청 중요해.✅ 안전함
✅ 제어 가능
|
'온라인강의' 카테고리의 다른 글
| 랭체인 1.0 단기 메모리(Short-term-Memory) (0) | 2026.02.11 |
|---|---|
| 랭체인 Agent, Tools, 구조화된 출력 정리 (0) | 2026.02.09 |
| 초보자들을 위한 Redis 자료구조 & 활용 기초 (0) | 2026.02.07 |
| [인프런 챌린지] 4주 완성 백엔드 설계 챌린지 섹션7 타임라인 서비스(4주차) (0) | 2026.02.05 |
| [인프런 챌린지] 4주 완성 백엔드 설계 챌린지 섹션6 미디어 서비스(4주차) (1) | 2026.02.04 |