rgallardo commited on
Commit
48ebcb5
1 Parent(s): e241036

Initial commit

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ *.sqlite3 filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ .venv
.python-version ADDED
@@ -0,0 +1 @@
 
 
1
+ 3.10.10
README.md CHANGED
@@ -4,7 +4,7 @@ emoji: 🏢
4
  colorFrom: pink
5
  colorTo: gray
6
  sdk: gradio
7
- sdk_version: 4.31.2
8
  app_file: app.py
9
  pinned: false
10
  ---
 
4
  colorFrom: pink
5
  colorTo: gray
6
  sdk: gradio
7
+ sdk_version: 4.31.0
8
  app_file: app.py
9
  pinned: false
10
  ---
app.py ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ __import__('pysqlite3')
2
+ import sys
3
+ sys.modules['sqlite3'] = sys.modules.pop('pysqlite3')
4
+
5
+ from langchain_chroma import Chroma
6
+ from langchain_openai import OpenAIEmbeddings
7
+ from langchain_core.messages import HumanMessage
8
+ from langchain.chains import create_history_aware_retriever, create_retrieval_chain
9
+ from langchain.chains.combine_documents import create_stuff_documents_chain
10
+ from langchain_chroma import Chroma
11
+ from langchain_openai import OpenAIEmbeddings
12
+ from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder, PromptTemplate
13
+ from langchain_openai import ChatOpenAI
14
+ from dotenv import load_dotenv
15
+ import gradio as gr
16
+
17
+ load_dotenv()
18
+
19
+ # OpenAI's GPT model to use
20
+ GPT_VERSION = "gpt-3.5-turbo-0125"
21
+
22
+ # Prompt used to contextualize a question inside the context of a conversation
23
+ CONTEXTUALIZATION_PROMPT = """Given a chat history and the latest user question \
24
+ which might reference context in the chat history, formulate a standalone question \
25
+ which can be understood without the chat history. Do NOT answer the question, \
26
+ just reformulate it if needed and otherwise return it as is."""
27
+
28
+ # Prompt used for building an answer to a question using the retrieved context
29
+ SYSTEM_PROMPT = """You are a marketing assistant for question-answering tasks for a company called Tryolabs. \
30
+ You must answer the question using pieces of retrieved context consisting of blogposts written by Tryolabs. \
31
+ Answer the question in a friendly manner, trying to refer to Tryolabs' content to engage the user and encourage \
32
+ to make contact with the company. \
33
+ When you can, include properly formatted hyperlinks to the content. TRY providing references to different content \
34
+ within the same response. Extract the hyperlink from the context. \
35
+ If you don't know the answer to the question, encourage the user to contact us for more information. \
36
+ Tryolabs' contact email is hello@tryolabs.com. \
37
+ Keep your answers concise. \
38
+ ALWAYS respond with Markdown. \
39
+ You MUST only use information found on the pieces of context given. You MUST NOT attribute any inventions to \
40
+ Tryolabs unless explicitly mentioned on the context. \
41
+
42
+ {context}"""
43
+
44
+ llm = ChatOpenAI(model=GPT_VERSION)
45
+
46
+ vectorstore = Chroma(persist_directory="./chroma_db", embedding_function=OpenAIEmbeddings())
47
+
48
+ retriever = vectorstore.as_retriever(search_type="mmr", search_kwargs={'k': 6, 'lambda_mult': 0.3})
49
+
50
+ contextualize_q_prompt = ChatPromptTemplate.from_messages(
51
+ [
52
+ ("system", CONTEXTUALIZATION_PROMPT),
53
+ MessagesPlaceholder("chat_history"),
54
+ ("human", "{input}"),
55
+ ]
56
+ )
57
+
58
+ history_aware_retriever = create_history_aware_retriever(llm, retriever, contextualize_q_prompt)
59
+
60
+ custom_rag_prompt = ChatPromptTemplate.from_messages(
61
+ [
62
+ ("system", SYSTEM_PROMPT),
63
+ MessagesPlaceholder("chat_history"),
64
+ ("human", "{input}")
65
+ ]
66
+ )
67
+
68
+ document_prompt = PromptTemplate(
69
+ input_variables=['page_content', 'title', 'link'],
70
+ template="Title: {title}, Link to blogpost: {link}, Content: {page_content}"
71
+ )
72
+ qa_chain = create_stuff_documents_chain(llm, custom_rag_prompt, document_prompt=document_prompt)
73
+ rag_chain = create_retrieval_chain(history_aware_retriever, qa_chain)
74
+
75
+
76
+ def predict(message, history):
77
+ chat_history = []
78
+
79
+ for m, a in history:
80
+ chat_history.append(HumanMessage(content=m))
81
+ chat_history.append(a)
82
+
83
+ ai_response = rag_chain.invoke({"input": message, "chat_history": chat_history})
84
+
85
+ return ai_response["answer"]
86
+
87
+
88
+ gr.ChatInterface(predict).launch()
chroma_db/40cfeb6b-ca96-4457-986f-a2c4b1cb67b0/data_level0.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e80579c3770fa3828f94929cfac1344518de8f9fc10cac262ee6939f28e36df1
3
+ size 6284000
chroma_db/40cfeb6b-ca96-4457-986f-a2c4b1cb67b0/header.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b79d047db53c51e35116714da0b758090f648594d1ad044284bdd6f6756eb567
3
+ size 100
chroma_db/40cfeb6b-ca96-4457-986f-a2c4b1cb67b0/index_metadata.pickle ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b9e84ff4ca6cbcf856227323fc2e32d7275fde24dc3d55941ccc01a5910674da
3
+ size 55974
chroma_db/40cfeb6b-ca96-4457-986f-a2c4b1cb67b0/length.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:581553af82e8aac6ab852c7c08b1347250ce2ca32abdbe206ad2234689ff4636
3
+ size 4000
chroma_db/40cfeb6b-ca96-4457-986f-a2c4b1cb67b0/link_lists.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2ef528985e10e55fc2d1b32cc50a14d0845772f6e3cbd584fa032df651dc1945
3
+ size 8420
chroma_db/chroma.sqlite3 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:810ce85ed0c03b6ad2c3879aad9724abc31b1bb2c43478d1dde2bb26e5dc4112
3
+ size 16801792
requirements.txt ADDED
@@ -0,0 +1,199 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ aiofiles==23.2.1 ; python_full_version == "3.10.10"
2
+ aiohttp==3.9.5 ; python_full_version == "3.10.10"
3
+ aiosignal==1.3.1 ; python_full_version == "3.10.10"
4
+ altair==5.3.0 ; python_full_version == "3.10.10"
5
+ annotated-types==0.6.0 ; python_full_version == "3.10.10"
6
+ anyio==4.3.0 ; python_full_version == "3.10.10"
7
+ appnope==0.1.4 ; platform_system == "Darwin" and python_full_version == "3.10.10"
8
+ asgiref==3.8.1 ; python_full_version == "3.10.10"
9
+ asttokens==2.4.1 ; python_full_version == "3.10.10"
10
+ async-timeout==4.0.3 ; python_full_version == "3.10.10"
11
+ attrs==23.2.0 ; python_full_version == "3.10.10"
12
+ backoff==2.2.1 ; python_full_version == "3.10.10"
13
+ bcrypt==4.1.3 ; python_full_version == "3.10.10"
14
+ beautifulsoup4==4.12.3 ; python_full_version == "3.10.10"
15
+ bs4==0.0.2 ; python_full_version == "3.10.10"
16
+ build==1.2.1 ; python_full_version == "3.10.10"
17
+ cachetools==5.3.3 ; python_full_version == "3.10.10"
18
+ certifi==2024.2.2 ; python_full_version == "3.10.10"
19
+ cffi==1.16.0 ; implementation_name == "pypy" and python_full_version == "3.10.10"
20
+ charset-normalizer==3.3.2 ; python_full_version == "3.10.10"
21
+ chroma-hnswlib==0.7.3 ; python_full_version == "3.10.10"
22
+ chromadb==0.4.24 ; python_full_version == "3.10.10"
23
+ click==8.1.7 ; python_full_version == "3.10.10"
24
+ colorama==0.4.6 ; sys_platform == "win32" and python_full_version == "3.10.10" or platform_system == "Windows" and python_full_version == "3.10.10" or os_name == "nt" and python_full_version == "3.10.10"
25
+ coloredlogs==15.0.1 ; python_full_version == "3.10.10"
26
+ comm==0.2.2 ; python_full_version == "3.10.10"
27
+ contourpy==1.2.1 ; python_full_version == "3.10.10"
28
+ cssselect==1.2.0 ; python_full_version == "3.10.10"
29
+ cycler==0.12.1 ; python_full_version == "3.10.10"
30
+ dataclasses-json==0.6.6 ; python_full_version == "3.10.10"
31
+ debugpy==1.8.1 ; python_full_version == "3.10.10"
32
+ decorator==5.1.1 ; python_full_version == "3.10.10"
33
+ deprecated==1.2.14 ; python_full_version == "3.10.10"
34
+ distro==1.9.0 ; python_full_version == "3.10.10"
35
+ dnspython==2.6.1 ; python_full_version == "3.10.10"
36
+ email-validator==2.1.1 ; python_full_version == "3.10.10"
37
+ exceptiongroup==1.2.1 ; python_full_version == "3.10.10"
38
+ executing==2.0.1 ; python_full_version == "3.10.10"
39
+ fastapi-cli==0.0.3 ; python_full_version == "3.10.10"
40
+ fastapi==0.111.0 ; python_full_version == "3.10.10"
41
+ feedfinder2==0.0.4 ; python_full_version == "3.10.10"
42
+ feedparser==6.0.11 ; python_full_version == "3.10.10"
43
+ ffmpy==0.3.2 ; python_full_version == "3.10.10"
44
+ filelock==3.14.0 ; python_full_version == "3.10.10"
45
+ flatbuffers==24.3.25 ; python_full_version == "3.10.10"
46
+ fonttools==4.51.0 ; python_full_version == "3.10.10"
47
+ frozenlist==1.4.1 ; python_full_version == "3.10.10"
48
+ fsspec==2024.3.1 ; python_full_version == "3.10.10"
49
+ google-auth==2.29.0 ; python_full_version == "3.10.10"
50
+ googleapis-common-protos==1.63.0 ; python_full_version == "3.10.10"
51
+ gradio-client==0.16.2 ; python_full_version == "3.10.10"
52
+ gradio==4.31.0 ; python_full_version == "3.10.10"
53
+ greenlet==3.0.3 ; platform_machine == "aarch64" and python_full_version == "3.10.10" or platform_machine == "ppc64le" and python_full_version == "3.10.10" or platform_machine == "x86_64" and python_full_version == "3.10.10" or platform_machine == "amd64" and python_full_version == "3.10.10" or platform_machine == "AMD64" and python_full_version == "3.10.10" or platform_machine == "win32" and python_full_version == "3.10.10" or platform_machine == "WIN32" and python_full_version == "3.10.10"
54
+ grpcio==1.63.0 ; python_full_version == "3.10.10"
55
+ h11==0.14.0 ; python_full_version == "3.10.10"
56
+ httpcore==1.0.5 ; python_full_version == "3.10.10"
57
+ httptools==0.6.1 ; python_full_version == "3.10.10"
58
+ httpx==0.27.0 ; python_full_version == "3.10.10"
59
+ huggingface-hub==0.23.0 ; python_full_version == "3.10.10"
60
+ humanfriendly==10.0 ; python_full_version == "3.10.10"
61
+ idna==3.7 ; python_full_version == "3.10.10"
62
+ importlib-metadata==7.0.0 ; python_full_version == "3.10.10"
63
+ importlib-resources==6.4.0 ; python_full_version == "3.10.10"
64
+ ipdb==0.13.13 ; python_full_version == "3.10.10"
65
+ ipykernel==6.29.4 ; python_full_version == "3.10.10"
66
+ ipython==8.24.0 ; python_full_version == "3.10.10"
67
+ jedi==0.19.1 ; python_full_version == "3.10.10"
68
+ jieba3k==0.35.1 ; python_full_version == "3.10.10"
69
+ jinja2==3.1.4 ; python_full_version == "3.10.10"
70
+ joblib==1.4.2 ; python_full_version == "3.10.10"
71
+ jsonpatch==1.33 ; python_full_version == "3.10.10"
72
+ jsonpointer==2.4 ; python_full_version == "3.10.10"
73
+ jsonschema-specifications==2023.12.1 ; python_full_version == "3.10.10"
74
+ jsonschema==4.22.0 ; python_full_version == "3.10.10"
75
+ jupyter-client==8.6.1 ; python_full_version == "3.10.10"
76
+ jupyter-core==5.7.2 ; python_full_version == "3.10.10"
77
+ kiwisolver==1.4.5 ; python_full_version == "3.10.10"
78
+ kubernetes==29.0.0 ; python_full_version == "3.10.10"
79
+ langchain-chroma==0.1.0 ; python_full_version == "3.10.10"
80
+ langchain-community==0.0.38 ; python_full_version == "3.10.10"
81
+ langchain-core==0.1.52 ; python_full_version == "3.10.10"
82
+ langchain-openai==0.1.6 ; python_full_version == "3.10.10"
83
+ langchain-text-splitters==0.0.1 ; python_full_version == "3.10.10"
84
+ langchain==0.1.20 ; python_full_version == "3.10.10"
85
+ langchainhub==0.1.15 ; python_full_version == "3.10.10"
86
+ langsmith==0.1.57 ; python_full_version == "3.10.10"
87
+ lxml-html-clean==0.1.1 ; python_full_version == "3.10.10"
88
+ lxml==5.2.2 ; python_full_version == "3.10.10"
89
+ markdown-it-py==3.0.0 ; python_full_version == "3.10.10"
90
+ markupsafe==2.1.5 ; python_full_version == "3.10.10"
91
+ marshmallow==3.21.2 ; python_full_version == "3.10.10"
92
+ matplotlib-inline==0.1.7 ; python_full_version == "3.10.10"
93
+ matplotlib==3.8.4 ; python_full_version == "3.10.10"
94
+ mdurl==0.1.2 ; python_full_version == "3.10.10"
95
+ mmh3==4.1.0 ; python_full_version == "3.10.10"
96
+ monotonic==1.6 ; python_full_version == "3.10.10"
97
+ mpmath==1.3.0 ; python_full_version == "3.10.10"
98
+ multidict==6.0.5 ; python_full_version == "3.10.10"
99
+ mypy-extensions==1.0.0 ; python_full_version == "3.10.10"
100
+ nest-asyncio==1.6.0 ; python_full_version == "3.10.10"
101
+ newspaper3k==0.2.8 ; python_full_version == "3.10.10"
102
+ nltk==3.8.1 ; python_full_version == "3.10.10"
103
+ numpy==1.26.4 ; python_full_version == "3.10.10"
104
+ oauthlib==3.2.2 ; python_full_version == "3.10.10"
105
+ onnxruntime==1.17.3 ; python_full_version == "3.10.10"
106
+ openai==1.28.1 ; python_full_version == "3.10.10"
107
+ opentelemetry-api==1.24.0 ; python_full_version == "3.10.10"
108
+ opentelemetry-exporter-otlp-proto-common==1.24.0 ; python_full_version == "3.10.10"
109
+ opentelemetry-exporter-otlp-proto-grpc==1.24.0 ; python_full_version == "3.10.10"
110
+ opentelemetry-instrumentation-asgi==0.45b0 ; python_full_version == "3.10.10"
111
+ opentelemetry-instrumentation-fastapi==0.45b0 ; python_full_version == "3.10.10"
112
+ opentelemetry-instrumentation==0.45b0 ; python_full_version == "3.10.10"
113
+ opentelemetry-proto==1.24.0 ; python_full_version == "3.10.10"
114
+ opentelemetry-sdk==1.24.0 ; python_full_version == "3.10.10"
115
+ opentelemetry-semantic-conventions==0.45b0 ; python_full_version == "3.10.10"
116
+ opentelemetry-util-http==0.45b0 ; python_full_version == "3.10.10"
117
+ orjson==3.10.3 ; python_full_version == "3.10.10"
118
+ overrides==7.7.0 ; python_full_version == "3.10.10"
119
+ packaging==23.2 ; python_full_version == "3.10.10"
120
+ pandas==2.2.2 ; python_full_version == "3.10.10"
121
+ parso==0.8.4 ; python_full_version == "3.10.10"
122
+ pexpect==4.9.0 ; sys_platform != "win32" and sys_platform != "emscripten" and python_full_version == "3.10.10"
123
+ pillow==10.3.0 ; python_full_version == "3.10.10"
124
+ platformdirs==4.2.1 ; python_full_version == "3.10.10"
125
+ posthog==3.5.0 ; python_full_version == "3.10.10"
126
+ prompt-toolkit==3.0.43 ; python_full_version == "3.10.10"
127
+ protobuf==4.25.3 ; python_full_version == "3.10.10"
128
+ psutil==5.9.8 ; python_full_version == "3.10.10"
129
+ ptyprocess==0.7.0 ; sys_platform != "win32" and sys_platform != "emscripten" and python_full_version == "3.10.10"
130
+ pulsar-client==3.5.0 ; python_full_version == "3.10.10"
131
+ pure-eval==0.2.2 ; python_full_version == "3.10.10"
132
+ pyasn1-modules==0.4.0 ; python_full_version == "3.10.10"
133
+ pyasn1==0.6.0 ; python_full_version == "3.10.10"
134
+ pycparser==2.22 ; implementation_name == "pypy" and python_full_version == "3.10.10"
135
+ pydantic-core==2.18.2 ; python_full_version == "3.10.10"
136
+ pydantic==2.7.1 ; python_full_version == "3.10.10"
137
+ pydub==0.25.1 ; python_full_version == "3.10.10"
138
+ pygments==2.18.0 ; python_full_version == "3.10.10"
139
+ pyparsing==3.1.2 ; python_full_version == "3.10.10"
140
+ pypika==0.48.9 ; python_full_version == "3.10.10"
141
+ pyproject-hooks==1.1.0 ; python_full_version == "3.10.10"
142
+ pyreadline3==3.4.1 ; sys_platform == "win32" and python_full_version == "3.10.10"
143
+ pysqlite3-binary==0.5.2.post3 ; python_full_version == "3.10.10"
144
+ python-dateutil==2.9.0.post0 ; python_full_version == "3.10.10"
145
+ python-dotenv==1.0.1 ; python_full_version == "3.10.10"
146
+ python-multipart==0.0.9 ; python_full_version == "3.10.10"
147
+ pytz==2024.1 ; python_full_version == "3.10.10"
148
+ pywin32==306 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_full_version == "3.10.10"
149
+ pyyaml==6.0.1 ; python_full_version == "3.10.10"
150
+ pyzmq==26.0.3 ; python_full_version == "3.10.10"
151
+ referencing==0.35.1 ; python_full_version == "3.10.10"
152
+ regex==2024.5.10 ; python_full_version == "3.10.10"
153
+ requests-file==2.0.0 ; python_full_version == "3.10.10"
154
+ requests-oauthlib==1.3.1 ; python_full_version == "3.10.10"
155
+ requests==2.31.0 ; python_full_version == "3.10.10"
156
+ rich==13.7.1 ; python_full_version == "3.10.10"
157
+ rpds-py==0.18.1 ; python_full_version == "3.10.10"
158
+ rsa==4.9 ; python_full_version == "3.10.10"
159
+ ruff==0.4.4 ; sys_platform != "emscripten" and python_full_version == "3.10.10"
160
+ semantic-version==2.10.0 ; python_full_version == "3.10.10"
161
+ setuptools==69.5.1 ; python_full_version == "3.10.10"
162
+ sgmllib3k==1.0.0 ; python_full_version == "3.10.10"
163
+ shellingham==1.5.4 ; python_full_version == "3.10.10"
164
+ six==1.16.0 ; python_full_version == "3.10.10"
165
+ sniffio==1.3.1 ; python_full_version == "3.10.10"
166
+ soupsieve==2.5 ; python_full_version == "3.10.10"
167
+ sqlalchemy==2.0.30 ; python_full_version == "3.10.10"
168
+ stack-data==0.6.3 ; python_full_version == "3.10.10"
169
+ starlette==0.37.2 ; python_full_version == "3.10.10"
170
+ sympy==1.12 ; python_full_version == "3.10.10"
171
+ tenacity==8.3.0 ; python_full_version == "3.10.10"
172
+ tiktoken==0.6.0 ; python_full_version == "3.10.10"
173
+ tinysegmenter==0.3 ; python_full_version == "3.10.10"
174
+ tldextract==5.1.2 ; python_full_version == "3.10.10"
175
+ tokenizers==0.19.1 ; python_full_version == "3.10.10"
176
+ tomli==2.0.1 ; python_full_version == "3.10.10"
177
+ tomlkit==0.12.0 ; python_full_version == "3.10.10"
178
+ toolz==0.12.1 ; python_full_version == "3.10.10"
179
+ tornado==6.4 ; python_full_version == "3.10.10"
180
+ tqdm==4.66.4 ; python_full_version == "3.10.10"
181
+ traitlets==5.14.3 ; python_full_version == "3.10.10"
182
+ tweepy==4.14.0 ; python_full_version == "3.10.10"
183
+ typer==0.12.3 ; python_full_version == "3.10.10"
184
+ types-requests==2.31.0.20240406 ; python_full_version == "3.10.10"
185
+ typing-extensions==4.11.0 ; python_full_version == "3.10.10"
186
+ typing-inspect==0.9.0 ; python_full_version == "3.10.10"
187
+ tzdata==2024.1 ; python_full_version == "3.10.10"
188
+ ujson==5.9.0 ; python_full_version == "3.10.10"
189
+ urllib3==2.2.1 ; python_full_version == "3.10.10"
190
+ uvicorn==0.29.0 ; sys_platform != "emscripten" and python_full_version == "3.10.10"
191
+ uvicorn[standard]==0.29.0 ; python_full_version == "3.10.10"
192
+ uvloop==0.19.0 ; sys_platform != "win32" and sys_platform != "cygwin" and platform_python_implementation != "PyPy" and python_full_version == "3.10.10"
193
+ watchfiles==0.21.0 ; python_full_version == "3.10.10"
194
+ wcwidth==0.2.13 ; python_full_version == "3.10.10"
195
+ websocket-client==1.8.0 ; python_full_version == "3.10.10"
196
+ websockets==11.0.3 ; python_full_version == "3.10.10"
197
+ wrapt==1.16.0 ; python_full_version == "3.10.10"
198
+ yarl==1.9.4 ; python_full_version == "3.10.10"
199
+ zipp==3.18.1 ; python_full_version == "3.10.10"