영상요약

이 컨텐츠는 agentic ai 서비스를 프로덕션 환경에서 산업화하고 확장 가능하며 탄력적으로 만드는 방법에 대한 실용적인 접근 방식을 제시합니다. LLM의 한계를 극복하고 내구적인 실행, 오케스트레이션, 메모리 관리를 통해 실제 사용 사례에 적용하는 방법을 코드 데모와 함께 보여줍니다.


1. 발표 소개 1

2. AI의 현재와 필요성 15

3. 소프트웨어 엔지니어링 원칙 27

4. Agentic 서비스의 특징 31

5. Agentic 서비스의 패턴 34


6. 산업화의 요구사항 49


7. 오케스트레이션과 상태 관리 60


8. akka의 솔루션 76

9. 첫 번째 사용 사례: 인스턴스 해결 시스템 101


10. 두 번째 사용 사례: RAG 기반 챗봇 217


11. 세 번째 사용 사례: 실시간 비디오 271


1. 🤖 에이전틱 AI 서비스의 산업화


2. 🤖 에이전틱 서비스의 구조와 필수 요소


3. 🛠️ 내구성 실행 및 분산 시스템 구현


4. 🤖 AI 서비스 자동화 흐름 설계


5. 🚀 AI 서비스 워크플로우 및 사용 사례


5.1. ️ 도구 구현을 위한 워크플로우 설명


5.2. 챗봇 어시스턴트 구현 사례


5.3. ️ 파일 처리 및 대화 저장 흐름


5.4. 실시간 비디오 및 ASL 인식 시스템


5.5. AI 패턴 구현을 위한 플랫폼 개발 요약



보너스

이 동영상의 내용중 AkkaStream과 GRPC와 연동하는 순수 코드 구현체만 따로 코드생성 시도해보았습니다. 

GTPC와 연결된 AkkaStream를 통해 액터모델 상태관리를 하는 느낌정도 살펴볼수 있습니다. 

akka stream을 이용 grpc와 상호연동하면서 llm을 이용하는 샘플코드작성


🧩 목표 아키텍처

gRPC Server (LLM Proxy)
    ▲
    │   ← Akka Stream (Source.queue → Flow → Sink)
    │
Pekko Actor (LLMProcessorActor)
    ▲
    │   ← HelloActor / Router 에서 메시지 전달
    │
Client (gRPC 요청 송신자)


1. gRPC 프로토 정의 (예: llm.proto)

syntax = "proto3";

service LLMService {
  rpc Ask (LLMRequest) returns (LLMReply);
}

message LLMRequest {
  string prompt = 1;
}

message LLMReply {
  string response = 1;
}


2. LLM Stream Client 구성 (LLMClientStream.kt)


package org.example.grpc

import org.apache.pekko.stream.javadsl.*
import org.apache.pekko.stream.OverflowStrategy
import org.apache.pekko.actor.typed.ActorSystem
import org.apache.pekko.Done
import java.util.concurrent.CompletionStage

class LLMClientStream(system: ActorSystem<*>, private val grpcStub: LLMServiceStub) {

    private val materializer = Materializer.createMaterializer(system)
    private val sourceQueue =
        Source.queue<LLMRequest>(10, OverflowStrategy.backpressure())
            .via(Flow.fromFunction { req: LLMRequest ->
                grpcStub.ask(req).toCompletableFuture().get()
            })
            .toMat(Sink.foreach { reply ->
                println(">> LLM 응답: ${reply.response}")
            }, Keep.left())
            .run(materializer)

    fun askLLM(prompt: String): CompletionStage<Done> {
        return sourceQueue.offer(LLMRequest.newBuilder().setPrompt(prompt).build())
    }
}



3. Actor에서 gRPC 스트림 호출 (LLMProcessorActor.kt)

package org.example.actor.llm

import org.apache.pekko.actor.typed.*
import org.apache.pekko.actor.typed.javadsl.*
import org.example.grpc.LLMClientStream

sealed class LLMCommand
data class AskPrompt(val prompt: String) : LLMCommand()

class LLMProcessorActor(
    context: ActorContext<LLMCommand>,
    private val llmClient: LLMClientStream
) : AbstractBehavior<LLMCommand>(context) {

    companion object {
        fun create(llmClient: LLMClientStream): Behavior<LLMCommand> {
            return Behaviors.setup { ctx -> LLMProcessorActor(ctx, llmClient) }
        }
    }

    override fun createReceive(): Receive<LLMCommand> {
        return newReceiveBuilder()
            .onMessage(AskPrompt::class.java) { onAskPrompt(it) }
            .build()
    }

    private fun onAskPrompt(command: AskPrompt): Behavior<LLMCommand> {
        llmClient.askLLM(command.prompt)
        return this
    }
}


4. 예시 Actor에서 LLM 호출 (HelloActor.kt 연동)

helloActor.tell(AskPrompt("Explain actor model in 2 lines"))


5. gRPC 서버는 Bufstream 혹은 일반 gRPC 서버로 구동 (Bufstream 호환 구성 가능)


✅ 특징 요약