IT기술/랭체인 (langchain)

LangChain과 외부 데이터 연결: API, 데이터베이스, 파일 시스템 통합 실전 가이드

후스파 2025. 4. 27. 12:55
반응형

랭테인 langchain

LangChain은 언어 모델을 외부 시스템(API, 데이터베이스, 파일 시스템)과 연결해 실용적인 AI 애플리케이션을 구축할 수 있는 프레임워크입니다. 아래에 각 통합 방법을 상세히 설명합니다.

 


 

1. REST API 연동

LangChain은 외부 API와의 통합을 위해 커스텀 도구APIChain을 제공합니다.

 

1-1. 커스텀 도구 생성

from langchain.tools import tool
import requests

@tool
def 날씨_조회(도시: str) -> str:
    """특정 도시의 현재 날씨 정보 반환"""
    API_URL = f"https://api.weather.com/v1/{도시}/conditions"
    response = requests.get(API_URL)
    return response.json()["weather_description"]

 

1-2. APIChain 활용 (Open-Meteo 예시)

from langchain.chains import APIChain
from langchain_openai import OpenAI

llm = OpenAI(temperature=0)
chain = APIChain.from_llm_and_api_docs(
    llm,
    api_docs=open_meteo_docs.OPEN_METEO_DOCS,  # API 문서 제공
    verbose=True
)

# 실행 예시
결과 = chain.run("독일 뮌헨의 현재 기온(화씨)은?")
print(결과)  # "현재 뮌헨의 기온은 72°F입니다"

 


 

2. 데이터베이스 통합

자연어로 SQL 쿼리를 생성해 데이터를 조회할 수 있습니다.

 

2-1. 기본 SQL 연결

from langchain_experimental.sql import SQLDatabaseChain
from langchain.sql_database import SQLDatabase

# PostgreSQL 연결 설정
db = SQLDatabase.from_uri("postgresql://사용자:비밀번호@호스트:포트/DB이름")

# 체인 생성
db_chain = SQLDatabaseChain.from_llm(OpenAI(), db, verbose=True)

# 실행 예시
응답 = db_chain.run("가입자 중 20대 사용자는 몇 명인가요?")
print(응답)  # "20대 가입자는 1,234명입니다"

 

2-2. 대규모 데이터베이스 처리

from langchain_experimental.sql import SQLDatabaseSequentialChain

# 복잡한 스키마 최적화
db_seq_chain = SQLDatabaseSequentialChain.from_llm(OpenAI(), db)

 


 

3. 파일 시스템 통합

로컬/클라우드 파일 시스템을 언어 모델과 연결합니다.

 

3-1. 로컬 파일 관리

from langchain_community.agent_toolkits import FileManagementToolkit
from tempfile import TemporaryDirectory

# 임시 작업 디렉토리 생성
with TemporaryDirectory() as 작업디렉토리:
    toolkit = FileManagementToolkit(root_dir=작업디렉토리)
    파일쓰기, 파일읽기, 디렉토리목록 = toolkit.get_tools()

    # 파일 생성
    파일쓰기.invoke({"file_path": "예제.txt", "text": "LangChain 파일 테스트"})

    # 파일 목록 조회
    print(디렉토리목록.invoke({}))  # ['예제.txt']

    # 파일 읽기
    print(파일읽기.invoke({"file_path": "예제.txt"}))  # "LangChain 파일 테스트"

 

3-2. AWS S3 통합

from langchain.document_loaders import S3DirectoryLoader

# S3 버킷에서 문서 로드
loader = S3DirectoryLoader("my-bucket", prefix="문서/")
documents = loader.load()  # 모든 문서를 LangChain 형식으로 로드

 


 

4. 클라우드 스토리지 연동

Node.js 환경에서 로컬 파일 저장소 사용 예시:

import { LocalFileStore } from "langchain/storage/file_system";

// 메시지 저장소 초기화
const 저장소 = await LocalFileStore.fromPath("./메시지_데이터");

// 메시지 저장
await 저장소.mset([
  ["message:1", Buffer.from(JSON.stringify({ 내용: "안녕하세요!" }))],
  ["message:2", Buffer.from(JSON.stringify({ 내용: "LangChain 테스트" }))]
]);

// 메시지 조회
const 데이터 = await 저장소.mget(["message:1"]);
console.log(JSON.parse(데이터[0].toString()));  // { 내용: "안녕하세요!" }

 


 

통합 시 고려 사항

  1. 보안: API 키/DB 비밀번호는 환경 변수로 관리
    import os
    API_KEY = os.environ.get("WEATHER_API_KEY")
  2. 에러 처리:
    try:
        response = db_chain.run("잘못된 쿼리")
    except Exception as e:
        print(f"오류 발생: {str(e)}")
  3. 성능 최적화:
    • 대규모 DB: SQLDatabaseSequentialChain으로 쿼리 최적화
    • 파일 시스템: 증분 처리로 메모리 관리

 


 

결론

LangChain을 통해 언어 모델을 다양한 외부 시스템과 연결하면 다음과 같은 이점이 있습니다:

  • 실시간 데이터 활용: API로 최신 정보 획득
  • 데이터 분석 자동화: 자연어로 DB 쿼리 생성
  • 파일 기반 작업: 문서 처리/분석 자동화
  • 확장성: 커스텀 도구 개발로 특정 업무 자동화

 

 

LangChain과 외부 데이터 연결을 위한 API, 데이터베이스, 파일 시스템과의 통합 방법

LangChain은 언어 모델을 외부 시스템과 연결하여 더 강력한 AI 애플리케이션을 구축할 수 있게 해주는...

blog.naver.com

 

 

[LangChain] 효과적인 프롬프트 설계를 위한 프롬프트 템플릿 활용 팁

LangChain의 프롬프트 템플릿은 언어 모델과의 상호작용을 효율적으로 관리하는 강력한 도구입니다. 이 글에서는 프롬프트 템플릿의 핵심 기능과 실제 적용 팁을 소개합니다. 프롬프트 템플릿 기

hoosfa.tistory.com

 

반응형