From 0230dde9ea74567db759b59445b6caa0011cdec4 Mon Sep 17 00:00:00 2001 From: ThearchyHelios Date: Tue, 6 Oct 2026 13:08:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=85=A5=E4=B8=8D=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E6=88=96=E5=B7=B2=E5=81=9C=E7=94=A8=EF=BC=9A=E5=A4=9A=20Agent?= =?UTF-8?q?=20=E5=8D=8F=E4=BD=9C=E3=80=81=E8=AE=A9=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E7=9A=84=E6=9D=A1=E4=BB=B6=E5=88=86=E6=94=AF?= =?UTF-8?q?=E4=B9=9F=E9=92=89=E4=BD=8F=E7=85=A7=E5=AE=9E=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 这两种节点的执行器不自己接 ProviderNotConfigured,由编排层报成「执行出错:原因。去哪里改」,同样一次 模型调用都不发、事件里不出现 mock-fast。顺手把测试说明里的口语写法改掉。 --- backend/tests/test_provider_ref_runtime.py | 12 ++++++++++-- backend/tests/test_provider_resolution.py | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/backend/tests/test_provider_ref_runtime.py b/backend/tests/test_provider_ref_runtime.py index 8ee6ed9f..21558365 100644 --- a/backend/tests/test_provider_ref_runtime.py +++ b/backend/tests/test_provider_ref_runtime.py @@ -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 diff --git a/backend/tests/test_provider_resolution.py b/backend/tests/test_provider_resolution.py index 3a02ee0d..9e933bee 100644 --- a/backend/tests/test_provider_resolution.py +++ b/backend/tests/test_provider_resolution.py @@ -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)