技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
nvidia-video-search-and-summarization-vss-frag【数据与研究】Generate video summary reports using the VSS video_search_frag extension with Long Video Summarization (LVS), Enterprise RAG knowledge retrieval, and human-in-the-loop parameter collection. Use when: user wants to generate a video summary, report, or analysis using the frag pipeline.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Generate video summary reports using the VSS video_search_frag extension.
This skill adds Enterprise RAG (Milvus) knowledge retrieval and guided
human-in-the-loop (HITL) parameter collection on top of the base VSS agent.
Always run curl commands yourself; never instruct the user to run them.
The frag extension layers Enterprise RAG and HITL LVS tools on top of the base VSS agent image. Deployment is a two-step Docker build followed by compose up.
Environment variables: All commands use values from the
.envfile atdeployments/developer-workflow/dev-profile-lvs/.env. Edit it before deploying. Key variables:HOST_IP,VSS_AGENT_PORT(default8000),NGC_CLI_API_KEY,NVIDIA_API_KEY,ENTERPRISE_RAG_*.
nano deployments/developer-workflow/dev-profile-lvs/.env
Set at minimum:
HOST_IP — your machine's IP (hostname -I | awk '{print $1}')NGC_CLI_API_KEY — from https://ngc.nvidia.com/NVIDIA_API_KEY — from https://build.nvidia.com/VSS_AGENT_CONFIG_FILE=./configs/video_search_frag/config.ymlENTERPRISE_RAG_VDB_ENDPOINT — your Milvus endpoint (e.g., tcp://127.0.0.1:19530)ENTERPRISE_RAG_COLLECTION_NAMES — your Milvus collection nameecho "$NGC_CLI_API_KEY" | docker login nvcr.io --username '$oauthtoken' --password-stdin
cd agent
docker build -f docker/Dockerfile -t vss-agent-base .
docker compose \
-f app/video_search_frag/docker-compose.yml \
--env-file ../deployments/developer-workflow/dev-profile-lvs/.env \
build
This produces vss-agent-frag:latest — the base agent extended with
video_search_frag (Enterprise RAG, HITL LVS, PDF report generation).
docker compose \
-f app/video_search_frag/docker-compose.yml \
-f ../deployments/agents/agent_ui/compose.yml \
--env-file ../deployments/developer-workflow/dev-profile-lvs/.env \
--profile bp_developer_lvs_2d \
up -d
Two -f flags: the frag compose defines vss-agent, the UI compose defines
metropolis-vss-ui. They merge into a single deployment.
# Check containers are running
docker ps --format "table {{.Names}}\t{{.Status}}"
# Health check
curl -sf --max-time 5 "http://${HOST_IP}:${VSS_AGENT_PORT:-8000}/health" >/dev/null \
&& echo "VSS frag agent is running" \
|| echo "VSS frag agent is NOT reachable"
docker compose \
-f app/video_search_frag/docker-compose.yml \
-f ../deployments/agents/agent_ui/compose.yml \
--env-file ../deployments/developer-workflow/dev-profile-lvs/.env \
--profile bp_developer_lvs_2d \
down
Always down then rebuild and up — never just up -d alone after changes.
docker compose \
-f app/video_search_frag/docker-compose.yml \
--env-file ../deployments/developer-workflow/dev-profile-lvs/.env \
build
docker compose \
-f app/video_search_frag/docker-compose.yml \
-f ../deployments/agents/agent_ui/compose.yml \
--env-file ../deployments/developer-workflow/dev-profile-lvs/.env \
--profile bp_developer_lvs_2d \
down
docker compose \
-f app/video_search_frag/docker-compose.yml \
-f ../deployments/agents/agent_ui/compose.yml \
--env-file ../deployments/developer-workflow/dev-profile-lvs/.env \
--profile bp_developer_lvs_2d \
up -d
video-understanding skill)video-summarization skill)deploy skill)alerts skill)curl -sS -X POST "http://${HOST_IP}:${VSS_AGENT_PORT:-8000}/v1/chat" \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "What videos are available?"}]}' | \
python3 -c "import json,sys; d=json.load(sys.stdin); print(d['choices'][0]['message']['content'])"
Show the user the video list and ask which one they want to analyze.
Ask the user for these four inputs one at a time:
Send a POST to /v1/chat. This returns HTTP 202 with an execution_id and the first
HITL prompt. Replace VIDEO_NAME with the chosen video:
curl -sS -X POST "http://${HOST_IP}:${VSS_AGENT_PORT:-8000}/v1/chat" \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "Generate a report for VIDEO_NAME using long video summarization"}]}'
The response contains:
execution_id — save this, used in all subsequent requestsinteraction_id — identifies the current promptprompt.text — the HITL prompt textresponse_url — the URL to POST the response toFor each prompt, POST the user's parameter to the response_url. Replace EXECUTION_ID, INTERACTION_ID, and the text value:
curl -sS -X POST \
"http://${HOST_IP}:${VSS_AGENT_PORT:-8000}/executions/EXECUTION_ID/interactions/INTERACTION_ID/response" \
-H "Content-Type: application/json" \
-d '{"response": {"type": "text", "text": "USER_VALUE_HERE"}}'
Then poll for the next prompt:
curl -sS "http://${HOST_IP}:${VSS_AGENT_PORT:-8000}/executions/EXECUTION_ID" | python3 -m json.tool
The HITL prompts come in this order:
Repeat the POST-then-poll cycle for each prompt.
After the confirmation prompt, the system processes the video. This takes 3-5 minutes. Keep polling until the status changes from "running" to "completed":
curl -sS "http://${HOST_IP}:${VSS_AGENT_PORT:-8000}/executions/EXECUTION_ID" | python3 -m json.tool
Tell the user to wait — this takes 3-5 minutes. Poll every 30 seconds.
When status is "completed", the response contains the full report with:
Present the report content to the user in a readable format.
curl -sS "http://${HOST_IP}:${VSS_AGENT_PORT:-8000}/health"
For simple questions that do NOT involve report generation:
curl -sS -X POST "http://${HOST_IP}:${VSS_AGENT_PORT:-8000}/v1/chat" \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "YOUR_QUESTION_HERE"}]}' | \
python3 -c "import json,sys; d=json.load(sys.stdin); print(d['choices'][0]['message']['content'])"
{"response": {"type": "text", "text": "value"}}enable_interactive_extensions: true must be set in the frag config for HTTP HITL to workvideo-summarization, video-understanding, report, vios, deploy