diff --git a/.changeset/four-tools-buy.md b/.changeset/four-tools-buy.md new file mode 100644 index 000000000..ce132ccb0 --- /dev/null +++ b/.changeset/four-tools-buy.md @@ -0,0 +1,5 @@ +--- +"create-llama": patch +--- + +Use poetry run generate to generate embeddings for FastAPI diff --git a/README.md b/README.md index 81a8eb889..e9228b3ba 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ Then re-start your app. Remember you'll need to re-run `generate` if you add new If you're using the Python backend, you can trigger indexing of your data by calling: ```bash -poetry run python app/engine/generate.py +poetry run generate ``` ## Want a front-end? diff --git a/helpers/index.ts b/helpers/index.ts index 8b2fead76..8c990facb 100644 --- a/helpers/index.ts +++ b/helpers/index.ts @@ -33,7 +33,7 @@ async function generateContextData( if (packageManager) { const runGenerate = `${cyan( framework === "fastapi" - ? "poetry run python app/engine/generate.py" + ? "poetry run generate" : `${packageManager} run generate`, )}`; const openAiKeyConfigured = openAiKey || process.env["OPENAI_API_KEY"]; @@ -46,7 +46,7 @@ async function generateContextData( if (framework === "fastapi") { if (isHavingPoetryLockFile()) { console.log(`Running ${runGenerate} to generate the context data.`); - const result = tryPoetryRun("python app/engine/generate.py"); + const result = tryPoetryRun("poetry run generate"); if (!result) { console.log(`Failed to run ${runGenerate}.`); process.exit(1); diff --git a/helpers/typescript.ts b/helpers/typescript.ts index db159a3f2..e95533715 100644 --- a/helpers/typescript.ts +++ b/helpers/typescript.ts @@ -200,7 +200,7 @@ async function updatePackageJson({ packageJson.name = appName; packageJson.version = "0.1.0"; - if (dataSources.length > 0 && relativeEngineDestPath) { + if (relativeEngineDestPath) { // TODO: move script to {root}/scripts for all frameworks // add generate script if using context engine packageJson.scripts = { diff --git a/templates/components/engines/python/chat/__init__.py b/templates/components/engines/python/chat/__init__.py index da1c3cdd3..cec972563 100644 --- a/templates/components/engines/python/chat/__init__.py +++ b/templates/components/engines/python/chat/__init__.py @@ -9,7 +9,7 @@ def get_chat_engine(): index = get_index() if index is None: raise Exception( - "StorageContext is empty - call 'python app/engine/generate.py' to generate the storage first" + "StorageContext is empty - call 'poetry run generate' to generate the storage first" ) return index.as_chat_engine( diff --git a/templates/components/vectordbs/python/astra/generate.py b/templates/components/vectordbs/python/astra/generate.py index 50f11d68b..accc04e5f 100644 --- a/templates/components/vectordbs/python/astra/generate.py +++ b/templates/components/vectordbs/python/astra/generate.py @@ -32,6 +32,10 @@ def generate_datasource(): logger.info(f"Successfully created embeddings in the AstraDB") -if __name__ == "__main__": +def main(): init_settings() generate_datasource() + + +if __name__ == "__main__": + main() diff --git a/templates/components/vectordbs/python/milvus/generate.py b/templates/components/vectordbs/python/milvus/generate.py index 9e674a7db..e0181636d 100644 --- a/templates/components/vectordbs/python/milvus/generate.py +++ b/templates/components/vectordbs/python/milvus/generate.py @@ -34,6 +34,10 @@ def generate_datasource(): logger.info(f"Successfully created embeddings in the Milvus") -if __name__ == "__main__": +def main(): init_settings() generate_datasource() + + +if __name__ == "__main__": + main() diff --git a/templates/components/vectordbs/python/mongo/generate.py b/templates/components/vectordbs/python/mongo/generate.py index ddc32c5ad..da77aea2e 100644 --- a/templates/components/vectordbs/python/mongo/generate.py +++ b/templates/components/vectordbs/python/mongo/generate.py @@ -38,6 +38,10 @@ def generate_datasource(): ) -if __name__ == "__main__": +def main(): init_settings() generate_datasource() + + +if __name__ == "__main__": + main() diff --git a/templates/components/vectordbs/python/none/generate.py b/templates/components/vectordbs/python/none/generate.py index 78fe57be3..173d15aa4 100644 --- a/templates/components/vectordbs/python/none/generate.py +++ b/templates/components/vectordbs/python/none/generate.py @@ -27,6 +27,10 @@ def generate_datasource(): logger.info(f"Finished creating new index. Stored in {STORAGE_DIR}") -if __name__ == "__main__": +def main(): init_settings() generate_datasource() + + +if __name__ == "__main__": + main() diff --git a/templates/components/vectordbs/python/pg/generate.py b/templates/components/vectordbs/python/pg/generate.py index 5cc932449..0e572cd7a 100644 --- a/templates/components/vectordbs/python/pg/generate.py +++ b/templates/components/vectordbs/python/pg/generate.py @@ -30,6 +30,10 @@ def generate_datasource(): ) -if __name__ == "__main__": +def main(): init_settings() generate_datasource() + + +if __name__ == "__main__": + main() diff --git a/templates/components/vectordbs/python/pinecone/generate.py b/templates/components/vectordbs/python/pinecone/generate.py index c7ad55ea8..70809c640 100644 --- a/templates/components/vectordbs/python/pinecone/generate.py +++ b/templates/components/vectordbs/python/pinecone/generate.py @@ -34,6 +34,10 @@ def generate_datasource(): ) -if __name__ == "__main__": +def main(): init_settings() generate_datasource() + + +if __name__ == "__main__": + main() diff --git a/templates/types/streaming/fastapi/README-template.md b/templates/types/streaming/fastapi/README-template.md index 2ea072125..6af9712b4 100644 --- a/templates/types/streaming/fastapi/README-template.md +++ b/templates/types/streaming/fastapi/README-template.md @@ -24,7 +24,7 @@ If you are using any tools or data sources, you can update their config files in Second, generate the embeddings of the documents in the `./data` directory (if this folder exists - otherwise, skip this step): ``` -python app/engine/generate.py +poetry run generate ``` Third, run the development server: @@ -84,7 +84,7 @@ docker run \ -v $(pwd)/data:/app/data \ # Use your local folder to read the data -v $(pwd)/storage:/app/storage \ # Use your file system to store the vector database \ - python app/engine/generate.py + poetry run generate ``` 3. Start the API: diff --git a/templates/types/streaming/fastapi/pyproject.toml b/templates/types/streaming/fastapi/pyproject.toml index 5dae9d818..bbadb2897 100644 --- a/templates/types/streaming/fastapi/pyproject.toml +++ b/templates/types/streaming/fastapi/pyproject.toml @@ -5,6 +5,9 @@ description = "" authors = ["Marcus Schiesser "] readme = "README.md" +[tool.poetry.scripts] +generate = "app.engine.generate:main" + [tool.poetry.dependencies] python = "^3.11,<3.12" fastapi = "^0.109.1"