beamlit 0.0.34rc61__tar.gz → 0.0.34rc63__tar.gz
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.
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/PKG-INFO +1 -1
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/pyproject.toml +1 -1
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/agents/chat.py +9 -4
- beamlit-0.0.34rc63/src/beamlit/agents/decorator.py +108 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/service_accounts/create_workspace_service_account.py +3 -1
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/service_accounts/delete_workspace_service_account.py +3 -1
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/service_accounts/get_workspace_service_accounts.py +3 -1
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/service_accounts/update_workspace_service_account.py +3 -1
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/deploy/deploy.py +8 -6
- beamlit-0.0.34rc63/src/beamlit/functions/__init__.py +5 -0
- {beamlit-0.0.34rc61/src/beamlit/agents → beamlit-0.0.34rc63/src/beamlit/functions}/decorator.py +86 -129
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/__init__.py +3 -1
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/integrationtest/agent.py +1 -0
- beamlit-0.0.34rc63/src/integrationtest/main.py +11 -0
- beamlit-0.0.34rc61/src/beamlit/functions/__init__.py +0 -5
- beamlit-0.0.34rc61/src/beamlit/functions/decorator.py +0 -45
- beamlit-0.0.34rc61/src/integrationtest/main.py +0 -13
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/.gitignore +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/README.md +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/beamlit.yaml +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/agents/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/agents/chain.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/agents/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/agents/create_agent.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/agents/create_agent_release.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/agents/delete_agent.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/agents/delete_agent_history.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/agents/get_agent.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/agents/get_agent_environment_logs.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/agents/get_agent_history.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/agents/get_agent_metrics.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/agents/get_agent_trace_ids.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/agents/list_agent_history.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/agents/list_agents.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/agents/put_agent_history.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/agents/update_agent.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/configurations/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/configurations/get_configuration.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/default/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/default/get_trace.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/default/get_trace_ids.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/default/get_trace_logs.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/environments/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/environments/create_environment.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/environments/delete_environment.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/environments/get_environment.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/environments/get_environment_metrics.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/environments/list_environments.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/environments/update_environment.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/functions/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/functions/create_function.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/functions/create_function_release.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/functions/delete_function.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/functions/get_function.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/functions/get_function_environment_logs.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/functions/get_function_metrics.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/functions/get_function_trace_ids.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/functions/list_functions.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/functions/update_function.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/history/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/history/get_agents_history.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/history/list_agents_history.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/integrations/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/integrations/create_integration_connection.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/integrations/delete_integration_connection.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/integrations/get_integration.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/integrations/get_integration_connection.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/integrations/get_integration_connection_model.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/integrations/get_integration_model.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/integrations/list_integration_connection_models.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/integrations/list_integration_connections.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/integrations/list_integration_models.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/integrations/update_integration_connection.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/invitations/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/invitations/list_all_pending_invitations.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/locations/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/locations/list_locations.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/metrics/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/metrics/get_metrics.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/model_providers/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/model_providers/create_model_provider.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/model_providers/delete_model_provider.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/model_providers/get_model_provider.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/model_providers/list_model_providers.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/model_providers/update_model_provider.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/models/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/models/create_model.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/models/delete_model.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/models/get_model.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/models/get_model_environment_logs.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/models/get_model_metrics.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/models/get_model_trace_ids.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/models/list_models.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/models/release_model.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/models/update_model.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/policies/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/policies/create_policy.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/policies/delete_policy.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/policies/get_policy.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/policies/list_policies.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/policies/update_policy.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/privateclusters/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/privateclusters/create_private_cluster.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/privateclusters/delete_private_cluster.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/privateclusters/get_private_cluster.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/privateclusters/get_private_cluster_health.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/privateclusters/list_private_clusters.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/privateclusters/update_private_cluster.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/privateclusters/update_private_cluster_health.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/service_accounts/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/service_accounts/create_api_key_for_service_account.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/service_accounts/delete_api_key_for_service_account.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/service_accounts/list_api_keys_for_service_account.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/store/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/store/get_store_agent.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/store/get_store_function.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/store/list_store_agents.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/store/list_store_functions.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/workspaces/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/workspaces/accept_workspace_invitation.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/workspaces/create_worspace.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/workspaces/decline_workspace_invitation.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/workspaces/delete_workspace.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/workspaces/get_workspace.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/workspaces/invite_workspace_user.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/workspaces/leave_workspace.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/workspaces/list_workspace_users.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/workspaces/list_workspaces.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/workspaces/remove_workspace_user.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/workspaces/update_workspace.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/workspaces/update_workspace_user_role.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/authentication/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/authentication/apikey.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/authentication/authentication.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/authentication/clientcredentials.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/authentication/credentials.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/authentication/device_mode.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/client.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/common/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/common/error.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/common/instrumentation.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/common/logger.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/common/secrets.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/common/settings.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/common/slugify.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/common/utils.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/deploy/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/deploy/format.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/deploy/parser.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/errors.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/functions/github/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/functions/github/github.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/functions/github/kit/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/functions/github/kit/pull_request.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/functions/math/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/functions/math/math.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/functions/mcp/mcp.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/functions/remote/remote.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/functions/search/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/functions/search/search.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/acl.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/agent.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/agent_chain.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/agent_history.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/agent_history_event.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/agent_metadata.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/agent_release.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/agent_spec.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/api_key.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/configuration.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/continent.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/core_event.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/core_spec.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/core_spec_configurations.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/core_status.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/country.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/create_api_key_for_service_account_body.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/create_workspace_service_account_body.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/create_workspace_service_account_response_200.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/delete_workspace_service_account_response_200.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/environment.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/environment_metadata.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/environment_metrics.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/environment_spec.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/flavor.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/function.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/function_kit.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/function_metadata.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/function_release.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/function_spec.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/get_trace_ids_response_200.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/get_trace_logs_response_200.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/get_trace_response_200.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/get_workspace_service_accounts_response_200_item.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/increase_and_rate_metric.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/integration_config.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/integration_connection.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/integration_connection_config.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/integration_connection_secret.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/integration_connection_spec.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/integration_model.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/integration_repository.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/invite_workspace_user_body.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/last_n_requests_metric.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/latency_metric.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/location_response.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/metadata.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/metadata_labels.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/metric.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/metrics.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/model.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/model_metadata.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/model_private_cluster.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/model_provider.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/model_release.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/model_spec.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/owner_fields.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/pending_invitation.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/pending_invitation_accept.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/pending_invitation_render.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/pending_invitation_render_invited_by.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/pending_invitation_render_workspace.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/pending_invitation_workspace_details.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/pod_template_spec.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/policy.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/policy_location.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/policy_spec.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/private_cluster.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/private_location.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/provider_config.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/qps.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/repository.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/request_total_metric.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/resource_deployment_metrics.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/resource_deployment_metrics_inference_per_second_per_region.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/resource_deployment_metrics_query_per_second_per_region_per_code.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/resource_environment_metrics.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/resource_environment_metrics_inference_per_region.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/resource_environment_metrics_inference_per_second_per_region.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/resource_environment_metrics_query_per_region_per_code.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/resource_environment_metrics_query_per_second_per_region_per_code.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/resource_log.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/resource_metrics.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/runtime.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/runtime_readiness_probe.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/runtime_resources.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/serverless_config.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/spec_configuration.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/store_agent.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/store_agent_labels.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/store_configuration.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/store_configuration_option.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/store_function.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/store_function_kit.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/store_function_labels.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/store_function_parameter.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/time_fields.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/trace_ids_response.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/update_workspace_service_account_body.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/update_workspace_service_account_response_200.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/update_workspace_user_role_body.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/websocket_channel.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/workspace.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/workspace_labels.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/models/workspace_user.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/py.typed +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/run.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/serve/app.py +1 -1
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/serve/middlewares/__init__.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/serve/middlewares/accesslog.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/serve/middlewares/processtime.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/types.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/integrationtest/beamlit.yaml +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/integrationtest/functions/helloworld.py +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/integrationtest/pyproject.toml +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/integrationtest/uv.lock +0 -0
- {beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/uv.lock +0 -0
@@ -1,4 +1,7 @@
|
|
1
1
|
from logging import getLogger
|
2
|
+
from typing import Tuple, Union
|
3
|
+
|
4
|
+
from langchain_core.language_models import BaseChatModel
|
2
5
|
|
3
6
|
from beamlit.authentication import get_authentication_headers, new_client
|
4
7
|
from beamlit.common.settings import get_settings
|
@@ -39,11 +42,11 @@ def get_cohere_chat_model(**kwargs):
|
|
39
42
|
|
40
43
|
return ChatCohere(**kwargs)
|
41
44
|
|
42
|
-
def get_chat_model(name: str, agent_model: Model):
|
45
|
+
def get_chat_model(name: str, agent_model: Union[Model, None] = None) -> Tuple[BaseChatModel, str, str]:
|
43
46
|
settings = get_settings()
|
44
47
|
client = new_client()
|
45
48
|
|
46
|
-
environment = (agent_model.metadata and agent_model.metadata.environment) or settings.environment
|
49
|
+
environment = (agent_model and agent_model.metadata and agent_model.metadata.environment) or settings.environment
|
47
50
|
headers = get_authentication_headers(settings)
|
48
51
|
headers["X-Beamlit-Environment"] = environment
|
49
52
|
|
@@ -84,7 +87,8 @@ def get_chat_model(name: str, agent_model: Model):
|
|
84
87
|
}
|
85
88
|
|
86
89
|
provider = (
|
87
|
-
agent_model
|
90
|
+
agent_model
|
91
|
+
and agent_model.spec
|
88
92
|
and agent_model.spec.runtime
|
89
93
|
and agent_model.spec.runtime.type_
|
90
94
|
)
|
@@ -93,7 +97,8 @@ def get_chat_model(name: str, agent_model: Model):
|
|
93
97
|
provider = "openai"
|
94
98
|
|
95
99
|
model = (
|
96
|
-
agent_model
|
100
|
+
agent_model
|
101
|
+
and agent_model.spec
|
97
102
|
and agent_model.spec.runtime
|
98
103
|
and agent_model.spec.runtime.model
|
99
104
|
)
|
@@ -0,0 +1,108 @@
|
|
1
|
+
# Import necessary modules
|
2
|
+
import functools
|
3
|
+
from logging import getLogger
|
4
|
+
|
5
|
+
from langgraph.checkpoint.memory import MemorySaver
|
6
|
+
from langgraph.prebuilt import create_react_agent
|
7
|
+
|
8
|
+
from beamlit.api.models import get_model
|
9
|
+
from beamlit.authentication import new_client
|
10
|
+
from beamlit.common.settings import init
|
11
|
+
from beamlit.errors import UnexpectedStatus
|
12
|
+
from beamlit.functions import get_functions
|
13
|
+
from beamlit.models import Agent, AgentMetadata, AgentSpec
|
14
|
+
|
15
|
+
from .chat import get_chat_model
|
16
|
+
|
17
|
+
|
18
|
+
def agent(
|
19
|
+
agent: Agent | dict = None,
|
20
|
+
override_model=None,
|
21
|
+
override_agent=None,
|
22
|
+
mcp_hub=None,
|
23
|
+
remote_functions=None,
|
24
|
+
):
|
25
|
+
logger = getLogger(__name__)
|
26
|
+
try:
|
27
|
+
if agent is not None and not isinstance(agent, dict):
|
28
|
+
raise Exception(
|
29
|
+
'agent must be a dictionary, example: @agent(agent={"metadata": {"name": "my_agent"}})'
|
30
|
+
)
|
31
|
+
|
32
|
+
client = new_client()
|
33
|
+
chat_model = override_model or None
|
34
|
+
settings = init()
|
35
|
+
|
36
|
+
def wrapper(func):
|
37
|
+
@functools.wraps(func)
|
38
|
+
def wrapped(*args, **kwargs):
|
39
|
+
return func(
|
40
|
+
settings.agent.agent,
|
41
|
+
settings.agent.chat_model,
|
42
|
+
settings.agent.functions,
|
43
|
+
*args,
|
44
|
+
**kwargs,
|
45
|
+
)
|
46
|
+
|
47
|
+
return wrapped
|
48
|
+
|
49
|
+
if agent is not None:
|
50
|
+
metadata = AgentMetadata(**agent.get("metadata", {}))
|
51
|
+
spec = AgentSpec(**agent.get("spec", {}))
|
52
|
+
agent = Agent(metadata=metadata, spec=spec)
|
53
|
+
if agent.spec.model and chat_model is None:
|
54
|
+
try:
|
55
|
+
response = get_model.sync_detailed(
|
56
|
+
agent.spec.model, environment=settings.environment, client=client
|
57
|
+
)
|
58
|
+
settings.agent.model = response.parsed
|
59
|
+
except UnexpectedStatus as e:
|
60
|
+
if e.status_code == 404 and settings.environment != "production":
|
61
|
+
try:
|
62
|
+
response = get_model.sync_detailed(
|
63
|
+
agent.spec.model, environment="production", client=client
|
64
|
+
)
|
65
|
+
settings.agent.model = response.parsed
|
66
|
+
except UnexpectedStatus as e:
|
67
|
+
if e.status_code == 404:
|
68
|
+
raise ValueError(f"Model {agent.spec.model} not found")
|
69
|
+
else:
|
70
|
+
raise e
|
71
|
+
except Exception as e:
|
72
|
+
raise e
|
73
|
+
|
74
|
+
if settings.agent.model:
|
75
|
+
chat_model, provider, model = get_chat_model(agent.spec.model, settings.agent.model)
|
76
|
+
settings.agent.chat_model = chat_model
|
77
|
+
logger.info(f"Chat model configured, using: {provider}:{model}")
|
78
|
+
|
79
|
+
functions = get_functions(
|
80
|
+
client=client,
|
81
|
+
dir=settings.agent.functions_directory,
|
82
|
+
mcp_hub=mcp_hub,
|
83
|
+
remote_functions=remote_functions,
|
84
|
+
chain=agent.spec.agent_chain,
|
85
|
+
remote_functions_empty=not remote_functions,
|
86
|
+
)
|
87
|
+
settings.agent.functions = functions
|
88
|
+
|
89
|
+
if override_agent is None and len(functions) == 0:
|
90
|
+
raise ValueError(
|
91
|
+
"You must define at least one function, you can define this function in directory "
|
92
|
+
f'"{settings.agent.functions_directory}". Here is a sample function you can use:\n\n'
|
93
|
+
"from beamlit.functions import function\n\n"
|
94
|
+
"@function()\n"
|
95
|
+
"def hello_world(query: str):\n"
|
96
|
+
" return 'Hello, world!'\n"
|
97
|
+
)
|
98
|
+
|
99
|
+
if override_agent is None and chat_model is not None:
|
100
|
+
memory = MemorySaver()
|
101
|
+
_agent = create_react_agent(chat_model, functions, checkpointer=memory)
|
102
|
+
settings.agent.agent = _agent
|
103
|
+
else:
|
104
|
+
settings.agent.agent = override_agent
|
105
|
+
return wrapper
|
106
|
+
except Exception as e:
|
107
|
+
logger.error(f"Error in agent decorator: {e!s} at line {e.__traceback__.tb_lineno}")
|
108
|
+
raise e
|
@@ -6,7 +6,9 @@ import httpx
|
|
6
6
|
from ... import errors
|
7
7
|
from ...client import AuthenticatedClient, Client
|
8
8
|
from ...models.create_workspace_service_account_body import CreateWorkspaceServiceAccountBody
|
9
|
-
from ...models.create_workspace_service_account_response_200 import
|
9
|
+
from ...models.create_workspace_service_account_response_200 import (
|
10
|
+
CreateWorkspaceServiceAccountResponse200,
|
11
|
+
)
|
10
12
|
from ...types import Response
|
11
13
|
|
12
14
|
|
@@ -5,7 +5,9 @@ import httpx
|
|
5
5
|
|
6
6
|
from ... import errors
|
7
7
|
from ...client import AuthenticatedClient, Client
|
8
|
-
from ...models.delete_workspace_service_account_response_200 import
|
8
|
+
from ...models.delete_workspace_service_account_response_200 import (
|
9
|
+
DeleteWorkspaceServiceAccountResponse200,
|
10
|
+
)
|
9
11
|
from ...types import Response
|
10
12
|
|
11
13
|
|
@@ -5,7 +5,9 @@ import httpx
|
|
5
5
|
|
6
6
|
from ... import errors
|
7
7
|
from ...client import AuthenticatedClient, Client
|
8
|
-
from ...models.get_workspace_service_accounts_response_200_item import
|
8
|
+
from ...models.get_workspace_service_accounts_response_200_item import (
|
9
|
+
GetWorkspaceServiceAccountsResponse200Item,
|
10
|
+
)
|
9
11
|
from ...types import Response
|
10
12
|
|
11
13
|
|
@@ -6,7 +6,9 @@ import httpx
|
|
6
6
|
from ... import errors
|
7
7
|
from ...client import AuthenticatedClient, Client
|
8
8
|
from ...models.update_workspace_service_account_body import UpdateWorkspaceServiceAccountBody
|
9
|
-
from ...models.update_workspace_service_account_response_200 import
|
9
|
+
from ...models.update_workspace_service_account_response_200 import (
|
10
|
+
UpdateWorkspaceServiceAccountResponse200,
|
11
|
+
)
|
10
12
|
from ...types import Response
|
11
13
|
|
12
14
|
|
@@ -3,11 +3,15 @@ import json
|
|
3
3
|
import os
|
4
4
|
import shutil
|
5
5
|
import sys
|
6
|
-
from pathlib import Path
|
7
|
-
import yaml
|
8
6
|
from logging import getLogger
|
7
|
+
from pathlib import Path
|
9
8
|
from typing import Literal
|
10
9
|
|
10
|
+
import yaml
|
11
|
+
|
12
|
+
from beamlit.api.agents import get_agent
|
13
|
+
from beamlit.authentication import new_client
|
14
|
+
from beamlit.client import AuthenticatedClient
|
11
15
|
from beamlit.common import slugify
|
12
16
|
from beamlit.common.settings import Settings, get_settings, init
|
13
17
|
from beamlit.models import (
|
@@ -19,9 +23,7 @@ from beamlit.models import (
|
|
19
23
|
FunctionSpec,
|
20
24
|
MetadataLabels,
|
21
25
|
)
|
22
|
-
|
23
|
-
from beamlit.authentication import new_client
|
24
|
-
from beamlit.client import AuthenticatedClient
|
26
|
+
|
25
27
|
from .format import arg_to_dict
|
26
28
|
from .parser import Resource, get_description, get_parameters, get_resources
|
27
29
|
|
@@ -110,7 +112,7 @@ def get_agent_yaml(
|
|
110
112
|
try:
|
111
113
|
agent_response = get_agent.sync(agent.metadata.name, client=client)
|
112
114
|
agent.spec.repository = agent_response.spec.repository
|
113
|
-
except Exception
|
115
|
+
except Exception:
|
114
116
|
pass
|
115
117
|
agent.spec.functions = [slugify(function.metadata.name) for (_, function) in functions]
|
116
118
|
agent.metadata.labels = agent.metadata.labels and MetadataLabels.from_dict(agent.metadata.labels) or MetadataLabels()
|
{beamlit-0.0.34rc61/src/beamlit/agents → beamlit-0.0.34rc63/src/beamlit/functions}/decorator.py
RENAMED
@@ -1,30 +1,44 @@
|
|
1
|
-
|
1
|
+
"""Decorators for creating function tools with Beamlit and LangChain integration."""
|
2
2
|
import ast
|
3
3
|
import asyncio
|
4
4
|
import functools
|
5
|
-
import importlib
|
5
|
+
import importlib.util
|
6
6
|
import os
|
7
|
+
from collections.abc import Callable
|
7
8
|
from logging import getLogger
|
9
|
+
from typing import Union
|
8
10
|
|
11
|
+
from fastapi import Request
|
9
12
|
from langchain_core.tools import StructuredTool
|
10
|
-
from langgraph.checkpoint.memory import MemorySaver
|
11
|
-
from langgraph.prebuilt import create_react_agent
|
12
13
|
from langchain_core.tools.base import create_schema_from_function
|
13
14
|
|
14
|
-
from beamlit.api.models import get_model
|
15
15
|
from beamlit.authentication import new_client
|
16
|
+
from beamlit.client import AuthenticatedClient
|
16
17
|
from beamlit.common import slugify
|
17
|
-
from beamlit.common.settings import get_settings
|
18
|
-
from beamlit.errors import UnexpectedStatus
|
18
|
+
from beamlit.common.settings import get_settings
|
19
19
|
from beamlit.functions.mcp.mcp import MCPClient, MCPToolkit
|
20
20
|
from beamlit.functions.remote.remote import RemoteToolkit
|
21
|
-
from beamlit.models import
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
from beamlit.models import AgentChain, Function, FunctionKit
|
22
|
+
|
23
|
+
logger = getLogger(__name__)
|
24
|
+
|
25
|
+
def get_functions(
|
26
|
+
client:Union[AuthenticatedClient, None]=None,
|
27
|
+
dir:Union[str, None]=None,
|
28
|
+
mcp_hub:Union[list[str], None]=None,
|
29
|
+
remote_functions:Union[list[str], None]=None,
|
30
|
+
chain:Union[list[AgentChain], None]=None,
|
31
|
+
remote_functions_empty:bool=True,
|
32
|
+
from_decorator:str="function",
|
33
|
+
):
|
34
|
+
from beamlit.agents.chain import ChainToolkit
|
25
35
|
|
36
|
+
settings = get_settings()
|
37
|
+
if client is None:
|
38
|
+
client = new_client()
|
39
|
+
if dir is None:
|
40
|
+
dir = settings.agent.functions_directory
|
26
41
|
|
27
|
-
def get_functions(client, dir="src/functions", from_decorator="function", remote_functions_empty=True):
|
28
42
|
functions = []
|
29
43
|
logger = getLogger(__name__)
|
30
44
|
settings = get_settings()
|
@@ -59,7 +73,6 @@ def get_functions(client, dir="src/functions", from_decorator="function", remote
|
|
59
73
|
decorator_name = decorator.func.id
|
60
74
|
if isinstance(decorator, ast.Name):
|
61
75
|
decorator_name = decorator.id
|
62
|
-
|
63
76
|
if decorator_name == from_decorator:
|
64
77
|
# Get the function name and decorator name
|
65
78
|
func_name = node.name
|
@@ -78,10 +91,10 @@ def get_functions(client, dir="src/functions", from_decorator="function", remote
|
|
78
91
|
is_kit = keyword.value.value
|
79
92
|
if is_kit and not settings.remote:
|
80
93
|
kit_functions = get_functions(
|
81
|
-
client,
|
94
|
+
client=client,
|
82
95
|
dir=os.path.join(root),
|
83
|
-
from_decorator="kit",
|
84
96
|
remote_functions_empty=remote_functions_empty,
|
97
|
+
from_decorator="kit",
|
85
98
|
)
|
86
99
|
functions.extend(kit_functions)
|
87
100
|
|
@@ -104,6 +117,7 @@ def get_functions(client, dir="src/functions", from_decorator="function", remote
|
|
104
117
|
)
|
105
118
|
)
|
106
119
|
else:
|
120
|
+
|
107
121
|
functions.append(
|
108
122
|
StructuredTool(
|
109
123
|
name=func.__name__,
|
@@ -114,122 +128,65 @@ def get_functions(client, dir="src/functions", from_decorator="function", remote
|
|
114
128
|
)
|
115
129
|
except Exception as e:
|
116
130
|
logger.warning(f"Error processing {file_path}: {e!s}")
|
131
|
+
|
132
|
+
if mcp_hub:
|
133
|
+
for server in mcp_hub:
|
134
|
+
try:
|
135
|
+
mcp_client = MCPClient(client, server)
|
136
|
+
toolkit = MCPToolkit(client=mcp_client)
|
137
|
+
toolkit.initialize()
|
138
|
+
functions.extend(toolkit.get_tools())
|
139
|
+
except Exception as e:
|
140
|
+
logger.warn(f"Failed to initialize MCP server {server}: {e!s}")
|
141
|
+
|
142
|
+
if remote_functions:
|
143
|
+
for function in remote_functions:
|
144
|
+
try:
|
145
|
+
toolkit = RemoteToolkit(client, function)
|
146
|
+
toolkit.initialize()
|
147
|
+
functions.extend(toolkit.get_tools())
|
148
|
+
except Exception as e:
|
149
|
+
logger.warn(f"Failed to initialize remote function {function}: {e!s}")
|
150
|
+
|
151
|
+
if chain:
|
152
|
+
toolkit = ChainToolkit(client, chain)
|
153
|
+
toolkit.initialize()
|
154
|
+
functions.extend(toolkit.get_tools())
|
155
|
+
|
117
156
|
return functions
|
118
157
|
|
119
158
|
|
120
|
-
def agent(
|
121
|
-
agent: Agent | dict = None,
|
122
|
-
override_model=None,
|
123
|
-
override_agent=None,
|
124
|
-
mcp_hub=None,
|
125
|
-
remote_functions=None,
|
126
|
-
):
|
127
|
-
logger = getLogger(__name__)
|
128
|
-
try:
|
129
|
-
if agent is not None and not isinstance(agent, dict):
|
130
|
-
raise Exception(
|
131
|
-
'agent must be a dictionary, example: @agent(agent={"metadata": {"name": "my_agent"}})'
|
132
|
-
)
|
133
159
|
|
134
|
-
|
135
|
-
|
136
|
-
settings = init()
|
137
|
-
|
138
|
-
def wrapper(func):
|
139
|
-
@functools.wraps(func)
|
140
|
-
def wrapped(*args, **kwargs):
|
141
|
-
return func(
|
142
|
-
settings.agent.agent,
|
143
|
-
settings.agent.chat_model,
|
144
|
-
settings.agent.functions,
|
145
|
-
*args,
|
146
|
-
**kwargs,
|
147
|
-
)
|
148
|
-
|
149
|
-
return wrapped
|
150
|
-
|
151
|
-
# Initialize functions array to store decorated functions
|
152
|
-
functions = get_functions(
|
153
|
-
client,
|
154
|
-
dir=settings.agent.functions_directory,
|
155
|
-
remote_functions_empty=not remote_functions,
|
156
|
-
)
|
160
|
+
def kit(bl_kit: FunctionKit = None, **kwargs: dict) -> Callable:
|
161
|
+
"""Create function tools with Beamlit and LangChain integration."""
|
157
162
|
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
logger.info(f"Chat model configured, using: {provider}:{model}")
|
189
|
-
|
190
|
-
if mcp_hub:
|
191
|
-
for server in mcp_hub:
|
192
|
-
try:
|
193
|
-
mcp_client = MCPClient(client, server)
|
194
|
-
toolkit = MCPToolkit(client=mcp_client)
|
195
|
-
toolkit.initialize()
|
196
|
-
functions.extend(toolkit.get_tools())
|
197
|
-
except Exception as e:
|
198
|
-
logger.warn(f"Failed to initialize MCP server {server}: {e!s}")
|
199
|
-
|
200
|
-
if remote_functions:
|
201
|
-
for function in remote_functions:
|
202
|
-
try:
|
203
|
-
toolkit = RemoteToolkit(client, function)
|
204
|
-
toolkit.initialize()
|
205
|
-
functions.extend(toolkit.get_tools())
|
206
|
-
except Exception as e:
|
207
|
-
logger.warn(f"Failed to initialize remote function {function}: {e!s}")
|
208
|
-
|
209
|
-
if agent.spec.agent_chain:
|
210
|
-
toolkit = ChainToolkit(client, agent.spec.agent_chain)
|
211
|
-
toolkit.initialize()
|
212
|
-
functions.extend(toolkit.get_tools())
|
213
|
-
|
214
|
-
settings.agent.functions = functions
|
215
|
-
|
216
|
-
if override_agent is None and len(functions) == 0:
|
217
|
-
raise ValueError(
|
218
|
-
"You must define at least one function, you can define this function in directory "
|
219
|
-
f'"{settings.agent.functions_directory}". Here is a sample function you can use:\n\n'
|
220
|
-
"from beamlit.functions import function\n\n"
|
221
|
-
"@function()\n"
|
222
|
-
"def hello_world(query: str):\n"
|
223
|
-
" return 'Hello, world!'\n"
|
224
|
-
)
|
225
|
-
|
226
|
-
if override_agent is None and chat_model is not None:
|
227
|
-
memory = MemorySaver()
|
228
|
-
agent = create_react_agent(chat_model, functions, checkpointer=memory)
|
229
|
-
settings.agent.agent = agent
|
230
|
-
else:
|
231
|
-
settings.agent.agent = override_agent
|
232
|
-
return wrapper
|
233
|
-
except Exception as e:
|
234
|
-
logger.error(f"Error in agent decorator: {e!s} at line {e.__traceback__.tb_lineno}")
|
235
|
-
raise e
|
163
|
+
def wrapper(func: Callable) -> Callable:
|
164
|
+
if bl_kit and not func.__doc__ and bl_kit.description:
|
165
|
+
func.__doc__ = bl_kit.description
|
166
|
+
return func
|
167
|
+
|
168
|
+
return wrapper
|
169
|
+
|
170
|
+
|
171
|
+
def function(*args, function: Function | dict = None, kit=False, **kwargs: dict) -> Callable:
|
172
|
+
"""Create function tools with Beamlit and LangChain integration."""
|
173
|
+
if function is not None and not isinstance(function, dict):
|
174
|
+
raise Exception(
|
175
|
+
'function must be a dictionary, example: @function(function={"metadata": {"name": "my_function"}})'
|
176
|
+
)
|
177
|
+
if isinstance(function, dict):
|
178
|
+
function = Function(**function)
|
179
|
+
|
180
|
+
def wrapper(func: Callable) -> Callable:
|
181
|
+
if function and not func.__doc__ and function.spec and function.spec.description:
|
182
|
+
func.__doc__ = function.spec.description
|
183
|
+
|
184
|
+
@functools.wraps(func)
|
185
|
+
async def wrapped(*args, **kwargs):
|
186
|
+
if len(args) > 0 and isinstance(args[0], Request):
|
187
|
+
body = await args[0].json()
|
188
|
+
args = [body.get(param) for param in func.__code__.co_varnames[:func.__code__.co_argcount]]
|
189
|
+
return await func(*args, **kwargs) if asyncio.iscoroutinefunction(func) else func(*args, **kwargs)
|
190
|
+
return wrapped
|
191
|
+
|
192
|
+
return wrapper
|
@@ -33,7 +33,9 @@ from .function_spec import FunctionSpec
|
|
33
33
|
from .get_trace_ids_response_200 import GetTraceIdsResponse200
|
34
34
|
from .get_trace_logs_response_200 import GetTraceLogsResponse200
|
35
35
|
from .get_trace_response_200 import GetTraceResponse200
|
36
|
-
from .get_workspace_service_accounts_response_200_item import
|
36
|
+
from .get_workspace_service_accounts_response_200_item import (
|
37
|
+
GetWorkspaceServiceAccountsResponse200Item,
|
38
|
+
)
|
37
39
|
from .increase_and_rate_metric import IncreaseAndRateMetric
|
38
40
|
from .integration_config import IntegrationConfig
|
39
41
|
from .integration_connection import IntegrationConnection
|
@@ -0,0 +1,11 @@
|
|
1
|
+
from beamlit.api.models import list_models
|
2
|
+
from beamlit.authentication import new_client
|
3
|
+
from beamlit.common.settings import init
|
4
|
+
from beamlit.deploy import generate_beamlit_deployment
|
5
|
+
|
6
|
+
settings = init()
|
7
|
+
client = new_client()
|
8
|
+
models = list_models.sync(client=client)
|
9
|
+
|
10
|
+
print(models)
|
11
|
+
generate_beamlit_deployment(".beamlit")
|
@@ -1,45 +0,0 @@
|
|
1
|
-
"""Decorators for creating function tools with Beamlit and LangChain integration."""
|
2
|
-
import asyncio
|
3
|
-
import functools
|
4
|
-
from collections.abc import Callable
|
5
|
-
from logging import getLogger
|
6
|
-
|
7
|
-
from fastapi import Request
|
8
|
-
|
9
|
-
from beamlit.models import Function, FunctionKit
|
10
|
-
|
11
|
-
logger = getLogger(__name__)
|
12
|
-
|
13
|
-
def kit(bl_kit: FunctionKit = None, **kwargs: dict) -> Callable:
|
14
|
-
"""Create function tools with Beamlit and LangChain integration."""
|
15
|
-
|
16
|
-
def wrapper(func: Callable) -> Callable:
|
17
|
-
if bl_kit and not func.__doc__ and bl_kit.description:
|
18
|
-
func.__doc__ = bl_kit.description
|
19
|
-
return func
|
20
|
-
|
21
|
-
return wrapper
|
22
|
-
|
23
|
-
|
24
|
-
def function(*args, function: Function | dict = None, kit=False, **kwargs: dict) -> Callable:
|
25
|
-
"""Create function tools with Beamlit and LangChain integration."""
|
26
|
-
if function is not None and not isinstance(function, dict):
|
27
|
-
raise Exception(
|
28
|
-
'function must be a dictionary, example: @function(function={"metadata": {"name": "my_function"}})'
|
29
|
-
)
|
30
|
-
if isinstance(function, dict):
|
31
|
-
function = Function(**function)
|
32
|
-
|
33
|
-
def wrapper(func: Callable) -> Callable:
|
34
|
-
if function and not func.__doc__ and function.spec and function.spec.description:
|
35
|
-
func.__doc__ = function.spec.description
|
36
|
-
|
37
|
-
@functools.wraps(func)
|
38
|
-
async def wrapped(*args, **kwargs):
|
39
|
-
if len(args) > 0 and isinstance(args[0], Request):
|
40
|
-
body = await args[0].json()
|
41
|
-
args = [body.get(param) for param in func.__code__.co_varnames[:func.__code__.co_argcount]]
|
42
|
-
return await func(*args, **kwargs) if asyncio.iscoroutinefunction(func) else func(*args, **kwargs)
|
43
|
-
return wrapped
|
44
|
-
|
45
|
-
return wrapper
|
@@ -1,13 +0,0 @@
|
|
1
|
-
from beamlit.api.models import get_model, list_models
|
2
|
-
from beamlit.authentication import get_authentication_headers, new_client
|
3
|
-
from beamlit.common.settings import init
|
4
|
-
from beamlit.models import Model
|
5
|
-
from beamlit.run import RunClient
|
6
|
-
from beamlit.deploy import generate_beamlit_deployment
|
7
|
-
|
8
|
-
settings = init()
|
9
|
-
client = new_client()
|
10
|
-
models = list_models.sync(client=client)
|
11
|
-
|
12
|
-
print(models)
|
13
|
-
generate_beamlit_deployment(".beamlit")
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{beamlit-0.0.34rc61 → beamlit-0.0.34rc63}/src/beamlit/api/agents/get_agent_environment_logs.py
RENAMED
File without changes
|