전체 글 68

Pydantic VS with_structured_output 비교

LangChain을 사용해 에이전트를 개발하다 보면, LLM의 출력 결과를 정형화된 구조로 받는 것이 중요하다.과거에는 PydanticOutputParser를 사용했지만, 최근에는 LLM 객체 자체에서 with_structured_output 기능을 제공하여 더욱 간편하게 구조화된 출력을 받을 수 있다.두 가지 방법을 비교해보자.PydanticOutputParser 사용 from langchain_core.output_parsers.pydantic import PydanticOutputParserfrom schemas import AgentResponseoutput_parser = PydanticOutputParser(pydantic_object=AgentResponse)# ReAct Agent 사용 시..

AI Framework/LLM 2025.10.22

Pydantic, 구조화된 Agent 출력

PydanticPydantic은 Python의 데이터 검증 및 직렬화를 위한 표준 라이브러리이다.Agent의 결과를 명확하게 구조화하기 위해 아래처럼 모델 스키마를 정의 한다. # schemas.pyfrom typing import Listfrom pydantic import BaseModel, Fieldclass Source(BaseModel): """Schema for a source used by the agent""" url: str = Field(description="The URL of the source")class AgentResponse(BaseModel): """Schema for agent response with answer and sources""" answe..

AI Framework/LLM 2025.10.22

ReAct Agent(추론 + 행동) + TavilySearch(검색 API)

TavilySearch란?Tavily는 LangChain과 통합 가능한 웹 검색 API로,기본적인 Google Search보다 빠르고 구조화된 JSON 결과를 제공한다.검색 결과에는 제목(title), 본문(content), URL 등이 포함되어필요한 정보만 간단히 파싱할 수 있다. # TavilySearch 사용 예시from langchain_tavily import TavilySearchsearch = TavilySearch()results = search.invoke({"query": "langchain job postings korea site:jobkorea.co.kr"}) 출력 예시 아 참고로 Tavily 도 API 키를 발급 받아야한다웹사이트 방문해서 발급 받고env 를 다음과 같이 설정해주..

AI Framework/LLM 2025.10.21

LangSmith 연동

LangSmith 연동으로 LangChain 프로젝트 추적하기LangChain을 사용하다 보면 “내 체인이 정확히 어떤 입력을 받고, 어떤 출력을 내보내는지”“LLM 호출이 몇 번 일어나는지, 속도는 어떤지” 등을 추적을 해야할 필요가 있다.이럴 때 사용하는 도구가 바로 LangSmith 이다.1. LangSmith란?LangSmith는 LangChain 팀에서 제공하는 LLM 애플리케이션 관찰(Observability) 플랫폼으로LangChain에서 발생하는 모든 Chain, Agent, Tool 호출을 시각화하여 기능을 제공한다.체인/프롬프트 실행 추적입력·출력 로그 분석실행 시간 및 비용 모니터링모델 응답 품질 비교 및 테스트LangSmith는 LangChain과 완전히 통합되어 있기 때문에,환경 ..

AI Framework/LLM 2025.10.12

LangChain - Prompt 와 ChatOllama 모델 사용

1. PromptTemplateLangChain에서 프롬프트 템플릿(PromptTemplate) 은모델에 전달할 문자열을 체계적으로 관리하기 위한 도구이다.변수 기반으로 입력을 구성할 수 있어,다양한 상황에 맞게 프롬프트를 재사용할 수 있다.2. 🤖 ChatOllama vs ChatOpenAILangChain은 여러 종류의 LLM(Large Language Model)을 지원한다.그중 ChatOpenAI는 OpenAI API를 이용하므로 유료 과금이 발생하지만,ChatOllama는 로컬 환경에서 무료로 실행할 수 있는 모델이어서.ChatOllama를 설치해보자.# Ollama 로컬 모델 사용llm = ChatOllama(temperature=0, model="gemma3:270m")# OpenAI 모델..

AI Framework/LLM 2025.10.12

LangChian - 시작하기 환경 설정부터!

LangChain이란?LangChain은 “LLM(대형 언어 모델)”을 기반으로외부 도구나 데이터와 연결해주는 프레임워크라고 한다.일반적인 LLM(ChatGPT 등)은 입력된 텍스트만 이해할 수 있지만,LangChain을 사용하면 모델이 다양한 기능을 활용할 수 있다.외부 API 호출 (예: Google Search, DB Query 등)여러 단계의 추론 수행다른 모델이나 툴과 연계된 파이프라인 구성즉, LLM을 단순 대화형 모델에서 ‘작업 자동화 도구’로 확장시켜주는 역할을 한다. LangChain 환경 설정1. uv 설치먼저, 터미널에서 uv를 설치pip install uvuv는 Rust로 작성된 초고속 차세대 Python 패키지 매니저로설치 속도와 종속성 해결 능력이 매우 빠르다고 한다. (처음 써..

AI Framework/LLM 2025.10.11

03. FastAPI - Request Body(JSON), Form(HTML) 처리

FastAPI - Request Body 및 Form 데이터 처리FastAPI에서는 클라이언트로부터 데이터를 받을 때, 전송 방식에 따라 JSON(Request Body) 또는 Form(FormData)으로 분리하여 처리할 수 있다. 요청 방식에 따라 HTTP 요청 헤더의 Content-Type이 달라지고, FastAPI는 이를 기반으로 적절하게 데이터를 파싱한다.📦 Request Body 처리 (application/json)✅ 기본 사용: Pydantic 모델 기반 요청from fastapi import FastAPIfrom pydantic import BaseModelfrom typing import Optionalapp = FastAPI()class Item(BaseModel): name:..

02. FastAPI - Request Parameter

FastAPI에서 Path Parameter와 Query Parameter 사용법FastAPI에서는 경로 매개변수(Path Parameters)와 쿼리 매개변수(Query Parameters)를 선언적으로 정의할 수 있으며, 이를 통해 요청값을 유효성 검사하고 문서화할 수 있다1. Path Parameter경로 매개변수는 URL 경로의 일부로, 중괄호 {}를 사용하여 정의한다from fastapi import FastAPIapp = FastAPI()@app.get("/items/{item_id}")async def read_item(item_id: int): return {"item_id": item_id}요청 예시:http://localhost:8000/items/3 → 정상http://local..

01. FastAPI - 시작하기

FastAPI 시작하기1️⃣ 가상 환경 만들기 (conda)먼저 FastAPI를 설치할 가상환경을 만들어 주자.Anaconda Prompt를 열고 아래 명령어 입력:conda create -n fastapi python=3.10Proceed ([y]/n)? 나오면 y 입력 가상환경이 'FastAPI'라는 이름으로 생성되었고, 아래 명령어로 진입:conda activate fastapi2️⃣ FastAPI 설치가상환경에 진입했다면 아래 명령어로 FastAPI를 설치:pip install fastapi 특정 버전으로 설치하고 싶다면 아래처럼 입력:pip install fastapi==0.111.13️⃣ FastAPI 실행main.py 파일을 만들어 아래와 같이 작성:# FastAPI importfrom fa..

추천 알고리즘 - TF-IDF, CountVectorizer 활용한 코사인 유사도 기반 텍스트 분석

본 자료는 다음 링크의 내용을 참고하였습니다.Reference : https://www.kaggle.com/code/ibtesama/getting-started-with-a-movie-recommendation-system영화 추천 시스템Demographic Filtering (인구통계학적 필터링)Content Based Filtering (컨텐츠 기반 필터링)1. Demographic Filtering (인구통계학적 필터링)import pandas as pdimport numpy as np# 영화 data 로드df1 = pd.read_csv('../data/tmdb_5000_credits.csv')df2 = pd.read_csv('../data/tmdb_5000_movies.csv')'id' 기준으로 ..