beamlit 0.0.34rc61__tar.gz → 0.0.34rc62__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.
Files changed (279) hide show
  1. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/PKG-INFO +1 -1
  2. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/pyproject.toml +1 -1
  3. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/agents/chat.py +4 -1
  4. beamlit-0.0.34rc62/src/beamlit/agents/decorator.py +108 -0
  5. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/create_workspace_service_account.py +3 -1
  6. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/delete_workspace_service_account.py +3 -1
  7. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/get_workspace_service_accounts.py +3 -1
  8. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/update_workspace_service_account.py +3 -1
  9. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/deploy/deploy.py +8 -6
  10. beamlit-0.0.34rc62/src/beamlit/functions/__init__.py +5 -0
  11. {beamlit-0.0.34rc61/src/beamlit/agents → beamlit-0.0.34rc62/src/beamlit/functions}/decorator.py +86 -130
  12. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/__init__.py +3 -1
  13. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/integrationtest/agent.py +1 -0
  14. beamlit-0.0.34rc62/src/integrationtest/main.py +11 -0
  15. beamlit-0.0.34rc61/src/beamlit/functions/__init__.py +0 -5
  16. beamlit-0.0.34rc61/src/beamlit/functions/decorator.py +0 -45
  17. beamlit-0.0.34rc61/src/integrationtest/main.py +0 -13
  18. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/.gitignore +0 -0
  19. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/README.md +0 -0
  20. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/beamlit.yaml +0 -0
  21. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/__init__.py +0 -0
  22. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/agents/__init__.py +0 -0
  23. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/agents/chain.py +0 -0
  24. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/__init__.py +0 -0
  25. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/agents/__init__.py +0 -0
  26. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/agents/create_agent.py +0 -0
  27. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/agents/create_agent_release.py +0 -0
  28. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/agents/delete_agent.py +0 -0
  29. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/agents/delete_agent_history.py +0 -0
  30. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/agents/get_agent.py +0 -0
  31. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/agents/get_agent_environment_logs.py +0 -0
  32. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/agents/get_agent_history.py +0 -0
  33. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/agents/get_agent_metrics.py +0 -0
  34. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/agents/get_agent_trace_ids.py +0 -0
  35. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/agents/list_agent_history.py +0 -0
  36. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/agents/list_agents.py +0 -0
  37. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/agents/put_agent_history.py +0 -0
  38. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/agents/update_agent.py +0 -0
  39. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/configurations/__init__.py +0 -0
  40. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/configurations/get_configuration.py +0 -0
  41. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/default/__init__.py +0 -0
  42. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/default/get_trace.py +0 -0
  43. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/default/get_trace_ids.py +0 -0
  44. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/default/get_trace_logs.py +0 -0
  45. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/environments/__init__.py +0 -0
  46. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/environments/create_environment.py +0 -0
  47. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/environments/delete_environment.py +0 -0
  48. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/environments/get_environment.py +0 -0
  49. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/environments/get_environment_metrics.py +0 -0
  50. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/environments/list_environments.py +0 -0
  51. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/environments/update_environment.py +0 -0
  52. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/functions/__init__.py +0 -0
  53. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/functions/create_function.py +0 -0
  54. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/functions/create_function_release.py +0 -0
  55. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/functions/delete_function.py +0 -0
  56. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/functions/get_function.py +0 -0
  57. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/functions/get_function_environment_logs.py +0 -0
  58. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/functions/get_function_metrics.py +0 -0
  59. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/functions/get_function_trace_ids.py +0 -0
  60. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/functions/list_functions.py +0 -0
  61. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/functions/update_function.py +0 -0
  62. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/history/__init__.py +0 -0
  63. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/history/get_agents_history.py +0 -0
  64. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/history/list_agents_history.py +0 -0
  65. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/__init__.py +0 -0
  66. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/create_integration_connection.py +0 -0
  67. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/delete_integration_connection.py +0 -0
  68. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/get_integration.py +0 -0
  69. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/get_integration_connection.py +0 -0
  70. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/get_integration_connection_model.py +0 -0
  71. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/get_integration_model.py +0 -0
  72. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/list_integration_connection_models.py +0 -0
  73. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/list_integration_connections.py +0 -0
  74. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/list_integration_models.py +0 -0
  75. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/integrations/update_integration_connection.py +0 -0
  76. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/invitations/__init__.py +0 -0
  77. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/invitations/list_all_pending_invitations.py +0 -0
  78. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/locations/__init__.py +0 -0
  79. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/locations/list_locations.py +0 -0
  80. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/metrics/__init__.py +0 -0
  81. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/metrics/get_metrics.py +0 -0
  82. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/model_providers/__init__.py +0 -0
  83. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/model_providers/create_model_provider.py +0 -0
  84. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/model_providers/delete_model_provider.py +0 -0
  85. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/model_providers/get_model_provider.py +0 -0
  86. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/model_providers/list_model_providers.py +0 -0
  87. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/model_providers/update_model_provider.py +0 -0
  88. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/models/__init__.py +0 -0
  89. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/models/create_model.py +0 -0
  90. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/models/delete_model.py +0 -0
  91. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/models/get_model.py +0 -0
  92. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/models/get_model_environment_logs.py +0 -0
  93. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/models/get_model_metrics.py +0 -0
  94. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/models/get_model_trace_ids.py +0 -0
  95. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/models/list_models.py +0 -0
  96. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/models/release_model.py +0 -0
  97. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/models/update_model.py +0 -0
  98. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/policies/__init__.py +0 -0
  99. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/policies/create_policy.py +0 -0
  100. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/policies/delete_policy.py +0 -0
  101. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/policies/get_policy.py +0 -0
  102. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/policies/list_policies.py +0 -0
  103. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/policies/update_policy.py +0 -0
  104. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/__init__.py +0 -0
  105. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/create_private_cluster.py +0 -0
  106. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/delete_private_cluster.py +0 -0
  107. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/get_private_cluster.py +0 -0
  108. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/get_private_cluster_health.py +0 -0
  109. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/list_private_clusters.py +0 -0
  110. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/update_private_cluster.py +0 -0
  111. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/privateclusters/update_private_cluster_health.py +0 -0
  112. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/__init__.py +0 -0
  113. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/create_api_key_for_service_account.py +0 -0
  114. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/delete_api_key_for_service_account.py +0 -0
  115. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/service_accounts/list_api_keys_for_service_account.py +0 -0
  116. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/store/__init__.py +0 -0
  117. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/store/get_store_agent.py +0 -0
  118. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/store/get_store_function.py +0 -0
  119. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/store/list_store_agents.py +0 -0
  120. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/store/list_store_functions.py +0 -0
  121. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/__init__.py +0 -0
  122. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/accept_workspace_invitation.py +0 -0
  123. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/create_worspace.py +0 -0
  124. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/decline_workspace_invitation.py +0 -0
  125. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/delete_workspace.py +0 -0
  126. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/get_workspace.py +0 -0
  127. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/invite_workspace_user.py +0 -0
  128. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/leave_workspace.py +0 -0
  129. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/list_workspace_users.py +0 -0
  130. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/list_workspaces.py +0 -0
  131. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/remove_workspace_user.py +0 -0
  132. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/update_workspace.py +0 -0
  133. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/api/workspaces/update_workspace_user_role.py +0 -0
  134. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/authentication/__init__.py +0 -0
  135. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/authentication/apikey.py +0 -0
  136. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/authentication/authentication.py +0 -0
  137. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/authentication/clientcredentials.py +0 -0
  138. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/authentication/credentials.py +0 -0
  139. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/authentication/device_mode.py +0 -0
  140. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/client.py +0 -0
  141. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/common/__init__.py +0 -0
  142. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/common/error.py +0 -0
  143. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/common/instrumentation.py +0 -0
  144. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/common/logger.py +0 -0
  145. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/common/secrets.py +0 -0
  146. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/common/settings.py +0 -0
  147. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/common/slugify.py +0 -0
  148. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/common/utils.py +0 -0
  149. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/deploy/__init__.py +0 -0
  150. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/deploy/format.py +0 -0
  151. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/deploy/parser.py +0 -0
  152. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/errors.py +0 -0
  153. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/functions/github/__init__.py +0 -0
  154. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/functions/github/github.py +0 -0
  155. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/functions/github/kit/__init__.py +0 -0
  156. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/functions/github/kit/pull_request.py +0 -0
  157. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/functions/math/__init__.py +0 -0
  158. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/functions/math/math.py +0 -0
  159. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/functions/mcp/mcp.py +0 -0
  160. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/functions/remote/remote.py +0 -0
  161. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/functions/search/__init__.py +0 -0
  162. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/functions/search/search.py +0 -0
  163. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/acl.py +0 -0
  164. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/agent.py +0 -0
  165. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/agent_chain.py +0 -0
  166. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/agent_history.py +0 -0
  167. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/agent_history_event.py +0 -0
  168. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/agent_metadata.py +0 -0
  169. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/agent_release.py +0 -0
  170. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/agent_spec.py +0 -0
  171. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/api_key.py +0 -0
  172. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/configuration.py +0 -0
  173. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/continent.py +0 -0
  174. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/core_event.py +0 -0
  175. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/core_spec.py +0 -0
  176. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/core_spec_configurations.py +0 -0
  177. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/core_status.py +0 -0
  178. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/country.py +0 -0
  179. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/create_api_key_for_service_account_body.py +0 -0
  180. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/create_workspace_service_account_body.py +0 -0
  181. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/create_workspace_service_account_response_200.py +0 -0
  182. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/delete_workspace_service_account_response_200.py +0 -0
  183. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/environment.py +0 -0
  184. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/environment_metadata.py +0 -0
  185. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/environment_metrics.py +0 -0
  186. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/environment_spec.py +0 -0
  187. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/flavor.py +0 -0
  188. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/function.py +0 -0
  189. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/function_kit.py +0 -0
  190. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/function_metadata.py +0 -0
  191. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/function_release.py +0 -0
  192. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/function_spec.py +0 -0
  193. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/get_trace_ids_response_200.py +0 -0
  194. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/get_trace_logs_response_200.py +0 -0
  195. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/get_trace_response_200.py +0 -0
  196. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/get_workspace_service_accounts_response_200_item.py +0 -0
  197. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/increase_and_rate_metric.py +0 -0
  198. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/integration_config.py +0 -0
  199. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/integration_connection.py +0 -0
  200. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/integration_connection_config.py +0 -0
  201. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/integration_connection_secret.py +0 -0
  202. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/integration_connection_spec.py +0 -0
  203. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/integration_model.py +0 -0
  204. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/integration_repository.py +0 -0
  205. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/invite_workspace_user_body.py +0 -0
  206. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/last_n_requests_metric.py +0 -0
  207. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/latency_metric.py +0 -0
  208. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/location_response.py +0 -0
  209. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/metadata.py +0 -0
  210. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/metadata_labels.py +0 -0
  211. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/metric.py +0 -0
  212. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/metrics.py +0 -0
  213. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/model.py +0 -0
  214. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/model_metadata.py +0 -0
  215. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/model_private_cluster.py +0 -0
  216. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/model_provider.py +0 -0
  217. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/model_release.py +0 -0
  218. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/model_spec.py +0 -0
  219. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/owner_fields.py +0 -0
  220. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/pending_invitation.py +0 -0
  221. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/pending_invitation_accept.py +0 -0
  222. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/pending_invitation_render.py +0 -0
  223. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/pending_invitation_render_invited_by.py +0 -0
  224. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/pending_invitation_render_workspace.py +0 -0
  225. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/pending_invitation_workspace_details.py +0 -0
  226. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/pod_template_spec.py +0 -0
  227. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/policy.py +0 -0
  228. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/policy_location.py +0 -0
  229. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/policy_spec.py +0 -0
  230. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/private_cluster.py +0 -0
  231. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/private_location.py +0 -0
  232. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/provider_config.py +0 -0
  233. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/qps.py +0 -0
  234. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/repository.py +0 -0
  235. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/request_total_metric.py +0 -0
  236. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/resource_deployment_metrics.py +0 -0
  237. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/resource_deployment_metrics_inference_per_second_per_region.py +0 -0
  238. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/resource_deployment_metrics_query_per_second_per_region_per_code.py +0 -0
  239. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/resource_environment_metrics.py +0 -0
  240. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/resource_environment_metrics_inference_per_region.py +0 -0
  241. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/resource_environment_metrics_inference_per_second_per_region.py +0 -0
  242. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/resource_environment_metrics_query_per_region_per_code.py +0 -0
  243. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/resource_environment_metrics_query_per_second_per_region_per_code.py +0 -0
  244. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/resource_log.py +0 -0
  245. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/resource_metrics.py +0 -0
  246. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/runtime.py +0 -0
  247. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/runtime_readiness_probe.py +0 -0
  248. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/runtime_resources.py +0 -0
  249. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/serverless_config.py +0 -0
  250. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/spec_configuration.py +0 -0
  251. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/store_agent.py +0 -0
  252. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/store_agent_labels.py +0 -0
  253. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/store_configuration.py +0 -0
  254. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/store_configuration_option.py +0 -0
  255. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/store_function.py +0 -0
  256. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/store_function_kit.py +0 -0
  257. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/store_function_labels.py +0 -0
  258. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/store_function_parameter.py +0 -0
  259. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/time_fields.py +0 -0
  260. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/trace_ids_response.py +0 -0
  261. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/update_workspace_service_account_body.py +0 -0
  262. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/update_workspace_service_account_response_200.py +0 -0
  263. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/update_workspace_user_role_body.py +0 -0
  264. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/websocket_channel.py +0 -0
  265. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/workspace.py +0 -0
  266. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/workspace_labels.py +0 -0
  267. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/models/workspace_user.py +0 -0
  268. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/py.typed +0 -0
  269. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/run.py +0 -0
  270. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/serve/app.py +1 -1
  271. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/serve/middlewares/__init__.py +0 -0
  272. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/serve/middlewares/accesslog.py +0 -0
  273. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/serve/middlewares/processtime.py +0 -0
  274. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/beamlit/types.py +0 -0
  275. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/integrationtest/beamlit.yaml +0 -0
  276. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/integrationtest/functions/helloworld.py +0 -0
  277. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/integrationtest/pyproject.toml +0 -0
  278. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/src/integrationtest/uv.lock +0 -0
  279. {beamlit-0.0.34rc61 → beamlit-0.0.34rc62}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beamlit
3
- Version: 0.0.34rc61
3
+ Version: 0.0.34rc62
4
4
  Summary: Add your description here
5
5
  Author-email: cploujoux <ch.ploujoux@gmail.com>
6
6
  Requires-Python: >=3.12
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "beamlit"
3
- version = "0.0.34.pre-61"
3
+ version = "0.0.34.pre-62"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -1,4 +1,7 @@
1
1
  from logging import getLogger
2
+ from typing import Tuple
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,7 +42,7 @@ 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: Model) -> Tuple[BaseChatModel, str, str]:
43
46
  settings = get_settings()
44
47
  client = new_client()
45
48
 
@@ -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 CreateWorkspaceServiceAccountResponse200
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 DeleteWorkspaceServiceAccountResponse200
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 GetWorkspaceServiceAccountsResponse200Item
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 UpdateWorkspaceServiceAccountResponse200
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
- from beamlit.api.agents import get_agent
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 as e:
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()
@@ -0,0 +1,5 @@
1
+ """Functions package providing function decorators and utilities."""
2
+
3
+ from .decorator import function, get_functions, kit
4
+
5
+ __all__ = ["function", "kit", "get_functions"]
@@ -1,30 +1,43 @@
1
- # Import necessary modules
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
+ from beamlit.agents.chain import ChainToolkit
15
16
  from beamlit.authentication import new_client
17
+ from beamlit.client import AuthenticatedClient
16
18
  from beamlit.common import slugify
17
- from beamlit.common.settings import get_settings, init
18
- from beamlit.errors import UnexpectedStatus
19
+ from beamlit.common.settings import get_settings
19
20
  from beamlit.functions.mcp.mcp import MCPClient, MCPToolkit
20
21
  from beamlit.functions.remote.remote import RemoteToolkit
21
- from beamlit.models import Agent, AgentMetadata, AgentSpec
22
-
23
- from .chain import ChainToolkit
24
- from .chat import get_chat_model
25
-
22
+ from beamlit.models import AgentChain, Function, FunctionKit
23
+
24
+ logger = getLogger(__name__)
25
+
26
+ def get_functions(
27
+ client:Union[AuthenticatedClient, None]=None,
28
+ dir:Union[str, None]=None,
29
+ mcp_hub:Union[list[str], None]=None,
30
+ remote_functions:Union[list[str], None]=None,
31
+ chain:Union[list[AgentChain], None]=None,
32
+ remote_functions_empty:bool=True,
33
+ from_decorator:str="function",
34
+ ):
35
+ settings = get_settings()
36
+ if client is None:
37
+ client = new_client()
38
+ if dir is None:
39
+ dir = settings.agent.functions_directory
26
40
 
27
- def get_functions(client, dir="src/functions", from_decorator="function", remote_functions_empty=True):
28
41
  functions = []
29
42
  logger = getLogger(__name__)
30
43
  settings = get_settings()
@@ -59,7 +72,6 @@ def get_functions(client, dir="src/functions", from_decorator="function", remote
59
72
  decorator_name = decorator.func.id
60
73
  if isinstance(decorator, ast.Name):
61
74
  decorator_name = decorator.id
62
-
63
75
  if decorator_name == from_decorator:
64
76
  # Get the function name and decorator name
65
77
  func_name = node.name
@@ -78,10 +90,10 @@ def get_functions(client, dir="src/functions", from_decorator="function", remote
78
90
  is_kit = keyword.value.value
79
91
  if is_kit and not settings.remote:
80
92
  kit_functions = get_functions(
81
- client,
93
+ client=client,
82
94
  dir=os.path.join(root),
83
- from_decorator="kit",
84
95
  remote_functions_empty=remote_functions_empty,
96
+ from_decorator="kit",
85
97
  )
86
98
  functions.extend(kit_functions)
87
99
 
@@ -104,6 +116,7 @@ def get_functions(client, dir="src/functions", from_decorator="function", remote
104
116
  )
105
117
  )
106
118
  else:
119
+
107
120
  functions.append(
108
121
  StructuredTool(
109
122
  name=func.__name__,
@@ -114,122 +127,65 @@ def get_functions(client, dir="src/functions", from_decorator="function", remote
114
127
  )
115
128
  except Exception as e:
116
129
  logger.warning(f"Error processing {file_path}: {e!s}")
130
+
131
+ if mcp_hub:
132
+ for server in mcp_hub:
133
+ try:
134
+ mcp_client = MCPClient(client, server)
135
+ toolkit = MCPToolkit(client=mcp_client)
136
+ toolkit.initialize()
137
+ functions.extend(toolkit.get_tools())
138
+ except Exception as e:
139
+ logger.warn(f"Failed to initialize MCP server {server}: {e!s}")
140
+
141
+ if remote_functions:
142
+ for function in remote_functions:
143
+ try:
144
+ toolkit = RemoteToolkit(client, function)
145
+ toolkit.initialize()
146
+ functions.extend(toolkit.get_tools())
147
+ except Exception as e:
148
+ logger.warn(f"Failed to initialize remote function {function}: {e!s}")
149
+
150
+ if chain:
151
+ toolkit = ChainToolkit(client, chain)
152
+ toolkit.initialize()
153
+ functions.extend(toolkit.get_tools())
154
+
117
155
  return functions
118
156
 
119
157
 
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
158
 
134
- client = new_client()
135
- chat_model = override_model or None
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
- )
159
+ def kit(bl_kit: FunctionKit = None, **kwargs: dict) -> Callable:
160
+ """Create function tools with Beamlit and LangChain integration."""
157
161
 
158
-
159
-
160
- if agent is not None:
161
- metadata = AgentMetadata(**agent.get("metadata", {}))
162
- spec = AgentSpec(**agent.get("spec", {}))
163
- agent = Agent(metadata=metadata, spec=spec)
164
- if agent.spec.model and chat_model is None:
165
- try:
166
- response = get_model.sync_detailed(
167
- agent.spec.model, environment=settings.environment, client=client
168
- )
169
- settings.agent.model = response.parsed
170
- except UnexpectedStatus as e:
171
- if e.status_code == 404 and settings.environment != "production":
172
- try:
173
- response = get_model.sync_detailed(
174
- agent.spec.model, environment="production", client=client
175
- )
176
- settings.agent.model = response.parsed
177
- except UnexpectedStatus as e:
178
- if e.status_code == 404:
179
- raise ValueError(f"Model {agent.spec.model} not found")
180
- else:
181
- raise e
182
- except Exception as e:
183
- raise e
184
-
185
- if settings.agent.model:
186
- chat_model, provider, model = get_chat_model(agent.spec.model, settings.agent.model)
187
- settings.agent.chat_model = chat_model
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
162
+ def wrapper(func: Callable) -> Callable:
163
+ if bl_kit and not func.__doc__ and bl_kit.description:
164
+ func.__doc__ = bl_kit.description
165
+ return func
166
+
167
+ return wrapper
168
+
169
+
170
+ def function(*args, function: Function | dict = None, kit=False, **kwargs: dict) -> Callable:
171
+ """Create function tools with Beamlit and LangChain integration."""
172
+ if function is not None and not isinstance(function, dict):
173
+ raise Exception(
174
+ 'function must be a dictionary, example: @function(function={"metadata": {"name": "my_function"}})'
175
+ )
176
+ if isinstance(function, dict):
177
+ function = Function(**function)
178
+
179
+ def wrapper(func: Callable) -> Callable:
180
+ if function and not func.__doc__ and function.spec and function.spec.description:
181
+ func.__doc__ = function.spec.description
182
+
183
+ @functools.wraps(func)
184
+ async def wrapped(*args, **kwargs):
185
+ if len(args) > 0 and isinstance(args[0], Request):
186
+ body = await args[0].json()
187
+ args = [body.get(param) for param in func.__code__.co_varnames[:func.__code__.co_argcount]]
188
+ return await func(*args, **kwargs) if asyncio.iscoroutinefunction(func) else func(*args, **kwargs)
189
+ return wrapped
190
+
191
+ 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 GetWorkspaceServiceAccountsResponse200Item
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
@@ -15,6 +15,7 @@ from beamlit.agents import agent
15
15
  "model": "gpt-4o-mini",
16
16
  },
17
17
  },
18
+ remote_functions=["math"],
18
19
  )
19
20
  async def main(
20
21
  agent, chat_model, tools, body, headers=None, query_params=None, **_
@@ -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,5 +0,0 @@
1
- """Functions package providing function decorators and utilities."""
2
-
3
- from .decorator import function, kit
4
-
5
- __all__ = ["function", "kit"]
@@ -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