llama-create工具
使用
创建项目
npx create-llama@latest
✔ Which template would you like to use? › Chat
✔ Which framework would you like to use? › FastAPI (Python)
✔ Would you like to generate a NextJS frontend for your FastAPI (Python) backend? … No
✔ Which model would you like to use? › gpt-3.5-turbo-0125
✔ Which embedding model would you like to use? › text-embedding-3-small
✔ Which data source would you like to use? › Use an example PDF
✔ Would you like to add another data source? › No
✔ Would you like to use LlamaParse (improved parser for RAG - requires API key)? … yes
✔ Please provide your LlamaIndex Cloud API key (leave blank to skip): …
✔ Would you like to use a vector database? › PostgreSQL
在SupaBase创建数据库,获取Migration connection string
填入.env文件
切换到Conda环境
切换到代理
更新pyproject.toml
中的库的版本
[tool]
[tool.poetry]
name = "app"
version = "0.1.0"
description = ""
authors = [ "Marcus Schiesser <mail@marcusschiesser.de>" ]
readme = "README.md"
[tool.poetry.dependencies]
python = "^3.11,<3.12"
fastapi = "^0.110.1"
python-dotenv = "^1.0.0"
llama-index = "0.10.28"
llama-index-core = "0.10.28"
llama-index-agent-openai = "0.2.2"
[tool.poetry.dependencies.uvicorn]
extras = [ "standard" ]
version = "^0.29.0"
[tool.poetry.dependencies.llama-index-vector-stores-postgres]
version = "^0.1.1"
[tool.poetry.dependencies.llama-index-vector-stores-pinecone]
version = "^0.1.3"
[tool.poetry.dependencies.docx2txt]
version = "^0.8"
[build-system]
requires = [ "poetry-core" ]
build-backend = "poetry.core.masonry.api"
包管理器
使用poetry,但是 poetry install 总是使用 poetry 的虚拟环境,容易出问题。
使用pip来安装就不会出错。
pip install .
生成索引
python app/engine/generate.py
使用text-embedding-3-large会出错。
File "/Users/yanghaibin/anaconda3/envs/LI311-b/lib/python3.11/site-packages/pgvector/utils/__init__.py", line 35, in to_db
raise ValueError('expected %d dimensions, not %d' % (dim, len(value)))
sqlalchemy.exc.StatementError: (builtins.ValueError) expected 1536 dimensions, not 3072
环境变更不会更新,需要打开新的命令行窗口。
部署到Render
编译保持默认值:poetry install
运行:python main.py
项目范例-走读:Python-FastAPI
源码目录
需要将media_type="text/plain"变成text/event-stream
,但是使用Postman,发现有问题~~
return StreamingResponse(event_generator(), media_type="text/plain")