sarmaddev commited on
Commit
3369a79
·
1 Parent(s): adbd93a

Add application file

Browse files
Files changed (3) hide show
  1. Dockerfile +28 -0
  2. app.py +71 -0
  3. requirements.txt +511 -0
Dockerfile ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.10-slim
2
+
3
+ # Instruct uv to install packages into the system Python environment (recommended in containerized environments)
4
+ ENV UV_SYSTEM_PYTHON=1
5
+
6
+ # Install uv with pip
7
+ RUN pip install --no-cache-dir uv
8
+
9
+ # Set the working directory inside the container
10
+ WORKDIR /app
11
+
12
+ # Copy the rest of your project files into the image.
13
+ # Make sure your .dockerignore excludes .venv so that any local virtual environment is not copied.
14
+ COPY . .
15
+
16
+
17
+ # Use uv to sync (this will create a fresh .venv and install your dependencies)
18
+ RUN uv sync
19
+
20
+ # Add the .venv/bin directory to the PATH so that chainlit is accessible
21
+ ENV PATH="/app/.venv/bin:${PATH}"
22
+
23
+
24
+ # Expose the port used by your Chainlit app (modify the port as needed)
25
+ EXPOSE 7860
26
+
27
+ # Start the Chainlit app
28
+ CMD ["chainlit", "run", "app.py", "--host", "0.0.0.0", "--port", "7860"]
app.py ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import chainlit as cl
2
+ import asyncio
3
+ import os
4
+ from dotenv import load_dotenv, find_dotenv
5
+ from agents import (
6
+ Agent,
7
+ Runner,
8
+ AsyncOpenAI,
9
+ set_default_openai_api,
10
+ set_default_openai_client,
11
+ )
12
+ from openai.types.responses import ResponseTextDeltaEvent
13
+
14
+
15
+
16
+ load_dotenv(find_dotenv())
17
+ base_url = 'https://generativelanguage.googleapis.com/v1beta/openai/'
18
+ api_key = os.getenv('gemini_api_key')
19
+ model = 'gemini-2.0-flash'
20
+
21
+
22
+
23
+ client = AsyncOpenAI(base_url=base_url, api_key=api_key)
24
+ set_default_openai_client(client,use_for_tracing=False)
25
+ set_default_openai_api('chat_completions')
26
+
27
+
28
+ agent = Agent(
29
+ name='Teacher',
30
+ instructions='You are a teacher that teaches any topic in detail',
31
+ model=model,
32
+ #tool=[function_tool],
33
+ )
34
+
35
+
36
+ @cl.on_chat_start
37
+ async def on_chat_start():
38
+ cl.user_session.set("history", [])
39
+ await cl.Message("Hi! This your Teacher. Please provide a brief description of the topic you would like to learn about.").send()
40
+
41
+ @cl.on_message
42
+ async def handle(message: cl.Message):
43
+
44
+ history = cl.user_session.get("history")
45
+
46
+ history.append({
47
+ "role":"user",
48
+ "content":message.content
49
+ })
50
+
51
+ msg = cl.Message(content="")
52
+
53
+
54
+
55
+ result = Runner.run_streamed(agent,f"{history}")
56
+
57
+
58
+ async for event in result.stream_events():
59
+ if event.type == "raw_response_event" and isinstance(event.data, ResponseTextDeltaEvent):
60
+ response = event.data.delta
61
+ await msg.stream_token(response)
62
+
63
+ history.append({
64
+ "role":"teacher",
65
+ "content":msg.content
66
+ })
67
+
68
+ cl.user_session.set("history", history)
69
+
70
+
71
+ await msg.update()
requirements.txt ADDED
@@ -0,0 +1,511 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # This file was autogenerated by uv via the following command:
2
+ # uv pip compile pyproject.toml -o requirements.txt
3
+ aiofiles==24.1.0
4
+ # via chainlit
5
+ aiohappyeyeballs==2.6.1
6
+ # via aiohttp
7
+ aiohttp==3.11.16
8
+ # via traceloop-sdk
9
+ aiosignal==1.3.2
10
+ # via aiohttp
11
+ annotated-types==0.7.0
12
+ # via pydantic
13
+ anthropic==0.49.0
14
+ # via opentelemetry-instrumentation-bedrock
15
+ anyio==4.9.0
16
+ # via
17
+ # anthropic
18
+ # asyncer
19
+ # httpx
20
+ # mcp
21
+ # openai
22
+ # sse-starlette
23
+ # starlette
24
+ # watchfiles
25
+ asyncer==0.0.7
26
+ # via chainlit
27
+ attrs==25.3.0
28
+ # via aiohttp
29
+ backoff==2.2.1
30
+ # via posthog
31
+ bidict==0.23.1
32
+ # via python-socketio
33
+ certifi==2025.1.31
34
+ # via
35
+ # httpcore
36
+ # httpx
37
+ # requests
38
+ chainlit==2.4.400
39
+ # via teaching-agent (pyproject.toml)
40
+ charset-normalizer==3.4.1
41
+ # via requests
42
+ chevron==0.14.0
43
+ # via literalai
44
+ click==8.1.8
45
+ # via
46
+ # chainlit
47
+ # uvicorn
48
+ colorama==0.4.6
49
+ # via
50
+ # click
51
+ # griffe
52
+ # tqdm
53
+ # traceloop-sdk
54
+ dataclasses-json==0.6.7
55
+ # via chainlit
56
+ deprecated==1.2.18
57
+ # via
58
+ # opentelemetry-api
59
+ # opentelemetry-exporter-otlp-proto-grpc
60
+ # opentelemetry-exporter-otlp-proto-http
61
+ # opentelemetry-semantic-conventions
62
+ # traceloop-sdk
63
+ distro==1.9.0
64
+ # via
65
+ # anthropic
66
+ # openai
67
+ # posthog
68
+ fastapi==0.115.12
69
+ # via chainlit
70
+ filelock==3.18.0
71
+ # via huggingface-hub
72
+ filetype==1.2.0
73
+ # via chainlit
74
+ frozenlist==1.5.0
75
+ # via
76
+ # aiohttp
77
+ # aiosignal
78
+ fsspec==2025.3.2
79
+ # via huggingface-hub
80
+ googleapis-common-protos==1.69.2
81
+ # via
82
+ # opentelemetry-exporter-otlp-proto-grpc
83
+ # opentelemetry-exporter-otlp-proto-http
84
+ griffe==1.7.2
85
+ # via openai-agents
86
+ grpcio==1.71.0
87
+ # via opentelemetry-exporter-otlp-proto-grpc
88
+ h11==0.14.0
89
+ # via
90
+ # httpcore
91
+ # uvicorn
92
+ # wsproto
93
+ httpcore==1.0.8
94
+ # via httpx
95
+ httpx==0.28.1
96
+ # via
97
+ # anthropic
98
+ # chainlit
99
+ # literalai
100
+ # mcp
101
+ # openai
102
+ httpx-sse==0.4.0
103
+ # via mcp
104
+ huggingface-hub==0.30.2
105
+ # via tokenizers
106
+ idna==3.10
107
+ # via
108
+ # anyio
109
+ # httpx
110
+ # requests
111
+ # yarl
112
+ importlib-metadata==8.6.1
113
+ # via opentelemetry-api
114
+ inflection==0.5.1
115
+ # via opentelemetry-instrumentation-llamaindex
116
+ jinja2==3.1.6
117
+ # via traceloop-sdk
118
+ jiter==0.9.0
119
+ # via
120
+ # anthropic
121
+ # openai
122
+ lazify==0.4.0
123
+ # via chainlit
124
+ literalai==0.1.201
125
+ # via chainlit
126
+ markupsafe==3.0.2
127
+ # via jinja2
128
+ marshmallow==3.26.1
129
+ # via dataclasses-json
130
+ mcp==1.6.0
131
+ # via
132
+ # chainlit
133
+ # openai-agents
134
+ monotonic==1.6
135
+ # via posthog
136
+ multidict==6.4.3
137
+ # via
138
+ # aiohttp
139
+ # yarl
140
+ mypy-extensions==1.0.0
141
+ # via typing-inspect
142
+ nest-asyncio==1.6.0
143
+ # via chainlit
144
+ openai==1.73.0
145
+ # via openai-agents
146
+ openai-agents==0.0.9
147
+ # via teaching-agent (pyproject.toml)
148
+ opentelemetry-api==1.31.1
149
+ # via
150
+ # opentelemetry-exporter-otlp-proto-grpc
151
+ # opentelemetry-exporter-otlp-proto-http
152
+ # opentelemetry-instrumentation
153
+ # opentelemetry-instrumentation-alephalpha
154
+ # opentelemetry-instrumentation-anthropic
155
+ # opentelemetry-instrumentation-bedrock
156
+ # opentelemetry-instrumentation-chromadb
157
+ # opentelemetry-instrumentation-cohere
158
+ # opentelemetry-instrumentation-crewai
159
+ # opentelemetry-instrumentation-google-generativeai
160
+ # opentelemetry-instrumentation-groq
161
+ # opentelemetry-instrumentation-haystack
162
+ # opentelemetry-instrumentation-lancedb
163
+ # opentelemetry-instrumentation-langchain
164
+ # opentelemetry-instrumentation-llamaindex
165
+ # opentelemetry-instrumentation-logging
166
+ # opentelemetry-instrumentation-marqo
167
+ # opentelemetry-instrumentation-milvus
168
+ # opentelemetry-instrumentation-mistralai
169
+ # opentelemetry-instrumentation-ollama
170
+ # opentelemetry-instrumentation-openai
171
+ # opentelemetry-instrumentation-pinecone
172
+ # opentelemetry-instrumentation-qdrant
173
+ # opentelemetry-instrumentation-replicate
174
+ # opentelemetry-instrumentation-requests
175
+ # opentelemetry-instrumentation-sagemaker
176
+ # opentelemetry-instrumentation-sqlalchemy
177
+ # opentelemetry-instrumentation-threading
178
+ # opentelemetry-instrumentation-together
179
+ # opentelemetry-instrumentation-transformers
180
+ # opentelemetry-instrumentation-urllib3
181
+ # opentelemetry-instrumentation-vertexai
182
+ # opentelemetry-instrumentation-watsonx
183
+ # opentelemetry-instrumentation-weaviate
184
+ # opentelemetry-sdk
185
+ # opentelemetry-semantic-conventions
186
+ # traceloop-sdk
187
+ # uptrace
188
+ opentelemetry-exporter-otlp==1.31.1
189
+ # via uptrace
190
+ opentelemetry-exporter-otlp-proto-common==1.31.1
191
+ # via
192
+ # opentelemetry-exporter-otlp-proto-grpc
193
+ # opentelemetry-exporter-otlp-proto-http
194
+ opentelemetry-exporter-otlp-proto-grpc==1.31.1
195
+ # via
196
+ # opentelemetry-exporter-otlp
197
+ # traceloop-sdk
198
+ opentelemetry-exporter-otlp-proto-http==1.31.1
199
+ # via
200
+ # opentelemetry-exporter-otlp
201
+ # traceloop-sdk
202
+ opentelemetry-instrumentation==0.52b1
203
+ # via
204
+ # opentelemetry-instrumentation-alephalpha
205
+ # opentelemetry-instrumentation-anthropic
206
+ # opentelemetry-instrumentation-bedrock
207
+ # opentelemetry-instrumentation-chromadb
208
+ # opentelemetry-instrumentation-cohere
209
+ # opentelemetry-instrumentation-crewai
210
+ # opentelemetry-instrumentation-google-generativeai
211
+ # opentelemetry-instrumentation-groq
212
+ # opentelemetry-instrumentation-haystack
213
+ # opentelemetry-instrumentation-lancedb
214
+ # opentelemetry-instrumentation-langchain
215
+ # opentelemetry-instrumentation-llamaindex
216
+ # opentelemetry-instrumentation-logging
217
+ # opentelemetry-instrumentation-marqo
218
+ # opentelemetry-instrumentation-milvus
219
+ # opentelemetry-instrumentation-mistralai
220
+ # opentelemetry-instrumentation-ollama
221
+ # opentelemetry-instrumentation-openai
222
+ # opentelemetry-instrumentation-pinecone
223
+ # opentelemetry-instrumentation-qdrant
224
+ # opentelemetry-instrumentation-replicate
225
+ # opentelemetry-instrumentation-requests
226
+ # opentelemetry-instrumentation-sagemaker
227
+ # opentelemetry-instrumentation-sqlalchemy
228
+ # opentelemetry-instrumentation-threading
229
+ # opentelemetry-instrumentation-together
230
+ # opentelemetry-instrumentation-transformers
231
+ # opentelemetry-instrumentation-urllib3
232
+ # opentelemetry-instrumentation-vertexai
233
+ # opentelemetry-instrumentation-watsonx
234
+ # opentelemetry-instrumentation-weaviate
235
+ # uptrace
236
+ opentelemetry-instrumentation-alephalpha==0.39.0
237
+ # via traceloop-sdk
238
+ opentelemetry-instrumentation-anthropic==0.39.0
239
+ # via traceloop-sdk
240
+ opentelemetry-instrumentation-bedrock==0.39.0
241
+ # via traceloop-sdk
242
+ opentelemetry-instrumentation-chromadb==0.39.0
243
+ # via traceloop-sdk
244
+ opentelemetry-instrumentation-cohere==0.39.0
245
+ # via traceloop-sdk
246
+ opentelemetry-instrumentation-crewai==0.39.0
247
+ # via traceloop-sdk
248
+ opentelemetry-instrumentation-google-generativeai==0.39.0
249
+ # via traceloop-sdk
250
+ opentelemetry-instrumentation-groq==0.39.0
251
+ # via traceloop-sdk
252
+ opentelemetry-instrumentation-haystack==0.39.0
253
+ # via traceloop-sdk
254
+ opentelemetry-instrumentation-lancedb==0.39.0
255
+ # via traceloop-sdk
256
+ opentelemetry-instrumentation-langchain==0.39.0
257
+ # via traceloop-sdk
258
+ opentelemetry-instrumentation-llamaindex==0.39.0
259
+ # via traceloop-sdk
260
+ opentelemetry-instrumentation-logging==0.52b1
261
+ # via traceloop-sdk
262
+ opentelemetry-instrumentation-marqo==0.39.0
263
+ # via traceloop-sdk
264
+ opentelemetry-instrumentation-milvus==0.39.0
265
+ # via traceloop-sdk
266
+ opentelemetry-instrumentation-mistralai==0.39.0
267
+ # via traceloop-sdk
268
+ opentelemetry-instrumentation-ollama==0.39.0
269
+ # via traceloop-sdk
270
+ opentelemetry-instrumentation-openai==0.39.0
271
+ # via traceloop-sdk
272
+ opentelemetry-instrumentation-pinecone==0.39.0
273
+ # via traceloop-sdk
274
+ opentelemetry-instrumentation-qdrant==0.39.0
275
+ # via traceloop-sdk
276
+ opentelemetry-instrumentation-replicate==0.39.0
277
+ # via traceloop-sdk
278
+ opentelemetry-instrumentation-requests==0.52b1
279
+ # via traceloop-sdk
280
+ opentelemetry-instrumentation-sagemaker==0.39.0
281
+ # via traceloop-sdk
282
+ opentelemetry-instrumentation-sqlalchemy==0.52b1
283
+ # via traceloop-sdk
284
+ opentelemetry-instrumentation-threading==0.52b1
285
+ # via traceloop-sdk
286
+ opentelemetry-instrumentation-together==0.39.0
287
+ # via traceloop-sdk
288
+ opentelemetry-instrumentation-transformers==0.39.0
289
+ # via traceloop-sdk
290
+ opentelemetry-instrumentation-urllib3==0.52b1
291
+ # via traceloop-sdk
292
+ opentelemetry-instrumentation-vertexai==0.39.0
293
+ # via traceloop-sdk
294
+ opentelemetry-instrumentation-watsonx==0.39.0
295
+ # via traceloop-sdk
296
+ opentelemetry-instrumentation-weaviate==0.39.0
297
+ # via traceloop-sdk
298
+ opentelemetry-proto==1.31.1
299
+ # via
300
+ # opentelemetry-exporter-otlp-proto-common
301
+ # opentelemetry-exporter-otlp-proto-grpc
302
+ # opentelemetry-exporter-otlp-proto-http
303
+ opentelemetry-sdk==1.31.1
304
+ # via
305
+ # opentelemetry-exporter-otlp-proto-grpc
306
+ # opentelemetry-exporter-otlp-proto-http
307
+ # traceloop-sdk
308
+ # uptrace
309
+ opentelemetry-semantic-conventions==0.52b1
310
+ # via
311
+ # opentelemetry-instrumentation
312
+ # opentelemetry-instrumentation-alephalpha
313
+ # opentelemetry-instrumentation-anthropic
314
+ # opentelemetry-instrumentation-bedrock
315
+ # opentelemetry-instrumentation-chromadb
316
+ # opentelemetry-instrumentation-cohere
317
+ # opentelemetry-instrumentation-crewai
318
+ # opentelemetry-instrumentation-google-generativeai
319
+ # opentelemetry-instrumentation-groq
320
+ # opentelemetry-instrumentation-haystack
321
+ # opentelemetry-instrumentation-lancedb
322
+ # opentelemetry-instrumentation-langchain
323
+ # opentelemetry-instrumentation-llamaindex
324
+ # opentelemetry-instrumentation-marqo
325
+ # opentelemetry-instrumentation-milvus
326
+ # opentelemetry-instrumentation-mistralai
327
+ # opentelemetry-instrumentation-ollama
328
+ # opentelemetry-instrumentation-openai
329
+ # opentelemetry-instrumentation-pinecone
330
+ # opentelemetry-instrumentation-qdrant
331
+ # opentelemetry-instrumentation-replicate
332
+ # opentelemetry-instrumentation-requests
333
+ # opentelemetry-instrumentation-sagemaker
334
+ # opentelemetry-instrumentation-sqlalchemy
335
+ # opentelemetry-instrumentation-together
336
+ # opentelemetry-instrumentation-transformers
337
+ # opentelemetry-instrumentation-urllib3
338
+ # opentelemetry-instrumentation-vertexai
339
+ # opentelemetry-instrumentation-watsonx
340
+ # opentelemetry-instrumentation-weaviate
341
+ # opentelemetry-sdk
342
+ opentelemetry-semantic-conventions-ai==0.4.3
343
+ # via
344
+ # opentelemetry-instrumentation-alephalpha
345
+ # opentelemetry-instrumentation-anthropic
346
+ # opentelemetry-instrumentation-bedrock
347
+ # opentelemetry-instrumentation-chromadb
348
+ # opentelemetry-instrumentation-cohere
349
+ # opentelemetry-instrumentation-crewai
350
+ # opentelemetry-instrumentation-google-generativeai
351
+ # opentelemetry-instrumentation-groq
352
+ # opentelemetry-instrumentation-haystack
353
+ # opentelemetry-instrumentation-lancedb
354
+ # opentelemetry-instrumentation-langchain
355
+ # opentelemetry-instrumentation-llamaindex
356
+ # opentelemetry-instrumentation-marqo
357
+ # opentelemetry-instrumentation-milvus
358
+ # opentelemetry-instrumentation-mistralai
359
+ # opentelemetry-instrumentation-ollama
360
+ # opentelemetry-instrumentation-openai
361
+ # opentelemetry-instrumentation-pinecone
362
+ # opentelemetry-instrumentation-qdrant
363
+ # opentelemetry-instrumentation-replicate
364
+ # opentelemetry-instrumentation-sagemaker
365
+ # opentelemetry-instrumentation-together
366
+ # opentelemetry-instrumentation-transformers
367
+ # opentelemetry-instrumentation-vertexai
368
+ # opentelemetry-instrumentation-watsonx
369
+ # opentelemetry-instrumentation-weaviate
370
+ # traceloop-sdk
371
+ opentelemetry-util-http==0.52b1
372
+ # via
373
+ # opentelemetry-instrumentation-requests
374
+ # opentelemetry-instrumentation-urllib3
375
+ packaging==24.2
376
+ # via
377
+ # chainlit
378
+ # huggingface-hub
379
+ # literalai
380
+ # marshmallow
381
+ # opentelemetry-instrumentation
382
+ # opentelemetry-instrumentation-sqlalchemy
383
+ posthog==3.24.1
384
+ # via traceloop-sdk
385
+ propcache==0.3.1
386
+ # via
387
+ # aiohttp
388
+ # yarl
389
+ protobuf==5.29.4
390
+ # via
391
+ # googleapis-common-protos
392
+ # opentelemetry-proto
393
+ pydantic==2.11.3
394
+ # via
395
+ # anthropic
396
+ # chainlit
397
+ # fastapi
398
+ # literalai
399
+ # mcp
400
+ # openai
401
+ # openai-agents
402
+ # pydantic-settings
403
+ # traceloop-sdk
404
+ pydantic-core==2.33.1
405
+ # via pydantic
406
+ pydantic-settings==2.8.1
407
+ # via mcp
408
+ pyjwt==2.10.1
409
+ # via chainlit
410
+ python-dateutil==2.9.0.post0
411
+ # via posthog
412
+ python-dotenv==1.1.0
413
+ # via
414
+ # chainlit
415
+ # pydantic-settings
416
+ python-engineio==4.11.2
417
+ # via python-socketio
418
+ python-multipart==0.0.18
419
+ # via chainlit
420
+ python-socketio==5.12.1
421
+ # via chainlit
422
+ pyyaml==6.0.2
423
+ # via huggingface-hub
424
+ regex==2024.11.6
425
+ # via tiktoken
426
+ requests==2.32.3
427
+ # via
428
+ # huggingface-hub
429
+ # openai-agents
430
+ # opentelemetry-exporter-otlp-proto-http
431
+ # posthog
432
+ # tiktoken
433
+ simple-websocket==1.1.0
434
+ # via python-engineio
435
+ six==1.17.0
436
+ # via
437
+ # posthog
438
+ # python-dateutil
439
+ sniffio==1.3.1
440
+ # via
441
+ # anthropic
442
+ # anyio
443
+ # openai
444
+ sse-starlette==2.2.1
445
+ # via mcp
446
+ starlette==0.41.3
447
+ # via
448
+ # chainlit
449
+ # fastapi
450
+ # mcp
451
+ # sse-starlette
452
+ syncer==2.0.3
453
+ # via chainlit
454
+ tenacity==8.5.0
455
+ # via traceloop-sdk
456
+ tiktoken==0.9.0
457
+ # via opentelemetry-instrumentation-openai
458
+ tokenizers==0.21.1
459
+ # via opentelemetry-instrumentation-bedrock
460
+ tomli==2.2.1
461
+ # via chainlit
462
+ tqdm==4.67.1
463
+ # via
464
+ # huggingface-hub
465
+ # openai
466
+ traceloop-sdk==0.39.0
467
+ # via literalai
468
+ types-requests==2.32.0.20250328
469
+ # via openai-agents
470
+ typing-extensions==4.13.2
471
+ # via
472
+ # anthropic
473
+ # anyio
474
+ # fastapi
475
+ # huggingface-hub
476
+ # openai
477
+ # openai-agents
478
+ # opentelemetry-sdk
479
+ # pydantic
480
+ # pydantic-core
481
+ # typing-inspect
482
+ # typing-inspection
483
+ typing-inspect==0.9.0
484
+ # via dataclasses-json
485
+ typing-inspection==0.4.0
486
+ # via pydantic
487
+ uptrace==1.31.0
488
+ # via chainlit
489
+ urllib3==2.4.0
490
+ # via
491
+ # requests
492
+ # types-requests
493
+ uvicorn==0.34.0
494
+ # via
495
+ # chainlit
496
+ # mcp
497
+ watchfiles==0.20.0
498
+ # via chainlit
499
+ wrapt==1.17.2
500
+ # via
501
+ # deprecated
502
+ # opentelemetry-instrumentation
503
+ # opentelemetry-instrumentation-sqlalchemy
504
+ # opentelemetry-instrumentation-threading
505
+ # opentelemetry-instrumentation-urllib3
506
+ wsproto==1.2.0
507
+ # via simple-websocket
508
+ yarl==1.19.0
509
+ # via aiohttp
510
+ zipp==3.21.0
511
+ # via importlib-metadata