No project description provided
Project description
agentic-layer-sdk-msaf
Microsoft Agent Framework adapter for the Agentic Layer SDK.
This package provides utilities to convert a Microsoft Agent Framework agent into an instrumented A2A Starlette web application.
Usage
import os
from agent_framework import Agent
from agent_framework_openai import OpenAIChatCompletionClient
from agenticlayer.msaf import create_metrics_middleware
from agenticlayer.msaf.agent_to_a2a import to_a2a
agent = Agent(
client=OpenAIChatCompletionClient(
model=os.environ.get("AGENT_MODEL", "gemini-2.5-flash"),
base_url=os.environ.get("LITELLM_PROXY_API_BASE"),
api_key=os.environ.get("LITELLM_PROXY_API_KEY"),
),
name="MyAgent",
instructions="You are a helpful assistant.",
middleware=create_metrics_middleware(),
)
app = to_a2a(agent, name="MyAgent", rpc_url="http://localhost:8000/")
# Then run with: uvicorn module:app
Configuration
Observability
OpenTelemetry setup
Call setup_otel() before creating agents to configure OTLP exporters and enable instrumentation:
from agenticlayer.msaf.otel import setup_otel
setup_otel()
This reads standard OTEL_EXPORTER_OTLP_ENDPOINT / OTEL_EXPORTER_OTLP_PROTOCOL environment
variables, sets up trace/log/metric providers, and enables the built-in Agent Framework telemetry
layers.
Metrics
The SDK emits the following OpenTelemetry metrics:
Built-in (provided by Agent Framework telemetry layers, enabled by setup_otel()):
| Metric | Type | Description |
|---|---|---|
gen_ai.client.token.usage |
Histogram | Input and output token counts per LLM call |
gen_ai.client.operation.duration |
Histogram | Duration of LLM / agent operations |
Custom (provided by create_metrics_middleware(), must be added to the agent):
| Metric | Type | Description |
|---|---|---|
agent.invocations |
Counter | Number of agent invocations |
agent.llm.calls |
Counter | Number of LLM calls |
agent.tool.calls |
Counter | Number of tool calls |
agent.errors |
Counter | Number of errors (with error_source attribute) |
Add the metrics middleware to your agent:
import os
from agent_framework import Agent
from agent_framework_openai import OpenAIChatCompletionClient
from agenticlayer.msaf import create_metrics_middleware
agent = Agent(
client=OpenAIChatCompletionClient(
model=os.environ.get("AGENT_MODEL", "gemini-2.5-flash"),
base_url=os.environ.get("LITELLM_PROXY_API_BASE"),
api_key=os.environ.get("LITELLM_PROXY_API_KEY"),
),
instructions="You are a helpful assistant.",
middleware=create_metrics_middleware(),
)
If you already have other middleware, combine them:
import os
from agent_framework import Agent
from agent_framework_openai import OpenAIChatCompletionClient
agent = Agent(
client=OpenAIChatCompletionClient(
model=os.environ.get("AGENT_MODEL", "gemini-2.5-flash"),
base_url=os.environ.get("LITELLM_PROXY_API_BASE"),
api_key=os.environ.get("LITELLM_PROXY_API_KEY"),
),
instructions="You are a helpful assistant.",
middleware=[MyCustomMiddleware(), *create_metrics_middleware()],
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentic_layer_sdk_msaf-0.17.0.tar.gz.
File metadata
- Download URL: agentic_layer_sdk_msaf-0.17.0.tar.gz
- Upload date:
- Size: 87.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f19a0065be6e38a2244b3aabad3a20c8bd6824fbe42008b6858f1ffe660fb815
|
|
| MD5 |
e134eb004186b102c958313372b7a357
|
|
| BLAKE2b-256 |
32534d591ca6e85141202fc2a0cc21871a60715191b49ec88a3317fb6a990e25
|
Provenance
The following attestation bundles were made for agentic_layer_sdk_msaf-0.17.0.tar.gz:
Publisher:
publish.yml on agentic-layer/sdk-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentic_layer_sdk_msaf-0.17.0.tar.gz -
Subject digest:
f19a0065be6e38a2244b3aabad3a20c8bd6824fbe42008b6858f1ffe660fb815 - Sigstore transparency entry: 1439865377
- Sigstore integration time:
-
Permalink:
agentic-layer/sdk-python@c16123f165ca749d31943ebab29dbc4b1596f7cc -
Branch / Tag:
refs/tags/v0.17.0 - Owner: https://github.com/agentic-layer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c16123f165ca749d31943ebab29dbc4b1596f7cc -
Trigger Event:
push
-
Statement type:
File details
Details for the file agentic_layer_sdk_msaf-0.17.0-py3-none-any.whl.
File metadata
- Download URL: agentic_layer_sdk_msaf-0.17.0-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13c0bf84675ec2074bc2ecddc2036bea00586f3323727dbdc8cea8275cb15208
|
|
| MD5 |
1bc6c7913eac7632ada54591e0c063ea
|
|
| BLAKE2b-256 |
c1872e8ad27c197740a917d832e96a53ca5867ec6f977fcc01e32444f4764582
|
Provenance
The following attestation bundles were made for agentic_layer_sdk_msaf-0.17.0-py3-none-any.whl:
Publisher:
publish.yml on agentic-layer/sdk-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentic_layer_sdk_msaf-0.17.0-py3-none-any.whl -
Subject digest:
13c0bf84675ec2074bc2ecddc2036bea00586f3323727dbdc8cea8275cb15208 - Sigstore transparency entry: 1439865387
- Sigstore integration time:
-
Permalink:
agentic-layer/sdk-python@c16123f165ca749d31943ebab29dbc4b1596f7cc -
Branch / Tag:
refs/tags/v0.17.0 - Owner: https://github.com/agentic-layer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c16123f165ca749d31943ebab29dbc4b1596f7cc -
Trigger Event:
push
-
Statement type: