Python: feat: governance filter for function calls — deterministic policy evaluation, cost tracking, audit (TealTiger)
I maintainer di solito rispondono entro 2 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 32/100
Direzione di ricerca
Inizia dagli entry point Python IFunctionInvocationFilter e FunctionInvocationContext, insieme alla documentazione e alla pipeline dei filtri esistenti di Semantic Kernel. Chiarisci se il lavoro debba essere realizzato come esempio nel repository o come integrazione esterna, quindi definisci un primo ambito circoscritto e i criteri di accettazione per la valutazione delle policy, il monitoraggio dei costi, i record di audit e il circuit breaking dei provider.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Is your feature request related to a problem? Please describe.
Semantic Kernel's Filter system (IFunctionInvocationFilter, IAutoFunctionInvocationFilter) provides the right interception points for governance, but there's no built-in or community governance filter that:
- Evaluates deterministic policies before function/plugin execution
- Enforces per-agent cost budgets (block calls that would exceed daily/session limits)
- Tracks and attributes LLM cost per agent, per plugin, per session
- Produces structured audit records for compliance (EU AI Act Article 12)
- Provides per-provider circuit breaking to prevent cascading failures
Today you'd need to implement custom IFunctionInvocationFilter logic in every project, which doesn't scale.
Describe the solution you'd like
A governance filter that plugs into SK's existing filter pipeline:
Python:
from semantic_kernel import Kernel
from sk_tealtiger import TealTigerFilter
kernel = Kernel()
# Zero-config: observe all function calls, track cost, detect PII
kernel.add_filter("function_invocation", TealTigerFilter())
# With policies
from tealtiger import TealEngine
engine = TealEngine(policies=company_policies, mode="ENFORCE")
kernel.add_filter("function_invocation", TealTigerFilter(engine=engine))
C# (if community demand exists):
var kernel = Kernel.CreateBuilder()
.AddFilter<TealTigerGovernanceFilter>()
.Build();
The filter would:
- Intercept
FunctionInvocationContextbefore execution - Evaluate policy against the function name, arguments, and caller context
- Return ALLOW (proceed), DENY (throw), or REVISE (modify args)
- Track token cost after execution and check against budget limits
- Emit structured audit entries with correlation IDs
- Circuit-break on repeated provider failures
Describe alternatives you've considered
- Custom
IFunctionInvocationFilterper project — works but verbose, no reuse across projects - External proxy/sidecar — adds network latency, incompatible with offline/in-process constraint
- Azure Content Safety service — cloud-dependent, LLM-based (non-deterministic), doesn't handle cost/budget/tool-restriction
Additional context
- TealTiger — open-source AI agent security platform (Apache-2.0, NVIDIA Inception)
- Published on PyPI (
tealtigerv1.3.0) and npm (tealtiger-ai-sdkv0.1.0) - Covers 8/10 OWASP Agentic Security Index categories
- All governance is deterministic and in-process — no external service, <5ms overhead, works offline
- Already integrated with LangChain, Vercel AI SDK, CrewAI, and proposals open for LlamaIndex, AG2, Haystack, Pydantic AI, Mastra
- SK's existing Filter system (per blog post) is the natural integration point
- EU AI Act compliance angle: structured audit records with
retention_until, input/output traceability
References:
- https://github.com/agentguard-ai/tealtiger — TealTiger source (Apache-2.0)
- https://pypi.org/project/tealtiger/ — TealTiger on PyPI (v1.3.0)
- https://www.npmjs.com/package/tealtiger-ai-sdk — Vercel AI SDK middleware (v0.1.0)
- https://devblogs.microsoft.com/agent-framework/filters-in-semantic-kernel/ — SK Filters blog post
- https://owasp.org/www-project-top-10-for-large-language-model-applications/ — OWASP Agentic Security Index
Contribution plan: Happy to contribute a Python IFunctionInvocationFilter implementation as a community sample or standalone pip package. Would this be welcome as a sample in the repo or as an external community integration?
- Lingua principale
- C#
- Stelle
- 28.6k
- Fork
- 4.8k
- Merge medio
- 13h 24m
- PR unite (30g)
- 11
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di microsoft/semantic-kernel
-
python triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
microsoft/semantic-kernel#14491 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
python triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
microsoft/semantic-kernel#14490 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
Python: [Python] structured_outputs_transform reuses ChatHistory across calls (prompt pollution)Apertapython triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
microsoft/semantic-kernel#14483 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
.NET python triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
microsoft/semantic-kernel#14482 · 3 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
Python: [Python] as_agent_framework_tool drops parameter defaults (optionals become required)Apertapython triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
microsoft/semantic-kernel#14481 ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di microsoft/semantic-kernel
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
SubtitleEdit/subtitleedit#15462 ·
I maintainer di solito rispondono entro 1 giorno
-
:watch: Not Triaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
comp:instrumentation.aspnetcore
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
open-telemetry/opentelemetry-dotnet-contrib#5427 ·
I maintainer di solito rispondono entro 1 giorno
-
design-proposal
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
dotnet/aspnetcore#69592 ·
I maintainer di solito rispondono entro 1 giorno
-
Client Container Registry customer-reported needs-team-attention question Service Attention
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
Azure/azure-sdk-for-net#63470 · 3 commenti · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno