Python: feat: governance filter for function calls — deterministic policy evaluation, cost tracking, audit (TealTiger)
Los mantenedores suelen responder en 4 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 32/100
Línea de trabajo
Comienza con los puntos de entrada de Python IFunctionInvocationFilter y FunctionInvocationContext, junto con la documentación y el pipeline de filtros existentes de Semantic Kernel. Aclara si el trabajo debe realizarse como un ejemplo del repositorio o como una integración externa y, a continuación, define un primer alcance acotado y criterios de aceptación para la evaluación de políticas, el seguimiento de costes, los registros de auditoría y el circuit breaking de proveedores.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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?
- Lenguaje dominante
- C#
- Estrellas
- 28.6k
- Forks
- 4.8k
- Merge medio
- 1 d 3 h
- PR fusionados (30 d)
- 16
Preparar el entorno
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de microsoft/semantic-kernel
-
python triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
microsoft/semantic-kernel#14512 · 1 comentario ·
Los mantenedores suelen responder en 4 días
-
.NET python triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
microsoft/semantic-kernel#14511 ·
Los mantenedores suelen responder en 4 días
-
python triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
microsoft/semantic-kernel#14491 · 1 comentario ·
Los mantenedores suelen responder en 4 días
-
python triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
microsoft/semantic-kernel#14490 · 1 comentario ·
Los mantenedores suelen responder en 4 días
-
Python: [Python] structured_outputs_transform reuses ChatHistory across calls (prompt pollution)Abiertopython triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
microsoft/semantic-kernel#14483 · 2 comentarios ·
Los mantenedores suelen responder en 4 días
Todos los issues de microsoft/semantic-kernel
Issues similares
-
Money ExploitsAbiertoS: Untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
project-wayfarer/wayfarer-14#1628 ·
Los mantenedores suelen responder en 3 días
-
:watch: Not Triaged dotnet-target-version
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día
-
copilot documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 2 días
-
untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
dotnet/dotnet-api-docs#13124 ·
Los mantenedores suelen responder en 1 día
-
agentic-workflows
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día