Portkey는 CrewAI 에이전트를 신뢰할 수 있고, 비용 효율적이며, 빠르게 만드는 2줄의 업그레이드다.

Portkey는 모든 CrewAI 에이전트에 4가지 핵심 프로덕션 기능을 추가한다:

  1. 200개 이상의 LLM으로 라우팅
  2. 각 LLM 호출을 더 견고하게 만듦
  3. 전체 스택 추적 및 비용, 성능 분석
  4. 행동을 강제하는 실시간 가드레일

시작하기

1

CrewAI와 Portkey 설치

pip install -qU crewai portkey-ai
2

LLM 클라이언트 설정

Portkey와 함께 CrewAI 에이전트를 구축하려면 두 가지 키가 필요하다:

  • Portkey API 키: Portkey 앱에 가입하고 API 키를 복사한다.
  • 가상 키: 가상 키는 여러분의 LLM API 키를 한 곳에서 안전하게 관리한다. Portkey의 보관소에 LLM 프로바이더의 API 키를 안전하게 저장한다.
from crewai import LLM
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL

gpt_llm = LLM(
    model="gpt-4",
    base_url=PORTKEY_GATEWAY_URL,
    api_key="dummy", # 가상 키를 사용한다.
    extra_headers=createHeaders(
        api_key="YOUR_PORTKEY_API_KEY",
        virtual_key="YOUR_VIRTUAL_KEY", # Portkey에서 가상 키를 입력한다.
    )
)
3

첫 번째 에이전트 생성 및 실행

from crewai import Agent, Task, Crew

# 역할과 목표를 가진 에이전트를 정의한다.
coder = Agent(
    role='소프트웨어 개발자',
    goal='요청에 따라 명확하고 간결한 코드를 작성한다.',
    backstory='소프트웨어 트렌드에 대한 날카로운 통찰력을 가진 전문 코더.',
    llm=gpt_llm
)

# 에이전트를 위한 작업을 생성한다.
task1 = Task(
    description="제목이 'Hello World! Portkey is working!'인 간단한 웹사이트를 만들기 위한 HTML을 정의한다.",
    expected_output="명확하고 간결한 HTML 코드",
    agent=coder
)

# 크루를 인스턴스화한다.
crew = Crew(
    agents=[coder],
    tasks=[task1],
)

result = crew.kickoff()
print(result)

주요 기능

기능설명
🌐 다중 LLM 지원OpenAI, Anthropic, Gemini, Azure 및 250개 이상의 프로바이더를 통합 인터페이스로 접근
🛡️ 프로덕션 안정성재시도, 타임아웃, 로드 밸런싱 및 폴백 기능 구현
📊 고급 관측 기능비용, 토큰, 지연 시간 및 커스텀 메타데이터를 포함한 40개 이상의 지표 추적
🔍 상세 로깅실행 추적 및 함수 호출 로그를 통해 디버깅 가능
🚧 보안 제어예산 제한 설정 및 역할 기반 접근 제어 구현
🔄 성능 분석피드백을 수집 및 분석하여 지속적인 개선 가능
💾 지능형 캐싱시맨틱 또는 단순 캐싱을 통해 비용과 지연 시간 감소

Portkey 설정을 활용한 프로덕션 기능

아래에서 설명하는 모든 기능은 Portkey의 설정 시스템을 통해 구현한다. Portkey 설정 시스템을 사용하면 LLM API 호출 시 간단한 JSON 객체로 라우팅 전략을 정의할 수 있다. 코드 내에서 직접 설정을 생성하고 관리하거나 Portkey 대시보드를 통해 관리할 수 있다. 각 설정은 고유한 ID를 가지므로 쉽게 참조할 수 있다.

1. 250개 이상의 LLM 활용

Anthropic, Gemini, Mistral, Azure OpenAI 등 다양한 LLM을 최소한의 코드 변경으로 활용할 수 있다. 여러 프로바이더 간 전환이나 동시 사용이 가능하다. Universal API에 대해 더 알아보기

다른 LLM 프로바이더 간 전환은 간단하다:

# Anthropic 설정
anthropic_llm = LLM(
    model="claude-3-5-sonnet-latest",
    base_url=PORTKEY_GATEWAY_URL,
    api_key="dummy",
    extra_headers=createHeaders(
        api_key="YOUR_PORTKEY_API_KEY",
        virtual_key="YOUR_ANTHROPIC_VIRTUAL_KEY", # 가상 키 사용 시 프로바이더 필요 없음
        trace_id="anthropic_agent"
    )
)

# Azure OpenAI 설정
azure_llm = LLM(
    model="gpt-4",
    base_url=PORTKEY_GATEWAY_URL,
    api_key="dummy",
    extra_headers=createHeaders(
        api_key="YOUR_PORTKEY_API_KEY",
        virtual_key="YOUR_AZURE_VIRTUAL_KEY", # 가상 키 사용 시 프로바이더 필요 없음
        trace_id="azure_agent"
    )
)

2. 캐싱(Caching)

두 가지 강력한 캐싱 모드를 활용해 응답 시간을 단축하고 비용을 절감할 수 있다:

  • 단순 캐시(Simple Cache): 정확히 일치하는 요청에 적합
  • 의미 기반 캐시(Semantic Cache): 의미상 유사한 요청에 대한 응답을 매칭

캐싱에 대해 더 알아보기

config = {
    "cache": {
        "mode": "semantic",  # 정확한 매칭을 원하면 "simple"로 설정
    }
}

3. 프로덕션 신뢰성

Portkey는 포괄적인 신뢰성 기능을 제공한다:

  • 자동 재시도: 일시적인 실패를 유연하게 처리
  • 요청 타임아웃: 멈춤 현상 방지
  • 조건부 라우팅: 특정 조건에 따라 요청을 라우팅
  • 대체 동작: 자동 프로바이더 장애 조치 설정
  • 로드 밸런싱: 요청을 효율적으로 분배

신뢰성 기능에 대해 더 알아보기

4. 메트릭

에이전트 실행은 복잡하다. Portkey는 비용, 사용한 토큰, 지연 시간 등을 포함해 AI 에이전트에 대한 40개 이상의 포괄적인 메트릭을 자동으로 기록한다. 에이전트 실행에 대한 전체 개요가 필요하거나 세부적인 통찰이 필요할 때, Portkey의 커스텀 필터는 원하는 메트릭을 제공한다.

  • 에이전트 상호작용당 비용
  • 응답 시간과 지연 시간
  • 토큰 사용량과 효율성
  • 성공/실패율
  • 캐시 적중률

5. 상세 로깅

로그는 에이전트의 동작을 이해하고 문제를 진단하며 성능을 개선하는 데 필수적이다. 에이전트 활동과 도구 사용에 대한 상세 기록을 제공해 디버깅과 프로세스 최적화에 중요한 역할을 한다.

에이전트 실행 기록을 확인할 수 있는 전용 섹션에 접근해 매개변수, 결과, 함수 호출, 오류 등을 확인할 수 있다. trace ID, 모델, 사용된 토큰, 메타데이터 등 다양한 매개변수를 기반으로 로그를 필터링할 수 있다.

6. 기업 보안 기능

  • 가상 키(일회용 API 키)별 예산 한도와 요청 제한 설정
  • 역할 기반 접근 제어 구현
  • 감사 로그를 통해 시스템 변경 사항 추적
  • 데이터 보존 정책 구성

Configs 생성 및 관리에 대한 자세한 내용은 Portkey 문서를 참고한다.

리소스