chainlit 0.6.3__py3-none-any.whl → 0.6.401__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.
- chainlit/__init__.py +38 -1
- chainlit/cache.py +6 -9
- chainlit/cli/deploy.py +2 -2
- chainlit/client/base.py +2 -1
- chainlit/client/cloud.py +10 -8
- chainlit/client/local.py +4 -1
- chainlit/client/utils.py +4 -2
- chainlit/config.py +22 -1
- chainlit/context.py +1 -1
- chainlit/db/prisma/schema.prisma +2 -1
- chainlit/element.py +6 -1
- chainlit/emitter.py +6 -1
- chainlit/frontend/dist/assets/index-69562d52.js +543 -0
- chainlit/frontend/dist/assets/{index-34600e45.js → index-ace9588d.js} +1 -1
- chainlit/frontend/dist/index.html +1 -1
- chainlit/haystack/__init__.py +5 -10
- chainlit/input_widget.py +35 -0
- chainlit/langchain/__init__.py +5 -10
- chainlit/langchain/callbacks.py +98 -30
- chainlit/langflow/__init__.py +5 -10
- chainlit/llama_index/__init__.py +5 -10
- chainlit/llama_index/callbacks.py +16 -8
- chainlit/message.py +17 -4
- chainlit/playground/config.py +14 -14
- chainlit/playground/providers/__init__.py +1 -0
- chainlit/playground/providers/huggingface.py +3 -1
- chainlit/playground/providers/langchain.py +87 -0
- chainlit/playground/providers/openai.py +2 -2
- chainlit/prompt.py +8 -1
- chainlit/server.py +9 -8
- chainlit/socket.py +16 -1
- chainlit/sync.py +3 -1
- chainlit/types.py +12 -7
- chainlit/utils.py +23 -0
- {chainlit-0.6.3.dist-info → chainlit-0.6.401.dist-info}/METADATA +6 -5
- chainlit-0.6.401.dist-info/RECORD +61 -0
- chainlit/frontend/dist/assets/index-87533cb5.js +0 -533
- chainlit-0.6.3.dist-info/RECORD +0 -60
- {chainlit-0.6.3.dist-info → chainlit-0.6.401.dist-info}/WHEEL +0 -0
- {chainlit-0.6.3.dist-info → chainlit-0.6.401.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
from typing import Union
|
|
2
|
+
|
|
3
|
+
from fastapi.responses import StreamingResponse
|
|
4
|
+
|
|
5
|
+
from chainlit.playground.provider import BaseProvider
|
|
6
|
+
from chainlit.prompt import PromptMessage
|
|
7
|
+
from chainlit.sync import make_async
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class LangchainGenericProvider(BaseProvider):
|
|
11
|
+
from langchain.chat_models.base import BaseChatModel
|
|
12
|
+
from langchain.llms.base import LLM
|
|
13
|
+
|
|
14
|
+
llm: Union[LLM, BaseChatModel]
|
|
15
|
+
|
|
16
|
+
def __init__(
|
|
17
|
+
self,
|
|
18
|
+
id: str,
|
|
19
|
+
name: str,
|
|
20
|
+
llm: Union[LLM, BaseChatModel],
|
|
21
|
+
is_chat: bool = False,
|
|
22
|
+
):
|
|
23
|
+
super().__init__(
|
|
24
|
+
id=id,
|
|
25
|
+
name=name,
|
|
26
|
+
env_vars={},
|
|
27
|
+
inputs=[],
|
|
28
|
+
is_chat=is_chat,
|
|
29
|
+
)
|
|
30
|
+
self.llm = llm
|
|
31
|
+
|
|
32
|
+
def prompt_message_to_langchain_message(self, message: PromptMessage):
|
|
33
|
+
from langchain.schema.messages import (
|
|
34
|
+
AIMessage,
|
|
35
|
+
FunctionMessage,
|
|
36
|
+
HumanMessage,
|
|
37
|
+
SystemMessage,
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
content = "" if message.formatted is None else message.formatted
|
|
41
|
+
if message.role == "user":
|
|
42
|
+
return HumanMessage(content=content)
|
|
43
|
+
elif message.role == "assistant":
|
|
44
|
+
return AIMessage(content=content)
|
|
45
|
+
elif message.role == "system":
|
|
46
|
+
return SystemMessage(content=content)
|
|
47
|
+
elif message.role == "function":
|
|
48
|
+
return FunctionMessage(
|
|
49
|
+
content=content, name=message.name if message.name else "function"
|
|
50
|
+
)
|
|
51
|
+
else:
|
|
52
|
+
raise ValueError(f"Got unknown type {message}")
|
|
53
|
+
|
|
54
|
+
def format_message(self, message, prompt):
|
|
55
|
+
message = super().format_message(message, prompt)
|
|
56
|
+
return self.prompt_message_to_langchain_message(message)
|
|
57
|
+
|
|
58
|
+
def message_to_string(self, message: PromptMessage) -> str:
|
|
59
|
+
return message.to_string()
|
|
60
|
+
|
|
61
|
+
async def create_completion(self, request):
|
|
62
|
+
from langchain.schema.messages import BaseMessageChunk
|
|
63
|
+
|
|
64
|
+
await super().create_completion(request)
|
|
65
|
+
|
|
66
|
+
messages = self.create_prompt(request)
|
|
67
|
+
|
|
68
|
+
stream = make_async(self.llm.stream)
|
|
69
|
+
|
|
70
|
+
result = await stream(
|
|
71
|
+
input=messages,
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
def create_event_stream():
|
|
75
|
+
try:
|
|
76
|
+
for chunk in result:
|
|
77
|
+
if isinstance(chunk, BaseMessageChunk):
|
|
78
|
+
yield chunk.content
|
|
79
|
+
else:
|
|
80
|
+
yield chunk
|
|
81
|
+
except Exception as e:
|
|
82
|
+
# The better solution would be to return a 500 error, but
|
|
83
|
+
# langchain raises the error in the stream, and the http
|
|
84
|
+
# headers have already been sent.
|
|
85
|
+
yield f"Failed to create completion: {str(e)}"
|
|
86
|
+
|
|
87
|
+
return StreamingResponse(create_event_stream())
|
|
@@ -196,7 +196,7 @@ ChatOpenAI = ChatOpenAIProvider(
|
|
|
196
196
|
Select(
|
|
197
197
|
id="model",
|
|
198
198
|
label="Model",
|
|
199
|
-
values=["gpt-3.5-turbo", "gpt-3.5-turbo-16k", "
|
|
199
|
+
values=["gpt-3.5-turbo", "gpt-3.5-turbo-16k", "gpt-4", "gpt-4-32k"],
|
|
200
200
|
initial_value="gpt-3.5-turbo",
|
|
201
201
|
),
|
|
202
202
|
*openai_common_inputs,
|
|
@@ -213,7 +213,7 @@ AzureChatOpenAI = ChatOpenAIProvider(
|
|
|
213
213
|
Select(
|
|
214
214
|
id="model",
|
|
215
215
|
label="Model",
|
|
216
|
-
values=["gpt-3.5-turbo", "gpt-3.5-turbo-16k", "
|
|
216
|
+
values=["gpt-3.5-turbo", "gpt-3.5-turbo-16k", "gpt-4", "gpt-4-32k"],
|
|
217
217
|
initial_value="gpt-3.5-turbo",
|
|
218
218
|
),
|
|
219
219
|
*openai_common_inputs,
|
chainlit/prompt.py
CHANGED
|
@@ -13,10 +13,17 @@ class BaseTemplate(DataClassJsonMixin):
|
|
|
13
13
|
|
|
14
14
|
@dataclass
|
|
15
15
|
class PromptMessage(BaseTemplate):
|
|
16
|
+
# This is used for Langchain's MessagesPlaceholder
|
|
17
|
+
placeholder_size: Optional[int] = None
|
|
18
|
+
# This is used for OpenAI's function message
|
|
19
|
+
name: Optional[str] = None
|
|
16
20
|
role: Optional[Literal["system", "assistant", "user", "function"]] = None
|
|
17
21
|
|
|
18
22
|
def to_openai(self):
|
|
19
|
-
|
|
23
|
+
msg_dict = {"role": self.role, "content": self.formatted}
|
|
24
|
+
if self.role == "function":
|
|
25
|
+
msg_dict["name"] = self.name or ""
|
|
26
|
+
return msg_dict
|
|
20
27
|
|
|
21
28
|
def to_string(self):
|
|
22
29
|
return f"{self.role}: {self.formatted}"
|
chainlit/server.py
CHANGED
|
@@ -11,12 +11,7 @@ from contextlib import asynccontextmanager
|
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
|
|
13
13
|
from fastapi import FastAPI, HTTPException, Request
|
|
14
|
-
from fastapi.responses import
|
|
15
|
-
FileResponse,
|
|
16
|
-
HTMLResponse,
|
|
17
|
-
JSONResponse,
|
|
18
|
-
PlainTextResponse,
|
|
19
|
-
)
|
|
14
|
+
from fastapi.responses import FileResponse, HTMLResponse, JSONResponse
|
|
20
15
|
from fastapi.staticfiles import StaticFiles
|
|
21
16
|
from fastapi_socketio import SocketManager
|
|
22
17
|
from starlette.middleware.cors import CORSMiddleware
|
|
@@ -30,6 +25,7 @@ from chainlit.config import DEFAULT_HOST, config, load_module, reload_config
|
|
|
30
25
|
from chainlit.logger import logger
|
|
31
26
|
from chainlit.markdown import get_markdown_str
|
|
32
27
|
from chainlit.playground.config import get_llm_providers
|
|
28
|
+
from chainlit.telemetry import trace_event
|
|
33
29
|
from chainlit.types import (
|
|
34
30
|
CompletionRequest,
|
|
35
31
|
DeleteConversationRequest,
|
|
@@ -125,7 +121,10 @@ app = FastAPI(lifespan=lifespan)
|
|
|
125
121
|
app.mount("/public", StaticFiles(directory="public", check_dir=False), name="public")
|
|
126
122
|
app.mount(
|
|
127
123
|
"/assets",
|
|
128
|
-
StaticFiles(
|
|
124
|
+
StaticFiles(
|
|
125
|
+
packages=[("chainlit", os.path.join(build_dir, "assets"))],
|
|
126
|
+
follow_symlink=config.project.follow_symlink,
|
|
127
|
+
),
|
|
129
128
|
name="assets",
|
|
130
129
|
)
|
|
131
130
|
|
|
@@ -198,6 +197,7 @@ async def completion(request: CompletionRequest):
|
|
|
198
197
|
detail=f"LLM provider '{request.prompt.provider}' not found",
|
|
199
198
|
)
|
|
200
199
|
|
|
200
|
+
trace_event("pp_create_completion")
|
|
201
201
|
response = await provider.create_completion(request)
|
|
202
202
|
|
|
203
203
|
return response
|
|
@@ -206,6 +206,7 @@ async def completion(request: CompletionRequest):
|
|
|
206
206
|
@app.get("/project/llm-providers")
|
|
207
207
|
async def get_providers():
|
|
208
208
|
"""List the providers."""
|
|
209
|
+
trace_event("pp_get_llm_providers")
|
|
209
210
|
providers = get_llm_providers()
|
|
210
211
|
providers = [p.to_dict() for p in providers]
|
|
211
212
|
return JSONResponse(content={"providers": providers})
|
|
@@ -251,7 +252,7 @@ async def get_member_role(request: Request):
|
|
|
251
252
|
|
|
252
253
|
auth_client = await get_auth_client_from_request(request)
|
|
253
254
|
role = auth_client.user_infos["role"] if auth_client.user_infos else "ANONYMOUS"
|
|
254
|
-
return
|
|
255
|
+
return JSONResponse(content=role)
|
|
255
256
|
|
|
256
257
|
|
|
257
258
|
@app.post("/project/conversations")
|
chainlit/socket.py
CHANGED
|
@@ -15,6 +15,7 @@ from chainlit.message import ErrorMessage, Message
|
|
|
15
15
|
from chainlit.server import socket
|
|
16
16
|
from chainlit.session import Session
|
|
17
17
|
from chainlit.telemetry import trace_event
|
|
18
|
+
from chainlit.types import FileSpec
|
|
18
19
|
from chainlit.user_session import user_sessions
|
|
19
20
|
|
|
20
21
|
|
|
@@ -132,7 +133,12 @@ async def connection_successful(sid):
|
|
|
132
133
|
"local",
|
|
133
134
|
"custom",
|
|
134
135
|
]:
|
|
135
|
-
await context.session.db_client.create_user(
|
|
136
|
+
await context.session.db_client.create_user(
|
|
137
|
+
context.session.auth_client.user_infos
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
if config.code.on_file_upload:
|
|
141
|
+
await context.emitter.enable_file_upload(config.code.on_file_upload_config)
|
|
136
142
|
|
|
137
143
|
if config.code.on_chat_start:
|
|
138
144
|
"""Call the on_chat_start function provided by the developer."""
|
|
@@ -236,3 +242,12 @@ async def change_settings(sid, settings: Dict[str, Any]):
|
|
|
236
242
|
|
|
237
243
|
if config.code.on_settings_update:
|
|
238
244
|
await config.code.on_settings_update(settings)
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
@socket.on("file_upload")
|
|
248
|
+
async def file_upload(sid, files: Any):
|
|
249
|
+
"""Handle file upload from the UI."""
|
|
250
|
+
init_context(sid)
|
|
251
|
+
|
|
252
|
+
if config.code.on_file_upload:
|
|
253
|
+
await config.code.on_file_upload(files)
|
chainlit/sync.py
CHANGED
|
@@ -22,8 +22,10 @@ T = TypeVar("T")
|
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
def run_sync(co: Coroutine[Any, Any, T_Retval]) -> T_Retval:
|
|
25
|
+
"""Run the coroutine synchronously."""
|
|
26
|
+
# Execute from the main thread in the main event loop
|
|
25
27
|
if threading.current_thread() == threading.main_thread():
|
|
26
28
|
return sync(co)
|
|
27
|
-
else:
|
|
29
|
+
else: # Execute from a thread in the main event loop
|
|
28
30
|
result = asyncio.run_coroutine_threadsafe(co, loop=context.loop)
|
|
29
31
|
return result.result()
|
chainlit/types.py
CHANGED
|
@@ -6,7 +6,9 @@ from pydantic.dataclasses import dataclass
|
|
|
6
6
|
|
|
7
7
|
from chainlit.prompt import Prompt
|
|
8
8
|
|
|
9
|
-
InputWidgetType = Literal[
|
|
9
|
+
InputWidgetType = Literal[
|
|
10
|
+
"switch", "slider", "select", "textinput", "tags", "numberinput"
|
|
11
|
+
]
|
|
10
12
|
ElementType = Literal[
|
|
11
13
|
"image", "avatar", "text", "pdf", "tasklist", "audio", "video", "file"
|
|
12
14
|
]
|
|
@@ -14,6 +16,13 @@ ElementDisplay = Literal["inline", "side", "page"]
|
|
|
14
16
|
ElementSize = Literal["small", "medium", "large"]
|
|
15
17
|
|
|
16
18
|
|
|
19
|
+
@dataclass
|
|
20
|
+
class FileSpec(DataClassJsonMixin):
|
|
21
|
+
accept: Union[List[str], Dict[str, List[str]]]
|
|
22
|
+
max_files: int
|
|
23
|
+
max_size_mb: int
|
|
24
|
+
|
|
25
|
+
|
|
17
26
|
@dataclass
|
|
18
27
|
class AskSpec(DataClassJsonMixin):
|
|
19
28
|
"""Specification for asking the user."""
|
|
@@ -23,12 +32,8 @@ class AskSpec(DataClassJsonMixin):
|
|
|
23
32
|
|
|
24
33
|
|
|
25
34
|
@dataclass
|
|
26
|
-
class AskFileSpec(AskSpec, DataClassJsonMixin):
|
|
27
|
-
"""Specification for asking the user
|
|
28
|
-
|
|
29
|
-
accept: Union[List[str], Dict[str, List[str]]]
|
|
30
|
-
max_files: int
|
|
31
|
-
max_size_mb: int
|
|
35
|
+
class AskFileSpec(FileSpec, AskSpec, DataClassJsonMixin):
|
|
36
|
+
"""Specification for asking the user a file."""
|
|
32
37
|
|
|
33
38
|
|
|
34
39
|
class AskResponse(TypedDict):
|
chainlit/utils.py
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import functools
|
|
1
2
|
import importlib
|
|
2
3
|
import inspect
|
|
3
4
|
from typing import Callable
|
|
4
5
|
|
|
6
|
+
from packaging import version
|
|
7
|
+
|
|
5
8
|
from chainlit.context import context
|
|
6
9
|
from chainlit.logger import logger
|
|
7
10
|
from chainlit.message import ErrorMessage
|
|
@@ -18,6 +21,7 @@ def wrap_user_function(user_function: Callable, with_task=False) -> Callable:
|
|
|
18
21
|
Callable: The wrapped function.
|
|
19
22
|
"""
|
|
20
23
|
|
|
24
|
+
@functools.wraps(user_function)
|
|
21
25
|
async def wrapper(*args):
|
|
22
26
|
# Get the parameter names of the user-defined function
|
|
23
27
|
user_function_params = list(inspect.signature(user_function).parameters.keys())
|
|
@@ -63,3 +67,22 @@ def make_module_getattr(registry):
|
|
|
63
67
|
return getattr(module, name)
|
|
64
68
|
|
|
65
69
|
return __getattr__
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def check_module_version(name, required_version):
|
|
73
|
+
"""
|
|
74
|
+
Check the version of a module.
|
|
75
|
+
|
|
76
|
+
Args:
|
|
77
|
+
name (str): A module name.
|
|
78
|
+
version (str): Minimum version.
|
|
79
|
+
|
|
80
|
+
Returns:
|
|
81
|
+
(bool): Return True if the module is installed and the version
|
|
82
|
+
match the minimum required version.
|
|
83
|
+
"""
|
|
84
|
+
try:
|
|
85
|
+
module = importlib.import_module(name)
|
|
86
|
+
except ModuleNotFoundError:
|
|
87
|
+
return False
|
|
88
|
+
return version.parse(module.__version__) >= version.parse(required_version)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: chainlit
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.401
|
|
4
4
|
Summary: A faster way to build chatbot UIs.
|
|
5
5
|
Home-page: https://github.com/Chainlit/chainlit
|
|
6
6
|
License: Apache-2.0 license
|
|
@@ -18,20 +18,21 @@ Requires-Dist: asyncer (>=0.0.2,<0.0.3)
|
|
|
18
18
|
Requires-Dist: auth0-python (>=4.4.0,<5.0.0)
|
|
19
19
|
Requires-Dist: click (>=8.1.3,<9.0.0)
|
|
20
20
|
Requires-Dist: dataclasses_json (>=0.5.7,<0.6.0)
|
|
21
|
-
Requires-Dist: fastapi (>=0.
|
|
21
|
+
Requires-Dist: fastapi (>=0.99.0,<0.100.0)
|
|
22
22
|
Requires-Dist: fastapi-socketio (>=0.0.10,<0.0.11)
|
|
23
23
|
Requires-Dist: filetype (>=1.2.0,<2.0.0)
|
|
24
24
|
Requires-Dist: lazify (>=0.4.0,<0.5.0)
|
|
25
25
|
Requires-Dist: nest-asyncio (>=1.5.6,<2.0.0)
|
|
26
|
-
Requires-Dist:
|
|
26
|
+
Requires-Dist: packaging (>=23.1,<24.0)
|
|
27
|
+
Requires-Dist: prisma (>=0.10.0,<0.11.0)
|
|
27
28
|
Requires-Dist: pydantic (>=1.10.8,<2.0.0)
|
|
28
29
|
Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
|
|
29
30
|
Requires-Dist: python-graphql-client (>=0.4.3,<0.5.0)
|
|
30
31
|
Requires-Dist: syncer (>=2.0.3,<3.0.0)
|
|
31
32
|
Requires-Dist: tomli (>=2.0.1,<3.0.0)
|
|
32
33
|
Requires-Dist: uptrace (>=1.18.0,<2.0.0)
|
|
33
|
-
Requires-Dist: uvicorn (>=0.
|
|
34
|
-
Requires-Dist: watchfiles (>=0.
|
|
34
|
+
Requires-Dist: uvicorn (>=0.23.2,<0.24.0)
|
|
35
|
+
Requires-Dist: watchfiles (>=0.20.0,<0.21.0)
|
|
35
36
|
Project-URL: Repository, https://github.com/Chainlit/chainlit
|
|
36
37
|
Description-Content-Type: text/markdown
|
|
37
38
|
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
chainlit/__init__.py,sha256=GwCGkhW8kEqkgK1-7BrT5NwyWvkgKIYlcY1Hwggi8Fs,7446
|
|
2
|
+
chainlit/__main__.py,sha256=7Vg3w3T3qDuz4KDu5lQhLH6lQ3cYdume7gHH7Z1V97U,87
|
|
3
|
+
chainlit/action.py,sha256=xKphgUy0nMGY-5DJs8Ve4Jm9S6DmpIWB5Atr8iGe0Ro,1344
|
|
4
|
+
chainlit/cache.py,sha256=si9qTRY6Qa2TQmOhhWMYmkGTW0snWtyQ7hwYxMIXyOE,1345
|
|
5
|
+
chainlit/chat_settings.py,sha256=NoRdgTaJtetUBY3alNUWQCA9R9NT6Ewy3mY2Mn1s8Fo,878
|
|
6
|
+
chainlit/cli/__init__.py,sha256=znoIijqydQwI-oeqh-H3FIDwst2lByG9eN1G19Ls154,5152
|
|
7
|
+
chainlit/cli/auth.py,sha256=IwVnU5BaFKm8w2dWQ9NSUg0zYPs97wL78ne1oBxRefQ,4082
|
|
8
|
+
chainlit/cli/deploy.py,sha256=C82JQm6hiOEsxM_LIqmozeR1f1kTb-ZIn5FBaQQ65B4,2585
|
|
9
|
+
chainlit/cli/utils.py,sha256=mE2d9oOk-B2b9ZvDV1zENoDWxjfMriGP7bVwEFduZP4,717
|
|
10
|
+
chainlit/client/base.py,sha256=HIDEn47v0GtOairys90ULsIauaHzo0Nc1XEe9_Qz3ic,3804
|
|
11
|
+
chainlit/client/cloud.py,sha256=6Fh3qBOjKXO-RbIuW-B5crOZkHEC1iX0ZN9j2AcWojc,16715
|
|
12
|
+
chainlit/client/local.py,sha256=L2MX5JcX08Jb6L-n9D9WA9P6Swll9Yv-3n08eTjz19c,8969
|
|
13
|
+
chainlit/client/utils.py,sha256=evtI0tM0Bf5mvUr3i0mBFDNdFAbdIFQ_Yn5lnasUrbI,2920
|
|
14
|
+
chainlit/config.py,sha256=Sf4pD5L8_XpO0IIKuMX24JqmbvLSASFJ84JylY5e72c,10116
|
|
15
|
+
chainlit/context.py,sha256=fQzZ0AiPq2tUOwrVWmg43pHmZGrmu5cZn0FYN3iAjZU,1264
|
|
16
|
+
chainlit/db/__init__.py,sha256=AQw7cg_qyCa8x4tBcHcpKnBtplqIMSv0deT8MNM07YQ,1086
|
|
17
|
+
chainlit/db/prisma/schema.prisma,sha256=XjUeWdLZ0ktAEWMRiM2i9PYKr7tTownCcyww2ZqqtaQ,1724
|
|
18
|
+
chainlit/element.py,sha256=CdjUwY22QFpJ0WWVXesZa3G2HKrKpIkUZIBUXvWQyTI,9184
|
|
19
|
+
chainlit/emitter.py,sha256=OkLj0PCfM78T3gIEOpLSb7pNDdscQt4NUspBdqKNfSQ,5130
|
|
20
|
+
chainlit/frontend/dist/assets/index-69562d52.js,sha256=39U5A0F5wOTkpBLoEdjEARtmtmmAmvWobZ6YSWjTY30,1516711
|
|
21
|
+
chainlit/frontend/dist/assets/index-a6e13df6.css,sha256=puE99ts96eKxNBZADPvq8_IwuJtfDcnDug6dtLTP4As,5697
|
|
22
|
+
chainlit/frontend/dist/assets/index-ace9588d.js,sha256=A8w9oyBajXY9GSm0KKGqQU6iQam5VWTvCGge-GLpSZU,614554
|
|
23
|
+
chainlit/frontend/dist/assets/logo_dark-bc7401f6.svg,sha256=vHQB9g-n5OqOmuH3Fduuc7ZMg0EmMsGyO9cEnYwLbHg,8889
|
|
24
|
+
chainlit/frontend/dist/assets/logo_light-f19fc2ea.svg,sha256=8Z_C6t-0V9QL9ldmLjaLfp2REcGDuaTeNynj6-6muNI,8891
|
|
25
|
+
chainlit/frontend/dist/favicon.svg,sha256=0Cy8x28obT5eWW3nxZRhsEvu6_zMqrqbg0y6hT3D0Q0,6455
|
|
26
|
+
chainlit/frontend/dist/index.html,sha256=O-9FQnEi0c7cGFsUVt2jeB2Nz86rIwhcPc3vEKWX4e8,832
|
|
27
|
+
chainlit/haystack/__init__.py,sha256=uZ77YiPy-qleSTi3dQCDO9HE6S6F6GpJWmh7jO4cxXA,217
|
|
28
|
+
chainlit/haystack/callbacks.py,sha256=SRnY2WCvhMWuM5jfgaBdf5clYNGnwT7CVeKdeApP-G0,3910
|
|
29
|
+
chainlit/hello.py,sha256=bqKP00i0FKHnZ9fdyVW1a2xDAA1g7IWT0EVzUNky7rA,417
|
|
30
|
+
chainlit/input_widget.py,sha256=EV5Ldm9oTRuuYp82IrhD90hq1U_s7yp6a5XFMFsAU24,7335
|
|
31
|
+
chainlit/langchain/__init__.py,sha256=zErMw0_3ufSGeF9ye7X0ZX3wDat4mTOx97T40ePDO2g,217
|
|
32
|
+
chainlit/langchain/callbacks.py,sha256=nhlskk08J2LXcExw2uJ4g5mEt2gmzj78AjLBpFHZDyM,21546
|
|
33
|
+
chainlit/langflow/__init__.py,sha256=Oihgbq3lmcLbxyCiD8Bf8-PvANPYoopjiB3mUG4dBEE,882
|
|
34
|
+
chainlit/llama_index/__init__.py,sha256=c7wIUZmKTtZPU9zpdGpKTHctQaBWTuRGqTN0kkIkBcg,218
|
|
35
|
+
chainlit/llama_index/callbacks.py,sha256=yWC7qzI9UK2MEFGAfVpiNZkfLwxMtyvmmjTEytw0ReI,4795
|
|
36
|
+
chainlit/logger.py,sha256=wTwRSZsLfXwWy6U4351IgWAm4KCMThgxm9EZpjGUEr4,373
|
|
37
|
+
chainlit/markdown.py,sha256=L2IPPWxIlrhJZcKPfO1akomHdN3sgC2EvC2ilxR8MQs,1624
|
|
38
|
+
chainlit/message.py,sha256=SxCQQ2naSKsTpbkPC2coJXCU48s6mrDLXJbrsr256r4,14181
|
|
39
|
+
chainlit/playground/__init__.py,sha256=igNRcBgqLKPTjOQtTNhhGNJFmZn-Dl1fHRQzQSjDGTQ,80
|
|
40
|
+
chainlit/playground/config.py,sha256=WMDKS9F2YYwGS1DyXhyktKbbRb5B4mZUZ0IbAsdbDOk,894
|
|
41
|
+
chainlit/playground/provider.py,sha256=Nh00Bm3XFK3GN2v1rcg5w204PzU7iRQ8RM9co-_qBcI,4424
|
|
42
|
+
chainlit/playground/providers/__init__.py,sha256=1gOwojHFZijRaK2rpA8_qsNV55EdQLc8J_cFYZyrDJM,184
|
|
43
|
+
chainlit/playground/providers/anthropic.py,sha256=pISSLD1D3ChmbLQ6A_QyGPQDuAeJ540JfL8iZacKbZo,3319
|
|
44
|
+
chainlit/playground/providers/huggingface.py,sha256=wImaCfxSgaqNp5t2LcJfjzL56_-6yjMLOLYn1raNN-8,2123
|
|
45
|
+
chainlit/playground/providers/langchain.py,sha256=wpVs_IHcZPNwP-RNUshU6SoECxeOnwNaRRCkhlMw1Ig,2741
|
|
46
|
+
chainlit/playground/providers/openai.py,sha256=OnPNO96MZ-YXdIQt7sth5zvfXl024DJpbvY6jGXaW2M,6715
|
|
47
|
+
chainlit/prompt.py,sha256=gBcdlCY6HK3DvO-PDAUgbf1OgMyA9FjD7htdQnNGRB0,1178
|
|
48
|
+
chainlit/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
|
+
chainlit/server.py,sha256=s_DDvFP74DEC_im1oxmRXw2EEuRN5wG-0kRrEHKwj3k,10735
|
|
50
|
+
chainlit/session.py,sha256=22nn7Qa8NFUPiPEnAP4Xe92x6LU2Ee7J2YRs9s68RgM,3265
|
|
51
|
+
chainlit/socket.py,sha256=j1Kk6FR0sYRS-whrMYh8sQ2QHGGcNNz7I6Skh38qIxs,7718
|
|
52
|
+
chainlit/sync.py,sha256=Rhb7wu8zXiCeA0bmLFpZarEFzREg28uYXg9U9X87Jho,818
|
|
53
|
+
chainlit/telemetry.py,sha256=cQ97cu1eSbrJXA_6buOVSGLr9Ioi13PUpo9V1zBq4JQ,3203
|
|
54
|
+
chainlit/types.py,sha256=swd72Q1V6gk2TWH5Pf1_iYLhbrD9fQWF0nkIw6Kay1E,1665
|
|
55
|
+
chainlit/user_session.py,sha256=9vXAPu0wyZWeSSG2Td6ULWIjKfsPAAufKjbk-0FrwVM,1727
|
|
56
|
+
chainlit/utils.py,sha256=RksBfwm6D8yol45WTjcjk792i3wyIS3R7D_L4JaS8lw,2572
|
|
57
|
+
chainlit/version.py,sha256=iosXhlXclBwBqlADFKEilxAC2wWKbtuBKi87AmPi7s8,196
|
|
58
|
+
chainlit-0.6.401.dist-info/METADATA,sha256=QtfKVHILKdsDJ7f4YE4KYpEm37Pjbq_IxrB4h9VgvEs,4380
|
|
59
|
+
chainlit-0.6.401.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
|
|
60
|
+
chainlit-0.6.401.dist-info/entry_points.txt,sha256=FrkqdjrFl8juSnvBndniyX7XuKojmUwO4ghRh-CFMQc,45
|
|
61
|
+
chainlit-0.6.401.dist-info/RECORD,,
|