anthropic 1.78.0 → 1.79.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +35 -0
- data/LICENSE +8 -0
- data/README.md +42 -1
- data/lib/anthropic/client.rb +32 -0
- data/lib/anthropic/helpers/aws/client.rb +12 -2
- data/lib/anthropic/helpers/aws_auth.rb +8 -1
- data/lib/anthropic/helpers/bedrock/client.rb +19 -2
- data/lib/anthropic/helpers/bedrock/mantle_client.rb +19 -2
- data/lib/anthropic/helpers/google_cloud/client.rb +12 -2
- data/lib/anthropic/helpers/streaming/message_stream.rb +20 -43
- data/lib/anthropic/helpers/tools/runner.rb +104 -11
- data/lib/anthropic/helpers/tracing/attributes.rb +34 -0
- data/lib/anthropic/helpers/tracing/config.rb +16 -0
- data/lib/anthropic/helpers/tracing/content.rb +346 -0
- data/lib/anthropic/helpers/tracing/recorders.rb +131 -0
- data/lib/anthropic/helpers/tracing/response.rb +29 -0
- data/lib/anthropic/helpers/tracing/streamed_message.rb +189 -0
- data/lib/anthropic/helpers/tracing/tool_spans.rb +138 -0
- data/lib/anthropic/helpers/tracing.rb +13 -0
- data/lib/anthropic/helpers/vertex/client.rb +19 -2
- data/lib/anthropic/internal/tracing.rb +1118 -0
- data/lib/anthropic/internal/transport/base_client.rb +174 -10
- data/lib/anthropic/internal/transport/pooled_net_requester.rb +6 -0
- data/lib/anthropic/models/anthropic_beta.rb +3 -0
- data/lib/anthropic/models/beta/agent_create_params.rb +17 -6
- data/lib/anthropic/models/beta/agent_update_params.rb +17 -6
- data/lib/anthropic/models/beta/beta_dream_input.rb +2 -2
- data/lib/anthropic/models/beta/beta_fallbacks_param.rb +6 -2
- data/lib/anthropic/models/beta/beta_managed_agents_agent.rb +15 -6
- data/lib/anthropic/models/beta/beta_managed_agents_agent_tool_config_params.rb +8 -8
- data/lib/anthropic/models/beta/beta_managed_agents_agent_toolset_default_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_agent_toolset_default_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_agent_with_overrides_params.rb +6 -6
- data/lib/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity.rb +29 -0
- data/lib/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity_params.rb +34 -0
- data/lib/anthropic/models/beta/beta_managed_agents_bash_tool_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_bash_tool_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_deployment_initial_event.rb +3 -3
- data/lib/anthropic/models/beta/beta_managed_agents_deployment_initial_event_params.rb +3 -3
- data/lib/anthropic/models/beta/beta_managed_agents_deployment_paused_reason.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_deployment_paused_reason_error.rb +38 -14
- data/lib/anthropic/models/beta/beta_managed_agents_deployment_run.rb +16 -16
- data/lib/anthropic/models/beta/beta_managed_agents_deployment_user_define_outcome_event.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_deployment_user_message_event.rb +4 -4
- data/lib/anthropic/models/beta/beta_managed_agents_edit_tool_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_edit_tool_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_execution_identity.rb +57 -0
- data/lib/anthropic/models/beta/beta_managed_agents_execution_identity_params.rb +62 -0
- data/lib/anthropic/models/beta/beta_managed_agents_github_repository_resource_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_github_repository_resource_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_glob_tool_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_glob_tool_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_grep_tool_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_grep_tool_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_mcp_tool_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_mcp_tool_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_mcp_toolset_default_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_mcp_toolset_default_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_model.rb +0 -2
- data/lib/anthropic/models/beta/beta_managed_agents_model_config.rb +5 -5
- data/lib/anthropic/models/beta/beta_managed_agents_multiagent.rb +1 -1
- data/lib/anthropic/models/beta/beta_managed_agents_multiagent_coordinator.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_multiagent_params.rb +1 -1
- data/lib/anthropic/models/beta/beta_managed_agents_read_tool_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_read_tool_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_service_account_execution_identity.rb +21 -0
- data/lib/anthropic/models/beta/beta_managed_agents_service_account_execution_identity_params.rb +23 -0
- data/lib/anthropic/models/beta/beta_managed_agents_session_agent.rb +16 -6
- data/lib/anthropic/models/beta/beta_managed_agents_session_agent_update.rb +3 -3
- data/lib/anthropic/models/beta/beta_managed_agents_session_multiagent.rb +1 -1
- data/lib/anthropic/models/beta/beta_managed_agents_session_multiagent_coordinator.rb +8 -2
- data/lib/anthropic/models/beta/beta_managed_agents_session_resource_config.rb +3 -3
- data/lib/anthropic/models/beta/beta_managed_agents_session_thread_agent.rb +19 -6
- data/lib/anthropic/models/beta/beta_managed_agents_skill_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_start_event_preview.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_trigger_context.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_user_tool_result_event.rb +4 -4
- data/lib/anthropic/models/beta/beta_managed_agents_web_fetch_tool_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_web_fetch_tool_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_web_search_tool_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_web_search_tool_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_write_tool_config.rb +2 -2
- data/lib/anthropic/models/beta/beta_managed_agents_write_tool_config_params.rb +2 -2
- data/lib/anthropic/models/beta/beta_message_delta_usage.rb +0 -1
- data/lib/anthropic/models/beta/beta_output_behavior.rb +2 -2
- data/lib/anthropic/models/beta/beta_thinking_config_adaptive.rb +6 -4
- data/lib/anthropic/models/beta/beta_thinking_config_enabled.rb +6 -4
- data/lib/anthropic/models/beta/beta_thinking_config_param.rb +8 -7
- data/lib/anthropic/models/beta/beta_usage.rb +0 -1
- data/lib/anthropic/models/beta/deployment_create_params.rb +3 -3
- data/lib/anthropic/models/beta/deployment_update_params.rb +3 -3
- data/lib/anthropic/models/beta/memory_stores/beta_managed_agents_actor.rb +3 -3
- data/lib/anthropic/models/beta/memory_stores/beta_managed_agents_error.rb +6 -3
- data/lib/anthropic/models/beta/memory_stores/beta_managed_agents_memory_list_item.rb +2 -2
- data/lib/anthropic/models/beta/message_count_tokens_params.rb +15 -10
- data/lib/anthropic/models/beta/message_create_params.rb +21 -12
- data/lib/anthropic/models/beta/messages/batch_create_params.rb +21 -12
- data/lib/anthropic/models/beta/organization/beta_analytics_cost_bucketed_result.rb +3 -3
- data/lib/anthropic/models/beta/organization/beta_analytics_cost_users_item.rb +3 -3
- data/lib/anthropic/models/beta/organization/beta_analytics_usage_bucketed_result.rb +3 -3
- data/lib/anthropic/models/beta/organization/beta_analytics_usage_users_item.rb +3 -3
- data/lib/anthropic/models/beta/organization/beta_deleted_telemetry_destination.rb +30 -0
- data/lib/anthropic/models/beta/organization/beta_spend_limit.rb +2 -2
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination.rb +118 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_content_mode.rb +29 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_delivery_health.rb +69 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason.rb +73 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_caller.rb +21 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_invalid_address.rb +29 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_redirect.rb +23 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_sustained_failure.rb +25 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state.rb +71 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled.rb +36 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled_params.rb +24 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled.rb +21 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled_params.rb +23 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_state_params.rb +61 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_test_failure.rb +37 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_test_response.rb +35 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_test_result.rb +61 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_test_success.rb +21 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_traces.rb +61 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_traces_params.rb +71 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces.rb +69 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all.rb +23 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all_params.rb +23 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude.rb +22 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude_params.rb +49 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include.rb +21 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include_params.rb +49 -0
- data/lib/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_params.rb +70 -0
- data/lib/anthropic/models/beta/organization/invite_create_params.rb +4 -2
- data/lib/anthropic/models/beta/organization/spend_limit_list_params.rb +2 -5
- data/lib/anthropic/models/beta/organization/telemetry_destination_create_params.rb +93 -0
- data/lib/anthropic/models/beta/organization/telemetry_destination_delete_params.rb +34 -0
- data/lib/anthropic/models/beta/organization/telemetry_destination_list_params.rb +62 -0
- data/lib/anthropic/models/beta/organization/telemetry_destination_retrieve_params.rb +34 -0
- data/lib/anthropic/models/beta/organization/telemetry_destination_test_params.rb +34 -0
- data/lib/anthropic/models/beta/organization/telemetry_destination_update_params.rb +120 -0
- data/lib/anthropic/models/beta/organization/telemetry_destinations/beta_deleted_telemetry_destination_workspace.rb +40 -0
- data/lib/anthropic/models/beta/organization/telemetry_destinations/beta_telemetry_destination_workspace.rb +52 -0
- data/lib/anthropic/models/beta/organization/telemetry_destinations/workspace_add_params.rb +44 -0
- data/lib/anthropic/models/beta/organization/telemetry_destinations/workspace_list_params.rb +57 -0
- data/lib/anthropic/models/beta/organization/telemetry_destinations/workspace_remove_params.rb +44 -0
- data/lib/anthropic/models/beta/organization/user_update_params.rb +4 -2
- data/lib/anthropic/models/beta/session_create_params.rb +5 -5
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_custom_tool_use_event.rb +3 -1
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_mcp_tool_result_event.rb +4 -4
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_message_event.rb +2 -2
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_thread_message_received_event.rb +4 -4
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_thread_message_sent_event.rb +4 -4
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_agent_tool_result_event.rb +4 -4
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_billing_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_credential_host_unreachable_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_document_block.rb +4 -4
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_event_params.rb +14 -8
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_github_repository_resource.rb +2 -2
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_image_block.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_inline_agent.rb +14 -6
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_mcp_authentication_failed_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_mcp_connection_failed_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_model_overloaded_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_model_rate_limited_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_model_request_failed_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_authentication_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_checkout_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_clone_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_forbidden_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_repository_not_found_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_send_session_events.rb +8 -8
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_error_event.rb +14 -8
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_event.rb +64 -37
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_resource.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_status_idle_event.rb +4 -4
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_thread.rb +8 -2
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_session_thread_status_idle_event.rb +4 -4
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_stream_session_events.rb +66 -39
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_stream_session_thread_events.rb +66 -39
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_unknown_error.rb +3 -3
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_custom_tool_result_event.rb +7 -7
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_custom_tool_result_event_params.rb +7 -7
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_define_outcome_event.rb +2 -2
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_define_outcome_event_params.rb +2 -2
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_message_event.rb +4 -4
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_message_event_params.rb +4 -4
- data/lib/anthropic/models/beta/sessions/beta_managed_agents_user_tool_result_event_params.rb +4 -4
- data/lib/anthropic/models/beta/sessions/resource_retrieve_response.rb +3 -3
- data/lib/anthropic/models/beta/sessions/resource_update_response.rb +3 -3
- data/lib/anthropic/models/beta/vaults/beta_managed_agents_credential.rb +6 -3
- data/lib/anthropic/models/beta/vaults/beta_managed_agents_credential_networking_params.rb +7 -2
- data/lib/anthropic/models/beta/vaults/beta_managed_agents_environment_variable_auth_response.rb +7 -2
- data/lib/anthropic/models/beta/vaults/beta_managed_agents_mcp_oauth_refresh_params.rb +3 -3
- data/lib/anthropic/models/beta/vaults/beta_managed_agents_mcp_oauth_refresh_response.rb +12 -3
- data/lib/anthropic/models/beta/vaults/beta_managed_agents_mcp_oauth_refresh_update_params.rb +8 -2
- data/lib/anthropic/models/beta/vaults/credential_create_params.rb +6 -3
- data/lib/anthropic/models/beta/vaults/credential_update_params.rb +6 -3
- data/lib/anthropic/models/message_count_tokens_params.rb +15 -10
- data/lib/anthropic/models/message_create_params.rb +15 -10
- data/lib/anthropic/models/messages/batch_create_params.rb +15 -10
- data/lib/anthropic/models/model.rb +0 -2
- data/lib/anthropic/models/organization/invite_create_params.rb +4 -2
- data/lib/anthropic/models/organization/user_update_params.rb +4 -2
- data/lib/anthropic/models/thinking_config_adaptive.rb +6 -4
- data/lib/anthropic/models/thinking_config_enabled.rb +6 -4
- data/lib/anthropic/models/thinking_config_param.rb +8 -7
- data/lib/anthropic/request_options.rb +7 -0
- data/lib/anthropic/resources/beta/agents/versions.rb +4 -0
- data/lib/anthropic/resources/beta/agents.rb +22 -2
- data/lib/anthropic/resources/beta/deployment_runs.rb +16 -0
- data/lib/anthropic/resources/beta/deployments.rb +24 -0
- data/lib/anthropic/resources/beta/dreams.rb +15 -0
- data/lib/anthropic/resources/beta/environments/work.rb +42 -0
- data/lib/anthropic/resources/beta/environments.rb +18 -0
- data/lib/anthropic/resources/beta/files.rb +15 -0
- data/lib/anthropic/resources/beta/memory_stores/memories.rb +31 -0
- data/lib/anthropic/resources/beta/memory_stores/memory_versions.rb +28 -0
- data/lib/anthropic/resources/beta/memory_stores.rb +18 -0
- data/lib/anthropic/resources/beta/messages/batches.rb +19 -1
- data/lib/anthropic/resources/beta/messages.rb +12 -4
- data/lib/anthropic/resources/beta/models.rb +6 -0
- data/lib/anthropic/resources/beta/organization/analytics/apps/chat/projects.rb +3 -0
- data/lib/anthropic/resources/beta/organization/analytics/artifacts.rb +3 -0
- data/lib/anthropic/resources/beta/organization/analytics/connectors.rb +4 -0
- data/lib/anthropic/resources/beta/organization/analytics/cost_report.rb +20 -0
- data/lib/anthropic/resources/beta/organization/analytics/plugins.rb +4 -0
- data/lib/anthropic/resources/beta/organization/analytics/skills.rb +4 -0
- data/lib/anthropic/resources/beta/organization/analytics/summaries.rb +3 -0
- data/lib/anthropic/resources/beta/organization/analytics/usage_report.rb +20 -0
- data/lib/anthropic/resources/beta/organization/analytics/user_cost_report.rb +23 -0
- data/lib/anthropic/resources/beta/organization/analytics/user_usage_report.rb +23 -0
- data/lib/anthropic/resources/beta/organization/analytics/users.rb +4 -0
- data/lib/anthropic/resources/beta/organization/api_keys.rb +9 -0
- data/lib/anthropic/resources/beta/organization/compliance_settings.rb +4 -0
- data/lib/anthropic/resources/beta/organization/external_keys.rb +18 -0
- data/lib/anthropic/resources/beta/organization/federation/issuers.rb +15 -0
- data/lib/anthropic/resources/beta/organization/federation/rules/workspaces.rb +14 -0
- data/lib/anthropic/resources/beta/organization/federation/rules.rb +15 -0
- data/lib/anthropic/resources/beta/organization/invites.rb +12 -0
- data/lib/anthropic/resources/beta/organization/plugin_marketplaces.rb +14 -0
- data/lib/anthropic/resources/beta/organization/plugins/installation_settings.rb +16 -0
- data/lib/anthropic/resources/beta/organization/plugins/shares.rb +4 -0
- data/lib/anthropic/resources/beta/organization/plugins/versions.rb +22 -0
- data/lib/anthropic/resources/beta/organization/plugins.rb +27 -0
- data/lib/anthropic/resources/beta/organization/rate_limits.rb +3 -0
- data/lib/anthropic/resources/beta/organization/rbac_groups/members.rb +14 -0
- data/lib/anthropic/resources/beta/organization/rbac_groups.rb +15 -0
- data/lib/anthropic/resources/beta/organization/rbac_roles/permissions.rb +4 -0
- data/lib/anthropic/resources/beta/organization/rbac_roles.rb +6 -0
- data/lib/anthropic/resources/beta/organization/service_accounts/workspaces.rb +14 -0
- data/lib/anthropic/resources/beta/organization/service_accounts.rb +15 -0
- data/lib/anthropic/resources/beta/organization/spend_limits/effective.rb +5 -2
- data/lib/anthropic/resources/beta/organization/spend_limits/increase_requests.rb +12 -0
- data/lib/anthropic/resources/beta/organization/spend_limits.rb +17 -7
- data/lib/anthropic/resources/beta/organization/telemetry_destinations/workspaces.rb +173 -0
- data/lib/anthropic/resources/beta/organization/telemetry_destinations.rb +274 -0
- data/lib/anthropic/resources/beta/organization/users.rb +12 -0
- data/lib/anthropic/resources/beta/organization/workspaces/members.rb +26 -0
- data/lib/anthropic/resources/beta/organization/workspaces/rate_limits.rb +4 -0
- data/lib/anthropic/resources/beta/organization/workspaces/service_accounts.rb +26 -0
- data/lib/anthropic/resources/beta/organization/workspaces.rb +15 -0
- data/lib/anthropic/resources/beta/organization.rb +7 -0
- data/lib/anthropic/resources/beta/sessions/events.rb +21 -1
- data/lib/anthropic/resources/beta/sessions/resources.rb +26 -0
- data/lib/anthropic/resources/beta/sessions/threads/events.rb +15 -1
- data/lib/anthropic/resources/beta/sessions/threads.rb +16 -0
- data/lib/anthropic/resources/beta/sessions.rb +32 -0
- data/lib/anthropic/resources/beta/skills/versions.rb +17 -0
- data/lib/anthropic/resources/beta/skills.rb +12 -0
- data/lib/anthropic/resources/beta/tunnels/certificates.rb +20 -0
- data/lib/anthropic/resources/beta/tunnels.rb +18 -0
- data/lib/anthropic/resources/beta/user_profiles.rb +15 -0
- data/lib/anthropic/resources/beta/vaults/credentials.rb +38 -0
- data/lib/anthropic/resources/beta/vaults.rb +18 -0
- data/lib/anthropic/resources/completions.rb +5 -1
- data/lib/anthropic/resources/files.rb +15 -0
- data/lib/anthropic/resources/messages/batches.rb +19 -1
- data/lib/anthropic/resources/messages.rb +12 -4
- data/lib/anthropic/resources/models.rb +6 -0
- data/lib/anthropic/resources/organization/api_keys.rb +9 -0
- data/lib/anthropic/resources/organization/compliance_settings.rb +4 -0
- data/lib/anthropic/resources/organization/external_keys.rb +18 -0
- data/lib/anthropic/resources/organization/federation/issuers.rb +15 -0
- data/lib/anthropic/resources/organization/federation/rules/workspaces.rb +14 -0
- data/lib/anthropic/resources/organization/federation/rules.rb +15 -0
- data/lib/anthropic/resources/organization/invites.rb +12 -0
- data/lib/anthropic/resources/organization/rate_limits.rb +3 -0
- data/lib/anthropic/resources/organization/service_accounts/workspaces.rb +14 -0
- data/lib/anthropic/resources/organization/service_accounts.rb +15 -0
- data/lib/anthropic/resources/organization/users.rb +12 -0
- data/lib/anthropic/resources/organization/workspaces/members.rb +26 -0
- data/lib/anthropic/resources/organization/workspaces/rate_limits.rb +4 -0
- data/lib/anthropic/resources/organization/workspaces/service_accounts.rb +26 -0
- data/lib/anthropic/resources/organization/workspaces.rb +15 -0
- data/lib/anthropic/resources/organization.rb +2 -0
- data/lib/anthropic/resources/skills/versions.rb +14 -0
- data/lib/anthropic/resources/skills.rb +12 -0
- data/lib/anthropic/version.rb +1 -1
- data/lib/anthropic.rb +58 -0
- data/rbi/anthropic/client.rbi +28 -0
- data/rbi/anthropic/helpers/aws/client.rbi +6 -2
- data/rbi/anthropic/helpers/bedrock/client.rbi +6 -2
- data/rbi/anthropic/helpers/bedrock/mantle_client.rbi +6 -2
- data/rbi/anthropic/helpers/google_cloud/client.rbi +6 -2
- data/rbi/anthropic/helpers/streaming/message_stream.rbi +4 -1
- data/rbi/anthropic/helpers/vertex/client.rbi +6 -2
- data/rbi/anthropic/internal/tracing.rbi +847 -0
- data/rbi/anthropic/internal/transport/base_client.rbi +93 -5
- data/rbi/anthropic/internal/type/base_stream.rbi +2 -0
- data/rbi/anthropic/models/anthropic_beta.rbi +5 -0
- data/rbi/anthropic/models/beta/agent_create_params.rbi +34 -3
- data/rbi/anthropic/models/beta/agent_update_params.rbi +34 -3
- data/rbi/anthropic/models/beta/beta_fallback_param.rbi +3 -2
- data/rbi/anthropic/models/beta/beta_fallbacks_param.rbi +6 -2
- data/rbi/anthropic/models/beta/beta_managed_agents_agent.rbi +17 -0
- data/rbi/anthropic/models/beta/beta_managed_agents_agent_with_overrides_params.rbi +3 -3
- data/rbi/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity.rbi +40 -0
- data/rbi/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity_params.rbi +42 -0
- data/rbi/anthropic/models/beta/beta_managed_agents_execution_identity.rbi +85 -0
- data/rbi/anthropic/models/beta/beta_managed_agents_execution_identity_params.rbi +87 -0
- data/rbi/anthropic/models/beta/beta_managed_agents_model.rbi +0 -2
- data/rbi/anthropic/models/beta/beta_managed_agents_service_account_execution_identity.rbi +32 -0
- data/rbi/anthropic/models/beta/beta_managed_agents_service_account_execution_identity_params.rbi +33 -0
- data/rbi/anthropic/models/beta/beta_managed_agents_session_agent.rbi +19 -0
- data/rbi/anthropic/models/beta/beta_managed_agents_session_multiagent_coordinator.rbi +9 -0
- data/rbi/anthropic/models/beta/beta_managed_agents_session_thread_agent.rbi +19 -0
- data/rbi/anthropic/models/beta/beta_message_delta_usage.rbi +0 -2
- data/rbi/anthropic/models/beta/beta_thinking_config_adaptive.rbi +9 -6
- data/rbi/anthropic/models/beta/beta_thinking_config_enabled.rbi +9 -6
- data/rbi/anthropic/models/beta/beta_thinking_config_param.rbi +11 -9
- data/rbi/anthropic/models/beta/beta_usage.rbi +0 -2
- data/rbi/anthropic/models/beta/message_count_tokens_params.rbi +28 -18
- data/rbi/anthropic/models/beta/message_create_params.rbi +40 -22
- data/rbi/anthropic/models/beta/messages/batch_create_params.rbi +40 -22
- data/rbi/anthropic/models/beta/organization/beta_analytics_cost_bucketed_result.rbi +6 -6
- data/rbi/anthropic/models/beta/organization/beta_analytics_cost_users_item.rbi +6 -6
- data/rbi/anthropic/models/beta/organization/beta_analytics_usage_bucketed_result.rbi +6 -6
- data/rbi/anthropic/models/beta/organization/beta_analytics_usage_users_item.rbi +6 -6
- data/rbi/anthropic/models/beta/organization/beta_deleted_telemetry_destination.rbi +39 -0
- data/rbi/anthropic/models/beta/organization/beta_spend_limit.rbi +4 -4
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination.rbi +191 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_content_mode.rbi +53 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_delivery_health.rbi +106 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason.rbi +95 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_caller.rbi +31 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_invalid_address.rbi +39 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_redirect.rbi +33 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_sustained_failure.rbi +35 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state.rbi +99 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled.rbi +66 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled_params.rbi +34 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled.rbi +31 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled_params.rbi +33 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_state_params.rbi +81 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_test_failure.rbi +47 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_test_response.rbi +62 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_test_result.rbi +88 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_test_success.rbi +31 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_traces.rbi +97 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_traces_params.rbi +120 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces.rbi +93 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all.rbi +33 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all_params.rbi +33 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude.rbi +32 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude_params.rbi +80 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include.rbi +31 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include_params.rbi +80 -0
- data/rbi/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_params.rbi +107 -0
- data/rbi/anthropic/models/beta/organization/invite_create_params.rbi +6 -3
- data/rbi/anthropic/models/beta/organization/spend_limit_list_params.rbi +2 -8
- data/rbi/anthropic/models/beta/organization/telemetry_destination_create_params.rbi +186 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destination_delete_params.rbi +73 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destination_list_params.rbi +114 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destination_retrieve_params.rbi +73 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destination_test_params.rbi +73 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destination_update_params.rbi +264 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destinations/beta_deleted_telemetry_destination_workspace.rbi +61 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destinations/beta_telemetry_destination_workspace.rbi +73 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destinations/workspace_add_params.rbi +84 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destinations/workspace_list_params.rbi +100 -0
- data/rbi/anthropic/models/beta/organization/telemetry_destinations/workspace_remove_params.rbi +84 -0
- data/rbi/anthropic/models/beta/organization/user_update_params.rbi +6 -3
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_agent_custom_tool_use_event.rbi +3 -1
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_event_params.rbi +2 -2
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_inline_agent.rbi +17 -0
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_send_session_events.rbi +2 -2
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_session_event.rbi +2 -2
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_session_thread.rbi +9 -0
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_stream_session_events.rbi +2 -2
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_stream_session_thread_events.rbi +2 -2
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_user_custom_tool_result_event.rbi +4 -4
- data/rbi/anthropic/models/beta/sessions/beta_managed_agents_user_custom_tool_result_event_params.rbi +4 -4
- data/rbi/anthropic/models/message_count_tokens_params.rbi +28 -18
- data/rbi/anthropic/models/message_create_params.rbi +28 -18
- data/rbi/anthropic/models/messages/batch_create_params.rbi +28 -18
- data/rbi/anthropic/models/model.rbi +0 -2
- data/rbi/anthropic/models/organization/invite_create_params.rbi +6 -3
- data/rbi/anthropic/models/organization/user_update_params.rbi +6 -3
- data/rbi/anthropic/models/thinking_config_adaptive.rbi +9 -6
- data/rbi/anthropic/models/thinking_config_enabled.rbi +9 -6
- data/rbi/anthropic/models/thinking_config_param.rbi +11 -9
- data/rbi/anthropic/request_options.rbi +5 -0
- data/rbi/anthropic/resources/beta/agents.rbi +22 -2
- data/rbi/anthropic/resources/beta/messages/batches.rbi +2 -1
- data/rbi/anthropic/resources/beta/messages.rbi +56 -32
- data/rbi/anthropic/resources/beta/organization/invites.rbi +2 -1
- data/rbi/anthropic/resources/beta/organization/spend_limits/effective.rbi +2 -2
- data/rbi/anthropic/resources/beta/organization/spend_limits.rbi +5 -10
- data/rbi/anthropic/resources/beta/organization/telemetry_destinations/workspaces.rbi +124 -0
- data/rbi/anthropic/resources/beta/organization/telemetry_destinations.rbi +300 -0
- data/rbi/anthropic/resources/beta/organization/users.rbi +2 -1
- data/rbi/anthropic/resources/beta/organization.rbi +7 -0
- data/rbi/anthropic/resources/beta/sessions/events.rbi +2 -1
- data/rbi/anthropic/resources/beta/sessions/threads/events.rbi +2 -1
- data/rbi/anthropic/resources/completions.rbi +6 -1
- data/rbi/anthropic/resources/messages/batches.rbi +2 -1
- data/rbi/anthropic/resources/messages.rbi +44 -28
- data/rbi/anthropic/resources/organization/invites.rbi +2 -1
- data/rbi/anthropic/resources/organization/users.rbi +2 -1
- data/sig/anthropic/client.rbs +1 -0
- data/sig/anthropic/helpers/bedrock/client.rbs +2 -1
- data/sig/anthropic/helpers/google_cloud/client.rbs +2 -1
- data/sig/anthropic/helpers/streaming/message_stream.rbs +2 -2
- data/sig/anthropic/helpers/vertex/client.rbs +2 -1
- data/sig/anthropic/internal/tracing.rbs +477 -0
- data/sig/anthropic/internal/transport/base_client.rbs +37 -2
- data/sig/anthropic/internal/type/base_stream.rbs +1 -1
- data/sig/anthropic/models/anthropic_beta.rbs +2 -0
- data/sig/anthropic/models/beta/agent_create_params.rbs +5 -0
- data/sig/anthropic/models/beta/agent_update_params.rbs +5 -0
- data/sig/anthropic/models/beta/beta_managed_agents_agent.rbs +5 -0
- data/sig/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity.rbs +20 -0
- data/sig/anthropic/models/beta/beta_managed_agents_aws_role_execution_identity_params.rbs +20 -0
- data/sig/anthropic/models/beta/beta_managed_agents_execution_identity.rbs +42 -0
- data/sig/anthropic/models/beta/beta_managed_agents_execution_identity_params.rbs +42 -0
- data/sig/anthropic/models/beta/beta_managed_agents_model.rbs +0 -2
- data/sig/anthropic/models/beta/beta_managed_agents_service_account_execution_identity.rbs +18 -0
- data/sig/anthropic/models/beta/beta_managed_agents_service_account_execution_identity_params.rbs +18 -0
- data/sig/anthropic/models/beta/beta_managed_agents_session_agent.rbs +5 -0
- data/sig/anthropic/models/beta/beta_managed_agents_session_multiagent_coordinator.rbs +2 -0
- data/sig/anthropic/models/beta/beta_managed_agents_session_thread_agent.rbs +5 -0
- data/sig/anthropic/models/beta/organization/beta_deleted_telemetry_destination.rbs +23 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination.rbs +74 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_content_mode.rbs +23 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_delivery_health.rbs +30 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason.rbs +51 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_caller.rbs +18 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_invalid_address.rbs +18 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_redirect.rbs +18 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_disabled_reason_sustained_failure.rbs +18 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state.rbs +42 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled.rbs +29 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_disabled_params.rbs +18 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled.rbs +17 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_enabled_params.rbs +18 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_state_params.rbs +40 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_test_failure.rbs +20 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_test_response.rbs +29 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_test_result.rbs +42 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_test_success.rbs +17 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_traces.rbs +39 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_traces_params.rbs +41 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces.rbs +45 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all.rbs +17 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_all_params.rbs +17 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude.rbs +17 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_exclude_params.rbs +25 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include.rbs +17 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_include_params.rbs +25 -0
- data/sig/anthropic/models/beta/organization/beta_telemetry_destination_workspaces_params.rbs +48 -0
- data/sig/anthropic/models/beta/organization/telemetry_destination_create_params.rbs +65 -0
- data/sig/anthropic/models/beta/organization/telemetry_destination_delete_params.rbs +39 -0
- data/sig/anthropic/models/beta/organization/telemetry_destination_list_params.rbs +55 -0
- data/sig/anthropic/models/beta/organization/telemetry_destination_retrieve_params.rbs +39 -0
- data/sig/anthropic/models/beta/organization/telemetry_destination_test_params.rbs +39 -0
- data/sig/anthropic/models/beta/organization/telemetry_destination_update_params.rbs +79 -0
- data/sig/anthropic/models/beta/organization/telemetry_destinations/beta_deleted_telemetry_destination_workspace.rbs +36 -0
- data/sig/anthropic/models/beta/organization/telemetry_destinations/beta_telemetry_destination_workspace.rbs +41 -0
- data/sig/anthropic/models/beta/organization/telemetry_destinations/workspace_add_params.rbs +46 -0
- data/sig/anthropic/models/beta/organization/telemetry_destinations/workspace_list_params.rbs +55 -0
- data/sig/anthropic/models/beta/organization/telemetry_destinations/workspace_remove_params.rbs +46 -0
- data/sig/anthropic/models/beta/sessions/beta_managed_agents_inline_agent.rbs +5 -0
- data/sig/anthropic/models/beta/sessions/beta_managed_agents_session_thread.rbs +3 -0
- data/sig/anthropic/models/model.rbs +0 -2
- data/sig/anthropic/request_options.rbs +3 -0
- data/sig/anthropic/resources/beta/agents.rbs +2 -0
- data/sig/anthropic/resources/beta/messages/batches.rbs +1 -1
- data/sig/anthropic/resources/beta/messages.rbs +1 -1
- data/sig/anthropic/resources/beta/organization/telemetry_destinations/workspaces.rbs +35 -0
- data/sig/anthropic/resources/beta/organization/telemetry_destinations.rbs +61 -0
- data/sig/anthropic/resources/beta/organization.rbs +2 -0
- data/sig/anthropic/resources/beta/sessions/events.rbs +1 -1
- data/sig/anthropic/resources/beta/sessions/threads/events.rbs +1 -1
- data/sig/anthropic/resources/completions.rbs +1 -1
- data/sig/anthropic/resources/messages/batches.rbs +1 -1
- data/sig/anthropic/resources/messages.rbs +1 -1
- metadata +178 -2
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Anthropic
|
|
4
|
+
module Helpers
|
|
5
|
+
module Tracing
|
|
6
|
+
class << self
|
|
7
|
+
# A failure to record must not fail the application's code, so an error raised in the block
|
|
8
|
+
# is logged, and the value is then `nil`.
|
|
9
|
+
#
|
|
10
|
+
# @param what [String]
|
|
11
|
+
def recording(what)
|
|
12
|
+
yield
|
|
13
|
+
rescue StandardError => e
|
|
14
|
+
OpenTelemetry.logger.debug("anthropic: could not record #{what} on its span: #{e.class}")
|
|
15
|
+
nil
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# The enumerator that reads `events` and records the Message they carry on `span`, and what
|
|
19
|
+
# it has recorded so far.
|
|
20
|
+
#
|
|
21
|
+
# @param span [OpenTelemetry::Trace::Span]
|
|
22
|
+
# @param events [Enumerable<Anthropic::Internal::Type::BaseModel>] the events of the stream
|
|
23
|
+
# @param params [Hash{Symbol=>Object}] the request's body
|
|
24
|
+
# @param start_time [Float] when the API call started, on the monotonic clock
|
|
25
|
+
# @param content [Boolean] whether the span has the `content` attributes
|
|
26
|
+
# @param content_limit [Integer] the most bytes the `content` attributes hold
|
|
27
|
+
#
|
|
28
|
+
# @return [Array(Enumerator, Anthropic::Helpers::Tracing::StreamedMessage)]
|
|
29
|
+
def follow_streamed_message(span, events, params:, start_time:, content:, content_limit: CONTENT_LIMIT)
|
|
30
|
+
tracker = StreamedMessage.new(
|
|
31
|
+
span,
|
|
32
|
+
params: params,
|
|
33
|
+
start_time: start_time,
|
|
34
|
+
content: content,
|
|
35
|
+
content_limit: content_limit
|
|
36
|
+
)
|
|
37
|
+
recording = Enumerator.new do |y|
|
|
38
|
+
events.each do |event|
|
|
39
|
+
tracker.observe(event)
|
|
40
|
+
y << event
|
|
41
|
+
end
|
|
42
|
+
tracker.ended_by_server
|
|
43
|
+
ensure
|
|
44
|
+
tracker.set_attributes
|
|
45
|
+
end
|
|
46
|
+
# The SDK closes a stream by rewinding its enumerator. That does not resume a read
|
|
47
|
+
# suspended in `Enumerator#next`, whose `ensure` would never run, so the Message is
|
|
48
|
+
# recorded here too.
|
|
49
|
+
recording.define_singleton_method(:rewind) do
|
|
50
|
+
tracker.set_attributes
|
|
51
|
+
events.rewind
|
|
52
|
+
self
|
|
53
|
+
end
|
|
54
|
+
[recording, tracker]
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Runs the block, in which a stream helper folds one event into the Message it accumulates,
|
|
58
|
+
# and gives that Message to the span that follows `stream`, when one does. An event that the
|
|
59
|
+
# block fails on leaves the span without the Message.
|
|
60
|
+
#
|
|
61
|
+
# @param stream [Anthropic::Internal::Type::BaseStream] the raw stream that the helper reads
|
|
62
|
+
#
|
|
63
|
+
# @return [Anthropic::Models::Message, Anthropic::Models::Beta::BetaMessage]
|
|
64
|
+
def accumulate_streamed_message(stream)
|
|
65
|
+
tracker = stream.streamed_message if stream.is_a?(Anthropic::Internal::TracedStream)
|
|
66
|
+
tracker&.snapshot = nil
|
|
67
|
+
message = yield
|
|
68
|
+
tracker&.snapshot = message
|
|
69
|
+
message
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# What a span records of a streamed Message, as far as the stream has been read. None of its
|
|
74
|
+
# methods raises. The content is not rebuilt here: it comes from the Message that a stream
|
|
75
|
+
# helper accumulates ({Tracing.accumulate_streamed_message}), so a raw stream has none.
|
|
76
|
+
class StreamedMessage
|
|
77
|
+
# The counts of `message_start` that a later `message_delta` replaces with the final ones.
|
|
78
|
+
PROVISIONAL_USAGE = [:output_tokens, :output_tokens_details, :iterations].freeze
|
|
79
|
+
|
|
80
|
+
# @param value [Anthropic::Models::Message, Anthropic::Models::Beta::BetaMessage, nil]
|
|
81
|
+
attr_writer :snapshot
|
|
82
|
+
|
|
83
|
+
# @param span [OpenTelemetry::Trace::Span]
|
|
84
|
+
# @param params [Hash{Symbol=>Object}] the request's body
|
|
85
|
+
# @param start_time [Float] when the API call started, on the monotonic clock
|
|
86
|
+
# @param content [Boolean] whether the span has the `content` attributes
|
|
87
|
+
# @param content_limit [Integer] the most bytes the `content` attributes hold
|
|
88
|
+
def initialize(span, params:, start_time:, content:, content_limit: CONTENT_LIMIT)
|
|
89
|
+
@span = span
|
|
90
|
+
@params = params
|
|
91
|
+
@start_time = start_time
|
|
92
|
+
@content = content
|
|
93
|
+
@content_limit = content_limit
|
|
94
|
+
@timed = false
|
|
95
|
+
@message = nil
|
|
96
|
+
@snapshot = nil
|
|
97
|
+
@stopped = false
|
|
98
|
+
@recorded = false
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# @param event [Anthropic::Internal::Type::BaseModel]
|
|
102
|
+
def observe(event)
|
|
103
|
+
Tracing.recording("a streamed message") { fold(event) }
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# `[]` reads a field of an event as it is, so nothing is converted: a stream is mostly content
|
|
107
|
+
# deltas, which cost nothing here after the first.
|
|
108
|
+
#
|
|
109
|
+
# @param event [Anthropic::Internal::Type::BaseModel]
|
|
110
|
+
private def fold(event)
|
|
111
|
+
case event[:type].to_sym
|
|
112
|
+
in :message_start
|
|
113
|
+
message = event[:message]
|
|
114
|
+
@message = {
|
|
115
|
+
id: message[:id],
|
|
116
|
+
model: message[:model],
|
|
117
|
+
usage: message[:usage].to_h.except(*PROVISIONAL_USAGE)
|
|
118
|
+
}
|
|
119
|
+
in :content_block_start if @message && event[:content_block][:type].to_sym == :fallback
|
|
120
|
+
@message[:model] = event[:content_block][:to][:model]
|
|
121
|
+
in :content_block_delta unless @timed
|
|
122
|
+
@timed = true
|
|
123
|
+
@span.set_attribute(
|
|
124
|
+
GEN_AI_RESPONSE_TIME_TO_FIRST_CHUNK,
|
|
125
|
+
Anthropic::Internal::Util.monotonic_secs - @start_time
|
|
126
|
+
)
|
|
127
|
+
in :message_delta unless @message.nil?
|
|
128
|
+
event[:usage].to_h.each do |key, value|
|
|
129
|
+
# The cache writes by lifetime come from `message_start` only.
|
|
130
|
+
@message[:usage][key] = value unless value.nil? || key == :cache_creation
|
|
131
|
+
end
|
|
132
|
+
stop_reason = event[:delta][:stop_reason]
|
|
133
|
+
@message[:stop_reason] = stop_reason unless stop_reason.nil?
|
|
134
|
+
in :message_stop
|
|
135
|
+
@stopped = true
|
|
136
|
+
else
|
|
137
|
+
nil
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# The server ending the stream is the only end that sets a status here: `OK` after
|
|
142
|
+
# `message_stop`, and `api_error` before it, where the server cut the stream short.
|
|
143
|
+
def ended_by_server
|
|
144
|
+
# A second read of the stream ends at once, after the span.
|
|
145
|
+
return if @recorded
|
|
146
|
+
|
|
147
|
+
Tracing.recording("a streamed message") do
|
|
148
|
+
if @stopped
|
|
149
|
+
@span.status = OpenTelemetry::Trace::Status.ok
|
|
150
|
+
else
|
|
151
|
+
@span.status = OpenTelemetry::Trace::Status.error
|
|
152
|
+
@span.set_attribute(Anthropic::Internal::Tracing::ERROR_TYPE, "api_error")
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
# Only the first call does anything.
|
|
158
|
+
def set_attributes
|
|
159
|
+
return if @recorded
|
|
160
|
+
|
|
161
|
+
@recorded = true
|
|
162
|
+
Tracing.recording("a streamed message") do
|
|
163
|
+
unless @message.nil?
|
|
164
|
+
Anthropic::Internal::Tracing.set_response_attributes(
|
|
165
|
+
@span,
|
|
166
|
+
Anthropic::Internal::Tracing::SpanName::MESSAGES_CREATE,
|
|
167
|
+
@message
|
|
168
|
+
)
|
|
169
|
+
Tracing.set_computed_usage_attributes(@span, @message[:usage])
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
set_content
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
# The content of the request is written again with the output, so that the size bound counts both.
|
|
176
|
+
private def set_content
|
|
177
|
+
return if !@content || @snapshot.nil?
|
|
178
|
+
|
|
179
|
+
Tracing.recording("a streamed message") do
|
|
180
|
+
content = @snapshot.content
|
|
181
|
+
# The input of a tool use is the text of its JSON until its block ends, and `arguments` holds an object.
|
|
182
|
+
content = content&.map { _1[:input].is_a?(String) ? {**_1.to_h, input: {}} : _1 } unless @stopped
|
|
183
|
+
Tracing.set_message_content_attributes(@span, @params, content, limit: @content_limit)
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
end
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Anthropic
|
|
4
|
+
module Helpers
|
|
5
|
+
module Tracing
|
|
6
|
+
class << self
|
|
7
|
+
# Returns `nil` when the client's spans are disabled, or when the span cannot start. A failure
|
|
8
|
+
# to read `params` is logged, and the span then starts without attributes.
|
|
9
|
+
#
|
|
10
|
+
# @param client [Anthropic::Client]
|
|
11
|
+
# @param params [Hash{Symbol=>Object}] the runner's, as the application gave them
|
|
12
|
+
#
|
|
13
|
+
# @return [OpenTelemetry::Trace::Span, nil]
|
|
14
|
+
def start_tool_runner_span(client, params)
|
|
15
|
+
tracer = client.open_telemetry_tracer
|
|
16
|
+
return nil if tracer.nil?
|
|
17
|
+
|
|
18
|
+
names = Anthropic::Internal::Tracing
|
|
19
|
+
attributes = recording("the tool runner") do
|
|
20
|
+
{
|
|
21
|
+
**client.open_telemetry_attributes,
|
|
22
|
+
names::GEN_AI_OPERATION_NAME => GEN_AI_OPERATION_NAME_VALUE_INVOKE_AGENT,
|
|
23
|
+
names::GEN_AI_REQUEST_MODEL => params[:model]&.to_s,
|
|
24
|
+
GEN_AI_CONVERSATION_ID => conversation_id(params[:request_options]),
|
|
25
|
+
GEN_AI_OUTPUT_TYPE => (GEN_AI_OUTPUT_TYPE_VALUE_JSON if json_output_format?(params))
|
|
26
|
+
}.compact
|
|
27
|
+
end
|
|
28
|
+
recording("the tool runner") do
|
|
29
|
+
tracer.start_span("anthropic.messages.tool_runner", kind: :internal, attributes: attributes)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# The status is `ERROR` for `error`, `OK` for a loop that returned, and unset when the
|
|
34
|
+
# application stopped the loop.
|
|
35
|
+
#
|
|
36
|
+
# @param span [OpenTelemetry::Trace::Span]
|
|
37
|
+
# @param returned [Boolean] whether the loop returned
|
|
38
|
+
# @param error [StandardError, nil] what the loop failed with
|
|
39
|
+
def end_tool_runner_span(span, returned:, error:)
|
|
40
|
+
recording("the tool runner") do
|
|
41
|
+
if error
|
|
42
|
+
Anthropic::Internal::Tracing.set_error_status(span, error)
|
|
43
|
+
elsif returned
|
|
44
|
+
span.status = OpenTelemetry::Trace::Status.ok
|
|
45
|
+
end
|
|
46
|
+
span.finish
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Returns `nil` when the client's spans are disabled, or when the span cannot start.
|
|
51
|
+
# {end_tool_use_span} ends the span.
|
|
52
|
+
#
|
|
53
|
+
# @param client [Anthropic::Client]
|
|
54
|
+
# @param tool [Anthropic::Helpers::Tools::BaseTool] the tool that runs
|
|
55
|
+
# @param tool_use [Anthropic::Models::Beta::BetaToolUseBlock]
|
|
56
|
+
# @param request_options [Anthropic::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
57
|
+
#
|
|
58
|
+
# @return [OpenTelemetry::Trace::Span, nil]
|
|
59
|
+
def start_tool_use_span(client, tool, tool_use, request_options)
|
|
60
|
+
tracer = client.open_telemetry_tracer
|
|
61
|
+
return nil if tracer.nil?
|
|
62
|
+
|
|
63
|
+
mcp = tool.is_a?(Anthropic::Helpers::Tools::Mcp::Tool)
|
|
64
|
+
operation = mcp ? "anthropic.mcp_tool_use" : "anthropic.custom_tool_use"
|
|
65
|
+
attributes = {
|
|
66
|
+
**client.open_telemetry_attributes,
|
|
67
|
+
Anthropic::Internal::Tracing::GEN_AI_OPERATION_NAME => GEN_AI_OPERATION_NAME_VALUE_EXECUTE_TOOL,
|
|
68
|
+
GEN_AI_TOOL_NAME => tool_use.name,
|
|
69
|
+
GEN_AI_TOOL_CALL_ID => tool_use.id,
|
|
70
|
+
GEN_AI_TOOL_TYPE => GEN_AI_TOOL_TYPE_VALUE_FUNCTION
|
|
71
|
+
}
|
|
72
|
+
# Read as it is, so that a value of another type sets no attribute and raises nothing.
|
|
73
|
+
toolset_name = tool_use[:toolset_name]
|
|
74
|
+
attributes[ANTHROPIC_TOOLSET_NAME] = toolset_name if toolset_name.is_a?(String)
|
|
75
|
+
description = tool_description(tool)
|
|
76
|
+
attributes[GEN_AI_TOOL_DESCRIPTION] = description unless description.nil?
|
|
77
|
+
# Options that cannot be read set no ID, and do not fail the run.
|
|
78
|
+
id = begin
|
|
79
|
+
conversation_id(request_options)
|
|
80
|
+
rescue StandardError
|
|
81
|
+
nil
|
|
82
|
+
end
|
|
83
|
+
attributes[GEN_AI_CONVERSATION_ID] = id unless id.nil?
|
|
84
|
+
recording("the tool run") do
|
|
85
|
+
tracer.start_span(
|
|
86
|
+
"#{operation} #{tool_use.name}",
|
|
87
|
+
kind: :internal,
|
|
88
|
+
attributes: attributes
|
|
89
|
+
)
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# `nil` for no description, an empty one, or one that is not text ({utf8_text}): it can come from
|
|
94
|
+
# an MCP server.
|
|
95
|
+
#
|
|
96
|
+
# @param tool [Anthropic::Helpers::Tools::BaseTool]
|
|
97
|
+
#
|
|
98
|
+
# @return [String, nil]
|
|
99
|
+
def tool_description(tool)
|
|
100
|
+
description = tool.class.doc_string
|
|
101
|
+
return nil unless description.is_a?(String) && !description.empty?
|
|
102
|
+
|
|
103
|
+
utf8_text(description)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# @param client [Anthropic::Client]
|
|
107
|
+
# @param span [OpenTelemetry::Trace::Span]
|
|
108
|
+
# @param input [Hash{Symbol=>Object}] the `input` of the `tool_use` block
|
|
109
|
+
# @param result [Hash{Symbol=>Object}, nil] the `tool_result` block, or `nil` for a run that was
|
|
110
|
+
# interrupted, which leaves the status unset
|
|
111
|
+
def end_tool_use_span(client, span, input, result)
|
|
112
|
+
recording("the tool run") do
|
|
113
|
+
next unless span.recording? && client.open_telemetry_content?
|
|
114
|
+
|
|
115
|
+
set_content_attributes(
|
|
116
|
+
span,
|
|
117
|
+
nil,
|
|
118
|
+
{
|
|
119
|
+
GEN_AI_TOOL_CALL_ARGUMENTS => input,
|
|
120
|
+
ANTHROPIC_TOOL_RESULT_CONTENT => (tool_result_content(result[:content]) unless result.nil?)
|
|
121
|
+
},
|
|
122
|
+
limit: client.open_telemetry_max_content_bytes
|
|
123
|
+
)
|
|
124
|
+
end
|
|
125
|
+
recording("the tool run") do
|
|
126
|
+
if result&.[](:is_error)
|
|
127
|
+
span.status = OpenTelemetry::Trace::Status.error
|
|
128
|
+
span.set_attribute(Anthropic::Internal::Tracing::ERROR_TYPE, "tool_error")
|
|
129
|
+
elsif result
|
|
130
|
+
span.status = OpenTelemetry::Trace::Status.ok
|
|
131
|
+
end
|
|
132
|
+
span.finish
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Anthropic
|
|
4
|
+
module Helpers
|
|
5
|
+
# @api private
|
|
6
|
+
#
|
|
7
|
+
# The span attributes that {Anthropic::Internal::Tracing} cannot take from its tables: the
|
|
8
|
+
# computed ones, the Message that a stream carries, and the content of requests and responses.
|
|
9
|
+
# The tool runner's two `INTERNAL` spans start and end here too.
|
|
10
|
+
module Tracing
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -43,6 +43,9 @@ module Anthropic
|
|
|
43
43
|
# the Vertex URL rewrite and OAuth header happen inside the continuation, per
|
|
44
44
|
# attempt.
|
|
45
45
|
#
|
|
46
|
+
# @param open_telemetry [Hash{Symbol=>Object}, Boolean, nil] OpenTelemetry tracing of this
|
|
47
|
+
# client's API calls. See {Anthropic::Client#initialize}.
|
|
48
|
+
#
|
|
46
49
|
def initialize(
|
|
47
50
|
region: ENV["CLOUD_ML_REGION"],
|
|
48
51
|
project_id: ENV["ANTHROPIC_VERTEX_PROJECT_ID"],
|
|
@@ -51,7 +54,8 @@ module Anthropic
|
|
|
51
54
|
timeout: nil,
|
|
52
55
|
initial_retry_delay: DEFAULT_INITIAL_RETRY_DELAY,
|
|
53
56
|
max_retry_delay: DEFAULT_MAX_RETRY_DELAY,
|
|
54
|
-
middleware: nil
|
|
57
|
+
middleware: nil,
|
|
58
|
+
open_telemetry: nil
|
|
55
59
|
)
|
|
56
60
|
begin
|
|
57
61
|
require("googleauth")
|
|
@@ -111,7 +115,8 @@ module Anthropic
|
|
|
111
115
|
max_retries: max_retries,
|
|
112
116
|
initial_retry_delay: initial_retry_delay,
|
|
113
117
|
max_retry_delay: max_retry_delay,
|
|
114
|
-
middleware: middleware
|
|
118
|
+
middleware: middleware,
|
|
119
|
+
open_telemetry: open_telemetry
|
|
115
120
|
)
|
|
116
121
|
|
|
117
122
|
@messages = Anthropic::Resources::Messages.new(client: self)
|
|
@@ -184,6 +189,18 @@ module Anthropic
|
|
|
184
189
|
super
|
|
185
190
|
end
|
|
186
191
|
|
|
192
|
+
# @api private
|
|
193
|
+
#
|
|
194
|
+
# @return [Hash{String=>String}]
|
|
195
|
+
def open_telemetry_attributes
|
|
196
|
+
{**super, Anthropic::Internal::Tracing::GEN_AI_PROVIDER_NAME => "gcp.vertex_ai"}
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
# @api private
|
|
200
|
+
#
|
|
201
|
+
# @return [String]
|
|
202
|
+
private def open_telemetry_scope = "#{super}.vertex"
|
|
203
|
+
|
|
187
204
|
# @api private
|
|
188
205
|
#
|
|
189
206
|
# The Vertex provider middleware: rewrites the canonical request into
|