Portable test suites for evaluating Agent orchestrations (GroupChatOrchestration, etc.) — EvalPort interop? #14322
Replies: 1 comment 1 reply
|
This is a legitimate gap in the agent ecosystem. Right now, most teams end up building ad-hoc harness scripts or tying themselves into proprietary eval platforms that assume a single prompt-response LLM rather than a multi-agent state machine. Having a portable, schema-driven spec like EvalPort for orchestrations would be very useful, especially when teams want to benchmark whether migrating a workflow from AutoGen/LangGraph to Semantic Kernel introduces regression. A couple of architectural observations from running multi-agent evals in production: 1. Terminal Output vs. Trajectory GradersFor simple single-turn tasks, In Semantic Kernel, you can extract the full message history from the orchestration result: # Extract the full conversation trajectory for multi-step grading
messages = await res.get_messages()
trajectory = [
{"role": m.role.value, "author": m.name, "content": m.content, "tool_calls": len(m.items)}
for m in messages
]If EvalPort's
2. Async Streaming / Cancellation SupportProduction agent runs can stall or exceed timeouts. When wrapping 3. Packaging StrategyKeeping it in a standalone external package (e.g. |
Uh oh!
There was an error while loading. Please reload this page.
Hi SK community,
Looking through
python/samples/getting_started_with_agents/multi_agent_orchestration/step3_group_chat.py, the orchestration pattern is clean: build aGroupChatOrchestrationfrom a list ofChatCompletionAgents and aRoundRobinGroupChatManager,runtime.start(),await group_chat_orchestration.invoke(task=..., runtime=runtime), thenawait orchestration_result.get()for the final value. That's a nice, uniform shape — any orchestration (group chat, sequential, or your other managers) takes a task string in and produces a result out.That uniformity made me wonder about testing it at scale: has anyone here wanted a portable way to define "given this task, the orchestration's output should satisfy X" test suites — the kind you'd want to run against an SK agent orchestration, and separately also run against a LangChain/AutoGen/raw-API pipeline doing the same job, to compare apples to apples?
I maintain EvalPort (https://github.com/adhabnr-ux/evalport), a small open spec (JSON Schemas under
spec/schemas/forTestSuite/TestCase/ResultSet/Grader, plus Python/TS SDKs) aimed at exactly that — not another eval runner, just a portable format so a test suite isn't locked to one framework's dataset shape.Rough sketch of what an adapter over
GroupChatOrchestrationcould look like:Given your CONTRIBUTING guidance that plugins/connectors are best hosted outside the SK repo, I'd build and host this as its own small package rather than proposing it land in
semantic_kernel/. Posting here first (per COMMUNITY.md) to check whether this is actually a gap for anyone, before spending time on it. Spec for reference: https://github.com/adhabnr-ux/evalport/blob/main/SPEC.mdNo pressure either way — genuinely just gauging interest.
All reactions