본문 바로가기
삼정KPMG Future Academy/웹개발 Framework

Langchain, Langsmith, FastAPI

by _이유 2025. 12. 23.

Langchain

프롬프트 템플릿을 이용한 응답 파싱 문제 - 복습

  1. API 키 로딩
  2. 라이브러리 로딩
  3. LLM 객체 생성
  4. Output Parser 객체 생성
  5. 프롬프트 템플릿 생성
  6. 응답 요청하기
  7. 응답 파싱하기
  8. LCEL 문법으로 chain 객체로 요청하기

Langsmith

API키 발급받기

  • 회원가입 / 로그인
  • API 키 발급

Langsmith 설치

pip install langsmith
pip install --pre -U langchain langchain-openai
pip install "langsmith[openai-agents]"

.env 파일에 넣을 코드

OPENAI_API_KEY = openai_api_key
GEMINI_API_KEY = gemini_api_key
LANGCHAIN_TRACING_V2 = true
LANGSMITH_ENDPOINT=https://api.smith.langchain.com
LANGSMITH_PROJECT=langsmith_test_02
LANGSMITH_API_KEY=api_key

 

FastAPI

FastAPI란?

  • python 웹 프레임워크: Django, Flask 등
  • 마이크로 프레임워크: Flask와 비슷
  • ASGI 애플리케이션
    • ASGI(Asynchronous Server Gateway Interface)
    • WSGI와 비슷
    • 비동기를 지원하는 WSGI

장점

  • 배우기 쉬움
  • 모던 파이썬 문법을 따름
    • 비동기 키워드: async, await
    • 타입 힌트: 정적 type hint 제공
  • OpenAPI 기반
    • Swagger 지원
    • 자동 문서 생성
  • 마이크로 프레임워크
    • API 서버
    • MSA (MicroService Architecture)

단점

  • 실행 시 경로의 순서가 중요함

설치

pip install fastapi
pip install uvicorn
pip install jinja2 python-multipart

import

from typing import Union
from fastapi import FastAPI
import uvicorn

구조

경로 매개변수 (Path Parameters)

  • URL 경로에 들어가는 변수

쿼리 매개변수 (Query Parameters)

  • 호스트 주소 '?' 뒤에 오는 변수들
  • 각 매개변수는 '&' 기호로 구분되고 key-value와 같이 키/값 쌍으로 정의함
app = FastAPI()

@app.get("/")
def home():
    data = "조회결과"
    return {"datas": data}
# 쿼리 매개변수
@app.get("/users")
def home(limit: int):
    data = f"회원정보 조회결과"
    limit_val = limit
    return {"datas": data, "limit": limit_val}
# 경로 매개변수
@app.get("/users/{user_id}")
def home(user_id: int):  # user_id 변수는 int 받을 수 있음
    # 비즈니스 로직
    data = f"{user_id}의 회원정보 조회결과"
    return {"datas": data}
# uvicorn으로 FastAPT앱 실행
# port 디폴트(8000)
# --reload  : 디버그 모드(개발시 지정)
uvicorn main:app --reload
# port 9000 지정
uvicorn main:app --port=9000 --reload

todos APP 구조 만들기

  • static : 정적 파일 관리(css, image, js)
  • templates: html 템플릿 파일
  • app_start.py: 파일로 서버를 실행하기 위한 설정 파일
  • [database.py](http://database.py) : DB 설정 및 연결파일
  • [main.py](http://main.py) : fastAPI 메인 코드 파일
  • [models.py](http://models.py) : 데이터 모델을 위한 클래스 정의 파일