chainlit 1.3.0__tar.gz → 1.3.0rc1__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.

Potentially problematic release.


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

Files changed (110) hide show
  1. {chainlit-1.3.0 → chainlit-1.3.0rc1}/PKG-INFO +4 -12
  2. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/__init__.py +5 -2
  3. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/auth.py +0 -2
  4. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/callbacks.py +13 -4
  5. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/config.py +6 -21
  6. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/context.py +6 -4
  7. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/copilot/dist/index.js +603 -296
  8. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/data/sql_alchemy.py +1 -1
  9. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/emitter.py +25 -0
  10. chainlit-1.3.0rc1/chainlit/frontend/dist/assets/DailyMotion-b4b7af47.js +1 -0
  11. chainlit-1.3.0rc1/chainlit/frontend/dist/assets/Facebook-572972a0.js +1 -0
  12. chainlit-1.3.0rc1/chainlit/frontend/dist/assets/FilePlayer-85c69ca8.js +1 -0
  13. chainlit-1.3.0rc1/chainlit/frontend/dist/assets/Kaltura-dfc24672.js +1 -0
  14. chainlit-1.3.0rc1/chainlit/frontend/dist/assets/Mixcloud-705011f4.js +1 -0
  15. chainlit-1.3.0rc1/chainlit/frontend/dist/assets/Mux-4201a9e6.js +1 -0
  16. chainlit-1.3.0rc1/chainlit/frontend/dist/assets/Preview-23ba40a6.js +1 -0
  17. chainlit-1.3.0rc1/chainlit/frontend/dist/assets/SoundCloud-1a582d51.js +1 -0
  18. chainlit-1.3.0rc1/chainlit/frontend/dist/assets/Streamable-5017c4ba.js +1 -0
  19. chainlit-1.3.0rc1/chainlit/frontend/dist/assets/Twitch-bb2de2fa.js +1 -0
  20. chainlit-1.3.0rc1/chainlit/frontend/dist/assets/Vidyard-54e269b1.js +1 -0
  21. chainlit-1.3.0rc1/chainlit/frontend/dist/assets/Vimeo-d92c37dd.js +1 -0
  22. chainlit-1.3.0rc1/chainlit/frontend/dist/assets/Wistia-25a1363b.js +1 -0
  23. chainlit-1.3.0rc1/chainlit/frontend/dist/assets/YouTube-616e8cb7.js +1 -0
  24. chainlit-1.3.0rc1/chainlit/frontend/dist/assets/index-f5df2072.js +1027 -0
  25. chainlit-1.3.0/chainlit/frontend/dist/assets/react-plotly-Dpmqg5Sy.js → chainlit-1.3.0rc1/chainlit/frontend/dist/assets/react-plotly-f0315f86.js +94 -94
  26. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/frontend/dist/index.html +3 -2
  27. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/oauth_providers.py +9 -43
  28. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/openai/__init__.py +5 -3
  29. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/server.py +9 -19
  30. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/socket.py +19 -17
  31. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/step.py +17 -9
  32. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/translations/en-US.json +2 -1
  33. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/types.py +6 -6
  34. {chainlit-1.3.0 → chainlit-1.3.0rc1}/pyproject.toml +4 -15
  35. chainlit-1.3.0/chainlit/frontend/dist/assets/DailyMotion-CwoOhIL8.js +0 -1
  36. chainlit-1.3.0/chainlit/frontend/dist/assets/Facebook-BhnGXlzq.js +0 -1
  37. chainlit-1.3.0/chainlit/frontend/dist/assets/FilePlayer-CPSVT6fz.js +0 -1
  38. chainlit-1.3.0/chainlit/frontend/dist/assets/Kaltura-COYaLzsL.js +0 -1
  39. chainlit-1.3.0/chainlit/frontend/dist/assets/Mixcloud-JdadNiQ5.js +0 -1
  40. chainlit-1.3.0/chainlit/frontend/dist/assets/Mux-CBN7RO2u.js +0 -1
  41. chainlit-1.3.0/chainlit/frontend/dist/assets/Preview-CxAFvvjV.js +0 -1
  42. chainlit-1.3.0/chainlit/frontend/dist/assets/SoundCloud-JlgmASWm.js +0 -1
  43. chainlit-1.3.0/chainlit/frontend/dist/assets/Streamable-CUWgr6Zw.js +0 -1
  44. chainlit-1.3.0/chainlit/frontend/dist/assets/Twitch-BiN1HEDM.js +0 -1
  45. chainlit-1.3.0/chainlit/frontend/dist/assets/Vidyard-qhPmrhDm.js +0 -1
  46. chainlit-1.3.0/chainlit/frontend/dist/assets/Vimeo-CrZVSCaT.js +0 -1
  47. chainlit-1.3.0/chainlit/frontend/dist/assets/Wistia-C891KrBP.js +0 -1
  48. chainlit-1.3.0/chainlit/frontend/dist/assets/YouTube-DKjw5Hbn.js +0 -1
  49. chainlit-1.3.0/chainlit/frontend/dist/assets/index-DLRdQOIx.js +0 -723
  50. {chainlit-1.3.0 → chainlit-1.3.0rc1}/README.md +0 -0
  51. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/__main__.py +0 -0
  52. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/_utils.py +0 -0
  53. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/action.py +0 -0
  54. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/cache.py +0 -0
  55. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/chat_context.py +0 -0
  56. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/chat_settings.py +0 -0
  57. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/cli/__init__.py +0 -0
  58. /chainlit-1.3.0/chainlit/copilot/dist/assets/logo_dark-IkGJ_IwC.svg → /chainlit-1.3.0rc1/chainlit/copilot/dist/assets/logo_dark-2a3cf740.svg +0 -0
  59. /chainlit-1.3.0/chainlit/copilot/dist/assets/logo_light-Bb_IPh6r.svg → /chainlit-1.3.0rc1/chainlit/copilot/dist/assets/logo_light-b078e7bc.svg +0 -0
  60. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/data/__init__.py +0 -0
  61. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/data/acl.py +0 -0
  62. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/data/base.py +0 -0
  63. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/data/dynamodb.py +0 -0
  64. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/data/literalai.py +0 -0
  65. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/data/storage_clients.py +0 -0
  66. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/data/utils.py +0 -0
  67. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/discord/__init__.py +0 -0
  68. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/discord/app.py +0 -0
  69. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/element.py +0 -0
  70. /chainlit-1.3.0/chainlit/frontend/dist/assets/index-CwmincdQ.css → /chainlit-1.3.0rc1/chainlit/frontend/dist/assets/index-aaf974a9.css +0 -0
  71. /chainlit-1.3.0/chainlit/frontend/dist/assets/logo_dark-IkGJ_IwC.svg → /chainlit-1.3.0rc1/chainlit/frontend/dist/assets/logo_dark-2a3cf740.svg +0 -0
  72. /chainlit-1.3.0/chainlit/frontend/dist/assets/logo_light-Bb_IPh6r.svg → /chainlit-1.3.0rc1/chainlit/frontend/dist/assets/logo_light-b078e7bc.svg +0 -0
  73. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/frontend/dist/favicon.svg +0 -0
  74. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/haystack/__init__.py +0 -0
  75. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/haystack/callbacks.py +0 -0
  76. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/hello.py +0 -0
  77. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/input_widget.py +0 -0
  78. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/langchain/__init__.py +0 -0
  79. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/langchain/callbacks.py +0 -0
  80. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/langflow/__init__.py +0 -0
  81. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/llama_index/__init__.py +0 -0
  82. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/llama_index/callbacks.py +0 -0
  83. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/logger.py +0 -0
  84. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/markdown.py +0 -0
  85. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/message.py +0 -0
  86. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/mistralai/__init__.py +0 -0
  87. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/py.typed +0 -0
  88. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/secret.py +0 -0
  89. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/session.py +0 -0
  90. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/slack/__init__.py +0 -0
  91. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/slack/app.py +0 -0
  92. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/sync.py +0 -0
  93. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/teams/__init__.py +0 -0
  94. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/teams/app.py +0 -0
  95. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/telemetry.py +0 -0
  96. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/translations/bn.json +0 -0
  97. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/translations/gu.json +0 -0
  98. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/translations/he-IL.json +0 -0
  99. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/translations/hi.json +0 -0
  100. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/translations/kn.json +0 -0
  101. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/translations/ml.json +0 -0
  102. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/translations/mr.json +0 -0
  103. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/translations/ta.json +0 -0
  104. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/translations/te.json +0 -0
  105. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/translations/zh-CN.json +0 -0
  106. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/translations.py +0 -0
  107. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/user.py +0 -0
  108. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/user_session.py +0 -0
  109. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/utils.py +0 -0
  110. {chainlit-1.3.0 → chainlit-1.3.0rc1}/chainlit/version.py +0 -0
@@ -1,25 +1,18 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: chainlit
3
- Version: 1.3.0
3
+ Version: 1.3.0rc1
4
4
  Summary: Build Conversational AI.
5
- Home-page: https://chainlit.io/
6
- License: Apache-2.0
5
+ Home-page: https://github.com/Chainlit/chainlit
6
+ License: Apache-2.0 license
7
7
  Keywords: LLM,Agents,gen ai,chat ui,chatbot ui,openai,copilot,langchain,conversational ai
8
- Author: Willy Douhard
8
+ Author: Chainlit
9
9
  Requires-Python: >=3.9,<4.0.0
10
- Classifier: Environment :: Web Environment
11
- Classifier: Framework :: FastAPI
12
10
  Classifier: License :: Other/Proprietary License
13
- Classifier: Programming Language :: JavaScript
14
11
  Classifier: Programming Language :: Python :: 3
15
12
  Classifier: Programming Language :: Python :: 3.9
16
13
  Classifier: Programming Language :: Python :: 3.10
17
14
  Classifier: Programming Language :: Python :: 3.11
18
15
  Classifier: Programming Language :: Python :: 3.12
19
- Classifier: Topic :: Communications :: Chat
20
- Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
21
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
- Classifier: Topic :: Software Development :: User Interfaces
23
16
  Requires-Dist: aiofiles (>=23.1.0,<24.0.0)
24
17
  Requires-Dist: asyncer (>=0.0.7,<0.0.8)
25
18
  Requires-Dist: click (>=8.1.3,<9.0.0)
@@ -43,7 +36,6 @@ Requires-Dist: tomli (>=2.0.1,<3.0.0)
43
36
  Requires-Dist: uptrace (>=1.22.0,<2.0.0)
44
37
  Requires-Dist: uvicorn (>=0.25.0,<0.26.0)
45
38
  Requires-Dist: watchfiles (>=0.20.0,<0.21.0)
46
- Project-URL: Documentation, https://docs.chainlit.io/
47
39
  Project-URL: Repository, https://github.com/Chainlit/chainlit
48
40
  Description-Content-Type: text/markdown
49
41
 
@@ -43,7 +43,7 @@ from chainlit.message import (
43
43
  )
44
44
  from chainlit.step import Step, step
45
45
  from chainlit.sync import make_async, run_sync
46
- from chainlit.types import AudioChunk, ChatProfile, Starter
46
+ from chainlit.types import InputAudioChunk, OutputAudioChunk, ChatProfile, Starter
47
47
  from chainlit.user import PersistedUser, User
48
48
  from chainlit.user_session import user_session
49
49
  from chainlit.utils import make_module_getattr
@@ -56,6 +56,7 @@ from .callbacks import (
56
56
  author_rename,
57
57
  header_auth_callback,
58
58
  oauth_callback,
59
+ on_audio_start,
59
60
  on_audio_chunk,
60
61
  on_audio_end,
61
62
  on_chat_end,
@@ -117,7 +118,8 @@ __all__ = [
117
118
  "user_session",
118
119
  "chat_context",
119
120
  "CopilotFunction",
120
- "AudioChunk",
121
+ "InputAudioChunk",
122
+ "OutputAudioChunk",
121
123
  "Action",
122
124
  "User",
123
125
  "PersistedUser",
@@ -176,6 +178,7 @@ __all__ = [
176
178
  "set_chat_profiles",
177
179
  "set_starters",
178
180
  "on_chat_end",
181
+ "on_audio_start",
179
182
  "on_audio_chunk",
180
183
  "on_audio_end",
181
184
  "author_rename",
@@ -79,8 +79,6 @@ async def authenticate_user(token: str = Depends(reuseable_oauth)):
79
79
  except Exception:
80
80
  return user
81
81
 
82
- if user and user.display_name:
83
- persisted_user.display_name = user.display_name
84
82
  return persisted_user
85
83
  else:
86
84
  return user
@@ -209,13 +209,25 @@ def on_chat_end(func: Callable) -> Callable:
209
209
  return func
210
210
 
211
211
 
212
+ @trace
213
+ def on_audio_start(func: Callable) -> Callable:
214
+ """
215
+ Hook to react to the user initiating audio.
216
+
217
+ Returns:
218
+ Callable[], Any]: The decorated hook.
219
+ """
220
+
221
+ config.code.on_audio_start = wrap_user_function(func, with_task=False)
222
+ return func
223
+
212
224
  @trace
213
225
  def on_audio_chunk(func: Callable) -> Callable:
214
226
  """
215
227
  Hook to react to the audio chunks being sent.
216
228
 
217
229
  Args:
218
- chunk (AudioChunk): The audio chunk being sent.
230
+ chunk (InputAudioChunk): The audio chunk being sent.
219
231
 
220
232
  Returns:
221
233
  Callable[], Any]: The decorated hook.
@@ -230,9 +242,6 @@ def on_audio_end(func: Callable) -> Callable:
230
242
  """
231
243
  Hook to react to the audio stream ending. This is called after the last audio chunk is sent.
232
244
 
233
- Args:
234
- elements ([List[Element]): The files that were uploaded before starting the audio stream (if any).
235
-
236
245
  Returns:
237
246
  Callable[], Any]: The decorated hook.
238
247
  """
@@ -28,9 +28,8 @@ from ._utils import is_path_inside
28
28
 
29
29
  if TYPE_CHECKING:
30
30
  from chainlit.action import Action
31
- from chainlit.element import ElementBased
32
31
  from chainlit.message import Message
33
- from chainlit.types import AudioChunk, ChatProfile, Starter, ThreadDict
32
+ from chainlit.types import InputAudioChunk, ChatProfile, Starter, ThreadDict
34
33
  from chainlit.user import User
35
34
  from fastapi import Request, Response
36
35
 
@@ -93,18 +92,8 @@ edit_message = true
93
92
  max_size_mb = 500
94
93
 
95
94
  [features.audio]
96
- # Threshold for audio recording
97
- min_decibels = -45
98
- # Delay for the user to start speaking in MS
99
- initial_silence_timeout = 3000
100
- # Delay for the user to continue speaking in MS. If the user stops speaking for this duration, the recording will stop.
101
- silence_timeout = 1500
102
- # Above this duration (MS), the recording will forcefully stop.
103
- max_duration = 15000
104
- # Duration of the audio chunks in MS
105
- chunk_duration = 1000
106
95
  # Sample rate of the audio
107
- sample_rate = 44100
96
+ sample_rate = 24000
108
97
 
109
98
  [UI]
110
99
  # Name of the assistant.
@@ -237,12 +226,7 @@ class SpontaneousFileUploadFeature(DataClassJsonMixin):
237
226
 
238
227
  @dataclass
239
228
  class AudioFeature(DataClassJsonMixin):
240
- min_decibels: int = -45
241
- initial_silence_timeout: int = 2000
242
- silence_timeout: int = 1500
243
- chunk_duration: int = 1000
244
- max_duration: int = 15000
245
- sample_rate: int = 44100
229
+ sample_rate: int = 24000
246
230
  enabled: bool = False
247
231
 
248
232
 
@@ -297,8 +281,9 @@ class CodeSettings:
297
281
  on_chat_end: Optional[Callable[[], Any]] = None
298
282
  on_chat_resume: Optional[Callable[["ThreadDict"], Any]] = None
299
283
  on_message: Optional[Callable[["Message"], Any]] = None
300
- on_audio_chunk: Optional[Callable[["AudioChunk"], Any]] = None
301
- on_audio_end: Optional[Callable[[List["ElementBased"]], Any]] = None
284
+ on_audio_start: Optional[Callable[[], Any]] = None
285
+ on_audio_chunk: Optional[Callable[["InputAudioChunk"], Any]] = None
286
+ on_audio_end: Optional[Callable[[], Any]] = None
302
287
 
303
288
  author_rename: Optional[Callable[[str], Awaitable[str]]] = None
304
289
  on_settings_update: Optional[Callable[[Dict[str, Any]], Any]] = None
@@ -23,17 +23,18 @@ class ChainlitContext:
23
23
  loop: asyncio.AbstractEventLoop
24
24
  emitter: "BaseChainlitEmitter"
25
25
  session: Union["HTTPSession", "WebsocketSession"]
26
+ active_steps: List["Step"]
26
27
 
27
28
  @property
28
29
  def current_step(self):
29
- if previous_steps := local_steps.get():
30
- return previous_steps[-1]
30
+ if self.active_steps:
31
+ return self.active_steps[-1]
31
32
 
32
33
  @property
33
34
  def current_run(self):
34
- if previous_steps := local_steps.get():
35
+ if self.active_steps:
35
36
  return next(
36
- (step for step in previous_steps if step.name in CL_RUN_NAMES), None
37
+ (step for step in self.active_steps if step.name in CL_RUN_NAMES), None
37
38
  )
38
39
 
39
40
  def __init__(
@@ -45,6 +46,7 @@ class ChainlitContext:
45
46
 
46
47
  self.loop = asyncio.get_running_loop()
47
48
  self.session = session
49
+ self.active_steps = []
48
50
 
49
51
  if emitter:
50
52
  self.emitter = emitter