* Add initial implementation of Anthropic Agents instrumentation
- Introduced `opentelemetry-instrumentation-anthropic-agents` package for tracing LLM requests using the Anthropic Python SDK.
- Added support for capturing request and response attributes in accordance with GenAI semantic conventions.
- Included examples for both manual and zero-code instrumentation.
- Created a CHANGELOG.md to document notable changes.
- Added LICENSE and README files for package details and usage instructions.
This commit lays the groundwork for enhanced observability in applications utilizing Anthropic's capabilities.
* Enhance instrumentation for Anthropic Agents
- Added support for the `opentelemetry-instrumentation-anthropic-agents` package, enabling tracing of requests made through the Claude Agent SDK.
- Updated `pyproject.toml` and `tox.ini` to include new test environments and dependencies for the Anthropic Agents instrumentation.
- Modified GitHub workflows to incorporate linting and testing for the new instrumentation.
- Improved documentation in README files and examples to reflect changes in usage and setup.
- Introduced new examples demonstrating both manual and zero-code instrumentation approaches.
This commit strengthens observability for applications utilizing Claude Agents, ensuring comprehensive tracing and logging capabilities.
* Remove outdated entries from CHANGELOG.md for Anthropic Agents instrumentation, streamlining the document to reflect current features and improvements.
* Update Anthropic Agents instrumentation to use Claude Agent SDK
- Changed dependency from `anthropic >= 0.16.0` to `claude-agent-sdk >= 0.1.14` in `README.md`, `pyproject.toml`, and related files.
- Refactored `AnthropicAgentsInstrumentor` to align with the new SDK, including updates to initialization and logging.
- Removed unused utility functions and cleaned up test configurations to reflect the new dependency.
- Updated tests to ensure compatibility with the Claude Agent SDK.
This commit enhances the instrumentation for applications using the Claude Agent SDK, ensuring accurate tracing and logging capabilities.
* Update Python version requirements and clean up workflows for Anthropic Agents instrumentation
- Updated `tox.ini` and `pyproject.toml` to require Python 3.10 or higher, removing support for Python 3.9.
- Cleaned up GitHub workflows by removing outdated test jobs for Python 3.9 and adding new jobs for Python 3.10.
- Updated `README.md` to reflect the new dependency on `claude-agent-sdk` and removed references to the old SDK.
- Made minor code cleanups in example scripts and test files to improve readability.
These changes ensure compatibility with the latest Python versions and streamline the testing process for the Anthropic Agents instrumentation.
* Add Anirudha as a component owner for Anthropic instrumentation.
* fixing precommit errors.
* Update version comment in `version.py` to indicate future stable release
* Refactor imports in `__init__.py` for Anthropic Agents instrumentation.
* regenerate uv.lock file.
* Update uv.lock to standardize package source URLs with trailing slashes
* Rename instrumentation for Anthropic Agents to Claude Agent SDK, updating references in configuration files, workflows, and documentation. Add new files for the Claude Agent SDK instrumentation, including README, examples, and changelog. Ensure proper setup for testing and linting in CI/CD workflows.
* Update release documentation and workflows to include new instrumentation for Anthropic and Claude Agent SDK.
* Add Mike Goldsmith as a component owner for Anthropic and Claude Agent SDK instrumentation
* Revert "Merge remote-tracking branch 'upstream/main' into feat/anthropic-agents-boilerplate"
This reverts commit 7ed01ecb2d, reversing
changes made to 7e83cd7d74.
* Reapply "Merge remote-tracking branch 'upstream/main' into feat/anthropic-agents-boilerplate"
This reverts commit 7714e3c544.
* Update Python version in workflows and adjust dependencies in uv.lock.
* Fix source URLs in uv.lock to ensure proper registry formatting.
* instrumentation: rename experimental to development in README
To match the current semantic conventions naming.
* Update generate_instrumentation_readme.py
* Update README.md
* Run generate
* Update the README too
* Begin instrumentation of GenAI SDK.
* Snapshot current state.
* Created minimal tests and got first test to pass.
* Added test for span attributes.
* Ensure that token counts work.
* Add more tests.
* Make it easy to turn off instrumentation for streaming and async to allow for rapid iteration.
* Add licenses and fill out main README.rst.
* Add a changelog file.
* Fill out 'requirements.txt' and 'README.rst' for the manual instrumentation example.
* Add missing exporter dependency for the manual instrumentation example.
* Fill out rest of the zero-code example.
* Add minimal tests for async, streaming cases.
* Update sync test to use indirection on top of 'client.models.generate_content' to simplify test reuse.
* Fix ruff check issues.
* Add subproject to top-level project build mechanism.
* Simplify invocation of pylint.
* Fix 'make test' command and lint issues.
* Add '.dev' suffix to version per feedback on pull request #3256
* Fix README.rst files for the examples.
* Add specific versions for the examples.
* Revamp 'make test' to not require local 'tox.ini' configuration.
* Extend separators per review comment.
Co-authored-by: Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com>
* Fix version conflict caused by non-hermetic requirements.
* Fix typo on the comment line.
* Add test for the use of the 'vertex_ai' system, and improve how this system is determined.
* Factor out testing logic to enable sharing with the async code.
* Addressed minor lint issues.
* Make it clearer that nonstreaming_base is a helper module that is not invoked directly.
* Integrate feedback from related pull request #3268.
* Update workflows with 'tox -e generate-workflows'.
* Improve data model and add some rudimentary type checking.
* Accept only 'true' for a true value to align with other code.
* Update the scope name used.
* Add **kwargs to patched methods to prevent future breakage due to the addition of future keyword arguments.
* Remove redundant list conversion in call to "sorted".
Co-authored-by: Aaron Abbott <aaronabbott@google.com>
* Reformat with 'tox -e ruff'.
* Fix failing lint workflow.
* Fix failing lint workflow.
* Exclude Google GenAI instrumentation from the bootstrap code for now.
* Minor improvements to the tooling shell files.
* Fix typo flagged by codespell spellchecker.
* Increase alignment with broader repo practices.
* Add more TODOs and documentation to clarify the intended work scope.
* Remove unneeded accessor from OTelWrapper.
* Add more comments to the tests.
* Reformat with ruff.
* Change 'desireable' to 'desirable' per codespell spellchecker.
* Make tests pass without pythonpath
* Fix new lint errors showing up after change
* Revert "Fix new lint errors showing up after change"
This reverts commit 567adc62a7.
pylint ignore instead
* Add TODO item required/requested from code review.
Co-authored-by: Aaron Abbott <aaronabbott@google.com>
* Simplify changelog per PR feedback.
* Remove square brackets from model name in span name per PR feedback.
* Misc test cleanup. Now that scripts are invoked solely through pytest via tox, remove main functions and hash bang lines.
* Improve quality of event logging.
* Update operation name to use a constant for consistency.
* Reformat with ruff.
* Exclude opentelemetry-instrumentation-google-genai from root uv workspace
Until https://github.com/open-telemetry/opentelemetry-python-contrib/issues/3300 is fixed.
---------
Co-authored-by: Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com>
Co-authored-by: Aaron Abbott <aaronabbott@google.com>
* scripts/generate_instrumentation_bootstrap: don't force genai instrumentations versions
Since genai instrumentations are released on their own we cannot have a
fixed required version on this side.
While at it add vertexai to the list of excluded packages since:
- it has not been released yet
- the name is already claimed by openllmetry
* Regenerate bootstrap_gen
* Please spellcheck
---------
Co-authored-by: Leighton Chen <lechen@microsoft.com>
* Refactor bootstrap generation
This makes the bootstrap script get the package version directly from
pypi instead of from our lists of packages. This makes sure that the
packages are actually available for the end user to install.
Fixes#2053
* Fix lint
* Fix lint
* Remove aiohttp
* Add missing dependency for aiohttp-client
* Use hatch version
* Fix black an isort
* change bootstrap_gen to use a list instead of dict
* Bunch of updates
* Fix build
* fix lint
* Fix docs
* Fix lint
* More fixes
* Fix lint
* fix stupid mistake
---------
Co-authored-by: Christian Hartung <christian.hartung@olist.com>
* Refactor code using pyupgrade for Python 3.6
This diff is the result of applying the following command to the
project:
```shell
find . -type f -name "*.py" -exec pyupgrade --py36-plus '{}' +
```
* Simplify yield from