본문 바로가기

fastapi3

SQLAlchemy에서 automap_base 기능을 이용하여 데이터베이스 테이블을 간편히 불러오기 sqlalchemy를 이용하다보면, 데이터베이스의 테이블 구조를 python의 class 객체 형태로 매핑해준 후, 데이터에 접근하여 각종 작업을 수행해야 하는 경우가 많습니다. 예를 들면, 'User'라는 이름의 테이블을 불러오는 경우 다음과 같이 정의하곤 합니다.  class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String) fullname = Column(String) password = Column(String)  하지만, 여러 테이블을 다루다보면 이러한 작업이 다소 복잡하게 느껴집니다. sqlalchemy에서는 이러한 작업 없이도 테이블을 .. 2024. 9. 20.
LangServe를 이용해 LangChain 앱을 API로 이용하기 LangChain 으로 LLM 기반 Chain 객체를 만들면, 이를 API로 구성하여 앱에서 이용하거나 원격으로 접근하여 공용으로 사용하게 할 수 있습니다. Python 기반 백엔드를 API로 구성하려면 Flask, FastAPI로 직접 구성할 수 있겠지만 LangChain에서는 이미 LangServe라고 하여 간편히 배포할 수 있는 도구를 제공합니다. LangServe 문서 LangServe는 이미 FastAPI 및 uvicorn을 기반으로 만들어져 있으므로, FastAPI에 익숙하다면 유사한 인터페이스로 이용할 수 있습니다. 본 예제에서는 OpenAI 언어 모델을 LangChain 객체로 변환한 간단한 구조의 API를 구성해볼 것입니다. 다음과 같이 langserve_server.py 라는 이름의 파.. 2024. 9. 7.
FastAPI로 복수 파일 업로드 API 구현하기 FastAPI에서는 File, UploadFile 객체를 이용해 간편히 프론트엔드에서 업로드한 파일을 처리할 수 있습니다.다음 예제 코드는 사용자가 업로드한 파일을 특정 경로에 저장합니다. 전송받는 파일 타입을 List 형식으로 설정하여, 여러 파일을 업로드할 수 있도록 합니다.   from fastapi import FastAPI, File, UploadFile, HTTPExceptionfrom typing import Listfrom fastapi.responses import JSONResponseimport osapp = FastAPI()UPLOAD_DIR = "uploads"os.makedirs(UPLOAD_DIR, exist_ok=True)@app.post("/api/upload/")async.. 2024. 9. 6.