본문으로 건너뛰기

EVA Agent Release Note

v2.6.0 (Mar 17, 2026)

Highlights

  • Visual Agent 모드 분리: 시나리오 계약에 detection_mode를 추가하고 vm_only 경로를 분리하여 그래프 선택을 모드 기반으로 전환했습니다.
  • 멀티 프레임 추론 확장: multi-frame manager/queue 경로를 도입·확장하고 vm-only 및 timeline 계열 감지 간격 제어를 강화했습니다.
  • Feedback 파이프라인 재구성: feedback record/apply 흐름을 전용 graph로 분리하고 분석 단위 vector search 메타데이터를 후속 처리에 활용할 수 있게 정리했습니다.
  • Chat/Enrich 계약 정렬: lang 전환을 이어가고 capture/priority/query 처리 규칙을 정리하면서 enrich/visual 스키마를 앱 계약과 맞췄습니다.
  • 모델/배포 구성 갱신: Qwen3.5-VL 설정을 추가하고 기본 vLLM 이미지를 0.17.1로 갱신했으며, downstream eva-agent-vllm chart와 Qdrant 운영 유틸을 확장했습니다.

Breaking Changes

  • 시나리오 요청 계약 변경: Visual request의 scenario_list 항목에 detection_mode가 포함되며, 실제 그래프 선택도 이 필드에 따라 결정됩니다.
  • Enrich 출력 계약 변경: Enrich 결과에도 detection_mode가 포함되며, capture mode 의미가 기존 temporal 표현에서 Timeline 중심 의미로 정리되었습니다.
  • 응답 스키마 조정: AnalysisItem.label은 optional이 되었고, 분석 항목별로 agent_meta.vector_search_info가 포함될 수 있으므로 응답 소비 측 로직 점검이 필요합니다.
  • 언어 필드 전환: app_langlang로 전환되었으므로 기존 필드에 의존하던 클라이언트는 요청/응답 처리 로직을 갱신해야 합니다.

Features

  • Detection mode 지원: vm_onlymulti_step를 구분하는 schema/config를 추가하고 앱 계약과 맞춘 detection mode 분류를 도입했습니다.
  • Multi-frame manager 지원: timeline 계열 추론을 위해 multi-frame manager/queue 구성과 detection interval 기반 package control을 추가했습니다.
  • Vector search 메타데이터 노출: 분석 단위 vector search 메타데이터를 저장하고 visual-agent 응답에 포함해 feedback/app 후속 처리에 활용할 수 있게 했습니다.
  • Feedback graph 분리: feedback record/apply API를 전용 feedback graph와 service-layer node로 분리했습니다.
  • 모델 커버리지 확장: Qwen3.5-VL 프롬프트/설정 변형을 추가하고 Qwen3.5 계열용 vLLM instruction-mode extra_body를 지원했습니다.
  • Enrich 로직: 멀티 프레임 기반으로 동작할 수 있는 시나리오로 enrich 하도록 업데이트 했습니다..
  • Chat 로직: 새로 추가된 사항 및 변경된 동작에 맞는 답변을 하도록 업데이트 했습니다.

Fixes

  • VM-only 라우팅 안정화: graph-name 해석 및 vm-only 스키마/프롬프트 불일치를 수정해 잘못된 그래프 경로로 빠지는 문제를 보완했습니다.
  • Threshold/interval 튜닝: monitoring 경로의 오동작을 줄이기 위해 vm-only threshold와 detection interval 제어를 여러 차례 조정했습니다.
  • Schema/parser 보강: AnalysisItem.label optional 처리, detection mode/capture mode 스키마 정렬, 파싱/정규화 예외 처리를 보강했습니다.
  • Chat/Enrich 요청 정리: chatstate -> chatinput 처리, language normalization, user query normalization, 프롬프트/설정 불일치를 다수 정리했습니다.

Config & Deployment

  • 배포 버전 상향: chart/image/docker-compose 기본값을 2.6.0 릴리즈 라인에 맞췄습니다.
  • vLLM 스택 업데이트: 기본 vLLM 이미지를 0.17.1로 올리고 shared PV 배포 패턴을 위한 downstream eva-agent-vllm Helm chart를 추가했습니다.
  • Qdrant 운영 도구 확장: Qdrant migration, snapshot, restore, backup, vector rebuild/update 유틸을 추가·확장했습니다.
  • Helm/runtime 정리: Helm PV 동작을 보정하고 S3 sync init container를 flag 기반으로 제어하며, 이전 deploy override 파일들을 새 chart 구조에 맞게 정리했습니다.

Changelog (non-chore, 167 commits)

펼쳐보기
  • d002689 update: default image tag to 2.6.0
  • cbad2e7 update: chart version to 2.6.0
  • 8b18017 add: extra_body for vllm's instruction mode (Qwen3.5 VL model only)
  • 933737b add: qwen3.5-vl-9b model confif yaml files
  • 4397cf5 update: vllm default image tag to 0.17.1 to use qwen3.5 family
  • 33f33d7 upgrade message
  • 50df0e3 change prompt for set target
  • 8bd2573 update: docker compose yaml file
  • 50f0935 add: span + trace level score at feedback apply graph (node-level)
  • 72ba9e2 modify config & fix node utils
  • c96065f modify config
  • 0c93142 rm files
  • b832ab0 upgrade configs
  • 09dfc37 upgrade chat/alert message
  • 8fca3be add: trace metadata for mfm early returned requests
  • d6000ea update function
  • bb063a6 apply MR commnets
  • 7bb5fe1 fix lang
  • 14dc255 fix capture mode to lower
  • 4d1bb3c fix: apply updated img description schema for vm-only graph
  • 6f6ce6d rm logs
  • 5c2d24b upgrade chat
  • 4eaaf58 update: trace name for each mode for visual agent API
  • 0d1fce2 fix: apply mfm for vm_only to control detection interval
  • e4c5602 update: set vm_only mode's threshold value to 0.98 (from 0.99)
  • 099c895 upgrade vision model info for chat agent
  • d49f405 fix code based on the MR's comment
  • c51e1ba hotfix: update vm_only threshold value to 0.99
  • d59a67c fix normalize function
  • 643fbe5 fix normalize function
  • 326131f clean enrich state
  • 1b02e35 fix chatstate->chatinput for the chat api request
  • c410b75 change get language function name
  • 26bce9c fix: _resolve_graph_name always return vm_graph
  • 7d5b4b7 Applied parallel
  • 2c8b12f Changed description abatch -> ainvoke
  • 2824baa rm Exceptions
  • 1723047 update chat messages
  • 0c9dd5f rm lines from mfm preprocess
  • a324013 rm configs (exaone-vlm)
  • 11fe760 upgrade enricher
  • 3ef75ad Added VmState & Seperated VmGraph
  • 54d5f9a upgrade configs(Exaone)
  • 728ada2 upgrade multi step
  • 362deeb Edit get_output.py
  • 420dc60 fix codes based on Merge Review's comments
  • b2ed805 add enricher's edge
  • 20ebaac Edit v2.5.0.yaml
  • 52cfaaa Formated vm_only detection message
  • f904b8d change order of the complied graph's input
  • 0533f24 change priority list
  • 687af55 add edge
  • cc51307 update normalize ndoe
  • e8e81e6 add function type and capitalize to the frame mode
  • ff87870 add var
  • 4cad6be upgrade priority chat
  • 1a01bef update context
  • 29a63b4 change the name of the context schema
  • 16015dd add logic
  • 233a3e1 del test code
  • 4be6474 update enricher;'s capture mode
  • ee7430b change capture mode
  • 6632b88 fixed bug
  • 6f5471d Added detection mode node
  • 3c6b98e upgrade temporal logic
  • 4ee6805 upgrade enrich prompt
  • ff668e4 upgrade priority
  • cf8065a upgrade chat1
  • 2de6c6e change priority;s default value to standard
  • d911b68 change low state to standard state
  • f3cf1e7 change str type
  • 3c181e4 rm priority from enrich
  • 12e794b upgrade multi frame
  • e372aa0 update img_description and check user query section
  • f2635a2 upgrade the exception logic
  • 5e84ce4 reverse upgrade
  • 7431ed3 fix parsing bug
  • 33741c8 fix: update AnalysisItem.label as optional
  • 7d9f6bc feat(schema): align detection mode and app-level config contract
  • d63c599 update enrich schema and rm debug log
  • 630ef2a feat(visual-agent): persist per-analysis vector search meta
  • 8402a86 rm logs
  • 83fcbd7 updage enrich fewshot
  • 0c35698 update multi image agent logic and preprocessing logic
  • 1ebd4a2 rm priority from enriched input
  • 7e2c806 clean states(enrich/chat)
  • 676cf0f change configs to llm(Exaone)
  • 36068fa rm logs; solve bugs
  • 96c4499 update english fewshots
  • f166d91 update english logits
  • d78a8b4 update configs
  • d944ec9 update configs
  • 0f83ff9 update configs
  • b477b7f update enrich
  • 5b46dc4 upgrade configs
  • d0e4009 update configs
  • cf778e5 upgrade enricher
  • 4c4ad0f upgrade enrich
  • 5038f2a change exception_condition_per_exception to exception_condition_per_scenario
  • f23160d add annotations; chat
  • aca1994 add annotations; enricher
  • f3eafcf refactor; enricher state
  • ab0657b refactor; chat state; change input state
  • 3ad9ac1 refactor; chat state
  • 1593ed4 update logic
  • 3971f8b update configs
  • 6ece08d update english fewshot
  • 24e5f5c update enrich
  • c252985 rm logs
  • 92bcab2 revert complete(collab upload version
  • 5c8752f revert 2ab7f3608e53e3e1a4141cfa32e76fb5aafcf518
  • e27216d revert 2ab7f3608e53e3e1a4141cfa32e76fb5aafcf518
  • 33b391f revert 2ab7f3608e53e3e1a4141cfa32e76fb5aafcf518
  • ec44b6f update detection performance
  • c0fcf41 revoke the exception upgrade
  • 37d924e upgrade detection logic(exception upgrade)
  • 6f3d1db upgrade schema
  • 0189600 update schema
  • efbd365 upgrade enrich
  • b49d619 update mask situation
  • 24014fd update schema and enrich fewshot
  • 44e7bf1 upgrade
  • c789218 update multi frame
  • dd7081d update prompt
  • 2ab7f36 update va schema
  • 8f21536 upgrade enrich
  • bd891c3 upgrade logic
  • 88594b5 upgrade fewshot
  • 97d1c00 fix bug
  • 58f2fe2 fix error
  • ce0212f update VA logic
  • f3fbb5a upgrade schema
  • 414a98c rm logs
  • 8a99abd upgrade exception logic (change to it to batch logic)
  • 619e0e5 change exceptions to excluded situations
  • 427ca0b app_lang->lang
  • 3c0bddc style: camera package log
  • 8eceb78 rm videos
  • 8d0bb2b resolve conflict
  • fea49c9 fix check user query bug
  • 1aa0d08 feat(graph_runtime): GraphExecutor를 CompiledStateGraph cache 중심 구조로 전환
  • 392e5e1 refactor(config): normalize YAML discovery + path parsing helpers (no behavior change)
  • 76d50a3 refactor(visual-api): delegate feedback apply stage to ApplyFeedbackGraph
  • 920426d refactor(feedback-api): route record endpoint through RecordFeedbackGraph
  • d4534b5 refactor(feedback-pipeline): extract feedback graph/node service layer foundation
  • 14ba636 refactor(graph-runtime): fix decorator typing + tighten graph instance types
  • 14cfcb9 fix(helm): gate s3 sync init container by flag
  • 5a854c3 feat: qdrant migration & backup helper utils
  • a57a346 remove: deprecated files
  • 59ba357 fix: chart behaviour (allow dynamic pv with values)
  • f2ff678 add: downstream custom vllm chart (allow dynamic shared pv + helm annotation)
  • 6cfa020 remove: helm values override yaml files
  • 07e5b04 feat: Package Control based on Detection Interval (Alert-Interval)
  • 31c9e9b refactor: minor changes
  • 2c41451 update eng fewshot
  • a781edf update pyproject
  • 925e488 upgrade agent logic
  • af8d6e3 fix last frame
  • 3aef014 add TODO
  • 57f8b51 update VA and EA for multi frame
  • 7a7665e refact: mfm refactor
  • 5bfeec4 fix: request param error
  • 60d25eb update: early return if no package
  • 181638d update: package class for visual agent
  • f830971 feat: add multi-frame manager and queues
  • 7f44c07 merge: save router as snapshot to merge develop branch (reflect latest)
  • 68f4eb1 merge: save router as snapshot to merge develop branch (reflect latest)

운영 영향 chore

  • 7189158 minor version 기준을 2.6.0으로 상향
  • 8da76ce .dockerignoredeploy/ 폴더 추가

v2.5.0 (Feb 12, 2026)

Highlights

  • 채팅 인터페이스 정리: chat_lang에서 lang 중심으로 전환을 시작하고, MetaBase 도입으로 공통 메타 스키마를 재정렬했습니다.
  • Visual-RAG 파이프라인 고도화: detection_scenariodetection_case를 분리해 임베딩/업서트/검색 흐름의 정확도를 높였습니다.
  • RAG 검색 품질 개선: weighted_sum_power 점수 방식을 추가하고 텍스트 임베딩 모델 intfloat/multilingual-e5-small을 도입했습니다.
  • 배포 런타임 업데이트: Python 3.12 기반으로 전환하고 Qdrant 이미지를 공식 이미지로 정리했습니다.
  • 운영 자동화 강화: AWS/Kubectl/Qdrant 운영 스크립트를 확장하고 모델/프롬프트 동기화 유틸을 개선했습니다.

Breaking Changes

  • 채팅 언어 필드 전환: chat_lang는 향후(v2.6.0) 제거 예정이며 lang 사용이 권장됩니다.
  • 메타 스키마 변경: MetaBase 기반으로 메타 구조가 재편되어 기존 메타 파싱 로직 점검이 필요합니다.
  • 컨테이너/환경 구성 변경: Ollama/Qdrant 관련 env 파일이 제거되고 Qdrant 컨테이너/헬스체크 방식이 변경되었습니다.

Features

  • 파서 개선: 포맷 지시를 단순화하는 커스텀 Pydantic 파서를 추가했습니다.
  • RAG 유사도 측정 metric 추가: weighted_sum_power 기반 스코어 조합 로직을 추가했습니다.
  • Logit 레지스트리 완화: 미등록 키 조회 시 빈 dict를 반환하도록 정책을 완화했습니다.
  • Visual-RAG 구분 임베딩: detection scenario/case 분리 임베딩과 공통 지연 측정 로깅을 추가했습니다.

Fixes

  • Enrich API 안정화: Enrich 요청에서 발생하던 422 오류를 수정했습니다.
  • Chat 라우팅/히스토리 보강: get_history, 에러 경로, 라우터 값 전달, parser 방어 로직을 다수 보강했습니다.
  • 벡터 임베딩 경로 정리: Visual Agent 벡터 임베딩/업서트/검색 경로의 공유 흐름을 정비했습니다.

Config & Deployment

  • 기반 버전 업그레이드: Dockerfile/pyproject.toml/uv.lock을 Python 3.12 기준으로 정렬했습니다.
  • Qdrant 런타임 전환: 커스텀 Qdrant 이미지를 제거하고 공식 이미지 + bash 기반 헬스체크로 변경했습니다.
  • 모델/프롬프트 설정 동기화: model_config_util.sh를 agent 스코프와 model_type 동기화까지 확장했습니다.

Changelog (non-chore, 35 commits)

펼쳐보기
  • 97b69ee Date: 2025-02-xx Scope: Visual agent vector embedding pipeline (shared embeddings, upsert/search flow)
  • 012e504 upgrade chat history
  • e2a2930 upgrade chat
  • e3fae36 update config
  • b81fd83 add: intfloat/multilingual-e5-small (text) embedding model
  • 9beba0c feat: custom parser for simpler format instruction
  • d55a20c feat(rag): add weighted_sum_power scoring
  • abbf149 feat(visual-rag): split detection_scenario vs detection_case for embedding + ChatState validation + traceback logging + shared embed latency debug
  • 9fa158b rm _ infront of function's name
  • 15cd4eb add TODO
  • c078393 rm redundent logic
  • 1c90f1d add edge for handle error
  • 81d9f6a add get_history node
  • eda1c7f refactor format_history
  • 52fa1c7 refactor format_history
  • 7ab2689 add todo
  • 2721184 rm error log
  • 045738b upgrade handel_error prompt
  • d7f8124 exaone prompt
  • 30e7c6d update: change chat_lang to lang (chat-lang will be deprecated from 2.6.0)
  • 98ca11c refactor(api): MetaBase 도입으로 Meta 분리
  • 1972859 fix: request 422 error
  • 17a503c update: base python version to 3.12 from 3.11
  • 9ba03d6 deprecate: ollama docker configs
  • e2bf6dd remove: custom qdrant and use official image
  • 5d8b641 update: qdrant healthcheck to use bash only (official image doesn't install curl)
  • 983ffe5 docs: update README
  • e115bc9 docs: update README
  • 1a097e3 docs: update .env.sample comment unnecessary fields & remove deprecated variable
  • ef9a6e1 remove: ollama related env files
  • e5f1950 remove: qdrant env files
  • 96d5f57 feat: loosen logit registry get policy (return empty dict if not exist)
  • 7212dcb remove: Exaone 4.0 configs from vlm relate agents
  • 37550bf update: config files to sync prompt & model_type
  • f288f47 feat(config): extend model_config_util with agent scoping and model_type update

운영 영향 chore

  • 6b81e03 deploy 유틸 스크립트(AWS/S3/Kubectl/Qdrant) 추가
  • f0f16b5 deploy 스크립트 실행 권한 정리

v2.4.3 (Feb 09, 2026)

Highlights

  • EVA App 기준에 맞춰 set_target_threshold 범위를 서버와 일치시켰습니다.

Breaking Changes

  • 외부 인터페이스 브레이킹 변경은 없습니다.

Features

  • 신규 기능 추가 없음(정합성 핫픽스 릴리즈).

Fixes

  • set_target_threshold 허용 범위를 [0.1, 1)로 고정하여 앱/에이전트 동작 불일치를 수정했습니다.

Config & Deployment

  • 액션 노드/설정 파일의 임계치 검증 조건을 동기화했습니다.

Upgrade Notes

  • 기존에 1.0 또는 0.1 미만 값을 보내던 클라이언트는 [0.1, 1) 범위로 조정해야 합니다.

Changelog (non-chore, 1 commit)

펼쳐보기
  • 4d894e3 fix: match target threshold range to EVA App [0.1, 1)

v2.4.2 (Feb 04, 2026)

Highlights

  • Chat 라우팅 체계 재정리: router_values 전달 기반으로 action/qna 라우터 흐름을 정비했습니다.
  • 히스토리 처리 개편: get_history 경로와 상태 타입을 재정렬하여 QnA/에러 처리 연계를 강화했습니다.
  • Visual/Enrich 출력 정합성 강화: detection_case 반영, 우선순위/캡처 모드 표현 보정 등 스키마/출력 동기화를 진행했습니다.

Breaking Changes

  • Chat 내부 라우팅 계약 변경: pre-chat → router → action/qna로 전달되는 state 필드가 조정되어, 커스텀 노드 확장 시 재확인이 필요합니다.
  • 출력 스키마 보정: enrich/visual 일부 필드명/출력 값 정규화가 반영되었습니다.

Features

  • Chat QnA/Router 프롬프트와 가이드 문구를 확대하고, 경로별 방어 로직을 추가했습니다.
  • Exaone/Qwen 설정 파일을 대량 갱신하여 chat 흐름과 프롬프트 버전을 맞췄습니다.

Fixes

  • QnA 라우터 반환값, task_type 전달, parser 예외 처리를 연속 수정했습니다.
  • get_history 누락/오동작과 에러 핸들링 경로를 보완했습니다.
  • Visual/Enrich 출력 타입 및 값 정규화를 통해 후속 파싱 오류를 줄였습니다.

Config & Deployment

  • config/chat_agent/** 중심으로 액션/라우터/검증기 설정을 업데이트했습니다.

Changelog (non-chore, 50 commits)

펼쳐보기
  • a4dc6fd change translation state to Any
  • f9f45b2 update route_task function and rm route_brightness function
  • d229cec change get_history
  • 0be5635 change chat_history 's type
  • cb42b84 change get_history function
  • 78c1fe7 set language
  • 08009b4 change set_target.py
  • c039bc7 rm () from keys
  • d3909d3 update prompts
  • e12d8fa add guide
  • fbf027e refactor chat llm
  • 772e98a update configs
  • 83fdb81 update configs(Exaone)
  • 7744092 add router value
  • 48fb79c add router value to router functions
  • f76bd93 fix error; action_router returns router_values
  • 0116c54 fix error; qna_router returns router_values
  • 9e5af87 fix error; give task_type to qna router
  • 573396b fix error; get_history
  • 47a0a8b add prompt
  • cabbf8e rm files and change history length
  • 31f05a2 update configs
  • 9975060 update configs
  • d5126af upgrade chat llm
  • 3d5c675 (fin) upgrade chat agent for 2.5.0
  • d9ae263 rm logs
  • 814c530 del Low in priority
  • 7536580 add detection case in visual agent schema
  • 472b70f change get output function
  • 53fd05a add lower to priority
  • bb98fd6 add lower to capture mode
  • 3b844a4 change output
  • aa3e3c6 update VA
  • d2c7bce update agent
  • 810ba76 fix bug
  • 8d967f6 change schemas
  • 658dbea add defence logic
  • 4395b58 change get_history
  • 8ed689a fix parsers
  • ad25013 fix error
  • 5f1f606 upgrade chat
  • aace1ce rm false positive feedback
  • 7d0feee update configs
  • 1079d55 change logs
  • 44924ed change camera
  • 2be4746 rm folders
  • bdc5782 rm vars
  • f2ff78a change settings
  • 596ebbc clean codes
  • 1790751 resolve conflict

v2.4.1 (Feb 01, 2026)

Highlights

  • Visual 그래프/노드 리팩토링: one_step/two_stepsingle_step/multi_step으로 재정렬하고 체인 빌더/메시지 빌더를 공통화했습니다.
  • Enrich 파이프라인 확장: pre_enrich/enrich_scenario 구조 정리, meta_core/priority/window 처리 강화, 번역 그래프 연계를 추가했습니다.
  • Chat 구조 고도화: BaseModel 상태 전환, build_chain 통일, history 관리, 방어 로직 강화가 대규모로 반영되었습니다.
  • Helm 배포 개선: model cache(PVC/S3) 및 ECR refresh 경로를 추가하고 서비스 구성 변경을 반영했습니다.

Breaking Changes

  • 그래프/노드 명칭 변경: visual graph 및 일부 노드 명칭 변경으로 내부 import/설정 경로를 재점검해야 합니다.
  • Enrich 설정 경로 변경: multi_scenariopre_enrich, single_scenarioenrich_scenario로 구조가 바뀌었습니다.

Features

  • Visual/Enrich 노드에서 입력 리스트/메시지 구성 유틸을 도입해 공통 처리 기반을 마련했습니다.
  • Translation graph/node를 추가해 enrich 흐름 내 번역 처리 경로를 명확히 분리했습니다.
  • Chat에서 방어 로직/메시지/프롬프트/스키마를 연속 개편했습니다.

Fixes

  • Visual feedback metadata의 Pydantic 검증 오류를 핫픽스로 수정했습니다.
  • Visual Agent 요청 이미지 타입을 보정하고, enrich/translation 경로의 타입/로깅 이슈를 다수 정리했습니다.

Config & Deployment

  • Helm chart에 model cache 관련 설정을 반영하고 chart 버전을 갱신했습니다.
  • Chat/Visual/Enrich/Translation 설정 파일을 v2.4.1/v2.5.0 기준으로 대규모 동기화했습니다.

Changelog (non-chore, 141 commits)

펼쳐보기
  • bf2be72 add utils.py and build_messages function within
  • 110d6de add build_messages function to two step and fix bug in build_messages function
  • 6142c38 add build_messages function to one step node
  • bf18573 add build_messages function to img_description node
  • ff655b2 add build_messages function to alert_message node
  • e80bc6f add get_input_list function in utils.py
  • 9077a91 add get_input_list function to one_step node
  • 74615f1 fix typo
  • 18786e3 add get_input_list function to two_step node
  • 366c967 add get_input_list and build_message function to two_step node(exception node)
  • c7f4119 rm get_input_list function
  • 9cebc30 rm get_input_list function
  • 2f7afec add build_visual_llm_runnable
  • 6ca40e5 apply build_visual_llm_runnable
  • c39f0ad change build_llm_runner to chain builder
  • 20692f6 refactor build vlm chain
  • 82a7805 refactor basic_graph.py and base graph
  • 28d253b refactor base.py
  • e9d1f4a refactor one_step, two_step graphs
  • 2dbd6d8 change the one-step graph;s name to single-step
  • 9ff5916 change the two-step graph's name to multi-step
  • 6c407c5 change result to plural
  • c1a3803 clean state
  • 0db9cae rm area state
  • d116b54 seperate multi step graph's node
  • 500b6c4 clean node level python files
  • 6425524 change exception to exception condition
  • 18f41dc change exception to exception condition
  • 93eaada rm print and refactor check user query
  • 23efe54 refactor image processor
  • 656e124 add english to the language condition
  • e1a9ee4 apply get_vlm_chain function to enrich agent's node
  • 0da0953 refactor enrich-agent
  • b5fc250 seperate kor/eng fewshot
  • 6a6d75a fix error
  • 5d89744 rm translation node and rm logs
  • 354e95c rm logs
  • 1ea5fc4 rm unused fields
  • ed0f7c4 rm unused module
  • 04c60e3 add required translation
  • 402fbe3 refactor get_output.py
  • 3b27e9c change the folder level of enrich agent
  • 446747f change the node config for enrich agent"
  • 4cfd8f2 change the path of the configs for enrich agent(multi_scenario to pre_enrich and single_scenario to enrich_scenario
  • b047a39 update version of the configs
  • 10bcc08 update config version to 2.4.1
  • c71d44d change metadata to meta_core for adding the meta_priority and duration
  • 53b7780 add priority node and apply to overall enrich pipeline
  • 0d28fd6 add int>string convertion logic for priority
  • 680a197 add temporal scope node and apply to overall enrich pipeline
  • 596b4d6 upgrade priority prompt and fewshot
  • e14dd2b upgrade enrich priority's fewshot / prompt
  • 79398df update temporal scope description
  • e3e9cd3 change temporal_scope to window
  • b4c5895 rm annotations
  • f3a29d3 change window logic
  • e6840bb change window logic
  • 900a59b change window to monitoring and add monitoring range
  • c1a43ab rm korean examples from monitoring schema
  • e3f7cab change output format
  • 0171d90 update config versions"
  • 799b871 update check user query logic
  • 476b556 upgrade config's version
  • 53c9bea rm logger.error
  • d9e15d5 PR Title feat(helm): eva-agent에 model cache PVC 도입 + Service를 ClusterIP로 전환 (Chart/App 2.4.0)
  • cd05124 update utils.py
  • 3a7a218 update image type for Visual Agent request
  • c1992e0 upgrade utils.py
  • c39ecf4 rm getattr in single_enricher.py
  • eaec6ac rm useless getattr in this branch
  • 37ca4bf change output type of route_by_translation function(in single enricher)
  • 29ac7e8 change required_translation field to boolen type
  • 8e278bf rm logger in multi_step graph
  • 147a04a add START node
  • f109434 change enricher's logger (dict->pydantic)
  • b09224d rm translator-related functions from base.py
  • e73ef2e change output type of build_graph
  • cb2faf8 add translation nodes/and graph
  • 2189664 rm getattr
  • fced1d2 rm none
  • 2b69797 clean logs
  • f5ad44f add assert and clean enrich agent
  • fbb922d add defend logic
  • ae56d1c change type of the fewshotexample's payload
  • 17195be add language option to build_vlm_chain
  • 79bd30f apply defense logic
  • efad507 assign response's type
  • 98eed36 rm importing the time module for every node
  • c994878 update get_output
  • 0574a2a add defense logic
  • 97871b8 change the type of the content
  • 888586d allow more ascii chars in translation utils
  • 894e933 rm image_b64 from build_vlm_chain';s output
  • a355e7d rm assert scneario_list
  • 208b265 change type of the vars
  • 0daf8e0 clean enrich state(sep fewhsgot state
  • 89bb455 update utils.py
  • 7dbd221 clean states
  • 196a721 rm logs
  • eb53946 rm list type from images
  • 335f14e add mode/priority to agent logic
  • bae1e17 add defense logic for priority
  • 4a3fcf6 change logic for mode/prioirty
  • 8bab795 change camera settings to detection settings
  • d659fcd change logic to detection settings
  • ca7b2e8 change mod_str->monitoring_str
  • 7b0783c change monitoring to capture
  • 3bd66fb add type for parser
  • 8bdd7da change build_vlm_chain to build_chain
  • e7e3398 change state type from dict to basemodel
  • 6a13c29 change typed dict state to basemodel state
  • 6e391d3 add defense logic ( task_type=state.task_type or None, )
  • dc68000 add defense logic
  • c22ef3d apply build_chain(to classify task type node
  • f647832 replace codelines to the build_chain functions
  • 6d13a88 add is_vlm var to build_chain
  • c155a6a rm unused modules
  • 56e6cc9 limit chat history
  • ba2cecf clean configs and add src for chat_history
  • 88231d6 change prompt
  • 2269815 error fixed
  • 3a05ad3 clean prompt
  • c4e9475 upgrade chat llm
  • 5014a52 upgrade chat
  • 1d1f6de upgrade chat agent
  • 9c43e96 upgrade chat
  • e972f6d upgrade chat
  • 884e3e1 upgrade configs
  • 385ec25 add eng descriptions
  • 66649a0 add annotations
  • 32b2cd7 add schemas
  • 59e82d2 refactor llm agent
  • 9ed6f57 add defense logic
  • d5363ca change debugger's port
  • 7d7acaf update messages
  • d7dd0b2 update messages
  • dd79a12 update messages
  • b926f35 add defense logic
  • 5aeba08 update configs
  • 56b764e feat(chart): add ECR refresh + S3 model cache
  • e45f304 fix: visual agent feedback's metadata pydantic model validation

운영 영향 chore (선별)

  • 3637012 모델 설정 보조 스크립트(model_config_util.sh) 추가
  • 3565456 deprecated Helm chart(ollama) 제거

v2.4.0 (Jan 21, 2026)

Highlights

  • 피드백-벡터 루프 강화: analysis_id 기반 피드백 upsert와 Visual 결과 연계 메타데이터 흐름을 추가했습니다.
  • RAG/Qdrant 검색 정교화: metadata filter 확장, 유사도 threshold 반영, Qdrant 연동 옵션을 강화했습니다.
  • API 부트스트랩 구조화: router 패키지화, DI 및 lifecycle 분리, graph registry bootstrap을 도입했습니다.
  • 언어/출력 품질 보정: visual/enrich/translation의 언어 처리 및 출력 스키마 정합성을 다수 개선했습니다.

Breaking Changes

  • Qdrant 환경 변수 전환: QDRANT_HOST/QDRANT_PORT가 제거되고 QDRANT_BASE_URL 중심으로 변경되었습니다.
  • 벡터스토어 팩토리 인자 정리: host/port 분리 인자 제거에 따라 초기화 코드를 점검해야 합니다.
  • 출력 필드 변화: detection scenario/case 관련 출력 구조가 점진적으로 보정되었습니다.

Features

  • analysis_id/image_id를 포함한 feedback payload 확장 및 analysis 단위 upsert를 지원합니다.
  • alert=True 결과의 자동 벡터 upsert를 추가해 후속 검색/보정 흐름을 강화했습니다.
  • KO/EN logit bias 레지스트리 및 Qwen3-VL-8B용 언어 편향 설정을 추가했습니다.
  • provider/model 카탈로그 조회 병렬화 및 기본 타임아웃 정비를 진행했습니다.

Fixes

  • provider 옵션 캐시 누수, dictionary unbound, camera context nullable 검증 실패를 수정했습니다.
  • enrich classifier 예외 처리, language 강제 처리, 번역 전처리(숫자 단어 포함) 등 다수 보정이 반영되었습니다.
  • Visual/Enrich 상태 및 스키마 정리로 불필요 필드/로그를 제거하고 안정성을 높였습니다.

Config & Deployment

  • docker build/compose 경로 및 런타임 env 분리를 정리하고, vLLM endpoint 분리를 반영했습니다.
  • .env.eva-agent.sample과 Qdrant 관련 환경변수 문서를 최신 구조에 맞춰 갱신했습니다.

Tests & Quality

  • 대규모 리팩토링 과정에서 포맷팅/타입 캐스팅 정리와 함께 테스트 구조 변경이 동반되었습니다.
  • 이 구간에는 단위 테스트 제거 커밋이 포함되어 있으므로 후속 테스트 보강이 필요합니다.

Upgrade Notes

  • 배포 구성에서 QDRANT_BASE_URL을 사용하도록 반드시 전환하십시오.
  • feedback/visual 연동 시 analysis_id 및 확장 메타 필드를 처리하도록 클라이언트를 갱신하십시오.
  • API bootstrap 구조 변경에 따라 앱 초기화/DI 의존 경로를 재확인하십시오.

Changelog (non-chore, 132 commits)

펼쳐보기
  • 7c56352 fix(providers): probe model catalog concurrently
  • de528a5 change the schema of the detection_results
  • 77e07eb fix sort_dictionary function
  • 9e0ef08 fix sort_dictionary function in validator
  • 0fd63bd fix bug; add cls var in sort_dictionary in validator function
  • 65254ce fix bug; update exceptions
  • 242752c add comments
  • 1c5ed86 rm print func
  • 87a969f change the func name (sort_dictionary to sort_list)
  • 1b9f369 Add grouping node
  • 0773ded Add grouping schema
  • 4cf20c1 add fewshot examples for multi-scenario grouping function
  • 068d600 add situation explaination to collapsed person fewshot example
  • f2ecf1a refact: apply LLM registry's llm call pattern for each nodes
  • f0aa8c4 Add: build-system to .toml
  • 0cc3c57 remove: deprecated visual-agent code
  • b7b777b Refactor: move /app/api to /src/eva_agent/api and resolve import path
  • 3b48a63 remove: deprecated chat-agent related code
  • 70b548b Refact: move /src/rag to /src/eva_agent/core/rag to follow src layout
  • 8b2d111 Refact: move langfuse related to /src/eva_agent/o11y/langfuse
  • 9f00230 Remove: unused app/provider (replaced by src/providers)
  • b88aeb5 Refact: move src/providers to src/eva_agent/core/providers to follow src layout
  • 48a58f9 remove: init from src(src is not module)
  • 8f3c0ce refact: move /app/core to corresponing name (graph / config) under eva_agent module's core
  • f55deef Refact: move app/node & app/schemas under src/eva_agent/nodes/ src/eva_agent/schemas
  • 89e39d2 Refact: move app/graph under src/eva_agent/graph
  • 5bd9e2d remove: main.py's path config (decouple import path dependency)
  • 274bdbf remove: deprecated app's module init.py
  • 50e1dc3 Refact: move src/agents/models.py to src/eva_agent/core/providers/models.py
  • 548883e Refact: move src/vision/schemas.py to schemas/common.py & feedback.py
  • 22c7f12 Remove: deprecated vision directory
  • 1afa147 Update: build stage (copy src code first for uv build)
  • c52b990 Update: exclude READMD.md from docker ignore (toml's readme section added)
  • af91b46 fix: type
  • 7ebafa6 add logs and prompt line for translation node
  • a733a2e change log level(info->debug)
  • 698f8ab change lang var flexible
  • 444b039 change lang var non-flexible
  • 8956f80 update translation prompt
  • bccae6f update translation logic
  • 83406ed Update: default kv-cache-dtype for vllm to auto not fp8
  • aadc86e Update: image tag for docker-image to 2.3-a3.1
  • d70fefb Update: bump patch version (hotfix for translation logic)
  • 7843db1 fix data type of area_num to int
  • d436177 update translation config
  • dfb944e update the config(max_tokens) of enrich-agent
  • 7550ca3 update the config(max_tokens) of enrich-agent(detection step)
  • 2f002a2 Refact: visual agent API typing
  • a756eda add optional to enrich schema
  • 55b4425 update visual agent(detection,exception) config
  • 0d3aabd feat(docker): make venv copy deterministic and scope compile step to app code
  • 2dd23aa update: image tag version bump (patch)
  • b7d7451 update: proejct package version bump to 2.3.2
  • e7fa623 refact: add "model_type" key in registry and yaml
  • 9824398 docs: create Exaone4.0 yaml files in chat agent
  • d9dccd7 update: fall-back to prompt and metadata part for configs
  • 1f69838 update: add new seperated vllm endpoint for vlm/llm respectively to dockker-compose.yml
  • 4de7e72 update: .env.eva-agent.sample to reflect env(runtime) split
  • a53d754 fix: raise timeout 5s(default) to 10s for langfuse client
  • c5c6793 update: add timeout(30s) to each provider's default llm invoke parameter
  • 814a8db remove: deprecated qdrant related env vars
  • 6d4025b Remove: QDRANT_HOST, QDRANT_PORT and replace them by QDRANT_BASE_URL
  • 4d4b72c Refact: stricter output validation for enrich agent output
  • 13631cc remove: host & port from vector store factory method (AsyncVectorStoreEngine)
  • 5dfefb8 refactor(api): split enrich agent into package + router module
  • f546af2 refactor(api): wire visual agent router via package export in main
  • 800eccf refactor(api): convert chat_agent v1 endpoint into package
  • 85530d9 refactor(api): convert feedback v1 endpoint into package
  • 9b90658 refactor(api): extract FastAPI app + lifecycle out of main
  • 0dc6bef refactor(api): centralize router/graph registries
  • 7001c89 Refactor GraphExecutor wiring to FastAPI DI (app.state + Depends)
  • 0555e5a Refactor: extract visual-agent RAG bootstrap into lifecycle service
  • 09f3842 Add graph bootstrap registry loader (register_graphs) and update lifecycle/docs
  • c5ecaef add scenario_case in ScenarioList Schema
  • e8af38b add scenario_case in function classyfiy steps
  • 9323b65 change detection scenario to case in function get_output
  • 7a8948b consider the situation when the case is None
  • 143e914 feat(rag): broaden Qdrant metadata filtering
  • 2be4c71 refactor(rag): widen metadata_filter signature to accept MetadataFilterSpec (keep dict)
  • 9968272 Apply similarity score threshold in Qdrant store (preserve retrieved points)
  • d9e9e9e add analysis id into analysisItem schema
  • c5d857a add analysis id into get_output function
  • c5aa82b feat(feedback): add analysis-scoped identifiers to visual feedback payload
  • ffdc927 feat(visual-agent): auto-upsert vectors for alert=True analysis items
  • 3aee412 fix(visual-agent): preserve analysis_id and use UUID type end-to-end
  • 5e434ed feat(feedback): upsert feedback by analysis_id and carry image_id in metadata
  • 3446d62 first commit
  • 6d3e4f5 fix: make camera_context allow None (validation fails)
  • 346f803 add: qwen3-vl-8b model logit_bias for KO/EN
  • f38c7b7 Add: logit_bias registry class
  • c60aaeb add language settings and multi-processing nodes
  • 8c3385b add language logic
  • 20b81de add logit bias to img description node
  • e351885 update translation agent and rm useless function
  • 19d69be update enrich agent(logic bias
  • 851eef5 update alert response
  • aca6df2 change print->logger.debug and rm useless debugs
  • ef505cc rm scenario list and detection results
  • d12f235 rm current step
  • a57581a rm non-used field in the visual agent's state
  • 73573a1 rm useless lines
  • 2bf101c rm logs
  • 111ca63 rm unnessesary code
  • 7e4f01f add description for the functions and rm unnessesary function in translator
  • 6393597 add docstring
  • 3753d22 add node config
  • 253ed34 change the location of the image description
  • 6293746 add description edge to basic graph
  • a1627d6 clean visual agent's state
  • 0fad732 allow numeric words for translator pre-check logic
  • 8f5a997 rm useless edge
  • fc2b633 re-name two-step graph's node
  • f36d0b5 update the description of the alert message schema
  • acda558 refact: language correction
  • cfa43f4 rm non-used configs
  • f152b1f rm logs
  • 475f552 modify lang setting for visual agent
  • 46e651a modify lang setting for enrich agent
  • 41f37a8 modify lang setting for visual agent(change upper to lower letter
  • 05a25a6 change the folder level of alert_message and img_description node
  • c3af090 change the graph nome for alert_message and image_description nodes
  • 61ee3a4 change llm_runnable for alert_message and image_description nodes
  • d694a77 change llm_runners for enrich agent
  • ab9adc8 fix dictionary unbound prob
  • 2435467 add logit for exaone
  • 13675fc fix(providers): ignore config options to prevent cached default leakage
  • a43d256 Docs: update REAMD.md to reflect latest version (v2.4.0)
  • 878c3ef docs: remove unnecessary sentences
  • eef0f0b add language force lines to the config filse
  • 0327e30 add language to the human message
  • e66d470 add try/except to the enrich classifier
  • 7ad7397 modify visual agent's prompt

운영 영향 chore (선별)

  • 870b36c Dockerfile uv 버전 pin
  • 1a54b1c unit test 제거(후속 보강 필요)

v2.3+a3.0 (Dec 26, 2025)

Highlights

  • LangGraph 기반 아키텍처로 대규모 리팩토링: 새로운 app/ 레이어(API/Core/Graph/Node/Provider/Schema) 도입, GraphRegistry/GraphExecutor 추가, 버전 해석 기능이 포함된 YAML ConfigLoader 구현.
  • Visual Agent v1 전면 개편: basic_graph에서 1단계 및 2단계 서브 그래프를 병렬로 실행하여 결과를 통합하며, 선택적으로 번역 및 이미지 설명 생성을 단일 엔드투엔드 파이프라인으로 실행하도록 개선.
  • 강력해진 Feedback ↔ RAG 루프: /api/v1/agents/feedback/record 추가, 벡터 저장소 헬퍼/의존성 주입(DI) 추출, Visual 쿼리 후 벡터 검색을 수행하여 과거 피드백을 기반으로 알림을 교정하는 기능 추가.
  • 설정 시스템 재설계: config/{agent}/{graph}/{node}/{model}/{version}.yaml 구조로 표준화하고, Qwen3-VL (FP8) 설정을 추가했으며 호환성을 위해 기존 별칭(qwen2.5-vl-32b-awq) 유지.
  • 패키징 및 배포 기본값 업데이트: docker-compose의 기본 모델을 Qwen3-VL-8B-Instruct-FP8으로 변경하고 vLLM 성능 플래그 추가; eva-agent 이미지 태그를 2.3-a3.0으로 업데이트.

Breaking Changes

  • API 스키마 및 페이로드 변경 (중요)

  • Visual 쿼리가 기존의 단일 vision.schemas.VisualQueryRequest/Response 흐름에서 app.schemas.visual_agent.VisualAgentRequest/Response로 이동 (scenario_list 기반, 통합 meta 모델 사용).

  • 피드백 기록 요청 스키마가 통합 meta를 중심으로 정렬되었으며, 엔드포인트가 /api/v1/agents/feedback/record로 노출됨.

  • 통합 meta 스키마가 app/schemas/common.py에서 Pydantic 모델로 강제 적용됨에 따라 클라이언트의 meta 페이로드 형식이 엄격하게 검증됨.

  • 설정 경로 및 파일 레이아웃 변경 (중요)

  • config/vlm/**, config/enrich_scenario/**, config/llm/prompts/conversational_agent_system_prompt.md와 같은 기존 설정 트리가 제거되거나 교체됨; 서버는 새로운 ConfigLoader 경로 규칙을 따름.

  • 환경 변수 정리

  • 더 이상 사용되지 않는 프로바이더/환경 변수(LLM_PROVIDER, LLM_MODEL, OLLAMA_BASE_URL 등)가 .env.eva-agent.sample에서 제거됨; 배포 시 업데이트된 샘플에 맞춰야 함.

  • 내부 모듈 경로 변경

  • src/messages/**src/vision/detection_scenario/**와 같은 기존 코드가 제거되고 새로운 app 레이어로 교체됨; 내부 임포트 경로가 크게 변경됨.

  • 인프라 엔드포인트 제거

  • 기존의 /infra/models 엔드포인트가 제거됨 (main.py 리팩토링).

Features

  • API 레이어

  • 라우터 모듈화 및 문서화: app/api/v1/{visual,chat,enrich,feedback}app/api/dependency.py를 통한 RAG 엔진 및 벡터 저장소 설정 매핑 의존성 주입.

  • 422 검증 예외 처리기 추가 및 health/healthz 엔드포인트 제공.

  • Visual Agent

  • 다중 시나리오 요청: scenario_list 입력 및 analysis_list를 통한 시나리오별 결과 반환.

  • 벡터 검색 기반 알림 교정: 피드백 기반 퓨샷(few-shot) 데이터를 검색하여 알림을 조정; Langfuse 스팬(span)에 임베딩/검색/교정 단계를 기록.

  • 번역 파이프라인: 알림이 발생하면 이미지 설명 생성과 병렬로 TranslatorGraph를 통해 후보군만 번역 수행.

  • Enrich Agent

  • Enrich 그래프를 비동기 노드로 리팩토링하고, 출력 스키마/필드를 강화하며 영역(area) 및 메타데이터를 더 일관되게 반영.

  • (실험적) 다중 시나리오 보강: 분류기/분해기 기반의 케이스 분리 기능 추가.

  • 프로바이더 및 모델 카탈로그

  • (내부) 프로바이더별 모델 목록 개선 및 카탈로그 유틸리티 통합.

  • 관측 가능성 (Observability)

  • Visual-Agent/Feedback/Chat-Agent를 위한 강력한 Langfuse 트레이싱: 계층적 스팬, 트레이스 메타데이터 업데이트, 시나리오 컨텍스트 전파.

  • 콘텐츠 인식 이미지 마스킹: base64/데이터 URL뿐만 아니라 알려진 이미지 바이트 시그니처로 디코딩되는 페이로드까지 스크러빙 처리.

  • 문서화

  • README_DEV.md 추가 및 App/Core/Graph/Node 각 레이어별 가이드 제공.

Fixes

  • Visual Agent 안정성 및 정확성

  • 2단계 인퍼런스 예외 상황, 정렬, 출력 스키마 문제 수정; 시나리오 순서 안정화.

  • None 영역 처리 및 언어 관련 문제 수정 (예: 영역 문자열에 영어 강제 적용).

  • 번역 로직(중복 생성/업데이트 버그) 및 출력 형식 수정.

  • Chat Agent UX 및 일관성

  • 지원되지 않는 요청 흐름 개선 및 시스템 답변에 작업 유형이 유출되는 문제 방지.

  • 감지 간격 단위/메시지 명확화, 오탐지 컷오프 범위 조정, 타겟 추출 및 검증 수정.

  • RAG/Qdrant

  • Qdrant URL/환경 변수 처리 및 관련 유틸리티(예: 베이스 URL 지원) 개선.

Config & Deployment

  • Docker Compose

  • vLLM 기본 모델을 Qwen3-VL (FP8)로 교체하고 KV 캐시 데이터 타입, 청크 단위 프리필(prefill), 프리픽스 캐싱 등 플래그 추가.

  • eva-agent 이미지 버전을 eva-agent:2.3-a3.0으로 업데이트.

  • Config

  • 새로운 경로 규칙에 따라 Visual/Chat/Enrich/Translation Agent를 위한 대규모 버전별 YAML 설정 추가.

Tests & Quality

  • Pre-commit 포맷팅 및 스타일 수정 적용 (black/isort, 공백 제거 등).

Upgrade Notes

  • API 클라이언트

  • Visual 쿼리/피드백/보강/채팅 페이로드가 이제 통합 meta 모델을 기반으로 함; app/schemas/*.py를 기준으로 클라이언트를 업데이트해야 함.

  • Visual 쿼리는 이제 analysis_list를 통해 시나리오별 결과를 반환함; 기존의 단일 시나리오 응답 파싱 로직 업데이트 필요.

  • Config

  • 기존 config/vlm/**config/enrich_scenario/** 설정을 새로운 규칙인 config/{agent}/{graph}/{node}/{model}/{version}.yaml로 마이그레이션 필요.

  • 환경 변수 및 Docker

  • 환경 변수를 .env.eva-agent.sample에 맞추고(지원 중단 변수 제거), docker-compose 기본 모델/옵션 변경에 따른 vLLM/Agent 설정 재검토 필요.

  • 로컬 실행(python main.py) 시 기본 포트는 8888임; 기존 포트나 헬스체크 설정을 확인해야 함.


v2.2+a2.0 (Oct 2, 2025)

Highlights

  • Visual, 시나리오 보강, 피드백 흐름 전반에 걸쳐 타입이 지정된 엔벨로프(envelope)와 Langfuse v3 관측 가능성을 적용한 Vision API v2 엔드투엔드 연결.
  • 기존 Ollama 지원과 더불어 새로운 OpenAI 프로바이더 및 팩토리 통합.
  • RAG 레이어 리팩토링: AsyncEmbeddingEngineAsyncVectorStoreEngine 도입; 기존 AsyncSearchEngine 제거; ensure_space() 및 네임드 벡터(named-vectors) 흐름 추가.
  • Conversation Agent를 클래스 기반 작업으로 전면 리팩토링하여 의도/카테고리 라우팅 및 UX 중심의 제안 기능 개선.
  • 감지 시나리오 보강 파이프라인 통합 및 "enrich_scenario"로 명칭 변경; 사전 등록 흐름 지원을 위해 camera_id 처리 완화.
  • 일관되고 재현 가능한 환경을 위해 VLM (Qwen2.5-VL:32B v2.2.0) 및 RAG Visual Agent (v2.2.0)를 위한 새로운 버전별 설정 추가.

Breaking Changes

  • Vision API 스키마

  • VisualQueryRequestvlm_model_name 필수 포함.

  • 퓨샷 템플릿이 이제 VLMScenarioAnalysis에서 파생됨; 필드 접근 방식 업데이트, feedback_contentfeedback_message로 변경됨.

  • ScenarioEnricher 결과가 래핑됨; VisualAgent는 타입이 지정된 엔벨로프(LanguageModelAgentResponse[T], ChainBuiltResult)를 반환함.

  • Feedback API v2: 요청 명칭 변경 및 확장 — camera_id 추가, feedbackfeedback_binary로 변경, 선택적 feedback_message 추가. main.py의 연결 구조 업데이트.

  • RAG/벡터 저장소

  • AsyncVectorStoreEngine 추가 및 AsyncSearchEngine 은퇴; 임베딩 프로토콜 분리 및 이름 변경.

  • 네임드 벡터 매핑 필수; 카메라별 공간을 위해 ensure_space() 호출 필요.

  • Conversation

  • IntentClassifier가 더 이상 RAG 컨텍스트를 가져오지 않음; 프롬프트 구성기 업데이트.

Features

  • 관측 가능성 (Observability)

  • Langfuse v3 클라이언트 통합; 요청별 트레이스 ID; ainvoke 후 기록되는 프롬프트 미리보기; 이미지 스크러빙 기능.

  • 프로바이더

  • 테스트가 포함된 OpenAI 프로바이더 구현; 프로바이더 및 모델 이름을 추출하는 유틸리티 추가.

  • Conversation 작업

  • 신규 작업: 알림 간격 설정 및 피드백 유사도 임계값 설정 추가.

  • 작업 응답에서 다음 행동 제안: 예) 모니터링 시작, 임계값 조정 등.

  • Vision 및 보강

  • 시나리오 보강 메시지 및 스키마를 vision/detection_scenario 아래로 통합; 새로운 보강 설정 추가.

  • Visual Agent 메시지 빌더 분리; 퓨샷 템플릿 누락에 대한 가드 로직 추가.

  • Configuration

  • VLM qwen2.5vl:32b v2.1.2 및 v2.2.0 추가; RAG 설정 visual_agent v2.2.0 추가; imagePullSecrets 및 환경 패키지 CLI를 포함한 Helm 개선.

Fixes

  • Conversation 라우팅 및 UX

  • AI 메시지에 대해서만 카테고리 감지 수행; 퀵 버튼 텍스트 정제; 밝기 전략 제거.

  • 타겟 설정 시 영어 타겟 강제 적용; 프롬프트 및 검증 세부 조정.

  • 알림 간격 기본값/단위 명확화; 최소값 및 변환 로직 테스트 포함.

  • Vision/보강 정확성

  • 감지 시나리오 언어를 쿼리와 일치시킴.

  • 렌더링된 프롬프트를 스팬 메타데이터에 보존하고 트레이스 업데이트 오류 수정.

  • 빌드 및 툴링

  • black 언어 버전 정리; pre-commit/스타일 수정.


v2.1+a1.2 (Sep 10, 2025)

이 버전은 RAG 시스템 강화, 관측 가능성 및 트레이싱 개선, 개발 및 배포 경험 간소화에 중점을 둔 중요한 진전입니다.

Key Features

  • 네임드 벡터 RAG 및 검색: RAG 시스템이 네임드 벡터를 지원하도록 업그레이드되었습니다. 이를 통해 이미지, 텍스트, 감지 시나리오 등 다양한 모달리티에 가중치를 둔 정교한 멀티모달 검색이 가능해져 더 정확한 결과를 제공합니다.

  • 피드백 인지 알림 교정: 사용자 피드백을 기반으로 알림을 지능적으로 교정하여 스스로 개선되는 피드백 루프를 구축했습니다.

  • LangFuse용 동적 Agent ID: 카메라 정보를 기반으로 동적 agent_id를 사용하여 트레이싱을 수행합니다. 이를 통해 다중 카메라 환경에서 요청 추적 및 디버깅이 훨씬 쉬워졌습니다.

  • 개발 및 배포 강화:

  • Docker 최적화: 빌드 속도 개선 및 로컬 개발을 위한 docker-compose 설정 개선.

  • 로컬 개발 스크립트: 핫 리로딩이 포함된 로컬 실행용 run_agent.sh 추가.

  • Ollama 모델 웜업: 컨테이너 시작 시 모델을 미리 로드하여 첫 요청 지연 시간 단축.

  • EKS 배포: Amazon EKS 배포를 위한 설정 작업 완료.

  • GENERAL_CONVERSATION 작업 제거: 지원되는 작업 목록에서 일반 대화 작업을 삭제했습니다.


v2.1+a1.1 (Aug 29, 2025)

Summary

RAG 임베딩 시스템과 Langfuse 트레이싱 통합 전반에 걸친 내부 시스템 최적화 및 정제를 통해 성능, 유지보수성, 일관성을 향상시켰습니다.

Key Changes

  • RAG 임베딩 시스템 강화: 이미지 임베딩 효율성 개선을 위해 비동기 임베딩 프로바이더 레지스트리 리팩토링.
  • Langfuse 트레이싱 통합 개선: 이미지 데이터 처리 로직을 외부화하여 모듈성을 높이고 오버헤드 감소.
  • 환경 변수 로딩 표준화: 프로젝트 전반에서 예측 가능한 환경 설정을 위해 로딩 방식 표준화.

v2.1.0 (Aug 26, 2025)

Added

  • SET_TARGET 작업 로컬라이제이션: 타겟 설정 응답에 대한 다국어 지원.
  • 타겟 관리 작업: 타겟의 추가, 삭제, 설정을 위한 종합 관리 기능 도입.
  • 중앙 집중식 Langfuse 트레이싱: 디버깅을 위한 중앙 트레이싱 시스템 통합.
  • 대화 이력 활용: 문맥 인지를 위해 대화 이력을 Agent 프롬프트에 포함.
  • 동적 LLM 프로바이더: 다양한 LLM 백엔드 간 쉬운 전환 및 관리 메커니즘 추가.
  • 신규 대화 작업: ANSWER_SYSTEM_QUESTION (시스템 질문 답변), HANDLE_UNSUPPORTED_REQUEST (지원되지 않는 요청 처리) 추가.
  • VLM 프롬프트 설정: v2.1.0 등 다양한 VLM 프롬프트 버전 추가 및 관리.

v2.0.0 (Aug 8, 2025)

대화형 및 Visual AI Agent인 EVA Agent의 첫 번째 공식 릴리즈입니다.

Added

  • Conversational Agent: 의도 분류 및 동적 프롬프트 구성 기능이 포함된 대화형 Agent 구현.
  • Visual Agent: 구성 가능한 VLM 백엔드를 활용한 이미지 분석용 Agent 도입.
  • RAG 파이프라인: 지식 베이스의 컨텍스트를 활용하여 사용자 쿼리를 보강하는 파이프라인 구축.
  • 벡터 저장소: FAISS 및 Qdrant 통합 지원.
  • FastAPI 애플리케이션: RESTful API를 통해 기능을 서빙하는 견고한 애플리케이션 개발.
  • Docker 기반 배포: Ollama, Qdrant 등 의존성을 포함한 멀티 서비스 환경 구축.