From 63daf774121008cf424ff2b1624a25fe62e1d56f Mon Sep 17 00:00:00 2001 From: Logan Markewich <logan.markewich@live.com> Date: Fri, 17 Nov 2023 09:57:43 -0600 Subject: [PATCH] remove accidental files --- .../simple/fastapi_auth/README-template.md | 42 ------------- .../types/simple/fastapi_auth/app/__init__.py | 0 .../simple/fastapi_auth/app/api/__init__.py | 0 .../fastapi_auth/app/api/routers/__init__.py | 0 .../fastapi_auth/app/api/routers/chat.py | 56 ------------------ .../simple/fastapi_auth/app/utils/__init__.py | 0 .../simple/fastapi_auth/app/utils/index.py | 38 ------------ .../types/simple/fastapi_auth/data/101.pdf | Bin 47931 -> 0 bytes .../types/simple/fastapi_auth/gitignore | 2 - .../types/simple/fastapi_auth/main.py | 31 ---------- .../types/simple/fastapi_auth/pyproject.toml | 19 ------ .../simple/fastapi_auth/tests/__init__.py | 0 12 files changed, 188 deletions(-) delete mode 100644 packages/create-llama/templates/types/simple/fastapi_auth/README-template.md delete mode 100644 packages/create-llama/templates/types/simple/fastapi_auth/app/__init__.py delete mode 100644 packages/create-llama/templates/types/simple/fastapi_auth/app/api/__init__.py delete mode 100644 packages/create-llama/templates/types/simple/fastapi_auth/app/api/routers/__init__.py delete mode 100644 packages/create-llama/templates/types/simple/fastapi_auth/app/api/routers/chat.py delete mode 100644 packages/create-llama/templates/types/simple/fastapi_auth/app/utils/__init__.py delete mode 100644 packages/create-llama/templates/types/simple/fastapi_auth/app/utils/index.py delete mode 100644 packages/create-llama/templates/types/simple/fastapi_auth/data/101.pdf delete mode 100644 packages/create-llama/templates/types/simple/fastapi_auth/gitignore delete mode 100644 packages/create-llama/templates/types/simple/fastapi_auth/main.py delete mode 100644 packages/create-llama/templates/types/simple/fastapi_auth/pyproject.toml delete mode 100644 packages/create-llama/templates/types/simple/fastapi_auth/tests/__init__.py diff --git a/packages/create-llama/templates/types/simple/fastapi_auth/README-template.md b/packages/create-llama/templates/types/simple/fastapi_auth/README-template.md deleted file mode 100644 index f0b92bdfc..000000000 --- a/packages/create-llama/templates/types/simple/fastapi_auth/README-template.md +++ /dev/null @@ -1,42 +0,0 @@ -This is a [LlamaIndex](https://www.llamaindex.ai/) project using [FastAPI](https://fastapi.tiangolo.com/) bootstrapped with [`create-llama`](https://github.com/run-llama/LlamaIndexTS/tree/main/packages/create-llama). - -## Getting Started - -First, setup the environment: - -``` -poetry install -poetry shell -``` - -Second, run the development server: - -``` -python main.py -``` - -Then call the API endpoint `/api/chat` to see the result: - -``` -curl --location 'localhost:8000/api/chat' \ ---header 'Content-Type: application/json' \ ---data '{ "messages": [{ "role": "user", "content": "Hello" }] }' -``` - -You can start editing the API by modifying `app/api/routers/chat.py`. The endpoint auto-updates as you save the file. - -Open [http://localhost:8000/docs](http://localhost:8000/docs) with your browser to see the Swagger UI of the API. - -The API allows CORS for all origins to simplify development. You can change this behavior by setting the `ENVIRONMENT` environment variable to `prod`: - -``` -ENVIRONMENT=prod uvicorn main:app -``` - -## Learn More - -To learn more about LlamaIndex, take a look at the following resources: - -- [LlamaIndex Documentation](https://docs.llamaindex.ai) - learn about LlamaIndex. - -You can check out [the LlamaIndex GitHub repository](https://github.com/run-llama/llama_index) - your feedback and contributions are welcome! diff --git a/packages/create-llama/templates/types/simple/fastapi_auth/app/__init__.py b/packages/create-llama/templates/types/simple/fastapi_auth/app/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/create-llama/templates/types/simple/fastapi_auth/app/api/__init__.py b/packages/create-llama/templates/types/simple/fastapi_auth/app/api/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/create-llama/templates/types/simple/fastapi_auth/app/api/routers/__init__.py b/packages/create-llama/templates/types/simple/fastapi_auth/app/api/routers/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/create-llama/templates/types/simple/fastapi_auth/app/api/routers/chat.py b/packages/create-llama/templates/types/simple/fastapi_auth/app/api/routers/chat.py deleted file mode 100644 index 81f602edb..000000000 --- a/packages/create-llama/templates/types/simple/fastapi_auth/app/api/routers/chat.py +++ /dev/null @@ -1,56 +0,0 @@ -from typing import List - -from app.utils.index import get_index -from fastapi import APIRouter, Depends, HTTPException, status -from llama_index import VectorStoreIndex -from llama_index.llms.base import MessageRole, ChatMessage -from pydantic import BaseModel - -chat_router = r = APIRouter() - - -class _Message(BaseModel): - role: MessageRole - content: str - - -class _ChatData(BaseModel): - messages: List[_Message] - - -class _Result(BaseModel): - result: _Message - - -@r.post("") -async def chat( - data: _ChatData, - index: VectorStoreIndex = Depends(get_index), -) -> _Result: - # check preconditions and get last message - if len(data.messages) == 0: - raise HTTPException( - status_code=status.HTTP_400_BAD_REQUEST, - detail="No messages provided", - ) - lastMessage = data.messages.pop() - if lastMessage.role != MessageRole.USER: - raise HTTPException( - status_code=status.HTTP_400_BAD_REQUEST, - detail="Last message must be from user", - ) - # convert messages coming from the request to type ChatMessage - messages = [ - ChatMessage( - role=m.role, - content=m.content, - ) - for m in data.messages - ] - - # query chat engine - chat_engine = index.as_chat_engine() - response = chat_engine.chat(lastMessage.content, messages) - return _Result( - result=_Message(role=MessageRole.ASSISTANT, content=response.response) - ) diff --git a/packages/create-llama/templates/types/simple/fastapi_auth/app/utils/__init__.py b/packages/create-llama/templates/types/simple/fastapi_auth/app/utils/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/create-llama/templates/types/simple/fastapi_auth/app/utils/index.py b/packages/create-llama/templates/types/simple/fastapi_auth/app/utils/index.py deleted file mode 100644 index 434727248..000000000 --- a/packages/create-llama/templates/types/simple/fastapi_auth/app/utils/index.py +++ /dev/null @@ -1,38 +0,0 @@ -import logging -import os - -from llama_index import ( - SimpleDirectoryReader, - ServiceContext, - StorageContext, - VectorStoreIndex, - load_index_from_storage, -) - - -STORAGE_DIR = "./storage" # directory to cache the generated index -DATA_DIR = "./data" # directory containing the documents to index - -service_context = ServiceContext.from_defaults( - llm=OpenAI(model="gpt-3.5-turbo") -) - - -def get_index(): - logger = logging.getLogger("uvicorn") - # check if storage already exists - if not os.path.exists(STORAGE_DIR): - logger.info("Creating new index") - # load the documents and create the index - documents = SimpleDirectoryReader(DATA_DIR).load_data() - index = VectorStoreIndex.from_documents(documents, service_context=service_context) - # store it for later - index.storage_context.persist(STORAGE_DIR) - logger.info(f"Finished creating new index. Stored in {STORAGE_DIR}") - else: - # load the existing index - logger.info(f"Loading index from {STORAGE_DIR}...") - storage_context = StorageContext.from_defaults(persist_dir=STORAGE_DIR) - index = load_index_from_storage(storage_context, service_context=service_context) - logger.info(f"Finished loading index from {STORAGE_DIR}") - return index diff --git a/packages/create-llama/templates/types/simple/fastapi_auth/data/101.pdf b/packages/create-llama/templates/types/simple/fastapi_auth/data/101.pdf deleted file mode 100644 index ae5acffd5398b7c59e2df9e6dead2d99128b719c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47931 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 biTrLJK5l56Q)Cc`=qWO8ZY3?8OU(ZPHg=?$ diff --git a/packages/create-llama/templates/types/simple/fastapi_auth/gitignore b/packages/create-llama/templates/types/simple/fastapi_auth/gitignore deleted file mode 100644 index 069fcb402..000000000 --- a/packages/create-llama/templates/types/simple/fastapi_auth/gitignore +++ /dev/null @@ -1,2 +0,0 @@ -__pycache__ -storage diff --git a/packages/create-llama/templates/types/simple/fastapi_auth/main.py b/packages/create-llama/templates/types/simple/fastapi_auth/main.py deleted file mode 100644 index 9dc1a0afb..000000000 --- a/packages/create-llama/templates/types/simple/fastapi_auth/main.py +++ /dev/null @@ -1,31 +0,0 @@ -import logging -import os -import uvicorn -from app.api.routers.chat import chat_router -from fastapi import FastAPI -from fastapi.middleware.cors import CORSMiddleware -from dotenv import load_dotenv - -load_dotenv() - -app = FastAPI() - -environment = os.getenv("ENVIRONMENT", "dev") # Default to 'development' if not set - - -if environment == "dev": - logger = logging.getLogger("uvicorn") - logger.warning("Running in development mode - allowing CORS for all origins") - app.add_middleware( - CORSMiddleware, - allow_origins=["*"], - allow_credentials=True, - allow_methods=["*"], - allow_headers=["*"], - ) - -app.include_router(chat_router, prefix="/api/chat") - - -if __name__ == "__main__": - uvicorn.run(app="main:app", host="0.0.0.0", reload=True) diff --git a/packages/create-llama/templates/types/simple/fastapi_auth/pyproject.toml b/packages/create-llama/templates/types/simple/fastapi_auth/pyproject.toml deleted file mode 100644 index 59d182bbb..000000000 --- a/packages/create-llama/templates/types/simple/fastapi_auth/pyproject.toml +++ /dev/null @@ -1,19 +0,0 @@ -[tool.poetry] -name = "llamaindex-fastapi" -version = "0.1.0" -description = "" -authors = ["Marcus Schiesser <mail@marcusschiesser.de>"] -readme = "README.md" - -[tool.poetry.dependencies] -python = "^3.11,<3.12" -fastapi = "^0.104.1" -uvicorn = { extras = ["standard"], version = "^0.23.2" } -llama-index = "^0.8.56" -pypdf = "^3.17.0" -python-dotenv = "^1.0.0" - - -[build-system] -requires = ["poetry-core"] -build-backend = "poetry.core.masonry.api" diff --git a/packages/create-llama/templates/types/simple/fastapi_auth/tests/__init__.py b/packages/create-llama/templates/types/simple/fastapi_auth/tests/__init__.py deleted file mode 100644 index e69de29bb..000000000 -- GitLab