OpenTelemetry를 사용하여 Koog 에이전트를 Langfuse로 트레이싱하기
Open on GitHub Download .ipynb
이 노트북은 OpenTelemetry를 사용하여 Koog 에이전트 트레이스(trace)를 Langfuse 인스턴스로 내보내는 방법을 보여줍니다. 환경 변수를 설정하고, 간단한 에이전트를 실행한 다음, Langfuse에서 스팬(span)과 트레이스를 확인해 보겠습니다.
학습 내용
- Koog가 트레이스를 생성하기 위해 OpenTelemetry와 통합되는 방식
- 환경 변수를 통해 Langfuse 익스포터(exporter)를 구성하는 방법
- 에이전트를 실행하고 Langfuse에서 트레이스를 확인하는 방법
사전 준비 사항
- Langfuse 프로젝트 (호스트 URL, 퍼블릭 키, 시크릿 키)
- LLM 실행기를 위한 OpenAI API 키
- 셸(shell)에 설정된 환경 변수:
bash
export OPENAI_API_KEY=sk-...
export LANGFUSE_HOST=https://cloud.langfuse.com # 또는 셀프 호스팅 URL
export LANGFUSE_PUBLIC_KEY=pk_...
export LANGFUSE_SECRET_KEY=sk_...kotlin
%useLatestDescriptors
//%use koogkotlin
import ai.koog.agents.core.agent.AIAgent
import ai.koog.agents.features.opentelemetry.feature.OpenTelemetry
import ai.koog.prompt.executor.clients.openai.OpenAIModels
import ai.koog.prompt.executor.llms.all.simpleOpenAIExecutor
/**
* [Langfuse](https://langfuse.com/)로 Koog 에이전트 트레이싱을 수행하는 예제입니다.
*
* 에이전트 트레이스는 다음으로 내보내집니다:
* - [OtlpHttpSpanExporter]를 사용하는 Langfuse OTLP 엔드포인트 인스턴스
*
* 이 예제를 실행하려면:
* 1. [여기](https://langfuse.com/docs/get-started#create-new-project-in-langfuse)에 설명된 대로 Langfuse 프로젝트 및 자격 증명을 설정하세요.
* 2. [여기](https://langfuse.com/faq/all/where-are-langfuse-api-keys)에 설명된 대로 Langfuse 자격 증명을 가져오세요.
* 3. `LANGFUSE_HOST`, `LANGFUSE_PUBLIC_KEY`, `LANGFUSE_SECRET_KEY` 환경 변수를 설정하세요.
*
* @see <a href="https://langfuse.com/docs/opentelemetry/get-started#opentelemetry-endpoint">Langfuse OpenTelemetry 문서</a>
*/
val agent = AIAgent(
executor = simpleOpenAIExecutor(System.getenv("OPENAI_API_KEY")),
llmModel = OpenAIModels.Chat.GPT4oMini,
systemPrompt = "You are a code assistant. Provide concise code examples."
) {
install(OpenTelemetry) {
addLangfuseExporter()
}
}에이전트 및 Langfuse 익스포터 구성
다음 셀에서는 다음 작업을 수행합니다:
- OpenAI를 LLM 실행기로 사용하는 AIAgent를 생성합니다.
- OpenTelemetry 기능을 설치하고 Langfuse 익스포터를 추가합니다.
- Langfuse 구성을 위해 환경 변수를 활용합니다.
내부적으로 Koog는 에이전트 수명 주기, LLM 호출 및 도구 실행(있는 경우)에 대한 스팬을 생성합니다. Langfuse 익스포터는 OpenTelemetry 엔드포인트를 통해 이러한 스팬을 Langfuse 인스턴스로 전송합니다.
kotlin
import kotlinx.coroutines.runBlocking
println("Running agent with Langfuse tracing")
runBlocking {
val result = agent.run("Tell me a joke about programming")
"Result: $result
See traces on the Langfuse instance"
}에이전트 실행 및 트레이스 확인
다음 셀을 실행하여 간단한 프롬프트를 트리거합니다. 그러면 Langfuse 프로젝트로 내보낼 스팬이 생성됩니다.
Langfuse에서 확인해야 할 사항
- Langfuse 대시보드를 열고 프로젝트를 선택합니다.
- Traces/Spans 뷰로 이동합니다.
- 이 셀을 실행한 시간 주변의 최근 항목을 찾습니다.
- 스팬을 상세히 탐색하여 다음을 확인합니다:
- 에이전트 수명 주기 이벤트
- LLM 요청/응답 메타데이터
- 오류 (발생한 경우)
문제 해결
- 트레이스가 표시되지 않나요?
- LANGFUSE_HOST, LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY를 다시 확인하세요.
- 네트워크가 Langfuse 엔드포인트로의 아웃바운드 HTTPS 연결을 허용하는지 확인하세요.
- Langfuse 프로젝트가 활성 상태이고 키가 올바른 프로젝트에 속해 있는지 확인하세요.
- 인증 오류
- Langfuse에서 키를 다시 생성하고 환경 변수를 업데이트하세요.
- OpenAI 문제
- OPENAI_API_KEY가 설정되어 있고 유효한지 확인하세요.
