* Resolve extract-basic llama-cloud-fake from PyPI when standalone - Drop path override in templates/extract-basic; depend on published 0.1.x - Add templates/extract-basic to uv workspace members so monorepo still uses local editable package - Relax root click pin to match templates (8.3.0 is broken) * Revert adding extract-basic to uv workspace llamactl dev validate runs uv run from the template dir, which walks up to the workspace venv — where llama-agents-appserver isn't installed. Keep extract-basic standalone; published llama-cloud-fake resolves fine in the monorepo too. * Bump llama-index-workflows floor to 2.16.0 across templates basic, document-qa, human-in-the-loop, rag, web-scraping were lagging on 2.2-2.5; align with the rest of the fleet. * Wire data-extraction tests with llama-cloud-fake, add to uv workspace - clients.py installs FakeLlamaCloudServer when FAKE_LLAMA_CLOUD is set - conftest.py flips the env var before test imports - Real test_workflow.py exercises process_file against the fake and checks metadata_workflow returns the configured schema/collection - Bump all versions in .github/templates-remotes.yml for changed templates
Data Extraction and Ingestion
This is a starter for LlamaAgents. See the LlamaAgents (llamactl) getting started guide for context on local development and deployment.
To run the application, install uv and run uvx llamactl serve.
Simple customizations
For some basic customizations, you can modify src/extraction_review/config.py
EXTRACTION_AGENT_NAME: Logical name for your Extraction Agent. WhenUSE_REMOTE_EXTRACTION_SCHEMAisFalse, this name is used to upsert the agent with your local schema; whenTrue, it is used to fetch an existing agent.EXTRACTED_DATA_COLLECTION: The Agent Data collection name used to store extractions (namespaced by agent name and environment).ExtractionSchema: When using a local schema, edit this Pydantic model to match the fields you want extracted. Prefer optional types where possible to allow for partial extractions. Note that the extraction process requires all values! so you must explicitly set values to be optional if they are not required. (pydantic default factories will not work, as pydantic only uses default values for missing fields).
The UI fetches the JSON Schema and collection name from the backend metadata workflow at runtime, and dynamically generates an editing UI based on the schema. If you customize this application to have a different extraction schema from the presentation schema rendered in the UI, for example if you customize the extraction process to add additional fields or otherwise transforma it, then you must return the presentation schema from the metadata workflow.
Complex customizations
For more complex customizations, you can edit the rest of the application. For example, you could
- Modify the existing file processing workflow to provide additional context for the extraction process
- Take further action based on the extracted data.
- Add additional workflows to submit data upon approval.
Linting and type checking
Python and javascript packages contain helpful scripts to lint, format, and type check the code.
To check and fix python code:
uv run hatch run lint
uv run hatch run typecheck
uv run hatch run test
# run all at once
uv run hatch run all-fix
To check and fix javascript code, within the ui directory:
pnpm run lint
pnpm run typecheck
pnpm run test
# run all at once
pnpm run all-fix