본문 바로가기
dev/ai

Embabel을 사용하여 AI Agent API로 제공하기

by igooo 2025. 12. 11.
728x90

개요

이전 포스팅(https://blog.igooo.org/186)에서 Embable을 사용하여 AI Agent를 개발하는 방법에 대하여 알아보았다. 빠르게 Embabel을 알아보기 위해서 Spring Shell을 사용한 간단한 CLI 형태로 예제를 작성했는데 이번에는 AI Agent를 여러 사람에게 쉽게 제공하기 위해서는 API 형태로 제공을 해야 하기 때문에 API로 AI Agent를 제공하는 방법에 대해서 알아보자.

Spring Web을 사용하여 API를 제공하고 AI Agent와 연동하는 방법에 대하여 알아본다.

 

Getting Started

준비사항

이전 포스팅(https://blog.igooo.org/186)을 작성했을 당시 Emababel 버전이 0.1 이었고 현재 작성일(2025-12) 기준으로는 0.3 버전으로 올라갔다. 작성일 기준으로 Spring Boot 4와 Spring AI도 1.1 버전으로 올라가서 Spring을 기반으로 하는 만큼 Embabel 버전도 빠른 변경이 예상된다.

이번 포스팅에서는 0.3.1-SNAPSHOP 기준으로 예제를 작성한다.

 

프로젝트 생성

이전에 작성했던 프로젝트(https://blog.igooo.org/186)에서 개선을 할 예정이라 변경된 내용 중심으로 작성한다.

......

extra["embabelAgentVersion"] = "0.3.1-SNAPSHOT"
val embabelAgentVersion: String by extra


repositories {
    mavenCentral()
    maven {
        name = "embabel-snapshots"
        url = uri("https://repo.embabel.com/artifactory/libs-snapshots")
        mavenContent {
            snapshotsOnly()
        }
    }
}

dependencies {
    implementation("com.embabel.agent:embabel-agent-starter:${embabelAgentVersion}")
    implementation("com.embabel.agent:embabel-agent-starter-openai:${embabelAgentVersion}")

    implementation("org.springframework.boot:spring-boot-starter-web")

    ......
}

 

Agent 추가

Agent 관련 코드는 이전 포스팅 내용을 참고한다.(https://blog.igooo.org/186)

@Agent(description = "코드를 리뷰하고 테스트 코드를 작성하세요")
class CodeReviewAgent {
    private val log = LoggerFactory.getLogger(this.javaClass)
    .......
}

 

API 추가 

Embable에서는 AgentPlatform 객체를 Bean으로 제공한다. AgentPlatform은 등록한 Agent를 관리하는 기능을 제공하고, Agent에 사용자 요청을 전달하고 AgentProcess 객체를 제공하여 진행상태나 Process Id를 제공하여 조회할 수 있는 기능을 제공한다.

@RestController
class CodeReviewAPIController(private val agentPlatform: AgnetPlatform) {
	@GetMapping("/review")
	fun review(pullRequest: PullRequest): Map<String, Any> {
		// agents()로 등록한 Agent 목록을 조회할 수 있다.
		val agent = agentPlatform.agents().singleOrNull { it.name.lowercase().contains("review") } ?: throw RuntimeException("Not Found CodeReview Agent")
        
		// AgentProcess 생성        
		val agentProcess = agentPlatform.createAgentProcessFrom(
			agent = agent,
			processOptions = ProcessOptions( vervosity = Verbocisy(showPrompts = true, showLlmResponses = true),
			pullRequest
		)
            
		// Start Agent
		agentPlatform.start(agentProcess) 
		return mapOf("status" to agentProcess.status)
	}
}

 

AgentPlatform을 사용하여 Agent를 실행을 관리할 수 있고, AgentProcess를 사용하여 id 단위로 진행 상태 및 응답에 대하여 관리할 수 있다.

더 자세한 예제가 필요하면 공식 예제를 참고하자. (https://github.com/embabel/tripper)

 

마무리

Embable을 사용하여 AI Agent를 만들고 API로 AI Agent를 제공하는 방법에 대하여 알아보았다.

실제 서비스 환경으로 구성한다면 더 고려할 사항이 많겠지만(process id 기준으로 서버 요청처리 등 ...) 실제 어려운 문제는 아니라고 생각한다. 다음에는 AI Agent에 필수 기능인 도구(tool, mcp,...)를 연동하는 방법에 대해서도 예제를 작성해 보겠다.

 

 

728x90