LangDB 통합

LangDB 통합 (LangDB Integration)

LangDB AI Gateway는 여러 LLM에 연결하기 위한 OpenAI 호환 API를 제공하고, 옵저버빌리티 플랫폼 역할을 하며 350개 이상의 언어 모델 접근과 함께 CrewAI 워크플로우를 처음부터 끝까지 쉽게 트레이스할 수 있게 해 줘요. 단 한 번의 init() 호출로 모든 에이전트 상호작용, 태스크 실행, LLM 호출이 캡처되어 종합적인 옵저버빌리티와 프로덕션 레디 AI 인프라를 제공해요.

출처: 문서

본문

LangDB AI Gateway는 여러 LLM에 연결하기 위한 OpenAI 호환 API를 제공하고, 350개 이상의 언어 모델에 접근하면서 CrewAI 워크플로우를 종단 간 트레이스할 수 있게 해 주는 옵저버빌리티 플랫폼이에요. 단 한 번의 init() 호출로 모든 에이전트 상호작용, 태스크 실행, LLM 호출이 캡처되어 종합적인 옵저버빌리티와 프로덕션 레디 AI 인프라를 제공해요.

Features (기능)

AI Gateway Capabilities

  • Access to 350+ LLMs — 단일 통합으로 모든 주요 언어 모델에 연결.
  • Virtual Models — 특정 파라미터와 라우팅 규칙으로 커스텀 모델 구성 생성.
  • Virtual MCP — 향상된 에이전트 통신을 위해 MCP(Model Context Protocol) 시스템과의 호환성·통합 활성화.
  • Guardrails — 에이전트 동작을 위한 안전 조치와 규정 준수 제어 구현.

Observability & Tracing

  • Automatic Tracing — 단일 init() 호출이 모든 CrewAI 상호작용을 캡처.
  • End-to-End Visibility — 에이전트 워크플로우를 처음부터 끝까지 모니터링.
  • Tool Usage Tracking — 에이전트가 어떤 툴을 사용했고 그 결과가 무엇인지 추적.
  • Model Call Monitoring — LLM 상호작용에 대한 상세 통찰.
  • Performance Analytics — 지연 시간, 토큰 사용량, 비용 모니터링.
  • Debugging Support — 문제 해결을 위한 단계별 실행.
  • Real-time Monitoring — 실시간 트레이스와 메트릭 대시보드.

Setup Instructions (설정 방법)

  1. LangDB 설치 — CrewAI 기능 플래그와 함께 LangDB 클라이언트를 설치하세요:
    pip install 'pylangdb[crewai]'
    
  2. 환경 변수 설정 — LangDB 자격 증명을 구성하세요:
    export LANGDB_API_KEY="<your_langdb_api_key>"
    export LANGDB_PROJECT_ID="<your_langdb_project_id>"
    export LANGDB_API_BASE_URL='https://api.us-east-1.langdb.ai'
    
  3. 트레이싱 초기화 — CrewAI 코드를 구성하기 전에 LangDB를 임포트·초기화하세요:
    from pylangdb.crewai import init
    # Initialize LangDB
    init()
    
  4. LangDB로 CrewAI 구성 — LangDB 헤더로 LLM을 설정하세요:
    from crewai import Agent, Task, Crew, LLM
    import os
    
    # Configure LLM with LangDB headers
    llm = LLM(
        model="openai/gpt-4o", # Replace with the model you want to use
        api_key=os.getenv("LANGDB_API_KEY"),
        base_url=os.getenv("LANGDB_API_BASE_URL"),
        extra_headers={"x-project-id": os.getenv("LANGDB_PROJECT_ID")}
    )
    

Quick Start Example (빠른 시작 예시)

LangDB와 CrewAI를 시작하는 간단한 예시예요:

import os
from pylangdb.crewai import init
from crewai import Agent, Task, Crew, LLM

# Initialize LangDB before any CrewAI imports
init()

def create_llm(model):
    return LLM(
        model=model,
        api_key=os.environ.get("LANGDB_API_KEY"),
        base_url=os.environ.get("LANGDB_API_BASE_URL"),
        extra_headers={"x-project-id": os.environ.get("LANGDB_PROJECT_ID")}
    )

# Define your agent
researcher = Agent(
    role="Research Specialist",
    goal="Research topics thoroughly",
    backstory="Expert researcher with skills in finding information",
    llm=create_llm("openai/gpt-4o"), # Replace with the model you want to use
    verbose=True
)

# Create a task
task = Task(
    description="Research the given topic and provide a comprehensive summary",
    agent=researcher,
    expected_output="Detailed research summary with key findings"
)

# Create and run the crew
crew = Crew(agents=[researcher], tasks=[task])
result = crew.kickoff()
print(result)

Complete Example: Research and Planning Agent

이 종합 예시는 연구와 플래닝 기능을 갖춘 멀티 에이전트 워크플로우를 보여줘요.

Prerequisites

pip install crewai 'pylangdb[crewai]' crewai_tools setuptools python-dotenv

Environment Setup

# LangDB credentials
export LANGDB_API_KEY="<your_langdb_api_key>"
export LANGDB_PROJECT_ID="<your_langdb_project_id>"
export LANGDB_API_BASE_URL='https://api.us-east-1.langdb.ai'

# Additional API keys (optional)
export SERPER_API_KEY="<your_serper_api_key>"  # For web search capabilities

Complete Implementation

#!/usr/bin/env python3

import os
import sys
from pylangdb.crewai import init
init()  # Initialize LangDB before any CrewAI imports
from dotenv import load_dotenv
from crewai import Agent, Task, Crew, Process, LLM
from crewai_tools import SerperDevTool

load_dotenv()

def create_llm(model):
    return LLM(
        model=model,
        api_key=os.environ.get("LANGDB_API_KEY"),
        base_url=os.environ.get("LANGDB_API_BASE_URL"),
        extra_headers={"x-project-id": os.environ.get("LANGDB_PROJECT_ID")}
    )

class ResearchPlanningCrew:
    def researcher(self) -> Agent:
        return Agent(
            role="Research Specialist",
            goal="Research topics thoroughly and compile comprehensive information",
            backstory="Expert researcher with skills in finding and analyzing information from various sources",
            tools=[SerperDevTool()],
            llm=create_llm("openai/gpt-4o"),
            verbose=True
        )
    
    def planner(self) -> Agent:
        return Agent(
            role="Strategic Planner",
            goal="Create actionable plans based on research findings",
            backstory="Strategic planner who breaks down complex challenges into executable plans",
            reasoning=True,
            max_reasoning_attempts=3,
            llm=create_llm("openai/anthropic/claude-3.7-sonnet"),
            verbose=True
        )
    
    def research_task(self) -> Task:
        return Task(
            description="Research the topic thoroughly and compile comprehensive information",
            agent=self.researcher(),
            expected_output="Comprehensive research report with key findings and insights"
        )
    
    def planning_task(self) -> Task:
        return Task(
            description="Create a strategic plan based on the research findings",
            agent=self.planner(),
            expected_output="Strategic execution plan with phases, goals, and actionable steps",
            context=[self.research_task()]
        )
    
    def crew(self) -> Crew:
        return Crew(
            agents=[self.researcher(), self.planner()],
            tasks=[self.research_task(), self.planning_task()],
            verbose=True,
            process=Process.sequential
        )

def main():
        topic = sys.argv[1] if len(sys.argv) > 1 else "Artificial Intelligence in Healthcare"
        
        crew_instance = ResearchPlanningCrew()
        
        # Update task descriptions with the specific topic
        crew_instance.research_task().description = f"Research {topic} thoroughly and compile comprehensive information"
    crew_instance.planning_task().description = f"Create a strategic plan for {topic} based on the research findings"
    
    result = crew_instance.crew().kickoff()
    print(result)

if __name__ == "__main__":
    main()

Running the Example

python main.py "Sustainable Energy Solutions"

Viewing Traces in LangDB (LangDB에서 트레이스 보기)

CrewAI 애플리케이션을 실행한 후 LangDB 대시보드에서 상세 트레이스를 볼 수 있어요.

무엇을 볼 수 있나요?

  • Agent Interactions — 에이전트 대화와 태스크 핸드오프의 전체 흐름.
  • Tool Usage — 호출된 툴, 입력, 출력.
  • Model Calls — 프롬프트와 응답이 포함된 상세 LLM 상호작용.
  • Performance Metrics — 지연 시간, 토큰 사용량, 비용 추적.
  • Execution Timeline — 전체 워크플로우의 단계별 뷰.

Troubleshooting (문제 해결)

Common Issues (일반적인 이슈)

  • 트레이스가 나타나지 않는 경우 — 어떤 CrewAI 임포트보다 init()이 먼저 호출되었는지 확인.
  • 인증 에러 — LangDB API key와 프로젝트 ID를 확인.

Resources (리소스)

  • LangDB Documentation — 공식 LangDB 문서와 가이드.
  • LangDB Guides — AI 에이전트 구축을 위한 단계별 튜토리얼.
  • GitHub Examples — 완전한 CrewAI 통합 예시.
  • LangDB Dashboard — 트레이스와 분석 접근.
  • Model Catalog — 350개 이상의 언어 모델 탐색.
  • Enterprise Features — 자체 호스팅 옵션과 엔터프라이즈 기능.

Next Steps (다음 단계)

이 가이드는 LangDB AI Gateway를 CrewAI와 통합하는 기본을 다뤘어요. AI 워크플로우를 더욱 향상하려면 다음을 살펴보세요:

  • Virtual Models — 라우팅 전략으로 커스텀 모델 구성 생성.
  • Guardrails & Safety — 콘텐츠 필터링과 규정 준수 제어 구현.
  • Production Deployment — 폴백, 재시도, 로드 밸런싱 구성.

더 고급 기능과 사용 사례는 LangDB Documentation을 방문하거나 Model Catalog를 탐색해 사용 가능한 모델을 확인하세요.

더 알아보기 (Learn more)