OpenLIT 개요
OpenLIT은 한 줄의 코드로 AI 에이전트, LLM, VectorDB, GPU의 성능을 쉽게 모니터링할 수 있는 오픈소스 도구다.
OpenTelemetry 기반의 트레이싱과 메트릭을 제공해 비용, 지연 시간, 상호작용, 작업 순서 같은 중요한 파라미터를 추적할 수 있다. 이를 통해 하이퍼파라미터를 추적하고 성능 문제를 모니터링하며, 시간이 지남에 따라 에이전트를 개선하고 파인튜닝할 방법을 찾을 수 있다.
주요 기능
- 분석 대시보드: 어시스턴트의 상태와 성능을 상세히 모니터링한다. 메트릭, 비용, 사용자 상호작용을 추적하는 대시보드를 제공한다.
- OpenTelemetry 기반 관측 가능성 SDK: 벤더 중립적인 SDK를 활용해 Grafana, DataDog 등 기존 관측 가능성 도구로 트레이스와 메트릭을 전송한다.
- 커스텀 및 파인튜닝 모델 비용 추적: 특정 모델에 맞춘 비용 추정을 위해 커스텀 가격 파일을 사용해 정확한 예산 계획을 세운다.
- 예외 모니터링 대시보드: 일반적인 예외와 오류를 추적하는 모니터링 대시보드를 통해 문제를 빠르게 발견하고 해결한다.
- 규정 준수 및 보안: 욕설이나 개인정보 유출과 같은 잠재적 위협을 감지한다.
- 프롬프트 주입 탐지: 코드 주입과 비밀 정보 유출 가능성을 식별한다.
- API 키와 비밀 정보 관리: LLM API 키와 비밀 정보를 안전하게 중앙에서 관리해 불안전한 관행을 방지한다.
- 프롬프트 관리: PromptHub를 사용해 어시스턴트 프롬프트를 관리하고 버전을 유지한다. 이를 통해 모든 어시스턴트에서 일관되고 쉽게 접근할 수 있다.
- 모델 플레이그라운드: CrewAI 어시스턴트를 배포하기 전에 다양한 모델을 테스트하고 비교한다.
설정 안내
OpenLIT 배포
OpenLIT 저장소 Git Clone
git clone git@github.com:openlit/openlit.git
애플리케이션에서 OpenLIT 초기화
애플리케이션 코드에 다음 두 줄을 추가한다:
import openlit
openlit.init(otlp_endpoint="http://127.0.0.1:4318")
CrewAI 에이전트 모니터링 예제:
from crewai import Agent, Task, Crew, Process
import openlit
openlit.init(disable_metrics=True)
# 에이전트 정의
researcher = Agent(
role="Researcher",
goal="AI와 AI 에이전트에 대해 철저한 연구와 분석 수행",
backstory="기술, 소프트웨어 엔지니어링, AI, 스타트업 전문 연구원. 프리랜서로 활동 중이며 현재 새로운 클라이언트를 위해 연구 중.",
allow_delegation=False,
llm='command-r'
)
# 태스크 정의
task = Task(
description="기사 주제로 흥미로운 아이디어 5개를 생성하고, 각 아이디어에 대해 전체 기사의 잠재력을 보여주는 매력적인 단락 작성. 아이디어 목록과 단락, 노트를 반환.",
expected_output="5개의 불릿 포인트, 각각 단락과 노트 포함.",
)
# 매니저 에이전트 정의
manager = Agent(
role="Project Manager",
goal="크루를 효율적으로 관리하고 고품질 태스크 완수 보장",
backstory="복잡한 프로젝트를 감독하고 팀을 성공으로 이끄는 경험 많은 프로젝트 매니저. 크루 멤버의 노력을 조율해 각 태스크가 시간 내에 최고 수준으로 완료되도록 한다.",
allow_delegation=True,
llm='command-r'
)
# 커스텀 매니저로 크루 인스턴스 생성
crew = Crew(
agents=[researcher],
tasks=[task],
manager_agent=manager,
process=Process.hierarchical,
)
# 크루 작업 시작
result = crew.kickoff()
print(result)
import openlit
openlit.init(otlp_endpoint="http://127.0.0.1:4318")
CrewAI 에이전트 모니터링 예제:
from crewai import Agent, Task, Crew, Process
import openlit
openlit.init(disable_metrics=True)
# 에이전트 정의
researcher = Agent(
role="Researcher",
goal="AI와 AI 에이전트에 대해 철저한 연구와 분석 수행",
backstory="기술, 소프트웨어 엔지니어링, AI, 스타트업 전문 연구원. 프리랜서로 활동 중이며 현재 새로운 클라이언트를 위해 연구 중.",
allow_delegation=False,
llm='command-r'
)
# 태스크 정의
task = Task(
description="기사 주제로 흥미로운 아이디어 5개를 생성하고, 각 아이디어에 대해 전체 기사의 잠재력을 보여주는 매력적인 단락 작성. 아이디어 목록과 단락, 노트를 반환.",
expected_output="5개의 불릿 포인트, 각각 단락과 노트 포함.",
)
# 매니저 에이전트 정의
manager = Agent(
role="Project Manager",
goal="크루를 효율적으로 관리하고 고품질 태스크 완수 보장",
backstory="복잡한 프로젝트를 감독하고 팀을 성공으로 이끄는 경험 많은 프로젝트 매니저. 크루 멤버의 노력을 조율해 각 태스크가 시간 내에 최고 수준으로 완료되도록 한다.",
allow_delegation=True,
llm='command-r'
)
# 커스텀 매니저로 크루 인스턴스 생성
crew = Crew(
agents=[researcher],
tasks=[task],
manager_agent=manager,
process=Process.hierarchical,
)
# 크루 작업 시작
result = crew.kickoff()
print(result)
애플리케이션 코드에 다음 두 줄을 추가한다:
import openlit
openlit.init()
OTEL 익스포터 엔드포인트를 설정하려면 다음 명령어를 실행한다:
export OTEL_EXPORTER_OTLP_ENDPOINT = "http://127.0.0.1:4318"
CrewAI 비동기 에이전트 모니터링 예제:
import asyncio
from crewai import Crew, Agent, Task
import openlit
openlit.init(otlp_endpoint="http://127.0.0.1:4318")
# 코드 실행이 가능한 에이전트 생성
coding_agent = Agent(
role="Python Data Analyst",
goal="Python을 사용해 데이터를 분석하고 인사이트 제공",
backstory="강력한 Python 스킬을 가진 경험 많은 데이터 분석가.",
allow_code_execution=True,
llm="command-r"
)
# 코드 실행이 필요한 태스크 생성
data_analysis_task = Task(
description="주어진 데이터셋을 분석하고 참가자의 평균 나이 계산. 나이: {ages}",
agent=coding_agent,
expected_output="5개의 불릿 포인트, 각각 단락과 노트 포함.",
)
# 크루 생성 및 태스크 추가
analysis_crew = Crew(
agents=[coding_agent],
tasks=[data_analysis_task]
)
# 비동기 함수로 크루 실행
async def async_crew_execution():
result = await analysis_crew.kickoff_async(inputs={"ages": [25, 30, 35, 40, 45]})
print("Crew Result:", result)
# 비동기 함수 실행
asyncio.run(async_crew_execution())
더 고급 설정과 사용 사례는 OpenLIT Python SDK 저장소를 참조한다.
시각화 및 분석
에이전트 관측 데이터가 OpenLIT로 수집되고 전송되면, 다음 단계는 이 데이터를 시각화하고 분석해 에이전트의 성능과 동작을 파악하고 개선할 부분을 식별하는 것이다.
브라우저에서 127.0.0.1:3000
으로 OpenLIT에 접속해 탐색을 시작한다. 기본 자격 증명으로 로그인할 수 있다:
- 이메일:
user@openlit.io
- 비밀번호:
openlituser