接入不存在或已停用:多 Agent 协作、让模型分类的条件分支也钉住照实失败

这两种节点的执行器不自己接 ProviderNotConfigured,由编排层报成「执行出错:原因。去哪里改」,同样一次
模型调用都不发、事件里不出现 mock-fast。顺手把测试说明里的口语写法改掉。
This commit is contained in:
ThearchyHelios
2026-10-06 13:08:46 +08:00
parent cb3f20d6df
commit 0230dde9ea
2 changed files with 11 additions and 3 deletions
+10 -2
View File
@@ -166,6 +166,11 @@ NODES = {
"llm": lambda ref: node("ask", "llm", "提问", provider=ref, prompt="总结本周情况"),
"agent": lambda ref: node("ask", "agent", "查数作答", provider=ref, prompt="回答问题"),
"report": lambda ref: node("ask", "report", "写周报", provider=ref, instructions="写周报"),
# 下面两种的执行器不自己接这个错,由编排层按「执行出错:原因」报出,原因和提示一样都在
"supervisor": lambda ref: node("ask", "supervisor", "协作", provider=ref, goal="分析本周销售",
agents=[{"name": "分析师", "system": "你是销售分析师"}]),
"branch": lambda ref: node("ask", "branch", "分流", mode="llm", provider=ref,
cases=[{"key": "follow", "label": "需要跟进"}]),
}
@@ -173,8 +178,11 @@ NODES = {
@pytest.mark.parametrize("kind", list(NODES))
async def test_a_node_naming_a_broken_provider_fails_and_says_why(monkeypatch, kind, ref):
called = script(monkeypatch)
spec = chain(node("start", "input"), NODES[kind](ref),
node("out", "output", fields=[{"name": "结果", "value": "{{ last_message }}"}]))
out = node("out", "output", fields=[{"name": "结果", "value": "{{ last_message }}"}])
spec = chain(node("start", "input"), NODES[kind](ref), out)
if kind == "branch":
spec["edges"][1]["sourceHandle"] = "follow"
spec["edges"].append({"source": "ask", "target": "out", "sourceHandle": "default"})
run = await start(spec)
assert run.status == "failed"
assert REASONS[ref] in run.error and HINTS[ref] in run.error, run.error
+1 -1
View File
@@ -87,7 +87,7 @@ async def test_a_named_provider_that_does_not_exist_is_an_error_not_the_mock(ses
async def test_a_named_provider_is_missing_even_when_no_provider_exists_at_all(session):
"""一个接入都没有、却点了名:点名的那个照样不存在,不能因为「什么都没配」就退回演示模型。"""
"""一个接入都没有、却点了名:点名的那个仍然不存在,不能因为「什么都没配」就退回演示模型。"""
with pytest.raises(ProviderNotConfigured) as e:
await get_chat_model(session, ModelSpec(provider="已删除的接入"))
assert e.value.code == "missing" and "已删除的接入" in str(e.value)