mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2026-03-13 08:10:39 +08:00
* 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 commit7ed01ecb2d, reversing changes made to7e83cd7d74. * Reapply "Merge remote-tracking branch 'upstream/main' into feat/anthropic-agents-boilerplate" This reverts commit7714e3c544. * Update Python version in workflows and adjust dependencies in uv.lock. * Fix source URLs in uv.lock to ensure proper registry formatting.
176 lines
6.4 KiB
YAML
176 lines
6.4 KiB
YAML
name: "[Package] Release"
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
package:
|
|
type: choice
|
|
options:
|
|
- opentelemetry-propagator-aws-xray
|
|
- opentelemetry-resource-detector-azure
|
|
- opentelemetry-sdk-extension-aws
|
|
- opentelemetry-instrumentation-openai-v2
|
|
- opentelemetry-instrumentation-openai-agents-v2
|
|
- opentelemetry-instrumentation-vertexai
|
|
- opentelemetry-instrumentation-anthropic
|
|
- opentelemetry-instrumentation-claude-agent-sdk
|
|
- opentelemetry-instrumentation-google-genai
|
|
- opentelemetry-util-genai
|
|
description: 'Package to be released'
|
|
required: true
|
|
permissions:
|
|
contents: read
|
|
run-name: "[Package][${{ inputs.package }}] Release"
|
|
jobs:
|
|
release:
|
|
permissions:
|
|
contents: write # required for creating releases
|
|
pull-requests: write # required for creating pull requests
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- run: |
|
|
if [[ $GITHUB_REF_NAME != package-release/${{ inputs.package }}* ]]; then
|
|
echo this workflow should only be run against package-release/${{ inputs.package }}* branches
|
|
exit 1
|
|
fi
|
|
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set environment variables
|
|
run: |
|
|
version=$(./scripts/eachdist.py version --package ${{ inputs.package }})
|
|
if [[ $version =~ ^([0-9]+)\.([0-9]+)\.([0-9]+) ]]; then
|
|
major="${BASH_REMATCH[1]}"
|
|
minor="${BASH_REMATCH[2]}"
|
|
patch="${BASH_REMATCH[3]}"
|
|
if [[ $patch != 0 ]]; then
|
|
prior_version_when_patch="${major}.${minor}.$((patch - 1))"
|
|
fi
|
|
elif [[ $version =~ ^([0-9]+)\.([0-9]+)b([0-9]+)$ ]]; then
|
|
major="${BASH_REMATCH[1]}"
|
|
minor="${BASH_REMATCH[2]}"
|
|
patch="${BASH_REMATCH[3]}"
|
|
|
|
if [[ $patch != 0 ]]; then
|
|
prior_version_when_patch="${major}.${minor}b$((patch - 1))"
|
|
fi
|
|
else
|
|
echo "unexpected version: $version"
|
|
exit 1
|
|
fi
|
|
|
|
path=$(./scripts/eachdist.py find-package --package ${{ inputs.package }})
|
|
echo "CHANGELOG=./$path/CHANGELOG.md" >> $GITHUB_ENV
|
|
echo "PACKAGE_NAME=${{ inputs.package }}" >> $GITHUB_ENV
|
|
echo "VERSION=$version" >> $GITHUB_ENV
|
|
echo "RELEASE_TAG=${{ inputs.package }}==$version" >> $GITHUB_ENV
|
|
echo "PRIOR_VERSION_WHEN_PATCH=$prior_version_when_patch" >> $GITHUB_ENV
|
|
|
|
# check out main branch to verify there won't be problems with merging the change log
|
|
# at the end of this workflow
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: main
|
|
|
|
- name: Check that change log update was merged to main
|
|
run: |
|
|
if [[ -z $PRIOR_VERSION_WHEN_PATCH ]]; then
|
|
# not making a patch release
|
|
if ! grep --quiet "^## Version ${VERSION}" ${CHANGELOG}; then
|
|
echo the pull request generated by prepare-release-branch.yml needs to be merged first
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# back to the release branch
|
|
- uses: actions/checkout@v4
|
|
|
|
# next few steps publish to pypi
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.9'
|
|
|
|
- name: Build wheels
|
|
run: ./scripts/build_a_package.sh
|
|
|
|
- name: Install twine
|
|
run: |
|
|
pip install twine
|
|
|
|
# The step below publishes to testpypi in order to catch any issues
|
|
# with the package configuration that would cause a failure to upload
|
|
# to pypi. One example of such a failure is if a classifier is
|
|
# rejected by pypi (e.g "3 - Beta"). This would cause a failure during the
|
|
# middle of the package upload causing the action to fail, and certain packages
|
|
# might have already been updated, this would be bad.
|
|
# EDIT: 5/31/2024 - TestPypi now requires a verified email. Commenting out as a temporary measure
|
|
# until we found TestPypi credentials.
|
|
# - name: Publish to TestPyPI
|
|
# env:
|
|
# TWINE_USERNAME: '__token__'
|
|
# TWINE_PASSWORD: ${{ secrets.test_pypi_token }}
|
|
# run: |
|
|
# twine upload --repository testpypi --skip-existing --verbose dist/*
|
|
|
|
- name: Publish to PyPI
|
|
env:
|
|
TWINE_USERNAME: '__token__'
|
|
TWINE_PASSWORD: ${{ secrets.pypi_password }}
|
|
run: |
|
|
twine upload --skip-existing --verbose dist/*
|
|
|
|
- name: Generate release notes
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: ./scripts/generate_release_notes.sh
|
|
|
|
- name: Create GitHub release
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
gh release create --target $GITHUB_REF_NAME \
|
|
--title "${PACKAGE_NAME} ${VERSION}" \
|
|
--notes-file /tmp/release-notes.txt \
|
|
--discussion-category announcements \
|
|
$RELEASE_TAG
|
|
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: main
|
|
|
|
- name: Copy change log updates to main
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: ./scripts/merge_changelog_to_main.sh
|
|
|
|
- name: Use CLA approved github bot
|
|
run: .github/scripts/use-cla-approved-github-bot.sh
|
|
|
|
- uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
|
|
id: otelbot-token
|
|
with:
|
|
app-id: ${{ vars.OTELBOT_APP_ID }}
|
|
private-key: ${{ secrets.OTELBOT_PRIVATE_KEY }}
|
|
|
|
- name: Create pull request against main
|
|
env:
|
|
# not using secrets.GITHUB_TOKEN since pull requests from that token do not run workflows
|
|
GITHUB_TOKEN: ${{ steps.otelbot-token.outputs.token }}
|
|
run: |
|
|
message="Copy changelog updates from $GITHUB_REF_NAME"
|
|
body="Copy changelog updates from \`$GITHUB_REF_NAME\`."
|
|
branch="otelbot/changelog-${GITHUB_REF_NAME//\//-}"
|
|
|
|
if [[ -z $PRIOR_VERSION_WHEN_PATCH ]]; then
|
|
if git diff --quiet; then
|
|
echo there are no updates needed to the change log on main, not creating pull request
|
|
exit 0 # success
|
|
fi
|
|
fi
|
|
|
|
git commit -a -m "$message"
|
|
git push origin HEAD:$branch
|
|
gh pr create --title "$message" \
|
|
--body "$body" \
|
|
--head $branch \
|
|
--base main
|