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