chainlit 1.1.404__tar.gz → 1.2.0rc0__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 (101) hide show
  1. {chainlit-1.1.404 → chainlit-1.2.0rc0}/PKG-INFO +10 -10
  2. {chainlit-1.1.404 → chainlit-1.2.0rc0}/README.md +7 -7
  3. chainlit-1.2.0rc0/chainlit/__init__.py +199 -0
  4. chainlit-1.2.0rc0/chainlit/_utils.py +8 -0
  5. chainlit-1.2.0rc0/chainlit/assistant.py +16 -0
  6. chainlit-1.2.0rc0/chainlit/assistant_settings.py +35 -0
  7. chainlit-1.1.404/chainlit/__init__.py → chainlit-1.2.0rc0/chainlit/callbacks.py +65 -166
  8. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/cli/__init__.py +1 -1
  9. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/config.py +58 -28
  10. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/copilot/dist/index.js +512 -631
  11. chainlit-1.2.0rc0/chainlit/data/__init__.py +20 -0
  12. chainlit-1.2.0rc0/chainlit/data/base.py +121 -0
  13. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/data/dynamodb.py +5 -8
  14. chainlit-1.1.404/chainlit/data/__init__.py → chainlit-1.2.0rc0/chainlit/data/literalai.py +5 -145
  15. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/data/sql_alchemy.py +11 -9
  16. chainlit-1.2.0rc0/chainlit/data/storage_clients.py +112 -0
  17. chainlit-1.2.0rc0/chainlit/data/utils.py +29 -0
  18. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/element.py +1 -1
  19. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/emitter.py +7 -0
  20. chainlit-1.1.404/chainlit/frontend/dist/assets/DailyMotion-e665b444.js → chainlit-1.2.0rc0/chainlit/frontend/dist/assets/DailyMotion-aa368b7e.js +1 -1
  21. chainlit-1.1.404/chainlit/frontend/dist/assets/Facebook-5207db92.js → chainlit-1.2.0rc0/chainlit/frontend/dist/assets/Facebook-0335db46.js +1 -1
  22. chainlit-1.1.404/chainlit/frontend/dist/assets/FilePlayer-86937d6e.js → chainlit-1.2.0rc0/chainlit/frontend/dist/assets/FilePlayer-8d04256c.js +1 -1
  23. chainlit-1.1.404/chainlit/frontend/dist/assets/Kaltura-c96622c1.js → chainlit-1.2.0rc0/chainlit/frontend/dist/assets/Kaltura-67c9dd31.js +1 -1
  24. chainlit-1.1.404/chainlit/frontend/dist/assets/Mixcloud-57ae3e32.js → chainlit-1.2.0rc0/chainlit/frontend/dist/assets/Mixcloud-6bbaccf5.js +1 -1
  25. chainlit-1.1.404/chainlit/frontend/dist/assets/Mux-20373920.js → chainlit-1.2.0rc0/chainlit/frontend/dist/assets/Mux-c2bcb757.js +1 -1
  26. chainlit-1.1.404/chainlit/frontend/dist/assets/Preview-c68c0613.js → chainlit-1.2.0rc0/chainlit/frontend/dist/assets/Preview-210f3955.js +1 -1
  27. chainlit-1.1.404/chainlit/frontend/dist/assets/SoundCloud-8a9e3eae.js → chainlit-1.2.0rc0/chainlit/frontend/dist/assets/SoundCloud-a0276b84.js +1 -1
  28. chainlit-1.1.404/chainlit/frontend/dist/assets/Streamable-1ed099af.js → chainlit-1.2.0rc0/chainlit/frontend/dist/assets/Streamable-a007323d.js +1 -1
  29. chainlit-1.1.404/chainlit/frontend/dist/assets/Twitch-6820039f.js → chainlit-1.2.0rc0/chainlit/frontend/dist/assets/Twitch-e6a88aa3.js +1 -1
  30. chainlit-1.1.404/chainlit/frontend/dist/assets/Vidyard-d39ab91d.js → chainlit-1.2.0rc0/chainlit/frontend/dist/assets/Vidyard-dfb88a35.js +1 -1
  31. chainlit-1.1.404/chainlit/frontend/dist/assets/Vimeo-017cd9a7.js → chainlit-1.2.0rc0/chainlit/frontend/dist/assets/Vimeo-3baa13d9.js +1 -1
  32. chainlit-1.1.404/chainlit/frontend/dist/assets/Wistia-a509d9f2.js → chainlit-1.2.0rc0/chainlit/frontend/dist/assets/Wistia-e52f7bef.js +1 -1
  33. chainlit-1.1.404/chainlit/frontend/dist/assets/YouTube-42dfd82f.js → chainlit-1.2.0rc0/chainlit/frontend/dist/assets/YouTube-1715f22b.js +1 -1
  34. chainlit-1.2.0rc0/chainlit/frontend/dist/assets/index-bfdd8585.js +729 -0
  35. chainlit-1.2.0rc0/chainlit/frontend/dist/assets/react-plotly-55648373.js +3484 -0
  36. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/frontend/dist/index.html +1 -1
  37. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/input_widget.py +22 -0
  38. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/langchain/callbacks.py +6 -1
  39. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/llama_index/callbacks.py +20 -4
  40. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/markdown.py +15 -9
  41. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/message.py +0 -1
  42. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/server.py +113 -37
  43. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/session.py +27 -4
  44. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/socket.py +50 -1
  45. chainlit-1.2.0rc0/chainlit/translations/bn.json +231 -0
  46. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/translations/en-US.json +6 -0
  47. chainlit-1.2.0rc0/chainlit/translations/fr-FR.json +236 -0
  48. chainlit-1.2.0rc0/chainlit/translations/gu.json +231 -0
  49. chainlit-1.2.0rc0/chainlit/translations/he-IL.json +231 -0
  50. chainlit-1.2.0rc0/chainlit/translations/hi.json +231 -0
  51. chainlit-1.2.0rc0/chainlit/translations/kn.json +231 -0
  52. chainlit-1.2.0rc0/chainlit/translations/ml.json +231 -0
  53. chainlit-1.2.0rc0/chainlit/translations/mr.json +231 -0
  54. chainlit-1.2.0rc0/chainlit/translations/ta.json +231 -0
  55. chainlit-1.2.0rc0/chainlit/translations/te.json +231 -0
  56. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/types.py +1 -1
  57. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/user_session.py +4 -0
  58. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/utils.py +1 -1
  59. {chainlit-1.1.404 → chainlit-1.2.0rc0}/pyproject.toml +5 -3
  60. chainlit-1.1.404/chainlit/data/storage_clients.py +0 -58
  61. chainlit-1.1.404/chainlit/frontend/dist/assets/index-30df9b2b.js +0 -730
  62. chainlit-1.1.404/chainlit/frontend/dist/assets/react-plotly-5bb34118.js +0 -3602
  63. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/__main__.py +0 -0
  64. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/action.py +0 -0
  65. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/auth.py +0 -0
  66. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/cache.py +0 -0
  67. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/chat_context.py +0 -0
  68. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/chat_settings.py +0 -0
  69. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/context.py +0 -0
  70. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/copilot/dist/assets/logo_dark-2a3cf740.svg +0 -0
  71. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/copilot/dist/assets/logo_light-b078e7bc.svg +0 -0
  72. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/data/acl.py +0 -0
  73. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/discord/__init__.py +0 -0
  74. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/discord/app.py +0 -0
  75. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/frontend/dist/assets/index-aaf974a9.css +0 -0
  76. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/frontend/dist/assets/logo_dark-2a3cf740.svg +0 -0
  77. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/frontend/dist/assets/logo_light-b078e7bc.svg +0 -0
  78. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/frontend/dist/favicon.svg +0 -0
  79. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/haystack/__init__.py +0 -0
  80. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/haystack/callbacks.py +0 -0
  81. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/hello.py +0 -0
  82. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/langchain/__init__.py +0 -0
  83. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/langflow/__init__.py +0 -0
  84. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/llama_index/__init__.py +0 -0
  85. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/logger.py +0 -0
  86. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/mistralai/__init__.py +0 -0
  87. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/oauth_providers.py +0 -0
  88. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/openai/__init__.py +0 -0
  89. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/py.typed +0 -0
  90. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/secret.py +0 -0
  91. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/slack/__init__.py +0 -0
  92. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/slack/app.py +0 -0
  93. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/step.py +0 -0
  94. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/sync.py +0 -0
  95. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/teams/__init__.py +0 -0
  96. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/teams/app.py +0 -0
  97. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/telemetry.py +0 -0
  98. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/translations/zh-CN.json +0 -0
  99. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/translations.py +0 -0
  100. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/user.py +0 -0
  101. {chainlit-1.1.404 → chainlit-1.2.0rc0}/chainlit/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: chainlit
3
- Version: 1.1.404
3
+ Version: 1.2.0rc0
4
4
  Summary: Build Conversational AI.
5
5
  Home-page: https://github.com/Chainlit/chainlit
6
6
  License: Apache-2.0 license
@@ -16,8 +16,8 @@ Classifier: Programming Language :: Python :: 3.12
16
16
  Requires-Dist: aiofiles (>=23.1.0,<24.0.0)
17
17
  Requires-Dist: asyncer (>=0.0.7,<0.0.8)
18
18
  Requires-Dist: click (>=8.1.3,<9.0.0)
19
- Requires-Dist: dataclasses_json (>=0.5.7,<0.6.0)
20
- Requires-Dist: fastapi (>=0.110.1,<0.111.0)
19
+ Requires-Dist: dataclasses_json (>=0.6.7,<0.7.0)
20
+ Requires-Dist: fastapi (>=0.110.1,<0.113)
21
21
  Requires-Dist: filetype (>=1.2.0,<2.0.0)
22
22
  Requires-Dist: httpx (>=0.23.0)
23
23
  Requires-Dist: lazify (>=0.4.0,<0.5.0)
@@ -64,16 +64,16 @@ Full documentation is available [here](https://docs.chainlit.io). You can ask Ch
64
64
  > Check out [Literal AI](https://literalai.com), our product to monitor and evaluate LLM applications! It works with any Python or TypeScript applications and [seamlessly](https://docs.chainlit.io/data-persistence/overview) with Chainlit by adding a `LITERAL_API_KEY` in your project.
65
65
 
66
66
  <p align="center">
67
- <img src="https://github.com/Chainlit/chainlit/assets/13104895/0c2cc7a9-766c-41d3-aae2-117a2d0eb8ed" width="80%" />
67
+ <img src="https://github.com/Chainlit/chainlit/assets/13104895/0c2cc7a9-766c-41d3-aae2-117a2d0eb8ed" alt="Chainlit user interface" width="80%"></img>
68
68
  </p>
69
69
 
70
70
  ## Installation
71
71
 
72
72
  Open a terminal and run:
73
73
 
74
- ```bash
75
- $ pip install chainlit
76
- $ chainlit hello
74
+ ```sh
75
+ pip install chainlit
76
+ chainlit hello
77
77
  ```
78
78
 
79
79
  If this opens the `hello app` in your browser, you're all set!
@@ -118,8 +118,8 @@ async def main(message: cl.Message):
118
118
 
119
119
  Now run it!
120
120
 
121
- ```
122
- $ chainlit run demo.py -w
121
+ ```sh
122
+ chainlit run demo.py -w
123
123
  ```
124
124
 
125
125
  <img src="/images/quick-start.png" alt="Quick Start"></img>
@@ -129,7 +129,7 @@ $ chainlit run demo.py -w
129
129
  Full documentation is available [here](https://docs.chainlit.io). Key features:
130
130
 
131
131
  - [💬 Multi Modal chats](https://docs.chainlit.io/advanced-features/multi-modal)
132
- - [💭 Chain of Thought visualisation](https://docs.chainlit.io/concepts/step)
132
+ - [💭 Chain of Thought visualization](https://docs.chainlit.io/concepts/step)
133
133
  - [💾 Data persistence + human feedback](https://docs.chainlit.io/data-persistence/overview)
134
134
  - [🐛 Debug Mode](https://docs.chainlit.io/data-persistence/enterprise#debug-mode)
135
135
  - [👤 Authentication](https://docs.chainlit.io/authentication/overview)
@@ -23,16 +23,16 @@ Full documentation is available [here](https://docs.chainlit.io). You can ask Ch
23
23
  > Check out [Literal AI](https://literalai.com), our product to monitor and evaluate LLM applications! It works with any Python or TypeScript applications and [seamlessly](https://docs.chainlit.io/data-persistence/overview) with Chainlit by adding a `LITERAL_API_KEY` in your project.
24
24
 
25
25
  <p align="center">
26
- <img src="https://github.com/Chainlit/chainlit/assets/13104895/0c2cc7a9-766c-41d3-aae2-117a2d0eb8ed" width="80%" />
26
+ <img src="https://github.com/Chainlit/chainlit/assets/13104895/0c2cc7a9-766c-41d3-aae2-117a2d0eb8ed" alt="Chainlit user interface" width="80%"></img>
27
27
  </p>
28
28
 
29
29
  ## Installation
30
30
 
31
31
  Open a terminal and run:
32
32
 
33
- ```bash
34
- $ pip install chainlit
35
- $ chainlit hello
33
+ ```sh
34
+ pip install chainlit
35
+ chainlit hello
36
36
  ```
37
37
 
38
38
  If this opens the `hello app` in your browser, you're all set!
@@ -77,8 +77,8 @@ async def main(message: cl.Message):
77
77
 
78
78
  Now run it!
79
79
 
80
- ```
81
- $ chainlit run demo.py -w
80
+ ```sh
81
+ chainlit run demo.py -w
82
82
  ```
83
83
 
84
84
  <img src="/images/quick-start.png" alt="Quick Start"></img>
@@ -88,7 +88,7 @@ $ chainlit run demo.py -w
88
88
  Full documentation is available [here](https://docs.chainlit.io). Key features:
89
89
 
90
90
  - [💬 Multi Modal chats](https://docs.chainlit.io/advanced-features/multi-modal)
91
- - [💭 Chain of Thought visualisation](https://docs.chainlit.io/concepts/step)
91
+ - [💭 Chain of Thought visualization](https://docs.chainlit.io/concepts/step)
92
92
  - [💾 Data persistence + human feedback](https://docs.chainlit.io/data-persistence/overview)
93
93
  - [🐛 Debug Mode](https://docs.chainlit.io/data-persistence/enterprise#debug-mode)
94
94
  - [👤 Authentication](https://docs.chainlit.io/authentication/overview)
@@ -0,0 +1,199 @@
1
+ import os
2
+
3
+ from dotenv import load_dotenv
4
+
5
+ # ruff: noqa: E402
6
+ # Keep this here to ensure imports have environment available.
7
+ env_found = load_dotenv(dotenv_path=os.path.join(os.getcwd(), ".env"))
8
+
9
+ from chainlit.logger import logger
10
+
11
+ if env_found:
12
+ logger.info("Loaded .env file")
13
+
14
+ import asyncio
15
+ from typing import TYPE_CHECKING, Any, Dict
16
+
17
+ import chainlit.input_widget as input_widget
18
+ from chainlit.action import Action
19
+ from chainlit.assistant import Assistant
20
+ from chainlit.assistant_settings import AssistantSettings
21
+ from chainlit.cache import cache
22
+ from chainlit.chat_context import chat_context
23
+ from chainlit.chat_settings import ChatSettings
24
+ from chainlit.context import context
25
+ from chainlit.element import (
26
+ Audio,
27
+ Component,
28
+ File,
29
+ Image,
30
+ Pdf,
31
+ Plotly,
32
+ Pyplot,
33
+ Task,
34
+ TaskList,
35
+ TaskStatus,
36
+ Text,
37
+ Video,
38
+ )
39
+ from chainlit.message import (
40
+ AskActionMessage,
41
+ AskFileMessage,
42
+ AskUserMessage,
43
+ ErrorMessage,
44
+ Message,
45
+ )
46
+ from chainlit.step import Step, step
47
+ from chainlit.sync import make_async, run_sync
48
+ from chainlit.types import AudioChunk, ChatProfile, Starter
49
+ from chainlit.user import PersistedUser, User
50
+ from chainlit.user_session import user_session
51
+ from chainlit.utils import make_module_getattr
52
+ from chainlit.version import __version__
53
+ from literalai import ChatGeneration, CompletionGeneration, GenerationMessage
54
+ from pydantic.dataclasses import dataclass
55
+
56
+ from .callbacks import (
57
+ action_callback,
58
+ author_rename,
59
+ header_auth_callback,
60
+ oauth_callback,
61
+ on_audio_chunk,
62
+ on_audio_end,
63
+ on_chat_end,
64
+ on_chat_resume,
65
+ on_chat_start,
66
+ on_create_assistant,
67
+ on_list_assistants,
68
+ on_logout,
69
+ on_message,
70
+ on_settings_update,
71
+ on_stop,
72
+ password_auth_callback,
73
+ set_chat_profiles,
74
+ set_starters,
75
+ )
76
+
77
+ if TYPE_CHECKING:
78
+ from chainlit.haystack.callbacks import HaystackAgentCallbackHandler
79
+ from chainlit.langchain.callbacks import (
80
+ AsyncLangchainCallbackHandler,
81
+ LangchainCallbackHandler,
82
+ )
83
+ from chainlit.llama_index.callbacks import LlamaIndexCallbackHandler
84
+ from chainlit.mistralai import instrument_mistralai
85
+ from chainlit.openai import instrument_openai
86
+
87
+
88
+ def sleep(duration: int):
89
+ """
90
+ Sleep for a given duration.
91
+ Args:
92
+ duration (int): The duration in seconds.
93
+ """
94
+ return asyncio.sleep(duration)
95
+
96
+
97
+ @dataclass()
98
+ class CopilotFunction:
99
+ name: str
100
+ args: Dict[str, Any]
101
+
102
+ def acall(self):
103
+ return context.emitter.send_call_fn(self.name, self.args)
104
+
105
+
106
+ __getattr__ = make_module_getattr(
107
+ {
108
+ "LangchainCallbackHandler": "chainlit.langchain.callbacks",
109
+ "AsyncLangchainCallbackHandler": "chainlit.langchain.callbacks",
110
+ "LlamaIndexCallbackHandler": "chainlit.llama_index.callbacks",
111
+ "HaystackAgentCallbackHandler": "chainlit.haystack.callbacks",
112
+ "instrument_openai": "chainlit.openai",
113
+ "instrument_mistralai": "chainlit.mistralai",
114
+ }
115
+ )
116
+
117
+ __all__ = [
118
+ "__version__",
119
+ "ChatProfile",
120
+ "Starter",
121
+ "user_session",
122
+ "chat_context",
123
+ "CopilotFunction",
124
+ "AudioChunk",
125
+ "Action",
126
+ "User",
127
+ "PersistedUser",
128
+ "Audio",
129
+ "Pdf",
130
+ "Plotly",
131
+ "Image",
132
+ "Text",
133
+ "Component",
134
+ "Pyplot",
135
+ "File",
136
+ "Task",
137
+ "TaskList",
138
+ "TaskStatus",
139
+ "Video",
140
+ "ChatSettings",
141
+ # Experimental
142
+ "AssistantSettings",
143
+ # Experimental
144
+ "Assistant",
145
+ "input_widget",
146
+ "Message",
147
+ "ErrorMessage",
148
+ "AskUserMessage",
149
+ "AskActionMessage",
150
+ "AskFileMessage",
151
+ "Step",
152
+ "step",
153
+ "ChatGeneration",
154
+ "CompletionGeneration",
155
+ "GenerationMessage",
156
+ "on_logout",
157
+ "on_chat_start",
158
+ "on_chat_end",
159
+ "on_chat_resume",
160
+ "on_stop",
161
+ "action_callback",
162
+ "author_rename",
163
+ "on_settings_update",
164
+ "on_create_assistant",
165
+ "on_list_assistants",
166
+ "password_auth_callback",
167
+ "header_auth_callback",
168
+ "sleep",
169
+ "run_sync",
170
+ "make_async",
171
+ "cache",
172
+ "context",
173
+ "LangchainCallbackHandler",
174
+ "AsyncLangchainCallbackHandler",
175
+ "LlamaIndexCallbackHandler",
176
+ "HaystackAgentCallbackHandler",
177
+ "instrument_openai",
178
+ "instrument_mistralai",
179
+ "password_auth_callback",
180
+ "header_auth_callback",
181
+ "oauth_callback",
182
+ "on_logout",
183
+ "on_message",
184
+ "on_chat_start",
185
+ "on_chat_resume",
186
+ "set_chat_profiles",
187
+ "set_starters",
188
+ "on_chat_end",
189
+ "on_audio_chunk",
190
+ "on_audio_end",
191
+ "author_rename",
192
+ "on_stop",
193
+ "action_callback",
194
+ "on_settings_update",
195
+ ]
196
+
197
+
198
+ def __dir__():
199
+ return __all__
@@ -0,0 +1,8 @@
1
+ """Util functions which are explicitly not part of the public API."""
2
+
3
+ from pathlib import Path
4
+
5
+
6
+ def is_path_inside(child_path: Path, parent_path: Path) -> bool:
7
+ """Check if the child path is inside the parent path."""
8
+ return parent_path.resolve() in child_path.resolve().parents
@@ -0,0 +1,16 @@
1
+ from typing import List, Dict
2
+ from chainlit.input_widget import InputWidget
3
+
4
+ class Assistant:
5
+ input_widgets: List[InputWidget] = []
6
+ settings_values: Dict = {}
7
+
8
+ def __init__(self, input_widgets: List[InputWidget], settings_values: Dict):
9
+ self.input_widgets = input_widgets
10
+ self.settings_values = settings_values
11
+
12
+ def to_dict(self):
13
+ return {
14
+ "input_widgets": [widget.__repr__() for widget in self.input_widgets],
15
+ "settings_values": self.settings_values
16
+ }
@@ -0,0 +1,35 @@
1
+ import logging
2
+ from typing import List
3
+
4
+ from chainlit.context import context
5
+ from chainlit.input_widget import InputWidget
6
+ from pydantic.dataclasses import Field, dataclass
7
+
8
+
9
+ @dataclass
10
+ class AssistantSettings:
11
+ """Useful to create chat settings that the user can change."""
12
+
13
+ inputs: List[InputWidget] = Field(default_factory=list, exclude=True)
14
+
15
+ def __init__(
16
+ self,
17
+ inputs: List[InputWidget],
18
+ ) -> None:
19
+ self.inputs = inputs
20
+
21
+ def settings(self):
22
+ return dict(
23
+ [(input_widget.id, input_widget.initial) for input_widget in self.inputs]
24
+ )
25
+
26
+ async def send(self):
27
+ settings = self.settings()
28
+ context.emitter.set_assistant_settings(settings)
29
+
30
+ inputs_content = [input_widget.to_dict() for input_widget in self.inputs]
31
+ # logging.info(f"Sending assistant settings: {inputs_content}")
32
+ await context.emitter.emit("assistant_settings", inputs_content)
33
+
34
+ # logging.info(f"Assistant settings sent: {settings}")
35
+ return settings