chainlit 1.0.401__py3-none-any.whl → 2.0.3__py3-none-any.whl

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.

Potentially problematic release.


This version of chainlit might be problematic. Click here for more details.

Files changed (112) hide show
  1. chainlit/__init__.py +98 -279
  2. chainlit/_utils.py +8 -0
  3. chainlit/action.py +12 -10
  4. chainlit/{auth.py → auth/__init__.py} +28 -36
  5. chainlit/auth/cookie.py +122 -0
  6. chainlit/auth/jwt.py +39 -0
  7. chainlit/cache.py +4 -6
  8. chainlit/callbacks.py +362 -0
  9. chainlit/chat_context.py +64 -0
  10. chainlit/chat_settings.py +3 -1
  11. chainlit/cli/__init__.py +77 -8
  12. chainlit/config.py +181 -101
  13. chainlit/context.py +42 -13
  14. chainlit/copilot/dist/index.js +8750 -903
  15. chainlit/data/__init__.py +101 -416
  16. chainlit/data/acl.py +6 -2
  17. chainlit/data/base.py +107 -0
  18. chainlit/data/chainlit_data_layer.py +608 -0
  19. chainlit/data/dynamodb.py +590 -0
  20. chainlit/data/literalai.py +500 -0
  21. chainlit/data/sql_alchemy.py +721 -0
  22. chainlit/data/storage_clients/__init__.py +0 -0
  23. chainlit/data/storage_clients/azure.py +81 -0
  24. chainlit/data/storage_clients/azure_blob.py +89 -0
  25. chainlit/data/storage_clients/base.py +26 -0
  26. chainlit/data/storage_clients/gcs.py +88 -0
  27. chainlit/data/storage_clients/s3.py +75 -0
  28. chainlit/data/utils.py +29 -0
  29. chainlit/discord/__init__.py +6 -0
  30. chainlit/discord/app.py +354 -0
  31. chainlit/element.py +91 -33
  32. chainlit/emitter.py +80 -29
  33. chainlit/frontend/dist/assets/DailyMotion-C_XC7xJI.js +1 -0
  34. chainlit/frontend/dist/assets/Dataframe-Cs4l4hA1.js +22 -0
  35. chainlit/frontend/dist/assets/Facebook-CUeCH7hk.js +1 -0
  36. chainlit/frontend/dist/assets/FilePlayer-CB-fYkx8.js +1 -0
  37. chainlit/frontend/dist/assets/Kaltura-YX6qaq72.js +1 -0
  38. chainlit/frontend/dist/assets/Mixcloud-DGV0ldjP.js +1 -0
  39. chainlit/frontend/dist/assets/Mux-CmRss5oc.js +1 -0
  40. chainlit/frontend/dist/assets/Preview-DBVJn7-H.js +1 -0
  41. chainlit/frontend/dist/assets/SoundCloud-qLUb18oY.js +1 -0
  42. chainlit/frontend/dist/assets/Streamable-BvYP7bFp.js +1 -0
  43. chainlit/frontend/dist/assets/Twitch-CTHt-sGZ.js +1 -0
  44. chainlit/frontend/dist/assets/Vidyard-B-0mCJbm.js +1 -0
  45. chainlit/frontend/dist/assets/Vimeo-Dnp7ri8q.js +1 -0
  46. chainlit/frontend/dist/assets/Wistia-DW0x_UBn.js +1 -0
  47. chainlit/frontend/dist/assets/YouTube--98FipvA.js +1 -0
  48. chainlit/frontend/dist/assets/index-D71nZ46o.js +8665 -0
  49. chainlit/frontend/dist/assets/index-g8LTJwwr.css +1 -0
  50. chainlit/frontend/dist/assets/react-plotly-Cn_BQTQw.js +3484 -0
  51. chainlit/frontend/dist/index.html +2 -4
  52. chainlit/haystack/callbacks.py +4 -7
  53. chainlit/input_widget.py +8 -4
  54. chainlit/langchain/callbacks.py +103 -68
  55. chainlit/langflow/__init__.py +1 -0
  56. chainlit/llama_index/callbacks.py +65 -40
  57. chainlit/markdown.py +22 -6
  58. chainlit/message.py +54 -56
  59. chainlit/mistralai/__init__.py +50 -0
  60. chainlit/oauth_providers.py +266 -8
  61. chainlit/openai/__init__.py +10 -18
  62. chainlit/secret.py +1 -1
  63. chainlit/server.py +789 -228
  64. chainlit/session.py +108 -90
  65. chainlit/slack/__init__.py +6 -0
  66. chainlit/slack/app.py +397 -0
  67. chainlit/socket.py +199 -116
  68. chainlit/step.py +141 -89
  69. chainlit/sync.py +2 -1
  70. chainlit/teams/__init__.py +6 -0
  71. chainlit/teams/app.py +338 -0
  72. chainlit/translations/bn.json +235 -0
  73. chainlit/translations/en-US.json +83 -4
  74. chainlit/translations/gu.json +235 -0
  75. chainlit/translations/he-IL.json +235 -0
  76. chainlit/translations/hi.json +235 -0
  77. chainlit/translations/kn.json +235 -0
  78. chainlit/translations/ml.json +235 -0
  79. chainlit/translations/mr.json +235 -0
  80. chainlit/translations/nl-NL.json +233 -0
  81. chainlit/translations/ta.json +235 -0
  82. chainlit/translations/te.json +235 -0
  83. chainlit/translations/zh-CN.json +233 -0
  84. chainlit/translations.py +60 -0
  85. chainlit/types.py +133 -28
  86. chainlit/user.py +14 -3
  87. chainlit/user_session.py +6 -3
  88. chainlit/utils.py +52 -5
  89. chainlit/version.py +3 -2
  90. {chainlit-1.0.401.dist-info → chainlit-2.0.3.dist-info}/METADATA +48 -50
  91. chainlit-2.0.3.dist-info/RECORD +106 -0
  92. chainlit/cli/utils.py +0 -24
  93. chainlit/frontend/dist/assets/index-9711593e.js +0 -723
  94. chainlit/frontend/dist/assets/index-d088547c.css +0 -1
  95. chainlit/frontend/dist/assets/react-plotly-d8762cc2.js +0 -3602
  96. chainlit/playground/__init__.py +0 -2
  97. chainlit/playground/config.py +0 -40
  98. chainlit/playground/provider.py +0 -108
  99. chainlit/playground/providers/__init__.py +0 -13
  100. chainlit/playground/providers/anthropic.py +0 -118
  101. chainlit/playground/providers/huggingface.py +0 -75
  102. chainlit/playground/providers/langchain.py +0 -89
  103. chainlit/playground/providers/openai.py +0 -408
  104. chainlit/playground/providers/vertexai.py +0 -171
  105. chainlit/translations/pt-BR.json +0 -155
  106. chainlit-1.0.401.dist-info/RECORD +0 -66
  107. /chainlit/copilot/dist/assets/{logo_dark-2a3cf740.svg → logo_dark-IkGJ_IwC.svg} +0 -0
  108. /chainlit/copilot/dist/assets/{logo_light-b078e7bc.svg → logo_light-Bb_IPh6r.svg} +0 -0
  109. /chainlit/frontend/dist/assets/{logo_dark-2a3cf740.svg → logo_dark-IkGJ_IwC.svg} +0 -0
  110. /chainlit/frontend/dist/assets/{logo_light-b078e7bc.svg → logo_light-Bb_IPh6r.svg} +0 -0
  111. {chainlit-1.0.401.dist-info → chainlit-2.0.3.dist-info}/WHEEL +0 -0
  112. {chainlit-1.0.401.dist-info → chainlit-2.0.3.dist-info}/entry_points.txt +0 -0
chainlit/context.py CHANGED
@@ -1,15 +1,18 @@
1
1
  import asyncio
2
2
  import uuid
3
3
  from contextvars import ContextVar
4
- from typing import TYPE_CHECKING, Dict, Optional, Union, List
4
+ from typing import TYPE_CHECKING, Dict, List, Optional, Union
5
5
 
6
- from chainlit.session import HTTPSession, WebsocketSession
7
6
  from lazify import LazyProxy
8
7
 
8
+ from chainlit.session import ClientType, HTTPSession, WebsocketSession
9
+
9
10
  if TYPE_CHECKING:
10
11
  from chainlit.emitter import BaseChainlitEmitter
11
- from chainlit.user import PersistedUser, User
12
12
  from chainlit.step import Step
13
+ from chainlit.user import PersistedUser, User
14
+
15
+ CL_RUN_NAMES = ["on_chat_start", "on_message", "on_audio_end"]
13
16
 
14
17
 
15
18
  class ChainlitContextException(Exception):
@@ -21,20 +24,32 @@ class ChainlitContext:
21
24
  loop: asyncio.AbstractEventLoop
22
25
  emitter: "BaseChainlitEmitter"
23
26
  session: Union["HTTPSession", "WebsocketSession"]
24
- active_steps: List["Step"]
25
27
 
26
28
  @property
27
29
  def current_step(self):
28
- if self.active_steps:
29
- return self.active_steps[-1]
30
+ if previous_steps := local_steps.get():
31
+ return previous_steps[-1]
30
32
 
31
- def __init__(self, session: Union["HTTPSession", "WebsocketSession"]):
33
+ @property
34
+ def current_run(self):
35
+ if previous_steps := local_steps.get():
36
+ return next(
37
+ (step for step in previous_steps if step.name in CL_RUN_NAMES), None
38
+ )
39
+
40
+ def __init__(
41
+ self,
42
+ session: Union["HTTPSession", "WebsocketSession"],
43
+ emitter: Optional["BaseChainlitEmitter"] = None,
44
+ ):
32
45
  from chainlit.emitter import BaseChainlitEmitter, ChainlitEmitter
33
46
 
34
47
  self.loop = asyncio.get_running_loop()
35
48
  self.session = session
36
- self.active_steps = []
37
- if isinstance(self.session, HTTPSession):
49
+
50
+ if emitter:
51
+ self.emitter = emitter
52
+ elif isinstance(self.session, HTTPSession):
38
53
  self.emitter = BaseChainlitEmitter(self.session)
39
54
  elif isinstance(self.session, WebsocketSession):
40
55
  self.emitter = ChainlitEmitter(self.session)
@@ -56,27 +71,41 @@ def init_ws_context(session_or_sid: Union[WebsocketSession, str]) -> ChainlitCon
56
71
 
57
72
 
58
73
  def init_http_context(
74
+ thread_id: Optional[str] = None,
59
75
  user: Optional[Union["User", "PersistedUser"]] = None,
60
76
  auth_token: Optional[str] = None,
61
77
  user_env: Optional[Dict[str, str]] = None,
78
+ client_type: ClientType = "webapp",
62
79
  ) -> ChainlitContext:
80
+ from chainlit.data import get_data_layer
81
+
82
+ session_id = str(uuid.uuid4())
83
+ thread_id = thread_id or str(uuid.uuid4())
63
84
  session = HTTPSession(
64
- id=str(uuid.uuid4()),
85
+ id=session_id,
86
+ thread_id=thread_id,
65
87
  token=auth_token,
66
88
  user=user,
67
- client_type="app",
89
+ client_type=client_type,
68
90
  user_env=user_env,
69
91
  )
70
92
  context = ChainlitContext(session)
71
93
  context_var.set(context)
94
+
95
+ if data_layer := get_data_layer():
96
+ if user_id := getattr(user, "id", None):
97
+ asyncio.create_task(
98
+ data_layer.update_thread(thread_id=thread_id, user_id=user_id)
99
+ )
100
+
72
101
  return context
73
102
 
74
103
 
75
104
  def get_context() -> ChainlitContext:
76
105
  try:
77
106
  return context_var.get()
78
- except LookupError:
79
- raise ChainlitContextException()
107
+ except LookupError as e:
108
+ raise ChainlitContextException from e
80
109
 
81
110
 
82
111
  context: ChainlitContext = LazyProxy(get_context, enable_cache=False)