mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-10-25 01:45:23 +08:00
* test(tools): add deterministic lbctl regression job * test(tools): simulate persistent multi-group conversations * test(tools): add finite core smoke with terminal run and file oracles * test(tools): expand smoke coverage across execution stages * ci: add a timed real core smoke and lightweight tool checks * fix(ci): keep infrastructure failures visible in smoke verdicts
112 lines
5.9 KiB
JSON
112 lines
5.9 KiB
JSON
{
|
|
"version": 1,
|
|
"cli": {"executable": "lbctl", "config": "./lbctl.yaml"},
|
|
"vars": {
|
|
"plugin_dir": "/path/to/plugin-zips",
|
|
"mock_base_url": "http://127.0.0.1:18080/v1",
|
|
"embedding_base_url": "http://127.0.0.1:15410/v1",
|
|
"core_health": "http://127.0.0.1:5300/healthz"
|
|
},
|
|
"plugins": [
|
|
{"source": "local", "file": "${plugin_dir}/LocalAgent.zip"},
|
|
{"source": "local", "file": "${plugin_dir}/LangRAG.zip"},
|
|
{"source": "local", "file": "${plugin_dir}/GeneralParsers.zip"}
|
|
],
|
|
"resources": [
|
|
{"id": "mock_provider", "kind": "provider", "body": {
|
|
"name": "regression mock", "requester": "openai-chat-completions",
|
|
"base_url": "${mock_base_url}", "api_keys": ["test-only"]
|
|
}},
|
|
{"id": "embedding_provider", "kind": "provider", "body": {
|
|
"name": "regression embedding", "requester": "openai-chat-completions",
|
|
"base_url": "${embedding_base_url}", "api_keys": ["test-only"]
|
|
}},
|
|
{"id": "chat_model", "kind": "model", "type": "llm", "body": {
|
|
"name": "mock-chat", "provider_uuid": "${mock_provider}",
|
|
"abilities": ["func_call"], "context_length": 8192,
|
|
"extra_args": {"request_policy": {"retries": 0}}
|
|
}},
|
|
{"id": "box_model", "kind": "model", "type": "llm", "body": {
|
|
"name": "mock-box", "provider_uuid": "${mock_provider}",
|
|
"abilities": ["func_call"], "context_length": 8192,
|
|
"extra_args": {"request_policy": {"retries": 0}}
|
|
}},
|
|
{"id": "rag_model", "kind": "model", "type": "llm", "body": {
|
|
"name": "mock-rag", "provider_uuid": "${mock_provider}",
|
|
"abilities": ["func_call"], "context_length": 8192,
|
|
"extra_args": {"request_policy": {"retries": 0}}
|
|
}},
|
|
{"id": "embedding_model", "kind": "model", "type": "embedding", "body": {
|
|
"name": "all-MiniLM-L6-v2", "provider_uuid": "${embedding_provider}"
|
|
}},
|
|
{"id": "knowledge_base", "kind": "knowledge-base", "body": {
|
|
"name": "regression parser golden", "knowledge_engine_plugin_id": "langbot-team/LangRAG",
|
|
"creation_settings": {"embedding_model_uuid": "${embedding_model}", "index_type": "chunk", "chunk_size": 512, "overlap": 50},
|
|
"retrieval_settings": {"search_type": "vector", "top_k": 5, "query_rewrite": "off", "rerank": "off"}
|
|
}, "documents": [{
|
|
"file": "../../skills/skills/langbot-testing/fixtures/rag/parser-golden.html",
|
|
"parser_plugin_id": "langbot-team/GeneralParsers"
|
|
}]},
|
|
{"id": "chat_pipeline", "kind": "pipeline", "body": {
|
|
"name": "regression chat", "description": "Normal deterministic chat",
|
|
"config": {
|
|
"ai": {
|
|
"runner": {"id": "plugin:langbot-team/LocalAgent/default", "expire-time": 0},
|
|
"runner_config": {"plugin:langbot-team/LocalAgent/default": {
|
|
"model": {"primary": "${chat_model}", "fallbacks": []},
|
|
"prompt": [{"role": "system", "content": "You are a QA regression assistant."}],
|
|
"knowledge-bases": [], "box-enabled": false, "timeout": 30
|
|
}}
|
|
},
|
|
"safety": {"rate-limit": {"limitation": 10000}},
|
|
"output": {"force-delay": {"min": 0, "max": 0}}
|
|
}
|
|
}},
|
|
{"id": "box_pipeline", "kind": "pipeline", "body": {
|
|
"name": "regression Box", "description": "Real Box write and read",
|
|
"config": {
|
|
"ai": {
|
|
"runner": {"id": "plugin:langbot-team/LocalAgent/default", "expire-time": 0},
|
|
"runner_config": {"plugin:langbot-team/LocalAgent/default": {
|
|
"model": {"primary": "${box_model}", "fallbacks": []},
|
|
"prompt": [{"role": "system", "content": "You are a QA regression assistant."}],
|
|
"knowledge-bases": [], "box-enabled": true, "box-session-id-template": "{global}",
|
|
"timeout": 30, "max-tool-iterations": 5
|
|
}}
|
|
},
|
|
"safety": {"rate-limit": {"limitation": 10000}},
|
|
"output": {"force-delay": {"min": 0, "max": 0}}
|
|
}
|
|
}},
|
|
{"id": "rag_pipeline", "kind": "pipeline", "body": {
|
|
"name": "regression RAG", "description": "Retrieved model input oracle",
|
|
"config": {
|
|
"ai": {
|
|
"runner": {"id": "plugin:langbot-team/LocalAgent/default", "expire-time": 0},
|
|
"runner_config": {"plugin:langbot-team/LocalAgent/default": {
|
|
"model": {"primary": "${rag_model}", "fallbacks": []},
|
|
"prompt": [{"role": "system", "content": "You are a QA regression assistant."}],
|
|
"knowledge-bases": ["${knowledge_base}"], "box-enabled": false,
|
|
"timeout": 30, "retrieval-top-k": 5
|
|
}}
|
|
},
|
|
"safety": {"rate-limit": {"limitation": 10000}},
|
|
"output": {"force-delay": {"min": 0, "max": 0}}
|
|
}
|
|
}}
|
|
],
|
|
"cases": [
|
|
{"name": "chat", "weight": 2, "args": ["pipeline", "run", "${chat_pipeline}", "--message", "Run the normal QA scenario", "--timeout", "90s"], "expect": "LANGBOT_CHAT_OK"},
|
|
{"name": "box", "weight": 1, "args": ["pipeline", "run", "${box_pipeline}", "--message", "Run the normal QA scenario", "--timeout", "90s"], "expect": "LANGBOT_BOX_OK"},
|
|
{"name": "rag_chat", "weight": 1, "args": ["pipeline", "run", "${rag_pipeline}", "--message", "What is the documented parser-rag sentinel?", "--timeout", "90s"], "expect": "LANGBOT_RAG_OK"},
|
|
{"name": "rag_retrieve", "weight": 1, "args": ["knowledge-base", "retrieve", "${knowledge_base}"], "body": {"query": "What is the parser-rag golden sentinel and parser-engine pair?", "retrieval_settings": {"search_type": "vector", "top_k": 5}}, "expect": "aurora-parser-rag-9137"}
|
|
],
|
|
"phases": [{"name": "normal", "duration_seconds": 600, "rps": 2, "workers": 4, "cooldown_seconds": 30}],
|
|
"observe": {
|
|
"health": {"core": "${core_health}", "mock": "http://127.0.0.1:18080/healthz", "box": "http://127.0.0.1:5410/readyz"},
|
|
"pids": {}, "pid_files": {}, "containers": []
|
|
},
|
|
"cleanup": "on-success",
|
|
"thresholds": {"min_rps_ratio": 0.95, "max_p95_seconds": {"chat": 3, "box": 6, "rag_chat": 4, "rag_retrieve": 1}}
|
|
}
|