삼정KPMG Future Academy/웹개발 Framework
Langchain, Langsmith, FastAPI
by _이유
2025. 12. 23.
Langchain
프롬프트 템플릿을 이용한 응답 파싱 문제 - 복습
- API 키 로딩
- 라이브러리 로딩
- LLM 객체 생성
- Output Parser 객체 생성
- 프롬프트 템플릿 생성
- 응답 요청하기
- 응답 파싱하기
- LCEL 문법으로 chain 객체로 요청하기
Langsmith
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 기반
- 마이크로 프레임워크
- 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)
쿼리 매개변수 (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 구조 만들기