Compare commits

...

16 Commits

Author SHA1 Message Date
Logan Markewich a455c0a3b9 bump version, add image support 2024-05-28 11:29:47 -06:00
dependabot[bot] 42845f8d07 Bump requests from 2.31.0 to 2.32.2 (#198)
Bumps [requests](https://github.com/psf/requests) from 2.31.0 to 2.32.2.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.31.0...v2.32.2)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-23 20:44:57 +02:00
dependabot[bot] 8b63ae9c46 Bump tqdm from 4.66.2 to 4.66.3 (#197)
Bumps [tqdm](https://github.com/tqdm/tqdm) from 4.66.2 to 4.66.3.
- [Release notes](https://github.com/tqdm/tqdm/releases)
- [Commits](https://github.com/tqdm/tqdm/compare/v4.66.2...v4.66.3)

---
updated-dependencies:
- dependency-name: tqdm
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-23 20:43:04 +02:00
Pierre-Loic Doulcet 173060dc50 New option skip diagonal text and invalidate cache (#178)
* New option skip diagonal text and invalidate cache
2024-05-23 20:42:38 +02:00
Pierre-Loic Doulcet d19b35cd48 allow for .jpg images (#195) 2024-05-23 20:23:09 +02:00
Jerry Liu 0c83fbd679 nit: add caltrain weekend doc (#193) 2024-05-22 00:57:18 -07:00
Jerry Liu 6ae9c1d9cb clean up gpt4o notebook (#192) 2024-05-21 08:40:50 -07:00
Jerry Liu 27523b657a fix colab badge (#186) 2024-05-17 20:49:27 -07:00
Jerry Liu 56d73c1a3f llamaparse example over caltrain schedule (#185) 2024-05-17 09:22:16 -07:00
Jerry Liu 0d2ad9faab gpt4o notebook over tesla impact docs (#180)
Co-authored-by: Logan Markewich <logan.markewich@live.com>
2024-05-16 00:07:54 -07:00
Logan 4572f00657 add new mode and params for openai (#179)
add new mode
2024-05-14 12:24:25 -06:00
Logan 9ed208131f Ensure image extensions, vbump (#159) 2024-04-24 20:39:39 -06:00
Pierre-Loic Doulcet 91b03b2ea7 add html support (#154) 2024-04-23 13:14:13 -06:00
Yi Ding 70b5dc3a63 some notebook updates (#148) 2024-04-18 21:57:10 -06:00
Anoop Sharma d6ab0aa232 Added utils files (#91) 2024-04-14 15:17:31 -06:00
Logan f679e1c76b Skip tests if CICD doesn't populate the secrets (#142) 2024-04-14 15:12:22 -06:00
21 changed files with 1515 additions and 201 deletions
Binary file not shown.
+529
View File
@@ -0,0 +1,529 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "c148b65e-e8a6-476e-86ba-bf6a73d479c7",
"metadata": {},
"source": [
"# RAG over the Caltrain Weekend Schedule \n",
"\n",
"<a href=\"https://colab.research.google.com/github/run-llama/llama_parse/blob/main/examples/caltrain/caltrain_text_mode.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>\n",
"\n",
"This example shows off LlamaParse parsing capabilities to build a functioning query pipeline over the Caltrain weekend schedule, a big timetable containing all trains northbound and southbound and their stops in various cities.\n",
"\n",
"Naive parsing solutions mess up in representing this tabular representation, leading to LLM hallucinations. In contrast, LlamaParse text-mode spatially lays out the table in a neat format, enabling more sophisticated LLMs like gpt-4-turbo to understand the spacing and reason over all the numbers.\n",
"\n",
"**NOTE**: LlamaParse markdown mode doesn't quite work yet - it's in development!"
]
},
{
"cell_type": "markdown",
"id": "ef115dbe-b834-4639-828e-e2c11aef710b",
"metadata": {},
"source": [
"## Setup\n",
"\n",
"Download the data."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e6ae2e38-30c9-4865-aa13-47780bc3848f",
"metadata": {},
"outputs": [],
"source": [
"import nest_asyncio\n",
"\n",
"nest_asyncio.apply()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "335ce1d0-757a-4f09-846e-21c409768871",
"metadata": {},
"outputs": [],
"source": [
"!wget \"https://www.caltrain.com/media/31602/download?inline?inline\" -O caltrain_schedule_weekend.pdf"
]
},
{
"cell_type": "markdown",
"id": "45fa9120-65bb-4772-9db7-53e7cecf9adc",
"metadata": {},
"source": [
"## Initialize LlamaParse\n",
"\n",
"Initialize LlamaParse in `text` mode which will represent complex documents incl. text, tables, and figures as nicely formatted text."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "54aa9579-84d4-49bc-ab54-5474e69c1188",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/jerryliu/Programming/llama_parse/.venv/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
" from .autonotebook import tqdm as notebook_tqdm\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Started parsing the file under job_id 5f73353a-1f4b-480d-9eea-58d1d22b75f6\n"
]
}
],
"source": [
"from llama_parse import LlamaParse\n",
"\n",
"docs = LlamaParse(result_type=\"text\").load_data(\"./caltrain_schedule_weekend.pdf\")"
]
},
{
"cell_type": "markdown",
"id": "602756b2-9ea1-4519-a8e3-c773ec624205",
"metadata": {},
"source": [
"Take a look at the below text (and zoom out from the browser to really get the effect!). You'll see that the entire table is nicely laid out."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4928281a-591a-4653-b451-b2b8112a7101",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ZONE 2ZONE 3ZONE 4ZONE 4 ZONE 3ZONE 2ZONE 1ZONE 1\n",
" Printer-Friendly Caltrain Schedule\n",
" Northbound WEEKEND SERVICE to SAN FRANCISCO 2XX Local\n",
"\n",
"\n",
" Train No. 221 225 229 233 237 241 245 249 253 257 261 265 269 273 *277 *281\n",
" Service Types L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2\n",
" Tamien 7:12a 9:05a 10:05a 11:05a 1:05p 3:05p 5:05p 7:05p 9:05p 11:05p\n",
" San Jose Diridon 7:19a 9:12a 10:12a 11:12a 12:12p 1:12p 2:12p 3:12p 4:12p 5:12p 6:12p 7:12p 8:12p 9:12p 10:19p 11:12p\n",
" Santa Clara 7:25a 9:18a 10:18a 11:18a 12:18p 1:18p 2:18p 3:18p 4:18p 5:18p 6:18p 7:18p 8:18p 9:18p 10:25p 11:18p\n",
" Lawrence 7:31a 9:24a 10:24a 11:24a 12:24p 1:24p 2:24p 3:24p 4:24p 5:24p 6:24p 7:24p 8:24p 9:24p 10:31p 11:24p\n",
" Sunnyvale 7:35a 9:28a 10:28a 11:28a 12:28p 1:28p 2:28p 3:28p 4:28p 5:28p 6:28p 7:28p 8:28p 9:28p 10:35p 11:28p\n",
" Mountain View 7:40a 9:34a 10:34a 11:34a 12:34p 1:34p 2:34p 3:34p 4:34p 5:34p 6:34p 7:34p 8:34p 9:34p 10:40p 11:34p\n",
" San Antonio 7:43a 9:37a 10:37a 11:37a 12:37p 1:37p 2:37p 3:37p 4:37p 5:37p 6:37p 7:37p 8:37p 9:37p 10:44p 11:37p\n",
" California Ave 7:48a 9:42a 10:42a 11:42a 12:42p 1:42p 2:42p 3:42p 4:42p 5:42p 6:42p 7:42p 8:42p 9:42p 10:48p 11:42p\n",
" Palo Alto 7:52a 9:46a 10:46a 11:46a 12:46p 1:46p 2:46p 3:46p 4:46p 5:46p 6:46p 7:46p 8:46p 9:46p 10:53p 11:46p\n",
" Menlo Park 7:55a 9:50a 10:50a 11:50a 12:50p 1:50p 2:50p 3:50p 4:50p 5:50p 6:50p 7:50p 8:50p 9:50p 10:56p 11:50p\n",
" Redwood City 8:01a 9:56a 10:56a 11:56a 12:56p 1:56p 2:56p 3:56p 4:56p 5:56p 6:56p 7:56p 8:56p 9:56p 11:02p 11:56p\n",
" San Carlos 8:05a 10:01a 11:01a 12:01p 1:01p 2:01p 3:01p 4:01p 5:01p 6:01p 7:01p 8:01p 9:01p 10:01p 11:07p 12:01a\n",
" Belmont 8:09a 10:04a 11:04a 12:04p 1:04p 2:04p 3:04p 4:04p 5:04p 6:04p 7:04p 8:04p 9:04p 10:04p 11:10p 12:04a\n",
" Hillsdale 8:12a 10:08a 11:08a 12:08p 1:08p 2:08p 3:08p 4:08p 5:08p 6:08p 7:08p 8:08p 9:08p 10:08p 11:14p 12:08a\n",
" Hayward Park 8:15a 10:11a 11:11a 12:11p 1:11p 2:11p 3:11p 4:11p 5:11p 6:11p 7:11p 8:11p 9:11p 10:11p 11:17p 12:11a\n",
" San Mateo 8:19a 10:15a 11:15a 12:15p 1:15p 2:15p 3:15p 4:15p 5:15p 6:15p 7:15p 8:15p 9:15p 10:15p 11:21p 12:15a\n",
" Burlingame 8:22a 10:19a 11:19a 12:19p 1:19p 2:19p 3:19p 4:19p 5:19p 6:19p 7:19p 8:19p 9:19p 10:19p 11:25p 12:19a\n",
" Broadway 8:25a 10:22a 11:22a 12:22p 1:22p 2:22p 3:22p 4:22p 5:22p 6:22p 7:22p 8:22p 9:22p 10:22p 11:28p 12:22a\n",
" Millbrae 8:29a 10:26a 11:26a 12:26p 1:26p 2:26p 3:26p 4:26p 5:26p 6:26p 7:26p 8:26p 9:26p 10:26p 11:32p 12:26a\n",
" San Bruno 8:34a 10:30a 11:30a 12:30p 1:30p 2:30p 3:30p 4:30p 5:30p 6:30p 7:30p 8:30p 9:30p 10:30p 11:37p 12:30a\n",
" S. San Francisco 8:38a 10:34a 11:34a 12:34p 1:34p 2:34p 3:34p 4:34p 5:34p 6:34p 7:34p 8:34p 9:34p 10:34p 11:41p 12:34a\n",
" Bayshore 8:44a 10:41a 11:41a 12:41p 1:41p 2:41p 3:41p 4:41p 5:41p 6:41p 7:41p 8:41p 9:41p 10:41p 11:47p 12:41a\n",
" 22 ndStreet 8:50a 10:46a 11:46a 12:46p 1:46p 2:46p 3:46p 4:46p 5:46p 6:46p 7:46p 8:46p 9:46p 10:46p 11:53p 12:46a\n",
" San Francisco 8:56a 10:52a 11:53a 12:53p 1:52p 2:52p 3:52p 4:52p 5:52p 6:52p 7:52p 8:52p 9:52p 10:52p 11:59p 12:52a\n",
" *On SAP Center event days, Train 277 or Train 281departure from San Jose Diridon station may be delayed and will depart no later than 10:30p or 11:30p respectively.\n",
"\n",
"\n",
" Southbound WEEKEND SERVICE to SAN JOSE 2XX Local\n",
" Train No. 224 228 232 236 240 244 248 252 256 260 264 268 272 276 280 284\n",
" Service Types L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2\n",
" San Francisco 8:28a 9:58a 10:58a 11:58a 12:58p 1:58p 2:58p 3:58p 4:58p 5:58p 6:58p 7:58p 8:58p 9:58p 10:58p 12:05a\n",
" 22 ndStreet 8:33a 10:03a 11:03a 12:03p 1:03p 2:03p 3:03p 4:03p 5:03p 6:03p 7:03p 8:03p 9:03p 10:03p 11:03p 12:10a\n",
" Bayshore 8:38a 10:08a 11:08a 12:08p 1:08p 2:08p 3:08p 4:08p 5:08p 6:08p 7:08p 8:08p 9:08p 10:08p 11:08p 12:15a\n",
" S. San Francisco 8:45a 10:15a 11:15a 12:15p 1:15p 2:15p 3:15p 4:15p 5:15p 6:15p 7:15p 8:15p 9:15p 10:15p 11:15p 12:22a\n",
" San Bruno 8:49a 10:19a 11:19a 12:19p 1:19p 2:19p 3:19p 4:19p 5:19p 6:19p 7:19p 8:19p 9:19p 10:19p 11:19p 12:26a\n",
" Millbrae 8:53a 10:24a 11:24a 12:24p 1:24p 2:24p 3:24p 4:24p 5:24p 6:24p 7:24p 8:24p 9:24p 10:24p 11:24p 12:31a\n",
" Broadway 8:57a 10:27a 11:27a 12:27p 1:27p 2:27p 3:27p 4:27p 5:27p 6:27p 7:27p 8:27p 9:27p 10:27p 11:27p 12:35a\n",
" Burlingame 9:00a 10:31a 11:31a 12:31p 1:31p 2:31p 3:31p 4:31p 5:31p 6:31p 7:31p 8:31p 9:31p 10:31p 11:31p 12:38a\n",
" San Mateo 9:04a 10:34a 11:34a 12:34p 1:34p 2:34p 3:34p 4:34p 5:34p 6:34p 7:34p 8:34p 9:34p 10:34p 11:34p 12:41a\n",
" Hayward Park 9:07a 10:37a 11:37a 12:37p 1:37p 2:37p 3:37p 4:37p 5:37p 6:37p 7:37p 8:37p 9:37p 10:37p 11:37p 12:45a\n",
" Hillsdale 9:10a 10:41a 11:41a 12:41p 1:41p 2:41p 3:41p 4:41p 5:41p 6:41p 7:41p 8:41p 9:41p 10:41p 11:41p 12:48a\n",
" Belmont 9:14a 10:44a 11:44a 12:44p 1:44p 2:44p 3:44p 4:44p 5:44p 6:44p 7:44p 8:44p 9:44p 10:44p 11:44p 12:52a\n",
" San Carlos 9:17a 10:48a 11:48a 12:48p 1:48p 2:48p 3:48p 4:48p 5:48p 6:48p 7:48p 8:48p 9:48p 10:48p 11:48p 12:55a\n",
" Redwood City 9:21a 10:52a 11:52a 12:52p 1:52p 2:52p 3:52p 4:52p 5:52p 6:52p 7:52p 8:52p 9:52p 10:52p 11:52p 12:59a\n",
" Menlo Park 9:28a 10:58a 11:58a 12:58p 1:58p 2:58p 3:58p 4:58p 5:58p 6:58p 7:58p 8:58p 9:58p 10:58p 11:58p 1:05a\n",
" Palo Alto 9:32a 11:02a 12:02p 1:02p 2:02p 3:02p 4:02p 5:02p 6:02p 7:02p 8:02p 9:02p 10:02p 11:02p 12:02a 1:09a\n",
" California Avenue 9:36a 11:06a 12:06p 1:06p 2:06p 3:06p 4:06p 5:06p 6:06p 7:06p 8:06p 9:06p 10:06p 11:06p 12:06a 1:12a\n",
" San Antonio 9:41a 11:11a 12:11p 1:11p 2:11p 3:11p 4:11p 5:11p 6:11p 7:11p 8:11p 9:11p 10:11p 11:11p 12:10a 1:17a\n",
" Mountain View 9:45a 11:16a 12:16p 1:16p 2:16p 3:16p 4:16p 5:16p 6:16p 7:16p 8:16p 9:16p 10:16p 11:16p 12:15a 1:21a\n",
" Sunnyvale 9:51a 11:21a 12:21p 1:21p 2:21p 3:21p 4:21p 5:21p 6:21p 7:21p 8:21p 9:21p 10:21p 11:21p 12:20a 1:26a\n",
" Lawrence 9:55a 11:26a 12:26p 1:26p 2:26p 3:26p 4:26p 5:26p 6:26p 7:26p 8:26p 9:26p 10:26p 11:26p 12:25a 1:31a\n",
" Santa Clara 10:01a 11:32a 12:32p 1:32p 2:32p 3:32p 4:32p 5:32p 6:32p 7:32p 8:32p 9:32p 10:32p 11:32p 12:31a 1:37a\n",
" San Jose Diridon 10:10a 11:40a 12:40p 1:38p 2:40p 3:38p 4:40p 5:38p 6:40p 7:38p 8:40p 9:38p 10:40p 11:38p 12:39a 1:44a\n",
" Tamien 10:15a 11:45a 12:45p 2:45p 4:45p 6:45p 8:45p 10:45p 12:44a 1:49a\n",
" EFFECTIVE September 12, 2022 Timetable subject to change without notice.\n"
]
}
],
"source": [
"print(docs[0].get_content())"
]
},
{
"cell_type": "markdown",
"id": "8f5064d4-3e33-4f67-9b2e-46787161538f",
"metadata": {},
"source": [
"## Initialize Query Engine\n",
"\n",
"We now initialize a query engine over this data. Here we use a baseline summary index, which doesn't do vector indexing/chunking and instead dumps the entire text into the prompt.\n",
"\n",
"We see that the LLM (gpt-4-turbo) is able to provide all the stops for train no 225 northbound."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b3e985b6-9d38-449f-9cf9-aae166824eed",
"metadata": {},
"outputs": [],
"source": [
"from llama_index.core import SummaryIndex\n",
"from llama_index.llms.openai import OpenAI\n",
"\n",
"llm = OpenAI(model=\"gpt-4o\")\n",
"index = SummaryIndex.from_documents(docs)\n",
"query_engine = index.as_query_engine(llm=llm)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "66eb0976-2cd6-4b14-9083-124baae9ed5d",
"metadata": {},
"outputs": [],
"source": [
"response = query_engine.query(\n",
" \"What are the stops (and times) for train no 237 northbound?\"\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7dc6f275-07f4-429e-9335-f50982fe974c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The stops and times for train no. 237 northbound are as follows:\n",
"\n",
"- San Jose Diridon: 12:12 PM\n",
"- Santa Clara: 12:18 PM\n",
"- Lawrence: 12:24 PM\n",
"- Sunnyvale: 12:28 PM\n",
"- Mountain View: 12:34 PM\n",
"- San Antonio: 12:37 PM\n",
"- California Ave: 12:42 PM\n",
"- Palo Alto: 12:46 PM\n",
"- Menlo Park: 12:50 PM\n",
"- Redwood City: 12:56 PM\n",
"- San Carlos: 1:01 PM\n",
"- Belmont: 1:04 PM\n",
"- Hillsdale: 1:08 PM\n",
"- Hayward Park: 1:11 PM\n",
"- San Mateo: 1:15 PM\n",
"- Burlingame: 1:19 PM\n",
"- Broadway: 1:22 PM\n",
"- Millbrae: 1:26 PM\n",
"- San Bruno: 1:30 PM\n",
"- S. San Francisco: 1:34 PM\n",
"- Bayshore: 1:41 PM\n",
"- 22nd Street: 1:46 PM\n",
"- San Francisco: 1:52 PM\n"
]
}
],
"source": [
"print(str(response))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "229c4cb0-cf94-4a9f-bc7c-590388f50c1f",
"metadata": {},
"outputs": [],
"source": [
"response = query_engine.query(\n",
" \"What are all the trains (and times) that end at Tamien going Southbound?\"\n",
")"
]
},
{
"cell_type": "markdown",
"id": "6cf9fce0-5067-48f6-a7ef-62aa9e2edc3d",
"metadata": {},
"source": [
"It gets most of the answers correct (to be fair it misses two trains)."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "51cf03ff-7728-4815-ab72-3bf54fc4a2c0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The trains that end at Tamien going Southbound are:\n",
"\n",
"- Train 224 at 10:15a\n",
"- Train 228 at 11:45a\n",
"- Train 240 at 2:45p\n",
"- Train 248 at 4:45p\n",
"- Train 256 at 6:45p\n",
"- Train 264 at 8:45p\n",
"- Train 272 at 10:45p\n",
"- Train 284 at 1:49a\n"
]
}
],
"source": [
"print(str(response))"
]
},
{
"cell_type": "markdown",
"id": "e51e7feb-b74f-4101-8963-933ac7ec9763",
"metadata": {},
"source": [
"## Try Baseline\n",
"\n",
"In contrast, we try a baseline approach with the default PDF reader (PyPDF) in `SimpleDirectoryReader`."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "364e5155-cc75-4302-a754-9444ae28e6b1",
"metadata": {},
"outputs": [],
"source": [
"from llama_index.core import SimpleDirectoryReader\n",
"from llama_index.core import SummaryIndex\n",
"from llama_index.llms.openai import OpenAI\n",
"\n",
"llm = OpenAI(model=\"gpt-4o\")\n",
"input_file = \"caltrain_schedule_weekend.pdf\"\n",
"reader = SimpleDirectoryReader(input_files=[input_file])\n",
"base_docs = reader.load_data()\n",
"index = SummaryIndex.from_documents(base_docs)\n",
"base_query_engine = index.as_query_engine(llm=llm)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a4011389-2d27-4a1a-bf8d-7309da28ab15",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Southbound WEEKEND SERVICE to SAN JOSE\n",
"Train No. 224 228 232 236 240 244 248 252 256 260 264 268 272 276 280 284\n",
"Service Types L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2\n",
"San Francisco 8:28a 9:58a 10:58a 11:58a 12:58p 1:58p 2:58p 3:58p 4:58p 5:58p 6:58p 7:58p 8:58p 9:58p 10:58p 12:05a\n",
"22nd Street 8:33a 10:03a 11:03a 12:03p 1:03p 2:03p 3:03p 4:03p 5:03p 6:03p 7:03p 8:03p 9:03p 10:03p 11:03p 12:10a\n",
"Bayshore 8:38a 10:08a 11:08a 12:08p 1:08p 2:08p 3:08p 4:08p 5:08p 6:08p 7:08p 8:08p 9:08p 10:08p 11:08p 12:15a\n",
"S. San Francisco 8:45a 10:15a 11:15a 12:15p 1:15p 2:15p 3:15p 4:15p 5:15p 6:15p 7:15p 8:15p 9:15p 10:15p 11:15p 12:22a\n",
"San Bruno 8:49a 10:19a 11:19a 12:19p 1:19p 2:19p 3:19p 4:19p 5:19p 6:19p 7:19p 8:19p 9:19p 10:19p 11:19p 12:26a\n",
"Millbrae 8:53a 10:24a 11:24a 12:24p 1:24p 2:24p 3:24p 4:24p 5:24p 6:24p 7:24p 8:24p 9:24p 10:24p 11:24p 12:31a\n",
"Broadway 8:57a 10:27a 11:27a 12:27p 1:27p 2:27p 3:27p 4:27p 5:27p 6:27p 7:27p 8:27p 9:27p 10:27p 11:27p 12:35a\n",
"Burlingame 9:00a 10:31a 11:31a 12:31p 1:31p 2:31p 3:31p 4:31p 5:31p 6:31p 7:31p 8:31p 9:31p 10:31p 11:31p 12:38a\n",
"San Mateo 9:04a 10:34a 11:34a 12:34p 1:34p 2:34p 3:34p 4:34p 5:34p 6:34p 7:34p 8:34p 9:34p 10:34p 11:34p 12:41a\n",
"Hayward Park 9:07a 10:37a 11:37a 12:37p 1:37p 2:37p 3:37p 4:37p 5:37p 6:37p 7:37p 8:37p 9:37p 10:37p 11:37p 12:45a\n",
"Hillsdale 9:10a 10:41a 11:41a 12:41p 1:41p 2:41p 3:41p 4:41p 5:41p 6:41p 7:41p 8:41p 9:41p 10:41p 11:41p 12:48a\n",
"Belmont 9:14a 10:44a 11:44a 12:44p 1:44p 2:44p 3:44p 4:44p 5:44p 6:44p 7:44p 8:44p 9:44p 10:44p 11:44p 12:52a\n",
"San Carlos 9:17a 10:48a 11:48a 12:48p 1:48p 2:48p 3:48p 4:48p 5:48p 6:48p 7:48p 8:48p 9:48p 10:48p 11:48p 12:55a\n",
"Redwood City 9:21a 10:52a 11:52a 12:52p 1:52p 2:52p 3:52p 4:52p 5:52p 6:52p 7:52p 8:52p 9:52p 10:52p 11:52p 12:59a\n",
"Menlo Park 9:28a 10:58a 11:58a 12:58p 1:58p 2:58p 3:58p 4:58p 5:58p 6:58p 7:58p 8:58p 9:58p 10:58p 11:58p 1:05a\n",
"Palo Alto 9:32a 11:02a 12:02p 1:02p 2:02p 3:02p 4:02p 5:02p 6:02p 7:02p 8:02p 9:02p 10:02p 11:02p 12:02a 1:09a\n",
"California Avenue 9:36a 11:06a 12:06p 1:06p 2:06p 3:06p 4:06p 5:06p 6:06p 7:06p 8:06p 9:06p 10:06p 11:06p 12:06a 1:12a\n",
"San Antonio 9:41a 11:11a 12:11p 1:11p 2:11p 3:11p 4:11p 5:11p 6:11p 7:11p 8:11p 9:11p 10:11p 11:11p 12:10a 1:17a\n",
"Mountain View 9:45a 11:16a 12:16p 1:16p 2:16p 3:16p 4:16p 5:16p 6:16p 7:16p 8:16p 9:16p 10:16p 11:16p 12:15a 1:21a\n",
"Sunnyvale 9:51a 11:21a 12:21p 1:21p 2:21p 3:21p 4:21p 5:21p 6:21p 7:21p 8:21p 9:21p 10:21p 11:21p 12:20a 1:26a\n",
"Lawrence 9:55a 11:26a 12:26p 1:26p 2:26p 3:26p 4:26p 5:26p 6:26p 7:26p 8:26p 9:26p 10:26p 11:26p 12:25a 1:31a\n",
"Santa Clara 10:01a 11:32a 12:32p 1:32p 2:32p 3:32p 4:32p 5:32p 6:32p 7:32p 8:32p 9:32p 10:32p 11:32p 12:31a 1:37a\n",
"San Jose Diridon 10:10a 11:40a 12:40p 1:38p 2:40p 3:38p 4:40p 5:38p 6:40p 7:38p 8:40p 9:38p 10:40p 11:38p 12:39a 1:44a\n",
"Tamien 10:15a 11:45a 12:45p 2:45p 4:45p 6:45p 8:45p 10:45p 12:44a 1:49aPrinter-Friendly Caltrain Schedule\n",
"Northbound WEEKEND SERVICE to SAN FRANCISCO\n",
"Train No. 221 225 229 233 237 241 245 249 253 257 261 265 269 273 *277 *281\n",
"Service Types L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2 L2\n",
"Tamien 7:12a 9:05a 10:05a 11:05a 1:05p 3:05p 5:05p 7:05p 9:05p 11:05p\n",
"San Jose Diridon 7:19a 9:12a 10:12a 11:12a 12:12p 1:12p 2:12p 3:12p 4:12p 5:12p 6:12p 7:12p 8:12p 9:12p 10:19p 11:12p\n",
"Santa Clara 7:25a 9:18a 10:18a 11:18a 12:18p 1:18p 2:18p 3:18p 4:18p 5:18p 6:18p 7:18p 8:18p 9:18p 10:25p 11:18p\n",
"Lawrence 7:31a 9:24a 10:24a 11:24a 12:24p 1:24p 2:24p 3:24p 4:24p 5:24p 6:24p 7:24p 8:24p 9:24p 10:31p 11:24p\n",
"Sunnyvale 7:35a 9:28a 10:28a 11:28a 12:28p 1:28p 2:28p 3:28p 4:28p 5:28p 6:28p 7:28p 8:28p 9:28p 10:35p 11:28p\n",
"Mountain View 7:40a 9:34a 10:34a 11:34a 12:34p 1:34p 2:34p 3:34p 4:34p 5:34p 6:34p 7:34p 8:34p 9:34p 10:40p 11:34p\n",
"San Antonio 7:43a 9:37a 10:37a 11:37a 12:37p 1:37p 2:37p 3:37p 4:37p 5:37p 6:37p 7:37p 8:37p 9:37p 10:44p 11:37p\n",
"California Ave 7:48a 9:42a 10:42a 11:42a 12:42p 1:42p 2:42p 3:42p 4:42p 5:42p 6:42p 7:42p 8:42p 9:42p 10:48p 11:42p\n",
"Palo Alto 7:52a 9:46a 10:46a 11:46a 12:46p 1:46p 2:46p 3:46p 4:46p 5:46p 6:46p 7:46p 8:46p 9:46p 10:53p 11:46p\n",
"Menlo Park 7:55a 9:50a 10:50a 11:50a 12:50p 1:50p 2:50p 3:50p 4:50p 5:50p 6:50p 7:50p 8:50p 9:50p 10:56p 11:50p\n",
"Redwood City 8:01a 9:56a 10:56a 11:56a 12:56p 1:56p 2:56p 3:56p 4:56p 5:56p 6:56p 7:56p 8:56p 9:56p 11:02p 11:56p\n",
"San Carlos 8:05a 10:01a 11:01a 12:01p 1:01p 2:01p 3:01p 4:01p 5:01p 6:01p 7:01p 8:01p 9:01p 10:01p 11:07p 12:01a\n",
"Belmont 8:09a 10:04a 11:04a 12:04p 1:04p 2:04p 3:04p 4:04p 5:04p 6:04p 7:04p 8:04p 9:04p 10:04p 11:10p 12:04a\n",
"Hillsdale 8:12a 10:08a 11:08a 12:08p 1:08p 2:08p 3:08p 4:08p 5:08p 6:08p 7:08p 8:08p 9:08p 10:08p 11:14p 12:08a\n",
"Hayward Park 8:15a 10:11a 11:11a 12:11p 1:11p 2:11p 3:11p 4:11p 5:11p 6:11p 7:11p 8:11p 9:11p 10:11p 11:17p 12:11a\n",
"San Mateo 8:19a 10:15a 11:15a 12:15p 1:15p 2:15p 3:15p 4:15p 5:15p 6:15p 7:15p 8:15p 9:15p 10:15p 11:21p 12:15a\n",
"Burlingame 8:22a 10:19a 11:19a 12:19p 1:19p 2:19p 3:19p 4:19p 5:19p 6:19p 7:19p 8:19p 9:19p 10:19p 11:25p 12:19a\n",
"Broadway 8:25a 10:22a 11:22a 12:22p 1:22p 2:22p 3:22p 4:22p 5:22p 6:22p 7:22p 8:22p 9:22p 10:22p 11:28p 12:22a\n",
"Millbrae 8:29a 10:26a 11:26a 12:26p 1:26p 2:26p 3:26p 4:26p 5:26p 6:26p 7:26p 8:26p 9:26p 10:26p 11:32p 12:26a\n",
"San Bruno 8:34a 10:30a 11:30a 12:30p 1:30p 2:30p 3:30p 4:30p 5:30p 6:30p 7:30p 8:30p 9:30p 10:30p 11:37p 12:30a\n",
"S. San Francisco 8:38a 10:34a 11:34a 12:34p 1:34p 2:34p 3:34p 4:34p 5:34p 6:34p 7:34p 8:34p 9:34p 10:34p 11:41p 12:34a\n",
"Bayshore 8:44a 10:41a 11:41a 12:41p 1:41p 2:41p 3:41p 4:41p 5:41p 6:41p 7:41p 8:41p 9:41p 10:41p 11:47p 12:41a\n",
"22nd Street 8:50a 10:46a 11:46a 12:46p 1:46p 2:46p 3:46p 4:46p 5:46p 6:46p 7:46p 8:46p 9:46p 10:46p 11:53p 12:46a\n",
"San Francisco 8:56a 10:52a 11:53a 12:53p 1:52p 2:52p 3:52p 4:52p 5:52p 6:52p 7:52p 8:52p 9:52p 10:52p 11:59p 12:52aZONE 2 ZONE 3 ZONE 4 ZONE 4 ZONE 3 ZONE 2 ZONE 1 ZONE 12XX Local\n",
"2XX Local\n",
"EFFECTIVE September 12, 2022 Timetable subject to change without notice. *On SAP Center event days, Train 277 or Train 281departure from San Jose Diridon station may be delayed and will depart no later than 10:30p or 11:30p respectively.\n"
]
}
],
"source": [
"print(base_docs[0].get_content())"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "42203c70-7ca7-4200-bf47-6282eefca3bf",
"metadata": {},
"outputs": [],
"source": [
"base_response = base_query_engine.query(\n",
" \"What are the stops (and times) for train no 237 northbound?\"\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "06aa47b6-0f31-4b2d-90f0-bf6c74befd38",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train No. 237 northbound stops at the following stations and times:\n",
"\n",
"- Tamien: 1:05p\n",
"- San Jose Diridon: 1:12p\n",
"- Santa Clara: 1:18p\n",
"- Lawrence: 1:24p\n",
"- Sunnyvale: 1:28p\n",
"- Mountain View: 1:34p\n",
"- San Antonio: 1:37p\n",
"- California Ave: 1:42p\n",
"- Palo Alto: 1:46p\n",
"- Menlo Park: 1:50p\n",
"- Redwood City: 1:56p\n",
"- San Carlos: 2:01p\n",
"- Belmont: 2:04p\n",
"- Hillsdale: 2:08p\n",
"- Hayward Park: 2:11p\n",
"- San Mateo: 2:15p\n",
"- Burlingame: 2:19p\n",
"- Broadway: 2:22p\n",
"- Millbrae: 2:26p\n",
"- San Bruno: 2:30p\n",
"- S. San Francisco: 2:34p\n",
"- Bayshore: 2:41p\n",
"- 22nd Street: 2:46p\n",
"- San Francisco: 2:52p\n"
]
}
],
"source": [
"print(str(base_response))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4f3c1de7-3351-4cd8-991c-34a777952194",
"metadata": {},
"outputs": [],
"source": [
"base_response = base_query_engine.query(\n",
" \"What are all the trains (and times) that end at Tamien going Southbound?\"\n",
")"
]
},
{
"cell_type": "markdown",
"id": "513b1007-7508-4fb1-836c-de9353433a67",
"metadata": {},
"source": [
"Note that the trains don't line up with the times!"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "108edb92-76af-406b-a139-8b9e7c6528f2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The trains that end at Tamien going Southbound are:\n",
"\n",
"- Train 224 at 10:15a\n",
"- Train 228 at 11:45a\n",
"- Train 240 at 2:45p\n",
"- Train 252 at 4:45p\n",
"- Train 264 at 6:45p\n",
"- Train 276 at 8:45p\n",
"- Train 284 at 10:45p\n",
"- Train 284 at 12:44a\n"
]
}
],
"source": [
"print(str(base_response))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "llama_parse",
"language": "python",
"name": "llama_parse"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
+6 -6
View File
@@ -19,12 +19,12 @@
"metadata": {},
"outputs": [],
"source": [
"!pip install llama-index\n",
"!pip install llama-index-core\n",
"!pip install llama-index-embeddings-openai\n",
"!pip install llama-index-postprocessor-flag-embedding-reranker\n",
"!pip install git+https://github.com/FlagOpen/FlagEmbedding.git\n",
"!pip install llama-parse"
"%pip install llama-index\n",
"%pip install llama-index-core\n",
"%pip install llama-index-embeddings-openai\n",
"%pip install llama-index-postprocessor-flag-embedding-reranker\n",
"%pip install git+https://github.com/FlagOpen/FlagEmbedding.git\n",
"%pip install llama-parse"
]
},
{
+7 -7
View File
@@ -17,13 +17,13 @@
"metadata": {},
"outputs": [],
"source": [
"!pip install llama-index\n",
"!pip install llama-index-core==0.10.6.post1\n",
"!pip install llama-index-embeddings-openai\n",
"!pip install llama-index-postprocessor-flag-embedding-reranker\n",
"!pip install git+https://github.com/FlagOpen/FlagEmbedding.git\n",
"!pip install llama-parse\n",
"!pip install llama-index-vector-stores-astra-db"
"%pip install llama-index\n",
"%pip install llama-index-core==0.10.6.post1\n",
"%pip install llama-index-embeddings-openai\n",
"%pip install llama-index-postprocessor-flag-embedding-reranker\n",
"%pip install git+https://github.com/FlagOpen/FlagEmbedding.git\n",
"%pip install llama-parse\n",
"%pip install llama-index-vector-stores-astra-db"
]
},
{
+1 -1
View File
@@ -28,7 +28,7 @@
"outputs": [],
"source": [
"# First, install the required dependencies\n",
"!pip install --quiet llama-index llama-parse llama-index-vector-stores-astra-db llama-index-llms-openai"
"%pip install --quiet llama-index llama-parse llama-index-vector-stores-astra-db llama-index-llms-openai"
]
},
{
+1 -1
View File
@@ -13,7 +13,7 @@
"metadata": {},
"outputs": [],
"source": [
"!pip install llama-index llama-parse"
"%pip install llama-index llama-parse"
]
},
{
+1 -1
View File
@@ -24,7 +24,7 @@
"metadata": {},
"outputs": [],
"source": [
"!pip install llama-index llama-parse"
"%pip install llama-index llama-parse"
]
},
{
+1 -1
View File
@@ -206,7 +206,7 @@
" for image_dict in image_dicts:\n",
" image_doc = ImageDocument(image_path=image_dict[\"path\"])\n",
" response = anthropic_mm_llm.complete(\n",
" prompt=\"Describe the images as an alternative text\",\n",
" prompt=\"Describe the images as alt text\",\n",
" image_documents=[image_doc],\n",
" )\n",
" text_node = TextNode(text=str(response), metadata={\"path\": image_dict[\"path\"]})\n",
+5 -5
View File
@@ -33,11 +33,11 @@
"metadata": {},
"outputs": [],
"source": [
"!pip install llama-index\n",
"!pip install llama-index-core\n",
"!pip install llama-index-llms-anthropic llama-index-multi-modal-llms-anthropic\n",
"!pip install llama-index-embeddings-huggingface\n",
"!pip install llama-parse"
"%pip install llama-index\n",
"%pip install llama-index-core\n",
"%pip install llama-index-llms-anthropic llama-index-multi-modal-llms-anthropic\n",
"%pip install llama-index-embeddings-huggingface\n",
"%pip install llama-parse"
]
},
{
+1 -1
View File
@@ -21,7 +21,7 @@
"metadata": {},
"outputs": [],
"source": [
"!pip install llama-index llama-parse"
"%pip install llama-index llama-parse"
]
},
{
+2 -1
View File
@@ -29,7 +29,8 @@
"metadata": {},
"outputs": [],
"source": [
"!pip install llama-index llama-parse pip install llama-index-vector-stores-mongodb llama-index-llms-openai"
"%pip install llama-index llama-parse\n",
"%pip install llama-index-vector-stores-mongodb llama-index-llms-openai"
]
},
{
+8 -8
View File
@@ -114,7 +114,7 @@
}
],
"source": [
"!pip install llama-parse"
"%pip install llama-parse"
]
},
{
@@ -294,7 +294,7 @@
"### Using parsing instructions\n",
"Let's try to parse the manga with custom instructions:\n",
"\n",
"\"The provided document is a manga comic book. Most pages do NOT have title. It does not contain tables. Try to reconstruct the dialogue happening in a cohesive way.\"\n",
"\"The provided document is a manga comic book. Most pages do NOT have a title. It does not contain tables. Try to reconstruct the dialogue spoken in a cohesive way.\"\n",
"\n",
"To do so just pass the parsing instruction as a parameter to LlamaParse:"
]
@@ -314,9 +314,9 @@
}
],
"source": [
"parsingInstructionManga = \"\"\"The provided document is a manga comic book, most page do NOT have title.\n",
"It does not contain table.\n",
"Try to reconstruct the dialog happening in a cohesive way.\"\"\"\n",
"parsingInstructionManga = \"\"\"The provided document is a manga comic book. Most pages do NOT have a title.\n",
"It does not contain tables.\n",
"Try to reconstruct the dialogue spoken in a cohesive way.\"\"\"\n",
"withInstructionParsing = LlamaParse(\n",
" result_type=\"markdown\", parsing_instruction=parsingInstructionManga\n",
").load_data(\"./manga.pdf\")"
@@ -404,9 +404,9 @@
}
],
"source": [
"parsingInstructionMangaLatex = \"\"\"The provided document is a manga comic book, most page do NOT have title.\n",
"It does not contain table. Do not output table.\n",
"Try to reconstruct the dialog happening in a cohesive way.\n",
"parsingInstructionMangaLatex = \"\"\"The provided document is a manga comic book. Most pages do NOT have a title.\n",
"It does not contain tables.\n",
"Try to reconstruct the dialogue spoken in a cohesive way.\n",
"Output any math equation in LATEX markdown (between $$)\"\"\"\n",
"withLatex = LlamaParse(\n",
" result_type=\"markdown\", parsing_instruction=parsingInstructionMangaLatex\n",
+7 -7
View File
@@ -28,13 +28,13 @@
"metadata": {},
"outputs": [],
"source": [
"!pip install llama-index\n",
"!pip install llama-index-core\n",
"!pip install llama-index-embeddings-openai\n",
"!pip install llama-index-question-gen-openai\n",
"!pip install llama-index-postprocessor-flag-embedding-reranker\n",
"!pip install git+https://github.com/FlagOpen/FlagEmbedding.git\n",
"!pip install llama-parse"
"%pip install llama-index\n",
"%pip install llama-index-core\n",
"%pip install llama-index-embeddings-openai\n",
"%pip install llama-index-question-gen-openai\n",
"%pip install llama-index-postprocessor-flag-embedding-reranker\n",
"%pip install git+https://github.com/FlagOpen/FlagEmbedding.git\n",
"%pip install llama-parse"
]
},
{
@@ -26,9 +26,9 @@
"metadata": {},
"outputs": [],
"source": [
"!pip install llama-index\n",
"!pip install llama-parse\n",
"!pip install torch transformers python-pptx Pillow"
"%pip install llama-index\n",
"%pip install llama-parse\n",
"%pip install torch transformers python-pptx Pillow"
]
},
{
@@ -0,0 +1,720 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "f20600ce-d57a-446e-b033-3aadeec39c1b",
"metadata": {},
"source": [
"# LlamaParse with GPT-4o\n",
"\n",
"\n",
"<a href=\"https://colab.research.google.com/github/run-llama/llama_parse/blob/main/examples/test_tesla_impact_report/test_gpt4o.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>\n",
"\n",
"GPT-4o is a [fully multimodal model by OpenAI](https://openai.com/index/hello-gpt-4o/) released in May 2024. It matches GPT-4 Turbo performance in text and code, and has significantly improved vision and audio capabilities.\n",
"\n",
"The expanded vision/audio capabilities mean that it can be used for document parsing, by treating each page as an image and performing document extraction. We support using GPT-4o natively in LlamaParse for document parsing. The notebook below walks you through an example of using GPT-4o over the Tesla impact report.\n",
"\n",
"**NOTE**: The pricing for LlamaParse + gpt4o is an order more expensive than using LlamaParse by default. Currently, every page parsed with gpt4o counts for 10 pages in the LlamaParse usage tracker.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "86b173ac-9fce-4813-bdf1-6dd7d93a491d",
"metadata": {},
"outputs": [],
"source": [
"import nest_asyncio\n",
"\n",
"nest_asyncio.apply()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ecc5eba5-96ce-4db7-bba1-f9ece33e681c",
"metadata": {},
"outputs": [],
"source": [
"import os"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b805592b-d1a5-4cd2-b916-348f66ca7941",
"metadata": {},
"outputs": [],
"source": [
"os.environ[\"LLAMA_CLOUD_API_KEY\"] = \"<LLAMA_CLOUD_API_KEY>"
]
},
{
"cell_type": "markdown",
"id": "6e73e3c4-9e09-4cba-805f-326c82be812d",
"metadata": {},
"source": [
"### Use LlamaParse with `gpt4o_mode=True`\n",
"\n",
"By turning on gpt4o, we use GPT-4o multimodal capabilities to do document parsing per page instead of the LlamaParse default pipeline.\n",
"\n",
"We load a snippet of the [2019 Tesla impact report](https://www.tesla.com/ns_videos/2019-tesla-impact-report.pdf). **NOTE**: The report is 57 pages, but will count for 570 pages in LlamaParse due to GPT-4o usage (which is approximately $1.71 USD).\n",
"\n",
"You can optionally choose to provide a `gpt4o_api_key`. If you do this, then we will use your API key to make GPT-4o calls, and your LlamaParse usage will be counted as if `gpt4o_mode` was not turned on (each page will be counted as a page instead of 10 pages). "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "aaa2ec5d-f27c-4262-80bf-e57daacff182",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"--2024-05-21 00:10:32-- https://www.dropbox.com/scl/fi/vu6w1dsfo5eddydz13ssm/2019-tesla-impact-report-15.pdf?rlkey=ik8lfqbg2p1ervss4qqt3xose&st=70j04z8j&dl=1\n",
"Resolving www.dropbox.com (www.dropbox.com)... 2620:100:6057:18::a27d:d12, 162.125.13.18\n",
"Connecting to www.dropbox.com (www.dropbox.com)|2620:100:6057:18::a27d:d12|:443... connected.\n",
"HTTP request sent, awaiting response... 302 Found\n",
"Location: https://uc872df1ff4ea2fecd3d024fa97a.dl.dropboxusercontent.com/cd/0/inline/CTTnZs8U4V1GtUCNxoB7INwmLq2yU97Q6QbWS6uVnb_XdHe368GrqF0zLDEKTnpc-x7utwNUUpMvWjLyrujrqNVrbGKTKa6hwHu5BxYPA2zXYrzdAEZyeve274xpHZKFywQ/file?dl=1# [following]\n",
"--2024-05-21 00:10:33-- https://uc872df1ff4ea2fecd3d024fa97a.dl.dropboxusercontent.com/cd/0/inline/CTTnZs8U4V1GtUCNxoB7INwmLq2yU97Q6QbWS6uVnb_XdHe368GrqF0zLDEKTnpc-x7utwNUUpMvWjLyrujrqNVrbGKTKa6hwHu5BxYPA2zXYrzdAEZyeve274xpHZKFywQ/file?dl=1\n",
"Resolving uc872df1ff4ea2fecd3d024fa97a.dl.dropboxusercontent.com (uc872df1ff4ea2fecd3d024fa97a.dl.dropboxusercontent.com)... 2620:100:6057:15::a27d:d0f, 162.125.13.15\n",
"Connecting to uc872df1ff4ea2fecd3d024fa97a.dl.dropboxusercontent.com (uc872df1ff4ea2fecd3d024fa97a.dl.dropboxusercontent.com)|2620:100:6057:15::a27d:d0f|:443... connected.\n",
"HTTP request sent, awaiting response... 302 Found\n",
"Location: /cd/0/inline2/CTSaARDHbxvyEEgefshmsHLbuXkgV1Rmr-ItVhk5lPuZXkLlNnZMZWCF9YF5j4t2lLs4VurFW2VI1Q4A6ZFi8D2RXJmUG3wdgJhR6qSaBpwRZxjB_vk8qkJb8h1jRDaL7ATK6XYTHncab_aoPWzB62vrZ9yXUM0Mr-EdCX1k-hMbzXLV2dorA71IuFPY8ICkTemRWaG6VhBd3bV0C5AkMsAqy90w6Kez1ySFO06UkrxLSmkCaKdFgVoLcUVO2PLv4rGv6AuZOF_kqwsHdh82J9DQU4PMMyg-f5ChSGGSCKgmUfTBE2qP1eISP-GXSB91yWwMf-7rxGtM8MpDp-AL5jxYZxhZcmZn1cU8Or_8OOZrxg/file?dl=1 [following]\n",
"--2024-05-21 00:10:33-- https://uc872df1ff4ea2fecd3d024fa97a.dl.dropboxusercontent.com/cd/0/inline2/CTSaARDHbxvyEEgefshmsHLbuXkgV1Rmr-ItVhk5lPuZXkLlNnZMZWCF9YF5j4t2lLs4VurFW2VI1Q4A6ZFi8D2RXJmUG3wdgJhR6qSaBpwRZxjB_vk8qkJb8h1jRDaL7ATK6XYTHncab_aoPWzB62vrZ9yXUM0Mr-EdCX1k-hMbzXLV2dorA71IuFPY8ICkTemRWaG6VhBd3bV0C5AkMsAqy90w6Kez1ySFO06UkrxLSmkCaKdFgVoLcUVO2PLv4rGv6AuZOF_kqwsHdh82J9DQU4PMMyg-f5ChSGGSCKgmUfTBE2qP1eISP-GXSB91yWwMf-7rxGtM8MpDp-AL5jxYZxhZcmZn1cU8Or_8OOZrxg/file?dl=1\n",
"Reusing existing connection to [uc872df1ff4ea2fecd3d024fa97a.dl.dropboxusercontent.com]:443.\n",
"HTTP request sent, awaiting response... 200 OK\n",
"Length: 26199694 (25M) [application/binary]\n",
"Saving to: 2019-tesla-impact-report-15.pdf\n",
"\n",
"2019-tesla-impact-r 100%[===================>] 24.99M 30.5MB/s in 0.8s \n",
"\n",
"2024-05-21 00:10:35 (30.5 MB/s) - 2019-tesla-impact-report-15.pdf saved [26199694/26199694]\n",
"\n"
]
}
],
"source": [
"!wget \"https://www.dropbox.com/scl/fi/vu6w1dsfo5eddydz13ssm/2019-tesla-impact-report-15.pdf?rlkey=ik8lfqbg2p1ervss4qqt3xose&st=70j04z8j&dl=1\" -O \"2019-tesla-impact-report-15.pdf\""
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f46991c1-031b-461f-b9a6-9237a821f4c8",
"metadata": {},
"outputs": [],
"source": [
"from llama_parse import LlamaParse\n",
"\n",
"parser_gpt4o = LlamaParse(\n",
" result_type=\"markdown\",\n",
" # api_key=api_key,\n",
" gpt4o_mode=True,\n",
" # gpt4o_api_key=\"<gpt4o_api_key>\"\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1136ba82-074b-489d-9b0a-d609ccbf02b6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Started parsing the file under job_id 1a934a50-59a9-4bb4-bbb7-ecefff228537\n"
]
}
],
"source": [
"documents_gpt4o = parser_gpt4o.load_data(\"./2019-tesla-impact-report-15.pdf\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9e65c54f-3e4c-4c78-b1e8-a55ebeba1f24",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"# Impact Report\n",
"## 2019\n",
"\n",
"![Earth and Tesla Car in Space](image-url)\n",
"\n",
"TESLA\n",
"---\n",
"# Introduction 03\n",
"\n",
"# Mission and Tesla Ecosystem 04\n",
"\n",
"# Environmental Impact 06\n",
"- Lifecycle Analysis of Tesla Vehicles versus Average ICE\n",
"- Battery Recycling\n",
"- NOx, Particulates and Other Pollutants\n",
"- Water Used per Vehicle Manufactured\n",
"- Emissions Credits\n",
"- Net Energy Impact of Our Products\n",
"\n",
"# Product Impact 20\n",
"- Price Equivalency\n",
"- Primary Driver\n",
"- Long Distance Travel\n",
"- Active Safety\n",
"- Passive Safety\n",
"- Tesla Safety Awards\n",
"- Fire Safety\n",
"- Cyber Security\n",
"- Disaster Relief\n",
"- Resilience of the Grid\n",
"- Megapack\n",
"- Solar Roof\n",
"\n",
"# Supply Chain 33\n",
"- Responsible Material Sourcing\n",
"- Cobalt Sourcing\n",
"\n",
"# People and Culture 37\n",
"- Our Environmental, Health, and Safety Strategy\n",
"- Safety Improvements\n",
"- Case Study: Ergonomics and Model Y Design\n",
"- Rewarding the Individual\n",
"- Culture of Diversity and Inclusion\n",
"- Workforce Development\n",
"- Community Engagement\n",
"- Employee Mobility and Transportation Programs\n",
"- Corporate Governance\n",
"\n",
"# Appendix 52\n",
"---\n",
"# Introduction\n",
"\n",
"The very purpose of Teslas existence is to accelerate the worlds transition to sustainable energy. In furtherance of this mission, we are excited to publish our second annual Impact Report. Transparency and disclosure are important for our customers, employees, and shareholders, which is why we have expanded the Impact Reports content this year.\n",
"\n",
"While many environmental reports focus on emissions generated by the manufacturing phase of products and future goals for energy consumption, we highlight the totality of the environmental impact of our products today. After all, the vast majority of emissions generated by vehicles today occur in the product-use phase—that is, when consumers are driving their vehicles. We believe that providing information on both sides of the manufacturing and consumer-use equation provides a clearer picture of the environmental impact of Tesla products, and we have done so this year largely through a lifecycle analysis detailed in this report.\n",
"\n",
"Tesla aims to continue to increase the proportion of renewable energy usage at our factories in an effort to minimize the carbon footprint for every mile traveled by our products and their components in our supply chain. All of the factories that we built from the ground-up, such as Gigafactory Nevada and Gigafactory Shanghai, and our forthcoming Gigafactories in Berlin and North America, are designed from the beginning to use energy from renewable sources.\n",
"\n",
"Making a significant and lasting impact on environmental sustainability is difficult to achieve without securing financial sustainability for the long term. We generated positive Free Cash Flow (operating cash flow less capex) of more than $1 billion for the first time in 2019. We believe the notion that a sustainable future is not economically feasible is no longer valid.\n",
"---\n",
"# Mission & Tesla Ecosystem\n",
"\n",
"Climate change is reaching alarming levels in large part due to emissions from burning fossil fuels for transportation and electricity generation. In 2016, carbon dioxide (CO2) concentration levels in the atmosphere exceeded the 400 parts per million threshold on a sustained basis - a level that climate scientists believe will have a catastrophic impact on the environment. Worse, annual global CO2 emissions continue to increase and have approximately doubled over the past 50 years to over 43 gigatons in 2019. The worlds current path is unwise and unsustainable.\n",
"\n",
"The world cannot reduce CO2 emissions without addressing both energy generation and consumption. And the world cannot address its energy habits without first directly reducing emissions in the transportation and energy sectors. We are focused on creating a complete energy and transportation ecosystem from solar generation and energy storage to all-electric vehicles that produce zero tailpipe emissions.\n",
"\n",
"Since the onset of shelter-in-place orders and travel restrictions due to COVID-19, we have seen dramatic increases in air quality across the planet, as well as projections for CO2 emissions to drop in excess of 4% in 2020 compared to pre-COVID-19 levels, according to researchers. Because these improvements in air quality and reductions in CO2 are a result of a global economic disruption and not due to systemic changes in how we produce and consume energy, they are not expected to be sustained absent intervention. However, these changes have shown us the positive impacts of reduced pollution in a very short period of time. At Tesla, we believe that we all have an unprecedented opportunity to learn from this disruption and accelerate the deployment of clean energy solutions as part of a recovery for all economies throughout the world, and we will actively continue to advocate for the realization of these long-term changes.\n",
"\n",
"## Global Greenhouse Gas (GHG) Emissions by Economic Sector\n",
"\n",
"| Sector | Percentage |\n",
"|---------------------------------------------|------------|\n",
"| Electricity & Heat Production* | 31% |\n",
"| Agriculture, Forestry & Other Land Use | 20% |\n",
"| Industry | 18% |\n",
"| Transportation* | 16% |\n",
"| Other Energy | 9% |\n",
"| Buildings | 6% |\n",
"\n",
"*Tesla-related sectors. Source: World Resources Institute\n",
"\n",
"According to the Global Carbon project, when fully tallied, total carbon emissions from 2019 are expected to hit another record high of over 43 gigatons for the year. Energy use through electricity and heat production (31%) and transportation (16%) are significant drivers of these GHG emissions.\n",
"---\n",
"# Mission & Tesla Ecosystem\n",
"\n",
"To create an entire sustainable energy ecosystem, Tesla also manufactures a unique set of energy products that enable homeowners, businesses and utilities to produce and manage renewable energy generation, storage and consumption. Homeowners can install solar panels or Solar Roof to power their home using 100% renewable energy and then store that energy in Powerwall, which makes electricity available during peak energy-use periods and at night, while also providing power during grid outages. Meanwhile, depending on their particular requirements and the size of the project, utilities and businesses can purchase Megapack an infinitely scalable energy storage system that provides greater control, efficiency, and reliability across the electric grid for their energy storage needs.\n",
"\n",
"Renewable energy generation and storage are critical components of developing microgrids — an increasingly important means of delivering reliable and sustainable electricity around the world. As the deployment of Teslas products continues to accelerate, we can scale the adoption of renewable energy, cost-effectively modernize our aging infrastructure (while becoming less reliant on it), and improve the resilience of the electric grid to benefit everyone.\n",
"---\n",
"# Environmental Impact\n",
"---\n",
"# Introduction\n",
"\n",
"In this section of the Impact Report, we will go through the details and calculations of the lifetime environmental impact of our products.\n",
"\n",
"We are often asked if electric vehicles (EVs) are more sustainable than internal combustion engine (ICE) vehicles. The environmental impact of zero-emission transport and energy products, like the products that Tesla produces and sells, is undeniably more positive than the GHG-emitting alternatives. However, determining the lifetime impact of EVs versus ICE vehicles requires looking at the entire lifecycle - from raw materials to emissions to disposal and not just at the emissions resulting from vehicle usage.\n",
"\n",
"This is not a straightforward task and some of the most common omissions that we have seen in similar studies include the following:\n",
"\n",
"a) Using Worldwide Harmonized Light Vehicle Test Procedure (WLTP) or Environmental Protection Agency (EPA) fuel/energy consumption data (which overestimate fuel-economy and underestimate emissions), rather than real-world data;\n",
"\n",
"b) Not taking into account the higher energy efficiency of Teslas powertrains;\n",
"\n",
"c) Assuming that the average EV needs a battery replacement at some point in its life;\n",
"\n",
"d) Not accounting for emissions generated through oil refining and the transportation process; and\n",
"\n",
"e) Using outdated data for the carbon impact of cell manufacturing.\n",
"\n",
"We tried to address these considerations and complexities in deriving a more accurate calculation in the following lifecycle analysis.\n",
"\n",
"It is important to remember that environmental impact goes beyond just carbon footprint. According to the World Health Organization (WHO), more than four million people die of air pollution every year. The reduction of Nitrogen Oxides (NOx) and other particulates in the air makes our communities healthier places to live, work, and visit and is another core benefit of driving an EV.\n",
"\n",
"In addition, solar panels deployed by Tesla (including SolarCity prior to its 2016 acquisition by Tesla) over the years have generated vastly more electricity than what was required to run our factories and related facilities.\n",
"---\n",
"# Lifecycle Analysis of Tesla EVs versus Average ICE Vehicles\n",
"\n",
"## 69 tons\n",
"Lifetime CO2 emitted by an average combustion engine vehicle (model year 2019) sold in the U.S. through its use phase, excluding CO2 emitted during the oil refining phase.\n",
"\n",
"---\n",
"\n",
"On the right and in the following pages we have laid out our lifecycle analysis, which includes the emissions per mile from:\n",
"\n",
"- A current Fremont-made Model 3 charged from a grid with the generation mix that reflects the geographic distribution of Model 3 deliveries in the U.S.\n",
"- What emissions per mile could be if the Model 3 were used for ridesharing over one million miles using cell chemistry from our energy products.\n",
"- What emissions per mile could be if a Model 3 were principally charged at home using a solar system and energy storage.\n",
"- What emissions per mile could be if a Model 3 were used for ridesharing over one million miles using cell chemistry from our energy products and if it were only charged using a solar system and energy storage.\n",
"- The reference ICE vehicle is based on the average mid-size premium sedan in the U.S.\n",
"\n",
"---\n",
"\n",
"The most important variable in a life cycle analysis is real-world fuel consumption or electricity consumption, which impacts the use phase of the lifecycle. Various efficiency testing cycles such as the New European Driving Cycle (NEDC), WLTP, or EPA dont truly represent real-world fuel/energy consumption. This is why, for the purpose of this analysis, we used average energy consumption over the more than 4 billion miles Tesla Model 3s have travelled to date, including energy losses during the charging process. For ICE vehicles, we used real-world fuel consumption data provided by Consumer Reports, according to which mid-size premium sedans for model year 2019 on average achieve 23.6 MPG, and this translates to approximately 420 grams of CO2 per mile, once we account for emissions generated through extraction, refining, and shipment of oil.\n",
"\n",
"Even if we use the official EPA efficiency rating (instead of real-world data) for a Toyota Prius of 56 MPG, which translates to 177 grams of CO2 per mile (incl. refining & transport of oil), an EV would still emit fewer lifetime emissions than the Prius. Regarding mileage and lifespan, we estimate that an average vehicle in the U.S. is driven slightly less than 12,000 miles per year for about 17 years before it is scrapped. Furthermore, as an ICE vehicle ages, its fuel efficiency only remains stable if serviced properly. On the other hand, electricity generation to charge EVs has become “greener” over time with the addition of cleaner energy sources to the grid. Thus, emissions generated through EV charging should continue to decline over time.\n",
"\n",
"It is important to highlight that, for the purpose of this analysis, we assumed no additional renewable energy capacity on the grid during the life of the vehicle given the shape of the renewable energy adoption curve in the U.S. is still very much up for debate. That said, in the following slide we show that a Tesla Model 3 charged in locations with “greener” grids like New York state, for example, have much lower lifecycle emissions than the U.S. average. We believe that cities, states, and countries alike will strive to reduce grid emissions in the future. This dynamic highlights how EVs on the road today will become cleaner as they age and how critical “greening” the grid will be to achieving reduced transportation emissions.\n",
"\n",
"---\n",
"\n",
"## Average Lifecycle Emissions in U.S. (gCO2e/mi)\n",
"\n",
"| | Manufacturing Phase | Use Phase |\n",
"|--------------------|---------------------|-----------|\n",
"| Model 3 Ridesharing Use (solar charged) | | |\n",
"| Model 3 Personal Use (solar charged) | | |\n",
"| Model 3 Ridesharing Use (grid charged) | | |\n",
"| Model 3 Personal Use (grid charged) | | |\n",
"| Avg. Mid-Size Premium ICE | | |\n",
"\n",
"![Bar Chart](https://i.imgur.com/8J5J5J5.png)\n",
"---\n",
"# Reducing Carbon Footprint Even Further\n",
"## Increasing Proportion of Renewable Energy Sources\n",
"\n",
"Charging a Model 3 using solar panels and a Powerwall adds emissions to the manufacturing phase while reducing use phase emissions as low as zero when 100% of charging is done using that system. The personal use scenario below assumes 18% of charging is done using the public fast-charging network, based on observed fleet behavior.\n",
"\n",
"### Average Lifecycle Emissions in U.S. (gCO2e/mi)\n",
"\n",
"| | Manufacturing Phase | Use Phase |\n",
"|--------------------|---------------------|-----------|\n",
"| Avg. Mid-Size Premium ICE | | |\n",
"| Model 3 Personal Use (grid charged) | | |\n",
"| Model 3 Ridesharing Use (grid charged) | | |\n",
"| Model 3 Personal Use (solar charged) | | |\n",
"| Model 3 Ridesharing Use (solar charged) | | |\n",
"\n",
"While the electricity grid varies from region to region, charging EVs is becoming less carbon intensive every year. In the U.S., coal has historically been the dominant energy source for generating electricity. But in the last decade, coal power has declined significantly as regions turn to cleaner energy sources. Energy generated by renewable sources has grown rapidly, accounting for an estimated 43% of new electricity generation capacity in 2018. Many U.S. states (such as New York referenced in the chart below) have been making significant investments in renewable energy as these sustainable options become more cost competitive compared to fossil fuel resources.\n",
"\n",
"To put this in perspective, average GHG emissions from charging one New York-based Tesla vehicle equates to the emissions from an ICE vehicle with a fuel economy of 144 MPG (no such vehicle is on the market). Even when charging a Tesla in Michigan, where approximately 64% of energy comes from coal and natural gas, the emissions from our vehicles still equates to the equivalent emissions of an ICE vehicle with 55 real-world MPG (considerably more in terms of EPA rated MPG). As more regions adopt sustainable energy solutions to generate power, emissions related to charging an EV from the grid will decrease even further.\n",
"\n",
"EV customers can accelerate the process of increasing their renewable energy mix by installing solar panels or a Solar Roof and an energy storage solution, such as Powerwall, in their homes. Such an effort dramatically reduces the lifetime carbon footprint of an EV, even when accounting for the carbon footprint of both the solar panel/Solar roof and Powerwall manufacturing. Remaining use-phase emissions from solar charged vehicles come from publicly available fast-charging, which too is becoming “greener” every year. Our goal is to strategically pair solar and battery storage at as many Tesla Supercharger stations as is feasible.\n",
"\n",
"### Average Lifecycle Emissions in New York State (gCO2e/mi)\n",
"\n",
"| | Manufacturing Phase | Use Phase |\n",
"|--------------------|---------------------|-----------|\n",
"| Model 3 Ridesharing Use (solar charged) | | |\n",
"| Model 3 Personal Use (solar charged) | | |\n",
"| Model 3 Ridesharing Use (grid charged) | | |\n",
"| Model 3 Personal Use (grid charged) | | |\n",
"| Avg. Mid-Size Premium ICE | | |\n",
"---\n",
"# Reducing Carbon Footprint Even Further\n",
"## Improving Powertrain Efficiency\n",
"\n",
"Tesla vehicles are known to have the highest energy efficiency of any EV built to date. In the early days of Model S production, we were able to achieve energy efficiency of 3.1 EPA miles / kWh. Today, our most efficient Model 3 Standard Range Plus (SR+) achieves an EPA range of 4.8 miles / kWh, more than any EV in production. Model Y all-wheel drive (AWD) achieves 4.1 EPA miles / kWh, which makes it the most efficient electric SUV produced to date.\n",
"\n",
"The energy efficiency of Tesla vehicles will continue to improve further over time as we continue to improve our technology and powertrain efficiency. It is also reasonable to assume that our high-mileage products, such as our future Tesla Robotaxis, will be designed for maximum energy efficiency as handling, acceleration, and top speed become less relevant. That way, we will minimize cost for our customers as well as reduce the carbon footprint per mile driven.\n",
"\n",
"### Average Lifecycle Emissions in U.S. (gCO2e/mi)\n",
"\n",
"| Vehicle Type | Manufacturing Phase | Use Phase | Total Emissions |\n",
"|---------------------------------------|---------------------|-----------|-----------------|\n",
"| Avg. Mid-Size Premium ICE | | | |\n",
"| Model 3 Personal Use (grid charged) | | | |\n",
"| Model 3 Ridesharing Use (grid charged)| | | |\n",
"| Model 3 Personal Use (solar charged) | | | |\n",
"| Model 3 Ridesharing Use (solar charged)| | | |\n",
"\n",
"*Note: The exact values for the manufacturing and use phases are not provided in the image.*\n",
"\n",
"### Energy Efficiency EPA range in miles/kWh\n",
"\n",
"| Vehicle Model | EPA Range (miles/kWh) |\n",
"|---------------------|-----------------------|\n",
"| Model 3 SR+ | 5 |\n",
"| Model 3 AWD | 4.5 |\n",
"| Model Y AWD | 4.5 |\n",
"| Hyundai Kona | 4 |\n",
"| Chevy Bolt | 4 |\n",
"| Model S LR+ | 4 |\n",
"| Nissan Leaf | 3.5 |\n",
"| Model X LR+ | 3.5 |\n",
"| Jaguar iPace | 3 |\n",
"| Mercedes EQC* | 3 |\n",
"| Ford Mach E AWD | 3 |\n",
"| Audi e-tron | 3 |\n",
"| Porsche Taycan | 3 |\n",
"\n",
"*Tesla estimate. Source: OEM websites*\n",
"---\n",
"# Reducing Carbon Footprint Even Further\n",
"## Reducing Emissions at our Factories\n",
"\n",
"While emissions from the manufacturing phase can account for a relatively minor portion of lifetime vehicle emissions when compared to the use-phase, it is still an important part of lifecycle emissions. Thus, we strive to source as much renewable energy where possible for our factories in an effort to reduce our manufacturing-phase emissions.\n",
"\n",
"As we continue to ramp production of Tesla products, we are committed to making significant progress towards our goal of operating global Tesla manufacturing, vehicle charging, and other operations using 100% renewable energy.\n",
"\n",
"Predominantly due to lack of reliable data, various third-party studies tend to overstate the actual energy requirement, and therefore the associated emissions, for battery manufacturing. In fact, in 2019, the emissions from producing a full EV were nearly comparable to than the emissions from producing an average ICE vehicle. That said, battery manufacturing technology continues to improve rapidly, and we expect the EV manufacturing energy requirement and associated emissions to drop significantly in the near future.\n",
"\n",
"In the second half of 2018, Tesla launched an Operations Energy Efficiency Program (OEEP) aimed at reducing energy usage across our factories in Fremont, Nevada, and Buffalo. In 2019, the OEEP helped us to achieve energy consumption reductions while we simultaneously ramped new lines and products across the three facilities. Our goal is to install as many solar panels as is practically feasible on the roofs of all of our manufacturing facilities.\n",
"\n",
"### Average Lifecycle Emissions in U.S. (gCO2e/mi)\n",
"\n",
"| Vehicle Type | Manufacturing Phase | Use Phase | Total Emissions |\n",
"|---------------------------------------|---------------------|-----------|-----------------|\n",
"| Avg. Mid-Size Premium ICE | | | |\n",
"| Model 3 Personal Use (grid charged) | | | |\n",
"| Model 3 Ridesharing Use (grid charged)| | | |\n",
"| Model 3 Personal Use (solar charged) | | | |\n",
"| Model 3 Ridesharing Use (solar charged)| | | |\n",
"\n",
"### gCO2e/mi for Model 3 Battery Pack versus Rest of Vehicle\n",
"\n",
"| Year | Battery Pack | Rest of Vehicle |\n",
"|------|--------------|-----------------|\n",
"| 2017 | 60 | |\n",
"| 2019 | 30 | |\n",
"---\n",
"# Reducing Carbon Footprint Even Further\n",
"## Reducing Emissions at our Factories - Gigafactory Shanghai\n",
"\n",
"Underpinning our strategy for regional manufacturing is a reduction of carbon emissions that result from shipping parts and finished products. From a sustainability standpoint, having vertically integrated Tesla factories in each region helps to reduce the carbon footprint for our operations.\n",
"\n",
"As highlighted in Teslas fourth quarter earnings call for 2019, reductions in shipping costs as well as the strain on the environment from avoided trans-oceanic shipping also makes good business sense. A simplified factory design and localized supply chain near the factory saves time and creates efficiencies, and localized delivery saves outbound logistics costs.\n",
"\n",
"Our newly opened Gigafactory outside of Shanghai, China has provided us the opportunity to set up and implement the most simplified flows based on what we have learned from the operation of our U.S. factories. The design simplification and operational efficiencies result in time and monetary savings for Gigafactory Shanghai and less carbon emissions per vehicle produced.\n",
"\n",
"![Gigafactory Shanghai](https://example.com/gigafactory-shanghai.jpg)\n",
"\n",
"### Average Lifecycle Emissions in U.S. (gCO2e/mi)\n",
"\n",
"| Vehicle Type | Manufacturing Phase | Use Phase | Total Emissions |\n",
"|---------------------------------------|---------------------|-----------|-----------------|\n",
"| Avg. Mid-Size Premium ICE | | | |\n",
"| Model 3 Personal Use (grid charged) | | | |\n",
"| Model 3 Ridesharing Use (grid charged)| | | |\n",
"| Model 3 Personal Use (solar charged) | | | |\n",
"| Model 3 Ridesharing Use (solar charged)| | | |\n",
"\n",
"- **Avg. Mid-Size Premium ICE**: ~450 gCO2e/mi\n",
"- **Model 3 Personal Use (grid charged)**: ~200 gCO2e/mi\n",
"- **Model 3 Ridesharing Use (grid charged)**: ~150 gCO2e/mi\n",
"- **Model 3 Personal Use (solar charged)**: ~100 gCO2e/mi\n",
"- **Model 3 Ridesharing Use (solar charged)**: ~50 gCO2e/mi\n",
"\n",
"**Reducing Factory Emissions**\n",
"\n",
"- **Manufacturing Phase**: Blue\n",
"- **Use Phase**: Light Blue\n",
"\n",
"![Bar Chart](https://example.com/bar-chart.jpg)\n",
"---\n",
"# Reducing Carbon Footprint Even Further\n",
"## Increasing Vehicle Utilization\n",
"\n",
"Teslas battery packs are designed to outlast the car. We estimate that a vehicle gets scrapped after approximately 200,000 miles of usage in the U.S. and roughly 130,000 miles in Europe. Creating a battery that could instead last for a 1,000,000 miles (4,000 to 5,000 charging cycles) would dramatically reduce emissions per vehicle produced.\n",
"\n",
"All vehicles in the world combined travel trillions of miles every year. A relatively small number of vehicles, such as taxis, delivery vans, trucks, or buses, account for a disproportionate amount of vehicle miles and as a result, a disproportionate amount of emissions.\n",
"\n",
"A single future Tesla vehicle with a million-mile battery could be utilized over five times more than an average vehicle in the U.S. (almost eight times more than an average vehicle sold in Europe). As a portion of the carbon footprint is emitted during the production phase of each vehicle, utilization of such vehicle over 1,000,000 miles dramatically reduces the lifetime carbon footprint per each mile travelled. Furthermore, battery recycling has the potential to further reduce emissions as components of a battery pack can be captured and reused, displacing much of the need for raw material mining and the associated emissions.\n",
"\n",
"### Average Lifecycle Emissions in U.S. (gCO2e/mi)\n",
"\n",
"| Vehicle Type | Manufacturing Phase | Use Phase |\n",
"|---------------------------------------|---------------------|-----------|\n",
"| Avg. Mid-Size Premium ICE | | |\n",
"| Model 3 Personal Use (grid charged) | | |\n",
"| Model 3 Ridesharing Use (grid charged)| | |\n",
"| Model 3 Personal Use (solar charged) | | |\n",
"| Model 3 Ridesharing Use (solar charged)| | |\n",
"\n",
"### Tesla Model S/X Battery Capacity Retention per Distance Traveled\n",
"\n",
"| Distance Traveled (thousands of miles) | Retention | Standard Deviation |\n",
"|----------------------------------------|-----------|--------------------|\n",
"| 0 | 100% | |\n",
"| 25 | | |\n",
"| 50 | | |\n",
"| 75 | | |\n",
"| 100 | | |\n",
"| 125 | | |\n",
"| 150 | | |\n",
"| 175 | | |\n",
"| 200 | | |\n",
"---\n",
"# Battery Recycling\n",
"\n",
"A common question we hear is, “What happens to Tesla vehicle battery packs once they reach their end of life?” An important distinction between fossil fuels and lithium-ion batteries as an energy source is that while fossil fuels are extracted and used once, the materials in a lithium-ion battery are recyclable. When petroleum is pumped out of the ground, chemically refined, and then burned, it releases harmful emissions into the atmosphere that are not recovered for reuse. Battery materials, in contrast, are refined and put into a cell, and will still remain in the cell at the end of their life, when they can be recycled to recover valuable materials for reuse over and over again.\n",
"\n",
"Extending the life of a battery pack is a superior option to recycling for both environmental and business reasons. For those reasons, before decommissioning a consumer battery pack and sending it for recycling, Tesla does everything it can to extend the useful life of each battery pack. Any battery that is no longer meeting a customers needs can be serviced by Tesla at one of our service centers around the world.\n",
"\n",
"Teslas current vehicle batteries are designed to outlast our cars. We estimate an average ICE vehicle in the U.S. is scrapped after 17 years of usage, by which time it will have ~200,000 miles on its odometer. Data from our fleet of over 1 million Tesla vehicles on the road shows that our vehicles that have been driven between 150,000 and 200,000 miles had battery packs that degraded by less than 15% on average.\n",
"\n",
"# Battery Materials Lifecycle\n",
"\n",
"| Step | Description |\n",
"|-----------------------------|--------------------------------|\n",
"| Raw material mining | |\n",
"| Battery production | |\n",
"| Lifetime usage in a vehicle | |\n",
"| Battery recycling | Extracting raw materials |\n",
"---\n",
"# Battery Recycling at Gigafactory Nevada\n",
"\n",
"## Global annual amount of li-ion battery metals sent for recycling by Tesla in 2019\n",
"\n",
"- **1,000** Tons of Nickel\n",
"- **320** Tons of Copper\n",
"- **110** Tons of Cobalt\n",
"\n",
"A closed-loop battery recycling process presents a compelling solution to move energy supply away from the fossil-fuel based practice of take, make and burn, to a more circular model of recycling end-of-life batteries for reuse over and over again.\n",
"\n",
"Tesla battery packs are made to last many years and therefore we have only received a limited number of these batteries back from the field. Most batteries that Tesla recycles today are pre-consumer, coming to us through R&D and quality control. None of our scrapped lithium-ion batteries go to landfilling, and 100% are recycled. The small amount of post-consumer batteries that we receive are generated from our fleet of vehicles on the road, predominantly from taxi-like vehicles. Since we have only been producing Model S for approximately eight years, it will likely be some time before we start receiving back vehicle batteries in larger volumes.\n",
"\n",
"All materials contained in a battery remain in their original form at end-of-life and the vast majority of these materials are then captured in the recycling process. Presently, only high-value elements are recycled and re-introduced into the supply chain. However, as recycling technology improves, we strive to re-introduce more and more materials back into their original commodity markets. Over half of the materials in a battery cell are metals, which is great for sustainability given they are infinitely recyclable. The remaining materials are plastics, organics, and other difficult to re-use materials. Research is underway by organizations all over the world to improve the ability to recycle these remaining materials.\n",
"\n",
"Today, we work with third-party recyclers around the world to process all scrap and end-of-life batteries to recover valuable metals. Our recycling partners work with us to ensure that non-valuable or non-recoverable materials from the batteries are disposed of responsibly.\n",
"\n",
"Tesla is currently developing a unique battery recycling system at Gigafactory Nevada that will process both battery manufacturing scrap and end-of-life batteries. Through this system, the recovery of critical minerals will be maximized along with the recovery of all metals used in Tesla battery cells, such as copper, aluminum and steel. Our ultimate goal is to develop a recycling process that has high recovery rates, low costs, and a low environmental impact. From an economic perspective, we expect to recognize significant savings over the long term, as the costs associated with large-scale battery material recovery and recycling will be far lower than purchasing and transporting new materials to put into cells.\n"
]
}
],
"source": [
"print(documents_gpt4o[0].get_content())"
]
},
{
"cell_type": "markdown",
"id": "d62cbb62-37ea-4370-9411-d979aa3a627e",
"metadata": {},
"source": [
"## Build RAG pipeline over the Parsed Report\n",
"\n",
"We now try building a RAG pipeline over this parsed report. It's not a lot of text, but we split it into chunks and load it into a simple in-memory vector store.\n",
"\n",
"We ask a question over the parsed markdown table and get back the right answer! We also ask a question over the text."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bb991e26-f9e5-404f-9d2c-73dbba12554b",
"metadata": {},
"outputs": [],
"source": [
"from copy import deepcopy\n",
"from llama_index.core.schema import TextNode\n",
"from llama_index.core import VectorStoreIndex\n",
"\n",
"\n",
"def get_nodes(docs):\n",
" \"\"\"Split docs into nodes, by separator.\"\"\"\n",
" nodes = []\n",
" for doc in docs:\n",
" doc_chunks = doc.text.split(\"\\n---\\n\")\n",
" for doc_chunk in doc_chunks:\n",
" node = TextNode(\n",
" text=doc_chunk,\n",
" metadata=deepcopy(doc.metadata),\n",
" )\n",
" nodes.append(node)\n",
"\n",
" return nodes"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "de1b3606-259a-44cf-9892-3c31d6516c2b",
"metadata": {},
"outputs": [],
"source": [
"# this will split into pages\n",
"nodes = get_nodes(documents_gpt4o)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d8b7c3ad-2147-448c-bcbe-3e6fcd8d5361",
"metadata": {},
"outputs": [],
"source": [
"vector_index = VectorStoreIndex(nodes)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8013351a-180d-4947-9f81-513042175c19",
"metadata": {},
"outputs": [],
"source": [
"query_engine = vector_index.as_query_engine(similarity_top_k=6)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "795dc5c4-e122-4ff3-94d2-747fa51d5add",
"metadata": {},
"outputs": [],
"source": [
"response = query_engine.query(\n",
" \"What are the greenhouse emissions for agriculture and transportation?\"\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "39d2e6bd-3316-49b5-9a5d-5b4b95343e5a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The greenhouse emissions for agriculture and transportation are 20% and 16% respectively.\n"
]
}
],
"source": [
"print(str(response))"
]
},
{
"cell_type": "markdown",
"id": "9beb5cd4-4041-48c7-b22b-de5540f92a6d",
"metadata": {},
"source": [
"Let's also try asking a question over another piece of the text."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "543c8b63-5cd1-47a1-a8a1-81abbfd3e52b",
"metadata": {},
"outputs": [],
"source": [
"response = query_engine.query(\n",
" \"How does the EPA range of Teslas compare with other vehicles? Give details\"\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e739eabf-732b-4f59-9628-972c4bf6c857",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The EPA range of Tesla vehicles, such as the Model 3 Standard Range Plus achieving 4.8 miles/kWh and the Model Y all-wheel drive achieving 4.1 miles/kWh, surpasses that of other electric vehicles currently in production. For example, the Hyundai Kona, Chevy Bolt, Model S LR+, and Nissan Leaf have EPA ranges ranging from 3.5 to 4 miles/kWh, while the Jaguar iPace, Mercedes EQC, Ford Mach E AWD, Audi e-tron, and Porsche Taycan have EPA ranges of 3 miles/kWh. This indicates that Tesla vehicles generally have higher energy efficiency and longer EPA ranges compared to other electric vehicles available in the market.\n"
]
}
],
"source": [
"print(str(response))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "04b05c53-1a81-41a7-97f2-98a960211957",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"# Reducing Carbon Footprint Even Further\n",
"## Improving Powertrain Efficiency\n",
"\n",
"Tesla vehicles are known to have the highest energy efficiency of any EV built to date. In the early days of Model S production, we were able to achieve energy efficiency of 3.1 EPA miles / kWh. Today, our most efficient Model 3 Standard Range Plus (SR+) achieves an EPA range of 4.8 miles / kWh, more than any EV in production. Model Y all-wheel drive (AWD) achieves 4.1 EPA miles / kWh, which makes it the most efficient electric SUV produced to date.\n",
"\n",
"The energy efficiency of Tesla vehicles will continue to improve further over time as we continue to improve our technology and powertrain efficiency. It is also reasonable to assume that our high-mileage products, such as our future Tesla Robotaxis, will be designed for maximum energy efficiency as handling, acceleration, and top speed become less relevant. That way, we will minimize cost for our customers as well as reduce the carbon footprint per mile driven.\n",
"\n",
"### Average Lifecycle Emissions in U.S. (gCO2e/mi)\n",
"\n",
"| Vehicle Type | Manufacturing Phase | Use Phase | Total Emissions |\n",
"|---------------------------------------|---------------------|-----------|-----------------|\n",
"| Avg. Mid-Size Premium ICE | | | |\n",
"| Model 3 Personal Use (grid charged) | | | |\n",
"| Model 3 Ridesharing Use (grid charged)| | | |\n",
"| Model 3 Personal Use (solar charged) | | | |\n",
"| Model 3 Ridesharing Use (solar charged)| | | |\n",
"\n",
"*Note: The exact values for the manufacturing and use phases are not provided in the image.*\n",
"\n",
"### Energy Efficiency EPA range in miles/kWh\n",
"\n",
"| Vehicle Model | EPA Range (miles/kWh) |\n",
"|---------------------|-----------------------|\n",
"| Model 3 SR+ | 5 |\n",
"| Model 3 AWD | 4.5 |\n",
"| Model Y AWD | 4.5 |\n",
"| Hyundai Kona | 4 |\n",
"| Chevy Bolt | 4 |\n",
"| Model S LR+ | 4 |\n",
"| Nissan Leaf | 3.5 |\n",
"| Model X LR+ | 3.5 |\n",
"| Jaguar iPace | 3 |\n",
"| Mercedes EQC* | 3 |\n",
"| Ford Mach E AWD | 3 |\n",
"| Audi e-tron | 3 |\n",
"| Porsche Taycan | 3 |\n",
"\n",
"*Tesla estimate. Source: OEM websites*\n"
]
}
],
"source": [
"print(response.source_nodes[0].get_content())"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "llama_parse",
"language": "python",
"name": "llama_parse"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
+40 -149
View File
@@ -3,7 +3,6 @@ import asyncio
import httpx
import mimetypes
import time
from enum import Enum
from pathlib import Path
from typing import List, Optional, Union
@@ -12,154 +11,13 @@ from llama_index.core.bridge.pydantic import Field, validator
from llama_index.core.constants import DEFAULT_BASE_URL
from llama_index.core.readers.base import BasePydanticReader
from llama_index.core.schema import Document
nest_asyncio_err = "cannot be called from a running event loop"
nest_asyncio_msg = "The event loop is already running. Add `import nest_asyncio; nest_asyncio.apply()` to your code to fix this issue."
class ResultType(str, Enum):
"""The result type for the parser."""
TXT = "text"
MD = "markdown"
JSON = "json"
class Language(str, Enum):
BAZA = "abq"
ADYGHE = "ady"
AFRIKAANS = "af"
ANGIKA = "ang"
ARABIC = "ar"
ASSAMESE = "as"
AVAR = "ava"
AZERBAIJANI = "az"
BELARUSIAN = "be"
BULGARIAN = "bg"
BIHARI = "bh"
BHOJPURI = "bho"
BENGALI = "bn"
BOSNIAN = "bs"
SIMPLIFIED_CHINESE = "ch_sim"
TRADITIONAL_CHINESE = "ch_tra"
CHECHEN = "che"
CZECH = "cs"
WELSH = "cy"
DANISH = "da"
DARGWA = "dar"
GERMAN = "de"
ENGLISH = "en"
SPANISH = "es"
ESTONIAN = "et"
PERSIAN_FARSI = "fa"
FRENCH = "fr"
IRISH = "ga"
GOAN_KONKANI = "gom"
HINDI = "hi"
CROATIAN = "hr"
HUNGARIAN = "hu"
INDONESIAN = "id"
INGUSH = "inh"
ICELANDIC = "is"
ITALIAN = "it"
JAPANESE = "ja"
KABARDIAN = "kbd"
KANNADA = "kn"
KOREAN = "ko"
KURDISH = "ku"
LATIN = "la"
LAK = "lbe"
LEZGHIAN = "lez"
LITHUANIAN = "lt"
LATVIAN = "lv"
MAGAHI = "mah"
MAITHILI = "mai"
MAORI = "mi"
MONGOLIAN = "mn"
MARATHI = "mr"
MALAY = "ms"
MALTESE = "mt"
NEPALI = "ne"
NEWARI = "new"
DUTCH = "nl"
NORWEGIAN = "no"
OCCITAN = "oc"
PALI = "pi"
POLISH = "pl"
PORTUGUESE = "pt"
ROMANIAN = "ro"
RUSSIAN = "ru"
SERBIAN_CYRILLIC = "rs_cyrillic"
SERBIAN_LATIN = "rs_latin"
NAGPURI = "sck"
SLOVAK = "sk"
SLOVENIAN = "sl"
ALBANIAN = "sq"
SWEDISH = "sv"
SWAHILI = "sw"
TAMIL = "ta"
TABASSARAN = "tab"
TELUGU = "te"
THAI = "th"
TAJIK = "tjk"
TAGALOG = "tl"
TURKISH = "tr"
UYGHUR = "ug"
UKRAINIAN = "uk"
URDU = "ur"
UZBEK = "uz"
VIETNAMESE = "vi"
SUPPORTED_FILE_TYPES = [
".pdf",
# Microsoft word - all versions
".doc",
".docx",
".docm",
".dot",
".dotx",
".dotm",
# Rich text format
".rtf",
# Microsoft Works
".wps",
# Word Perfect
".wpd",
# Open Office
".sxw",
".stw",
".sxg",
# Apple
".pages",
# Mac Write
".mw",
".mcw",
# Unified Office Format text
".uot",
".uof",
".uos",
".uop",
# Microsoft powerpoints
".ppt",
".pptx",
".pot",
".pptm",
".potx",
".potm",
# Apple keynote
".key",
# Open Office Presentations
".odp",
".odg",
".otp",
".fopd",
".sxi",
".sti",
# ebook
".epub",
]
from llama_parse.utils import (
nest_asyncio_err,
nest_asyncio_msg,
ResultType,
Language,
SUPPORTED_FILE_TYPES,
)
class LlamaParse(BasePydanticReader):
@@ -199,6 +57,22 @@ class LlamaParse(BasePydanticReader):
parsing_instruction: Optional[str] = Field(
default="", description="The parsing instruction for the parser."
)
skip_diagonal_text: Optional[bool] = Field(
default=False,
description="If set to true, the parser will ignore diagonal text (when the text rotation in degrees modulo 90 is not 0).",
)
invalidate_cache: Optional[bool] = Field(
default=False,
description="If set to true, the cache will be ignored and the document re-processes. All document are kept in cache for 48hours after the job was completed to avoid processing 2 time the same document.",
)
gpt4o_mode: bool = Field(
default=False,
description="Whether to use gpt-4o extract text from documents.",
)
gpt4o_api_key: Optional[str] = Field(
default=None,
description="The API key for the GPT-4o API. Lowers the cost of parsing.",
)
ignore_errors: bool = Field(
default=True,
description="Whether or not to ignore and skip errors raised during parsing.",
@@ -255,6 +129,10 @@ class LlamaParse(BasePydanticReader):
data={
"language": self.language.value,
"parsing_instruction": self.parsing_instruction,
"invalidate_cache": self.invalidate_cache,
"skip_diagonal_text": self.skip_diagonal_text,
"gpt4o_mode": self.gpt4o_mode,
"gpt4o_api_key": self.gpt4o_api_key,
},
)
if not response.is_success:
@@ -451,6 +329,11 @@ class LlamaParse(BasePydanticReader):
def get_images(self, json_result: List[dict], download_path: str) -> List[dict]:
"""Download images from the parsed result."""
headers = {"Authorization": f"Bearer {self.api_key}"}
# make the download path
if not os.path.exists(download_path):
os.makedirs(download_path)
try:
images = []
for result in json_result:
@@ -460,9 +343,17 @@ class LlamaParse(BasePydanticReader):
print(f"> Image for page {page['page']}: {page['images']}")
for image in page["images"]:
image_name = image["name"]
# get the full path
image_path = os.path.join(
download_path, f"{job_id}-{image_name}"
)
# get a valid image path
if not image_path.endswith(".png"):
if not image_path.endswith(".jpg"):
image_path += ".png"
image["path"] = image_path
image["job_id"] = job_id
image["original_pdf_path"] = result["file_path"]
+159
View File
@@ -0,0 +1,159 @@
from enum import Enum
# Asyncio error messages
nest_asyncio_err = "cannot be called from a running event loop"
nest_asyncio_msg = "The event loop is already running. Add `import nest_asyncio; nest_asyncio.apply()` to your code to fix this issue."
class ResultType(str, Enum):
"""The result type for the parser."""
TXT = "text"
MD = "markdown"
JSON = "json"
class Language(str, Enum):
BAZA = "abq"
ADYGHE = "ady"
AFRIKAANS = "af"
ANGIKA = "ang"
ARABIC = "ar"
ASSAMESE = "as"
AVAR = "ava"
AZERBAIJANI = "az"
BELARUSIAN = "be"
BULGARIAN = "bg"
BIHARI = "bh"
BHOJPURI = "bho"
BENGALI = "bn"
BOSNIAN = "bs"
SIMPLIFIED_CHINESE = "ch_sim"
TRADITIONAL_CHINESE = "ch_tra"
CHECHEN = "che"
CZECH = "cs"
WELSH = "cy"
DANISH = "da"
DARGWA = "dar"
GERMAN = "de"
ENGLISH = "en"
SPANISH = "es"
ESTONIAN = "et"
PERSIAN_FARSI = "fa"
FRENCH = "fr"
IRISH = "ga"
GOAN_KONKANI = "gom"
HINDI = "hi"
CROATIAN = "hr"
HUNGARIAN = "hu"
INDONESIAN = "id"
INGUSH = "inh"
ICELANDIC = "is"
ITALIAN = "it"
JAPANESE = "ja"
KABARDIAN = "kbd"
KANNADA = "kn"
KOREAN = "ko"
KURDISH = "ku"
LATIN = "la"
LAK = "lbe"
LEZGHIAN = "lez"
LITHUANIAN = "lt"
LATVIAN = "lv"
MAGAHI = "mah"
MAITHILI = "mai"
MAORI = "mi"
MONGOLIAN = "mn"
MARATHI = "mr"
MALAY = "ms"
MALTESE = "mt"
NEPALI = "ne"
NEWARI = "new"
DUTCH = "nl"
NORWEGIAN = "no"
OCCITAN = "oc"
PALI = "pi"
POLISH = "pl"
PORTUGUESE = "pt"
ROMANIAN = "ro"
RUSSIAN = "ru"
SERBIAN_CYRILLIC = "rs_cyrillic"
SERBIAN_LATIN = "rs_latin"
NAGPURI = "sck"
SLOVAK = "sk"
SLOVENIAN = "sl"
ALBANIAN = "sq"
SWEDISH = "sv"
SWAHILI = "sw"
TAMIL = "ta"
TABASSARAN = "tab"
TELUGU = "te"
THAI = "th"
TAJIK = "tjk"
TAGALOG = "tl"
TURKISH = "tr"
UYGHUR = "ug"
UKRAINIAN = "uk"
URDU = "ur"
UZBEK = "uz"
VIETNAMESE = "vi"
SUPPORTED_FILE_TYPES = [
".pdf",
# Microsoft word - all versions
".doc",
".docx",
".docm",
".dot",
".dotx",
".dotm",
# Rich text format
".rtf",
# Microsoft Works
".wps",
# Word Perfect
".wpd",
# Open Office
".sxw",
".stw",
".sxg",
# Apple
".pages",
# Mac Write
".mw",
".mcw",
# Unified Office Format text
".uot",
".uof",
".uos",
".uop",
# Microsoft powerpoints
".ppt",
".pptx",
".pot",
".pptm",
".potx",
".potm",
# Apple keynote
".key",
# Open Office Presentations
".odp",
".odg",
".otp",
".fopd",
".sxi",
".sti",
# ebook
".epub",
# html
".html",
".htm",
# media,
".jpg",
".jpeg",
".png",
".tiff",
".gif",
".svg",
]
Generated
+10 -9
View File
@@ -1,4 +1,4 @@
# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand.
# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand.
[[package]]
name = "aiohttp"
@@ -1354,8 +1354,8 @@ files = [
[package.dependencies]
numpy = [
{version = ">=1.20.3", markers = "python_version < \"3.10\""},
{version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""},
{version = ">=1.23.2", markers = "python_version >= \"3.11\""},
{version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""},
]
python-dateutil = ">=2.8.2"
pytz = ">=2020.1"
@@ -1838,6 +1838,7 @@ files = [
{file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"},
{file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"},
{file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"},
{file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"},
{file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"},
{file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"},
{file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"},
@@ -2081,13 +2082,13 @@ files = [
[[package]]
name = "requests"
version = "2.31.0"
version = "2.32.2"
description = "Python HTTP for Humans."
optional = false
python-versions = ">=3.7"
python-versions = ">=3.8"
files = [
{file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"},
{file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
{file = "requests-2.32.2-py3-none-any.whl", hash = "sha256:fc06670dd0ed212426dfeb94fc1b983d917c4f9847c863f313c9dfaaffb7c23c"},
{file = "requests-2.32.2.tar.gz", hash = "sha256:dd951ff5ecf3e3b3aa26b40703ba77495dab41da839ae72ef3c8e5d8e2433289"},
]
[package.dependencies]
@@ -2327,13 +2328,13 @@ files = [
[[package]]
name = "tqdm"
version = "4.66.2"
version = "4.66.3"
description = "Fast, Extensible Progress Meter"
optional = false
python-versions = ">=3.7"
files = [
{file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"},
{file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"},
{file = "tqdm-4.66.3-py3-none-any.whl", hash = "sha256:4f41d54107ff9a223dca80b53efe4fb654c67efaba7f47bada3ee9d50e05bd53"},
{file = "tqdm-4.66.3.tar.gz", hash = "sha256:23097a41eba115ba99ecae40d06444c15d1c0c698d527a01c6c8bd1c5d0647e5"},
]
[package.dependencies]
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
[tool.poetry]
name = "llama-parse"
version = "0.4.1"
version = "0.4.4"
description = "Parse files into RAG-Optimized formats."
authors = ["Logan Markewich <logan@llamaindex.ai>"]
license = "MIT"
+13
View File
@@ -1,7 +1,12 @@
import os
import pytest
from llama_parse import LlamaParse
@pytest.mark.skipif(
os.environ.get("LLAMA_CLOUD_API_KEY", "") == "",
reason="LLAMA_CLOUD_API_KEY not set",
)
def test_simple_page_text() -> None:
parser = LlamaParse(result_type="text")
@@ -13,6 +18,10 @@ def test_simple_page_text() -> None:
assert len(result[0].text) > 0
@pytest.mark.skipif(
os.environ.get("LLAMA_CLOUD_API_KEY", "") == "",
reason="LLAMA_CLOUD_API_KEY not set",
)
def test_simple_page_markdown() -> None:
parser = LlamaParse(result_type="markdown")
@@ -24,6 +33,10 @@ def test_simple_page_markdown() -> None:
assert len(result[0].text) > 0
@pytest.mark.skipif(
os.environ.get("LLAMA_CLOUD_API_KEY", "") == "",
reason="LLAMA_CLOUD_API_KEY not set",
)
def test_simple_page_progress_workers() -> None:
parser = LlamaParse(result_type="markdown", show_progress=True, verbose=True)