인공지능 개발자 수다(유튜브 바로가기) 자세히보기
반응형

분류 전체보기 138

[FastAPI] SQLAlchemy 상세 - Read/Select (6-2)

select 방식에서는 굳이 복잡하게 SQL 방식을 사용할 필요는 없다.대신, 이번 페이지에서는 select의 다양한 기능에 대해 알아보자1. 기본 사용 방법기본적인 실행 순서는 아래와 같다.쿼리 생성: select() 함수 이용조건 추가 : .where() 를 사용해 필터 조건 추가쿼리 실행 : db.execute() 로 쿼리를 실행결과 처리아래는 result = db.execute() 코드 실행 이후에 결과처리를 위한 메서드 이다.메서드반환값설명.fetchall()행의 리스트(list of Row objects)결과의 모든 행을 반환,메모리 효율성이 중요하거나 단순 데이터 추출에 적합.fetchone()첫 번째 행(Row object)결과의 첫 번째 행(row)만 반환.scalar()첫 번째 컬럼 값..

Fastapi 2025.01.01

[FastAPI] SQLAlchemy 상세 - Create/Insert (6-1)

현재 글에서는 SQLAlchemy 2.0 기준으로 글을 작성하겠다. CRUD는 크게 두가지 방법이 있다.ORM 방식객체 중심적으로 작업해야 하는 경우데이터베이스와 python 객체의 상태 동기화가 필요한 경우SQL 방식대량의 데이터를 처리하거나 성능이 중요한 경우ORM이 필요 없는 아주 간단한 작업두가지 방법을 비교하며 작성하겠다. 이번 시간에는 Insert 에 대해 공부해 보자. 1. ORM 방식1.1. ORM 기본 방법사용 함수: db.add()단점: 대량 데이터 삽입에는 비효율적일 수 있음(대량 작업에서는 SQL 방식 추천).from sqlalchemy.ext.asyncio import AsyncSessionfrom models import User # ORM 모델from database impo..

Fastapi 2024.12.31

[FastAPI] Sqlalchemy와 CRUD (6)

1. SQLAlchemy1.1.SQLAlchemy란?SQLAlchemy는 Python의 ORM(객체 관계 매핑) 라이브러리로, 데이터베이스와 Python 객체 간의 변환을 쉽게 할 수 있게 도와줍니다. ORM(객체 관계 매핑, Object-Relational Mapping)은 프로그래밍 언어의 객체지향적 패러다임과 관계형 데이터베이스의 테이블 간의 데이터를 변환하는 기술입니다. 쉽게 말해, ORM은 데이터베이스의 테이블과 프로그래밍 언어에서 사용하는 객체를 매핑하여 데이터베이스 작업을 코드 내에서 객체를 다루는 것처럼 편리하게 수행할 수 있도록 해줍니다. 1.2. 데이터베이스별 비교이번 글에서는 Postgresql을 기준으로 글을 작성하겠습니다. SQLAlchemy를 사용할 때, 사용하는 데이터베이스가 ..

Fastapi 2024.12.31

[FastAPI] FastAPI에서 Redis 사용하기

1. Redis 개념1.1. Redis란 무엇인가?Redis는 고성능의 오픈 소스 인메모리 데이터베이스로, 키-값 데이터 구조를 지원.데이터가 메모리에 저장되어 매우 빠른 읽기/쓰기 속도를 제공단순한 문자열뿐만 아니라 다음과 같은 데이터 구조를 지원Lists: 순서가 있는 값의 컬렉션 (예: 대기열, 스택)Sets: 중복 없는 값의 집합Sorted Sets: 우선순위를 가진 값의 집합Hashes: 필드와 값을 가진 객체Streams: 로그 데이터와 실시간 메시지 스트림Bitmaps 및 HyperLogLogs: 특수한 데이터 처리 용도특정 키에 TTL(Time To Live)을 설정해 자동으로 데이터를 만료시킬 수 있다.1.2. 언제 사용하는가?캐싱 (예: 데이터베이스 질의 결과 캐싱)세션 저장소 (예: ..

Fastapi 2024.11.20

[FastAPI] Uvicorn 과 Gunicorn 사용하기

1. 설명1.1. GunicornWSGI(Web Server Gateway Interface) 서버 HTTP 요청(클라이언트의 요청)을 애플리케이션(FastAPI)에 전달하고, 애플리케이션의 응답을 클라이언트로 다시 전송하는 역할을 합니다.동기 프레임워크를 실행할 때 주로 사용. 비동기 I/O를 지원하지 않기 때문에, FastAPI와 같은 ASGI 프레임워크를 직접 실행할 수는 없다FastAPI와 같이 비동기 지원이 필요한 경우 Uvicorn을 Gunicorn의 워커로 사용하는 방식으로 함께 사용하여, 다중 프로세스의 이점을 살리면서 비동기 처리 성능을 향상시킵니다.1.2. UvicornASGI(Asynchronous Server Gateway Interface) 서버비동기 프레임워크에 최적화FastAP..

Fastapi 2024.11.14

[langchain] Message 다루기

0. 개요메세지는 채팅모델의 입력/출력 입니다.메세지는 내용(content) 와 역할(role)로 구성되어 있습니다.  메세지를 다루는 세가지 방법1. Trim2. Filter3. 동일 유형의 메세지 병합  메세지는 모델과의 대화를 저장하고 추적하는데 주로 사용 1. Trim 기법1.1. trim_messages 란이전 대화 내용을 적절히 잘라서 LLM이 처리할 수 있도록 조정하는 역할llm은 메세지의 크기가 제한되어 있기 때문에, 토큰의 수를 다듬어야 한다. trim 기법은 크게 두가지가 있다.토큰수 기반 Trimming (Trimming based on token count)메시지 수를 기반 Trimming (Trimming based on message count) 1.2. Trimming 예시 코..

[langchain] LangChain Expression Language(LCEL)

1. LangChain Expression Language(LCEL) 소개LangChain 표현 언어, 혹은 LCEL은 LangChain 컴포넌트들을 연결하는 선언적 방식입니다. LCEL은 처음부터 프로토타입을 코드 수정 없이 바로 프로덕션에 배포할 수 있도록 설계되었습니다. 간단한 “프롬프트 + LLM” 체인부터 100단계 이상의 복잡한 체인까지, 많은 사용자들이 LCEL 체인을 성공적으로 프로덕션에서 운영하고 있습니다.2. LCEL 사용 이유2.1. streaming supportLCEL로 체인을 구축하면 가장 빠른 첫 토큰 출력 시간을 확보할 수 있습니다 (첫 번째 출력 조각이 나올 때까지 걸리는 시간). 예를 들어, 일부 체인의 경우 LLM에서 나오는 토큰을 바로 스트리밍 출력 파서로 전송하여, ..

[Langchain] Langchain v0.3 패치노트

1. 변경 사항내부적으로 모든 패키지가 Pydantic 1에서 Pydantic 2로 업그레이드됨. 이제 Pydantic 2를 완전히 지원Pydantic 1은 2024년 6월에 지원 종료Python 3.8은 2024년 10월에 지원이 종료2. 새롭게 추가된 기능2.1. the latest integration packages 패치,기존 langchain-community 의 내용이 integration packages로 많이 넘어감  langchain-openai langchain-anthropic langchain-google-vertexai langchain-aws langchain-huggingface langchain-mistralai2.2. tool의 정의와 사용이 단순화됨2.2.1. Tool 정..

[langchain] Prompt templates(프롬프트 탬플릿) 만들기

1. LLM의 입력값 형식입력 데이터를 기준으로 두가지 종류의 LLM으로 나눌 수 있습니다.프롬프트를 만들기 전에, 모델에 어떤 형식으로 데이터가 들어가는지 확인해 봅시다.1.1. 완성형 LLM (Completion-based LLM)동작 방식: 주어진 프롬프트에 이어질 텍스트를 예측하여 생성사용 사례: 코드 자동 완성, 문장 또는 단락 생성, 문서 작성 보조입력 데이터: 문자열입력 데이터 예시"안녕하세요." 1.2. 대화형 LLM (Chat-based LLM)동작 방식: 사용자와의 대화를 통해 상호 작용하며, 이전 대화 내용을 기반으로 응답사용 사례: 챗봇, 대화 기반 학습 도구입력 데이터: Json입력 데이터 예시[ {"role": "user", "content": "안녕하세요."}, {"..

[langchain] LLM(Large Language Model) 사용하기

0. 개요랭체인에서 LLM을 불러오는 방법중 크게는 세가지가 있다.1. api 형태로, 요청만 할 수 있는 모델 (chatgpt 등등)2. 로컬로 다운 받아, 커스터마이징이 가능한 모델 (HuggingFace)3. 로컬에 다운 받을 수 있으나, 수정할 수는 없는 모델 (Ollama) Langchain에 올라오는 LLM 모델은 매달 빠르게 변경되고 추가되기 때문에,가장 많이 사용할 법한 분류를 기준으로 소개하겠다.(정말 모델은 엄청 다양하고 많다.)1.  API에 요청1.1. 설명내용 출처: How to chain runnablesAPI에 요청 하는 방법은, 다른 서버의 자원을 사용하기 때문에 유료로 사용한다고 볼 수 있다. 장점은, 사용하기 편리하고 대체로 성능이 좋다는 점이다. 가격도 서버를 직접 운영..

반응형