A helper package for openAi Agents, to support implementation to AnoSys platform easly
Project description
AnoSys Logger for OpenAI Agents - Python
Automatically capture and send OpenAI API calls (and more) to AnoSys for monitoring, analytics, and observability.
Features
- ✨ Automatic Instrumentation: Automatically captures traces from OpenAI API calls via OpenTelemetry.
- ✨ Manual Instrumentation: Easy-to-use decorator
@anosys_loggerfor logging any function (sync or async). - ✨ Raw Logging: Send custom JSON data directly to AnoSys for unstructured events.
- ✨ Async & Streaming Support: Fully supports Python's
asyncioand streaming response aggregation. - ✨ OpenTelemetry Standards: Follows LLM / Gen AI semantic conventions.
Installation
Install the package via pip:
pip install anosys-logger-4-openai-agents
Configuration
You need an AnoSys API Key to send data. Set it as an environment variable:
export ANOSYS_API_KEY="your_anosys_api_key"
Or create a .env file in your project root:
ANOSYS_API_KEY=your_anosys_api_key
Usage
1. Automatic Tracing (with OpenAI Agents)
To automatically capture traces from OpenAI agents, register the AnosysOpenAIAgentsLogger as a trace processor. This requires the traceai-openai-agents package.
import os
import contextvars
from agents import add_trace_processor
from AnosysLoggers import AnosysOpenAIAgentsLogger
# 1. Set API Keys
os.environ["OPENAI_API_KEY"] = "your_openai_key"
os.environ['ANOSYS_API_KEY'] = "your_anosys_key"
# 2. (Optional) Setup User Context
current_user_context = contextvars.ContextVar("current_user_context")
current_user_context.set({"session_id": "session_123", "user_id": "user_456"})
# 3. Register the Logger
add_trace_processor(AnosysOpenAIAgentsLogger(get_user_context=current_user_context.get))
# Now, any agent execution will be automatically logged to AnoSys.
2. Manual Logging (Decorator)
Use the @anosys_logger decorator to log inputs, outputs, and execution details of any function.
Synchronous Example
from AnosysLoggers import anosys_logger
@anosys_logger(source="my_sync_function")
def calculate_sum(a, b):
return a + b
# Calling the function will automatically log data to AnoSys
result = calculate_sum(5, 10)
Asynchronous Example
import asyncio
from AnosysLoggers import anosys_logger
@anosys_logger(source="my_async_function")
async def fetch_data(url):
await asyncio.sleep(1) # Simulate network delay
return {"data": "sample", "url": url}
# Run the async function
asyncio.run(fetch_data("https://example.com"))
Streaming (Async Generator) Example
@anosys_logger(source="my_streaming_function")
async def stream_data():
yield "part1"
yield "part2"
# The logger will capture and aggregate the streamed output
async for chunk in stream_data():
print(chunk)
3. Raw Logging
If you need to log unstructured data or custom events, use anosys_raw_logger.
from AnosysLoggers import anosys_raw_logger
data = {
"event": "user_signup",
"user_id": "12345",
"status": "success"
}
anosys_raw_logger(data)
What Data is Captured?
OpenTelemetry Semantic Conventions
Following the Gen AI standards:
gen_ai.system: "openai"gen_ai.request.model: Model requested (e.g., "gpt-4")gen_ai.usage.input_tokens: Prompt token countgen_ai.usage.output_tokens: Completion token countgen_ai.response.finish_reasons: Why the generation stopped
Additional Metadata
- Request/response messages (optional)
- Execution duration and timestamps
- Error types and full stack traces
- Custom source identifiers
Advanced Usage
Custom API URL or Proxy
If you need to point to a specific AnoSys instance:
from AnosysLoggers import setup_api
setup_api(path="https://custom.anosys.endpoint/api/log")
Troubleshooting
- Missing API Key: Ensure
ANOSYS_API_KEYis set in your environment. - Import Error: Ensure you installed
anosys-logger-4-openai-agents. - Async Errors: Ensure you are
await-ing async functions decorated with@anosys_logger.
License
MIT License. See LICENSE for details.
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 anosys_logger_4_openai_agents-0.0.72.tar.gz.
File metadata
- Download URL: anosys_logger_4_openai_agents-0.0.72.tar.gz
- Upload date:
- Size: 29.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2bb9869897a193281da1f40c39f78301dad0c686187b9f00de1d608e5a6a1124
|
|
| MD5 |
723086d2dd0db6acff2cef3e681db35b
|
|
| BLAKE2b-256 |
d7d2492603f76a2439a3c920d695af49f26ff571abc62aaa4e32e7d45bf2c492
|
Provenance
The following attestation bundles were made for anosys_logger_4_openai_agents-0.0.72.tar.gz:
Publisher:
python-publish.yml on moisisv/anosys-logger-4-openai-agents
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
anosys_logger_4_openai_agents-0.0.72.tar.gz -
Subject digest:
2bb9869897a193281da1f40c39f78301dad0c686187b9f00de1d608e5a6a1124 - Sigstore transparency entry: 779140885
- Sigstore integration time:
-
Permalink:
moisisv/anosys-logger-4-openai-agents@ffa173852907b8f45088bf17abe66dd4096710a9 -
Branch / Tag:
refs/tags/v0.0.72 - Owner: https://github.com/moisisv
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@ffa173852907b8f45088bf17abe66dd4096710a9 -
Trigger Event:
release
-
Statement type:
File details
Details for the file anosys_logger_4_openai_agents-0.0.72-py3-none-any.whl.
File metadata
- Download URL: anosys_logger_4_openai_agents-0.0.72-py3-none-any.whl
- Upload date:
- Size: 28.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d51ed84aa49e33ab993c3f0fe4da14d248a03ed4c5804c074c0d9a5f43539d97
|
|
| MD5 |
8057a88c58202e01808bdc15bfeb5b01
|
|
| BLAKE2b-256 |
12ffb6943737b79cf3e0e658a64c51873aaa47fee99116b21201520577f6ae4a
|
Provenance
The following attestation bundles were made for anosys_logger_4_openai_agents-0.0.72-py3-none-any.whl:
Publisher:
python-publish.yml on moisisv/anosys-logger-4-openai-agents
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
anosys_logger_4_openai_agents-0.0.72-py3-none-any.whl -
Subject digest:
d51ed84aa49e33ab993c3f0fe4da14d248a03ed4c5804c074c0d9a5f43539d97 - Sigstore transparency entry: 779140887
- Sigstore integration time:
-
Permalink:
moisisv/anosys-logger-4-openai-agents@ffa173852907b8f45088bf17abe66dd4096710a9 -
Branch / Tag:
refs/tags/v0.0.72 - Owner: https://github.com/moisisv
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@ffa173852907b8f45088bf17abe66dd4096710a9 -
Trigger Event:
release
-
Statement type: