diff --git a/agent-ops/roadmap/ROADMAP.md b/agent-ops/roadmap/ROADMAP.md index 8f17b98..c96f54b 100644 --- a/agent-ops/roadmap/ROADMAP.md +++ b/agent-ops/roadmap/ROADMAP.md @@ -33,9 +33,9 @@ RAG, context 구성/압축, web search, MCP 정책, tool policy, output validati - 경로: `agent-ops/roadmap/phase/control-plane-portal-ops/PHASE.md` - 요약: 여러 Edge를 관찰하고 운영하는 중앙 제어면과 Flutter client 운영면을 구축하는 단계다. -- [계획] 서빙 라우팅과 최적화 기반 +- [진행중] 서빙 라우팅과 최적화 기반 - 경로: `agent-ops/roadmap/phase/serving-routing-optimization/PHASE.md` - - 요약: 로컬/클라우드 모델 서빙, 모델 profile, 부하 라우팅, 품질 평가 기준을 정리하고 최적화 계층으로 확장하는 단계다. + - 요약: Edge OpenAI-compatible API에서 Node의 Ollama serving을 호출하는 한 사이클을 먼저 완성하고, 이후 로컬/클라우드 모델 profile, 부하 라우팅, 품질 평가 기준과 최적화 계층으로 확장하는 단계다. ## 로딩 정책 diff --git a/agent-ops/roadmap/current.md b/agent-ops/roadmap/current.md index bfdd807..810b31e 100644 --- a/agent-ops/roadmap/current.md +++ b/agent-ops/roadmap/current.md @@ -2,6 +2,9 @@ ## 활성 Phase +- [진행중] 서빙 라우팅과 최적화 기반 + - 경로: `agent-ops/roadmap/phase/serving-routing-optimization/PHASE.md` + - [진행중] Automation Runtime과 Bridge 확장 - 경로: `agent-ops/roadmap/phase/automation-runtime-bridge/PHASE.md` @@ -10,6 +13,10 @@ ## 활성 Milestone +- [진행중] 모델 서빙과 부하 라우팅 + - Phase: `agent-ops/roadmap/phase/serving-routing-optimization/PHASE.md` + - 경로: `agent-ops/roadmap/phase/serving-routing-optimization/milestones/model-serving-load-routing.md` + - [검토중] Specialized Agent proto-socket 연결 기반 - Phase: `agent-ops/roadmap/phase/automation-runtime-bridge/PHASE.md` - 경로: `agent-ops/roadmap/phase/automation-runtime-bridge/milestones/specialized-agent-proto-socket-foundation.md` diff --git a/agent-ops/roadmap/phase/serving-routing-optimization/PHASE.md b/agent-ops/roadmap/phase/serving-routing-optimization/PHASE.md index 2340241..018df90 100644 --- a/agent-ops/roadmap/phase/serving-routing-optimization/PHASE.md +++ b/agent-ops/roadmap/phase/serving-routing-optimization/PHASE.md @@ -2,7 +2,7 @@ ## 상태 -[계획] +[진행중] ## 목표 @@ -13,9 +13,9 @@ 완료된 Milestone은 archive 경로를 가리키고, 검토중, 진행중, 계획 또는 보류 Milestone은 이 Phase 하위 `milestones/` 경로를 가리킨다. 완료, 검토중, 진행중, 계획 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다. -- [계획] 모델 서빙과 부하 라우팅 +- [진행중] 모델 서빙과 부하 라우팅 - 경로: `agent-ops/roadmap/phase/serving-routing-optimization/milestones/model-serving-load-routing.md` - - 요약: Responses API를 포함한 OpenAI-compatible 모델 호출 표면, 로컬/클라우드 모델 runtime profile, 모델 선택, 부하 라우팅, 호출 로그와 품질 평가 기준을 IOP 책임으로 정리한다. + - 요약: Edge OpenAI-compatible API를 통해 Node에서 serving 중인 Ollama를 일반 OpenAI/Ollama client 경험에 가깝게 조회, 선택, 호출하는 한 사이클을 먼저 완성하고, 이후 Responses API와 로컬/클라우드 라우팅으로 확장한다. - [계획] 지식, 도구 정책, 검증 최적화 - 경로: `agent-ops/roadmap/phase/serving-routing-optimization/milestones/knowledge-tool-validation-optimization.md` diff --git a/agent-ops/roadmap/phase/serving-routing-optimization/milestones/model-serving-load-routing.md b/agent-ops/roadmap/phase/serving-routing-optimization/milestones/model-serving-load-routing.md index 510c5fe..1fd6c29 100644 --- a/agent-ops/roadmap/phase/serving-routing-optimization/milestones/model-serving-load-routing.md +++ b/agent-ops/roadmap/phase/serving-routing-optimization/milestones/model-serving-load-routing.md @@ -8,26 +8,27 @@ ## 목표 로컬/클라우드 모델 runtime을 IOP의 `adapter + target` 실행 모델 안에서 운영할 수 있도록 Responses API를 포함한 OpenAI-compatible 모델 호출 표면, 모델 profile, 모델 선택, 부하 라우팅, 호출 로그와 품질 평가 기준을 정리한다. +현재 1차 우선순위는 Edge에 OpenAI API 방식으로 접속한 외부 agent/client가 Node에서 serving 중인 Ollama를 호출해 모델 조회, 모델 선택, chat completion 호출, streaming 응답까지 한 사이클을 완료하는 것이다. 로컬 모델을 우선 활용하되 cloud fallback과 품질 평가를 결합해 엔터프라이즈 모델 서비스에 가까운 운영 품질을 목표로 한다. RAG, MCP, web search, output validation 같은 최적화 계층으로 넘어가기 전에 기본 모델 서빙과 라우팅 기반을 먼저 만든다. ## 상태 -[계획] +[진행중] ## 구현 잠금 -- 상태: 잠금 -- 결정 필요: 아래 체크리스트 - - [ ] local-first와 cloud fallback의 비용/품질 우선순위 기본값을 결정한다. - - [ ] OpenAI-compatible Responses API 호환 범위를 어느 수준까지 1차 목표로 둘지 결정한다. - - [ ] 모델 품질 평가와 routing feedback에 사용할 초기 신호를 결정한다. +- 상태: 해제 +- 결정 필요: 없음 ## 범위 - 로컬/클라우드 모델 runtime profile 관리 기준 - 모델 선택, 부하 라우팅, fallback 후보 판단 기준 - OpenAI-compatible `/v1/chat/completions`와 `/v1/responses` 호출을 내부 `adapter + target` 실행으로 해석하는 경계 +- OpenAI-compatible `/v1/models` 조회와 `/v1/chat/completions` non-streaming/streaming 호출을 Edge -> Node -> Ollama 경로로 완성하는 1차 full-cycle +- 외부 agent/client가 일반 Ollama 또는 OpenAI-compatible endpoint를 쓰는 것과 유사하게 model을 조회하고, 요청 model을 내부 target으로 사용하고, 지원 가능한 generation option을 명확히 전달하는 경험 +- Ollama 관련 조회/상태/관리 command를 IOP OpenAI-compatible 표면에서 어디까지 pass-through할지에 대한 1차 기준과 unsupported 응답 정책 - IOP native protocol 기반 내부 모델 호출 인터페이스 후보 - 모델 호출 로그, usage, 품질 평가 신호의 책임 위치 - NomadCode direct model endpoint 또는 Ollama fallback 전환을 지원하기 위한 IOP 측 모델 호출 표면 @@ -40,6 +41,16 @@ RAG, MCP, web search, output validation 같은 최적화 계층으로 넘어가 - [ ] [cloud-fallback] 로컬 모델 우선 활용과 cloud fallback 기준을 함께 정의한다. - [ ] [responses-api] OpenAI-compatible API는 chat completions와 Responses API를 포함하는 외부 모델 기반 호출 표면으로 정의한다. +### Epic: [ollama-openai-cycle] Ollama OpenAI-Compatible Full Cycle + +- [ ] [models-list] Edge `/v1/models`가 Node/Ollama에서 사용 가능한 model 목록을 외부 client가 기대하는 OpenAI-compatible 형식으로 제공한다. +- [ ] [chat-cycle] Edge `/v1/chat/completions` 호출이 내부 `adapter=ollama`, `target=` 실행으로 변환되어 Node Ollama adapter까지 왕복한다. +- [ ] [streaming-cycle] non-streaming 응답과 streaming SSE 응답이 일반 OpenAI-compatible client에서 사용할 수 있는 형태로 동작한다. +- [ ] [model-target-map] `openai.target` 고정 라우팅과 요청 `model` 기반 라우팅의 우선순위가 명확하며 Ollama model 선택 경험과 충돌하지 않는다. +- [ ] [option-pass-through] temperature, top_p, max_tokens, stop, stream 등 1차 지원 option의 매핑과 미지원 option 응답 정책이 정리되어 있다. +- [ ] [ollama-command-pass-through] Ollama 관련 모델 조회, 상태, 관리 command를 Edge OpenAI-compatible 표면에서 어디까지 pass-through할지 1차 범위가 정의되어 있다. +- [ ] [openai-ollama-smoke] Edge -> Node -> Ollama full-cycle smoke가 fake Ollama와 실제 Ollama 사용자 흐름 기준으로 검증된다. + ### Epic: [protocol-boundary] Protocol Boundary - [ ] [a2a-boundary] A2A API는 외부 agent의 작업 위임 표면으로 제한한다. @@ -50,6 +61,9 @@ RAG, MCP, web search, output validation 같은 최적화 계층으로 넘어가 ## 완료 기준 - [ ] Responses API 호환 지원 범위와 chat completions baseline의 차이가 문서화된다. +- [ ] Edge `/v1/models`와 `/v1/chat/completions`를 통해 Node의 Ollama serving을 조회하고 사용할 수 있다. +- [ ] 외부 agent/client가 Edge endpoint를 일반 OpenAI-compatible 또는 Ollama-backed endpoint처럼 설정해 한 차례 모델 조회와 chat completion을 완료할 수 있다. +- [ ] streaming/non-streaming 응답, model-to-target 매핑, 1차 option pass-through, unsupported option 응답 정책이 검증되어 있다. - [ ] 모델 profile, routing 입력값, routing 결과, fallback 책임 경계가 문서화된다. - [ ] 외부 API 표면과 IOP native protocol의 역할이 충돌하지 않는다. - [ ] NomadCode direct model endpoint/Ollama fallback 전환에 필요한 IOP 측 계약이 정리된다. @@ -75,7 +89,10 @@ RAG, MCP, web search, output validation 같은 최적화 계층으로 넘어가 ## 작업 컨텍스트 - 관련 경로: `apps/edge`, `apps/node`, `packages/config`, `packages/observability`, `proto/iop`, `docs/architecture.md`, `apps/edge/README.md` +- 1차 우선순위: OTO/bootstrap 연동보다 Edge OpenAI-compatible API -> Node -> Ollama serving full-cycle을 먼저 완성한다. - 표준선(선택): 내부 실행 계약은 `adapter + target`을 유지하고, OpenAI-compatible API는 외부 호환 입력 표면으로 둔다. +- 표준선(선택): 1차 구현은 local Ollama를 기준으로 하며 cloud fallback, 품질 평가 feedback, Responses API 세부 호환은 chat completions baseline 이후 확장한다. +- 표준선(선택): Edge `/v1/models`는 설정된 model 목록과 Node capability/Ollama 조회 결과 중 사용 가능한 근거를 우선해 반환하고, 요청 `model`은 `openai.target`이 비어 있을 때 내부 target으로 사용한다. - 선행 작업: Edge 입력 표면, CLI Automation Runtime 안정화 - 후속 작업: 지식, 도구 정책, 검증 최적화 -- 확인 필요: local/cloud 우선순위, Responses API 1차 범위, 품질 평가 신호 +- 확인 필요: cloud fallback 도입 시점, Responses API 세부 호환 범위, 모델 품질 평가와 routing feedback의 초기 신호